On Win32, the default cross-compilation host is SBCL with a --sysinit
NUL --userinit NUL. Unfortunately, SBCL itself doesn't recognize NUL
as a valid filename as it's actually a DOS device name and there's a
separate API to check for them. The least losing workaround is to use
a real file with known-harmless content for userinit and sysinit, and
the simplest choice is version.lisp-expr. This changes makes it
possible to build on Win32 without specifying a host lisp.
else
DEVNULL=/dev/null
fi
-SBCL_XC_HOST="${1:-sbcl --disable-debugger --userinit $DEVNULL --sysinit $DEVNULL}"
+# The classic form here was to use --userinit $DEVNULL --sysinit
+# $DEVNULL, but that doesn't work on Win32 because SBCL doesn't handle
+# device names properly. We still need $DEVNULL to be NUL on Win32
+# because it's used elsewhere (such as canonicalize-whitespace), so we
+# need an alternate solution for the init file overrides. It turns
+# out that version.lisp-expr has no side effects from evaluation, so
+# we may as well use that.
+SBCL_XC_HOST="${1:-sbcl --disable-debugger --userinit version.lisp-expr --sysinit version.lisp-expr}"
export DEVNULL
export SBCL_XC_HOST
echo //SBCL_XC_HOST=\"$SBCL_XC_HOST\"
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.27.6"
+"1.0.27.7"