#!/bin/sh
+set -e
# This is a script to be run as part of make.sh. The only time you'd
# want to run it by itself is if you're trying to cross-compile the
echo //entering make-target-2.sh
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
# Do warm init stuff, e.g. building and loading CLOS, and stuff which
# can't be done until CLOS is running.
#
echo //doing warm init
./src/runtime/sbcl \
--core output/cold-sbcl.core \
---sysinit /dev/null --userinit /dev/null <<-'EOF' || exit 1
-
+--sysinit /dev/null --userinit /dev/null <<-'EOF'
;; Now that we use the compiler for macros, interpreted
;; /SHOW doesn't work until later in init.
#+sb-show (print "/hello, world!")
- (sb!ext:purify)
;; Until PRINT-OBJECT and other machinery is set up,
;; we want limits on printing to avoid infinite output.
;; (GC :FULL T gets us down to about 38 Mbytes, but PURIFY
;; gets us down to about 19 Mbytes.)
(sb-int:/show "done with warm.lisp, about to GC :FULL T")
- (sb-c::pack-before-gc-hook) ; KLUDGE
(gc :full t)
;; resetting compilation policy to neutral values in
(space 1)
(speed 1)))
+ ;; Lock internal packages
+ #+sb-package-locks
+ (dolist (p (list-all-packages))
+ (unless (member p (mapcar #'find-package '(:keyword :cl-user)))
+ (lock-package p)))
+
(sb-int:/show "done with warm.lisp, about to SAVE-LISP-AND-DIE")
;; Even if /SHOW output was wanted during build, it's probably
;; not wanted by default after build is complete. (And if it's
#+sb-show (setf sb-int:*/show* nil)
;; The system is complete now, all standard functions are
;; defined.
+ (sb-kernel::ctype-of-cache-clear)
(setq sb-c::*flame-on-necessarily-undefined-function* t)
(sb-ext:save-lisp-and-die "output/sbcl.core" :purify t)
EOF