From f6f77e8d2a2f84b5d946aa485d1a18ba6f97cea3 Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Wed, 11 Dec 2002 11:10:27 +0000 Subject: [PATCH] 0.7.10.16: Fix one "outstanding embarrassment" (as per CSR sbcl-devel 2002-12-10): no more building of compiler files in warm load. ... play symlink games instead, to build the troublesome assembly files twice under different names (will need adjustments to work on non-Unix filesystems (e.g. NTFS) but no more than the rest of the build). --- TODO | 5 ----- build-order.lisp-expr | 17 +++++++++++++---- make-config.sh | 9 +++++++++ src/cold/warm.lisp | 42 ------------------------------------------ version.lisp-expr | 2 +- 5 files changed, 23 insertions(+), 52 deletions(-) diff --git a/TODO b/TODO index 5dc47f1bf..2ec447264 100644 --- a/TODO +++ b/TODO @@ -33,11 +33,6 @@ for late 0.7.x: idiosyncratic ideas of what merits FAILURE-P, but it's embarrassing to have to use it when bootstrapping under SBCL!), - ** weird double-loading (first in GENESIS, then in warm init) - of src/assembly/target/*.lisp stuff, and the associated - weirdness of the half-baked state (compiler almost but - not quite ready for prime time..) of the system after - cold init * fixups now feasible because of pre7 changes ** ANSIfied DECLAIM INLINE stuff (deprecating MAYBE-INLINE, including e.g. on the man page) diff --git a/build-order.lisp-expr b/build-order.lisp-expr index 9388117dc..e9f3c54da 100644 --- a/build-order.lisp-expr +++ b/build-order.lisp-expr @@ -527,10 +527,19 @@ ("src/compiler/target/type-vops") ("src/compiler/generic/late-type-vops") - ("src/assembly/target/assem-rtns" :assem) - ("src/assembly/target/array" :assem) - ("src/assembly/target/arith" :assem) - ("src/assembly/target/alloc" :assem) + ;; KLUDGE: The assembly files need to be compiled twice: once as + ;; normal lisp files, and once by sb-c:assemble-file. We play some + ;; symlink games to make sure we don't scribble over anything we + ;; shouldn't, but these are actually the same files: + + ("src/compiler/assembly/target/assem-rtns") + ("src/compiler/assembly/target/array") + ("src/compiler/assembly/target/arith") + ("src/compiler/assembly/target/alloc") + ("src/assembly/target/assem-rtns" :assem :not-host) + ("src/assembly/target/array" :assem :not-host) + ("src/assembly/target/arith" :assem :not-host) + ("src/assembly/target/alloc" :assem :not-host) ("src/compiler/pseudo-vops") diff --git a/make-config.sh b/make-config.sh index 720cf141c..bcbe4811d 100644 --- a/make-config.sh +++ b/make-config.sh @@ -92,6 +92,15 @@ for d in src/compiler src/assembly; do cd $original_dir done +echo //setting up symlink src/compiler/assembly +if [ -h src/compiler/assembly ] ; then + rm src/compiler/assembly +elif [ -w src/compiler/assembly ] ; then + echo "I'm afraid to replace non-symlink compiler/assembly with a symlink." + exit 1 +fi +ln -s ../assembly src/compiler/assembly + echo //setting up OS-dependent information original_dir=`pwd` cd src/runtime/ diff --git a/src/cold/warm.lisp b/src/cold/warm.lisp index 91bd15212..8eb011d01 100644 --- a/src/cold/warm.lisp +++ b/src/cold/warm.lisp @@ -21,48 +21,6 @@ (space 1) (speed 2))) -;;;; KLUDGE: Compile and load files which really belong in cold load but are -;;;; here for various unsound reasons. We handle them here, before the package -;;;; hacking below, because they use the SB!FOO cold package name convention -;;;; instead of the SB-FOO final package name convention (since they really -;;;; do belong in cold load and will hopefully make it back there reasonably -;;;; soon). -- WHN 19991207 - -(dolist (stem '(;; FIXME: The assembly files here probably belong in - ;; cold load instead of warm load. They ended up here - ;; as a quick hack to work around the consequences of - ;; my misunderstanding how ASSEMBLE-FILE works when I - ;; wrote the cold build code. The cold build code - ;; expects only one FASL filename per source file, - ;; when it turns out we really need one FASL file for - ;; ASSEMBLE-FILE output and another for COMPILE-FILE - ;; output. It would probably be good to redo the cold - ;; build code so that the COMPILE-FILE stuff generated - ;; here can be loaded at the same time as the - ;; ASSEMBLE-FILE stuff generated there. - "src/assembly/target/assem-rtns" - "src/assembly/target/array" - "src/assembly/target/arith" - "src/assembly/target/alloc")) - ;; KLUDGE: Cut-and-paste programming, the sign of a true professional.:-| - ;; (Hopefully this will go away as we move the files above into cold load.) - ;; -- WHN 19991214 - (let ((fullname (concatenate 'string stem ".lisp"))) - ;; (Now that we use byte compiler for interpretation, /SHOW - ;; doesn't get compiled properly until the src/assembly files have - ;; been loaded, so we use PRINT instead.) - #+sb-show (print "/about to compile src/assembly file") - #+sb-show (print fullname) - (multiple-value-bind - (compiled-truename compilation-warnings-p compilation-failure-p) - (compile-file fullname) - (declare (ignore compilation-warnings-p)) - #+sb-show (print "/done compiling src/assembly file") - (if compilation-failure-p - (error "COMPILE-FILE of ~S failed." fullname) - (unless (load compiled-truename) - (error "LOAD of ~S failed." compiled-truename)))))) - ;;;; package hacking ;;; Our cross-compilation host is out of the picture now, so we no diff --git a/version.lisp-expr b/version.lisp-expr index 536474cf9..481f87cbd 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.10.15" +"0.7.10.16"