feat(3p/lisp/sclf): build using buildLisp

Adding the default.nix is quite straightforward, however we have to make
today's SBCL happy: due to package locking it no longer likes sclf using
an sb-impl internal constant for some reason. This is however a good
opportunity to clean up the stat-*-time code: It converted the times in
an implementation specific way even though time.lisp does provide a
generic way to convert between unix and universal time. Note that the
updated ASDF file is untested, but should be a trivial enough change.

Change-Id: If193bf830ac704cc53e0855d8e9fff2b5a5ef291
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3268
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
sterni 2021-08-02 15:14:25 +02:00
parent a5dbd0f5d9
commit 2e08324484
7 changed files with 45 additions and 11 deletions

1
third_party/lisp/sclf/.skip-subtree vendored Normal file
View file

@ -0,0 +1 @@
prevent readTree from creating entries for subdirs that don't contain an .nix files

3
third_party/lisp/sclf/OWNERS vendored Normal file
View file

@ -0,0 +1,3 @@
inherited: true
owners:
- sterni

View file

@ -1,2 +1,6 @@
SCLF is a collection of disparate Common Lisp functions that are
common enough in my code but couldn't find a place anywhere else.
SCLF has originally been written by Walter C. Pelissero and vendored
into depot since it is a dependency of mime4cl. Upstream and depot version
may diverge.
Upstream Website: http://wcp.sdf-eu.org/software/#sclf
Vendored Tarball: http://wcp.sdf-eu.org/software/sclf-20150207T213551.tbz

28
third_party/lisp/sclf/default.nix vendored Normal file
View file

@ -0,0 +1,28 @@
# Copyright (C) 2021 by the TVL Authors
# SPDX-License-Identifier: LGPL-2.1-or-later
{ depot, pkgs, ... }:
depot.nix.buildLisp.library {
name = "sclf";
deps = [
(depot.nix.buildLisp.bundled "sb-posix")
];
srcs = [
./package.lisp
./sclf.lisp
./sysproc.lisp
./lazy.lisp
./time.lisp
./directory.lisp
./serial.lisp
./mp/sbcl.lisp
];
# TODO(sterni): implement OS interaction for ECL and CCL
brokenOn = [
"ecl"
"ccl"
];
}

View file

@ -1,6 +1,7 @@
;;; directory.lisp --- filesystem directory access
;;; Copyright (C) 2006, 2007, 2008, 2009, 2010 by Walter C. Pelissero
;;; Copyright (C) 2021 by the TVL Authors
;;; Author: Walter C. Pelissero <walter@pelissero.de>
;;; Project: sclf
@ -348,18 +349,12 @@ are defined."
(defun stat-modification-time (stat)
"Return the modification time of the STAT structure as Lisp
Universal Time, which is not the same as the Unix time."
#-(or cmu sbcl) (error "Don't know how to adjust Unix time to Lisp Universal Time.")
(+ #+cmu lisp::unix-to-universal-time
#+sbcl sb-impl::unix-to-universal-time
(stat-mtime stat)))
(unix->universal-time (stat-mtime stat)))
(defun stat-creation-time (stat)
"Return the creation time of the STAT structure as Lisp
Universal Time, which is not the same as the Unix time."
#-(or cmu sbcl) (error "Don't know how to adjust Unix time to Lisp Universal Time.")
(+ #+cmu lisp::unix-to-universal-time
#+sbcl sb-impl::unix-to-universal-time
(stat-ctime stat)))
(unix->universal-time (stat-ctime stat)))
(defun file-modification-time (file)
"Return the modification time of FILE as Lisp Universal Time, which

View file

@ -1,6 +1,7 @@
;;; package.lisp --- packages description
;;; Copyright (C) 2006, 2007, 2008, 2009, 2010 by Walter C. Pelissero
;;; Copyright (C) 2021 by the TVL Authors
;;; Author: Walter C. Pelissero <walter@pelissero.de>
;;; Project: sclf
@ -179,6 +180,7 @@
#:stat-mode
#:save-file-excursion
#:stat-modification-time
#:stat-creation-time
#:file-modification-time
#:file-creation-time
#:show

View file

@ -1,6 +1,7 @@
;;; sclf.asd --- system definition
;;; Copyright (C) 2005, 2006, 2008, 2009 by Walter C. Pelissero
;;; Copyright (C) 2021 by the TVL Authors
;;; Author: Walter C. Pelissero <walter@pelissero.de>
;;; Project: SCLF
@ -44,8 +45,8 @@ uses, too small to fit anywhere else."
(:file "sclf" :depends-on ("package"))
(:file "sysproc" :depends-on ("package" "sclf"))
(:file "lazy" :depends-on ("package" "sclf"))
(:file "directory" :depends-on ("package" "sclf"))
(:file "time" :depends-on ("package" "sclf"))
(:file "directory" :depends-on ("package" "sclf" "time"))
(:file "serial" :depends-on ("package" "sclf"))
(:module "mp"
:depends-on ("package" "sclf")