ideal opportunity to explain how ~runlisp~ configuration works, without
getting bogged down in the details of fighting less amenable Lisps.)
-The provided ~0base.conf~ file defines SBCL as follows.
+The provided ~0base.conf~ file used to define SBCL as follows. (The
+real version now contains a kludge for old versions, which needn't
+concern us here.)
: [sbcl]
:
command = ${@ENV:SBCL?sbcl}
image-file = ${@name}+asdf.core
+;; Older versions of SBCL forget their home directory when an image is
+;; dumped, so we must help this one to remember.
+etch-sbcl-home =
+ (let* ((#100=#:sfs (find-symbol "*STATIC-FOREIGN-SYMBOLS*" "SB-IMPL"))
+ (#101=#:shp (find-symbol "SBCL-HOMEDIR-PATHNAME" "SB-IMPL")))
+ (unless (or (not #100#) (not #101#)
+ (gethash "sbcl_home" (symbol-value #100#)))
+ (#+sb-package-locks without-package-locks
+ #-sb-package-locks progn
+ (setf (symbol-function #101#)
+ (let ((#102=#:etched-sbcl-home (funcall #101#)))
+ (lambda () #102#))))))
+
run-script =
${command} --noinform
$?@image{--core "${image-path}" --eval "${image-restore}" |
dump-image =
${command} --noinform --no-userinit --no-sysinit --disable-debugger
--eval "${dump-image-prelude}"
+ --eval "${etch-sbcl-home}"
--eval "(sb-ext:save-lisp-and-die \"${@image-new|q}\")"
;;;--------------------------------------------------------------------------
AT_CLEANUP
+###--------------------------------------------------------------------------
+### Implementation-specific tests.
+
+AT_SETUP([specific sbcl])
+AT_KEYWORDS([specific sbcl])
+PREPARE_LISP_TEST([sbcl])
+
+AT_CHECK([RUNLISP_PATH -e"(require 'sb-bsd-sockets)"])
+
+AT_CLEANUP
+
###----- That's all, folks --------------------------------------------------