1.0.27.7: Win32 build fix
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 12 Apr 2009 14:03:08 +0000 (14:03 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 12 Apr 2009 14:03:08 +0000 (14:03 +0000)
  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.

make.sh
version.lisp-expr

diff --git a/make.sh b/make.sh
index 51a36cc..12e7761 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -65,7 +65,14 @@ if [ "$OSTYPE" = "cygwin" -o "$OSTYPE" = "msys" ] ; then
 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\"
index abd0218..5d1a5e3 100644 (file)
@@ -17,4 +17,4 @@
 ;;; 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"