From: Matt Birkholz Date: Sun, 13 Oct 2013 01:17:44 +0000 (-0700) Subject: Fix new build to cross from 9.1.1. X-Git-Tag: release-9.2.0~67 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=13b5bca;p=mit-scheme.git Fix new build to cross from 9.1.1. On a 9.1.1 host, the new build dies while compiling the compiler. ; Generating SCode for file: "fggen/canon.scm" => "fggen/canon.bin"... ;MICROCODE-TYPE: Unknown name sequence The usual remedies did not suffice. In fact now the temporary code in cref/make.scm is not needed. The compiler is compiled with a cross runtime that provides the necessary patch via its utabs.scm, where access to type-aliases and returns-aliases is easy, though insufficient to train the host. 9.1.1 still needs the training in runtime.sf. Unlike a cross compile, a cross runtime was not used by this build(?). Use a new compile-cross-runtime target and --fasl make.com to make tools/syntaxer.com. Make syntax-cross-cref and syntax-cross-sf dependent on syntax-cross-runtime for its runtime.pkd (pinching off a little parallelism, but allowing them to proceed while the runtime compiles). Did not try to syntax anything but the new compiler with the new star-parser. --- diff --git a/src/Makefile.tools.in b/src/Makefile.tools.in index 7b3a50700..bb787b2c8 100644 --- a/src/Makefile.tools.in +++ b/src/Makefile.tools.in @@ -1,3 +1,4 @@ +# -*-makefile-*- # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 @@ -62,13 +63,9 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/microcode/mkinstalldirs MIT_SCHEME_EXE = @MIT_SCHEME_EXE@ -HOST_COMPILER = $(HOST_TOOLCHAIN) -HOST_RUNTIME = '$(MIT_SCHEME_EXE)' --batch-mode --band runtime.com -HOST_SYNTAXER = '$(MIT_SCHEME_EXE)' --batch-mode --band runtime.com \ - --eval '(load-option (quote CREF))' \ - --eval '(load-option (quote SF))' -HOST_TOOLCHAIN = '$(MIT_SCHEME_EXE)' --batch-mode \ - --eval '(load-option (quote CREF))' +HOST_COMPILER = $(MIT_SCHEME_EXE) --batch-mode +CROSS_SYNTAXER = '$(MIT_SCHEME_EXE)' --batch-mode --band ./tools/syntaxer.com +HOST_SYNTAXER = '$(MIT_SCHEME_EXE)' --batch-mode SUBDIRS = compiler cref runtime sf star-parser @@ -120,33 +117,25 @@ restore: tools/compiler.com: tools/syntaxer.com tools/compiler.com: compile-cross-compiler -tools/compiler.com: compile-cross-cref -tools/compiler.com: compile-cross-sf -tools/compiler.com: compile-kludgerous-star-parser (echo '(begin' && \ - echo ' (with-working-directory-pathname "cref"' && \ - echo ' (lambda () (load "make")))' && \ - echo ' (with-working-directory-pathname "sf"' && \ - echo ' (lambda () (load "make")))' && \ - echo ' (with-working-directory-pathname "star-parser"' && \ - echo ' (lambda () (load "load")))' && \ echo ' (with-working-directory-pathname "compiler"' && \ echo ' (lambda () (load "make")))' && \ echo ' (disk-save "$@"))') \ - | $(HOST_RUNTIME) + | $(CROSS_SYNTAXER) +tools/syntaxer.com: compile-cross-runtime tools/syntaxer.com: compile-cross-cref tools/syntaxer.com: compile-cross-sf -tools/syntaxer.com: compile-kludgerous-star-parser +tools/syntaxer.com: compile-cross-star-parser (echo '(begin' && \ - echo ' (with-working-directory-pathname "cref"' && \ + echo ' (with-working-directory-pathname "../cref"' && \ echo ' (lambda () (load "make")))' && \ - echo ' (with-working-directory-pathname "sf"' && \ + echo ' (with-working-directory-pathname "../sf"' && \ echo ' (lambda () (load "make")))' && \ - echo ' (with-working-directory-pathname "star-parser"' && \ + echo ' (with-working-directory-pathname "../star-parser"' && \ echo ' (lambda () (load "load")))' && \ - echo ' (disk-save "$@"))') \ - | $(HOST_RUNTIME) + echo ' (disk-save "../$@"))') \ + | (cd runtime && '$(MIT_SCHEME_EXE)' --batch-mode --fasl make.com) # Compiler (LIAR) @@ -191,28 +180,29 @@ compile-cross-compiler-rtlgen: syntax-cross-compiler compile-cross-compiler-rtlopt: syntax-cross-compiler echo '(compile-directory "compiler/rtlopt")' | $(HOST_COMPILER) -# Must use HOST_SYNTAXER here because compiler.sf's (and, more -# generally, CREF's) host/target distinction is bollocksed up, and will -# do the wrong thing if there is already a compiler loaded into the -# image. .PHONY: syntax-cross-compiler +syntax-cross-compiler: tools/syntaxer.com @IF_SVM@syntax-cross-compiler: compiler/machines/svm/assembler-db.scm -syntax-cross-compiler: cref-cross-compiler (echo '(with-working-directory-pathname "compiler"' && \ echo ' (lambda () (load "compiler.sf")))') \ - | $(HOST_SYNTAXER) + | $(CROSS_SYNTAXER) compiler/machines/svm/assembler-db.scm: (cd compiler/machines/svm && \ '$(MIT_SCHEME_EXE)' --batch-mode --load compile-assembler code 'sequence)) - (let ((env (->environment '(runtime microcode-tables)))) - (set! (access type-aliases env) - (cons '(sequence-2 sequence) - (access type-aliases env))))) - (with-loader-base-uri (system-library-uri "cref/") (lambda () (load-package-set "cref"))) diff --git a/src/runtime/utabs.scm b/src/runtime/utabs.scm index 002b261c4..8dd0737ef 100644 --- a/src/runtime/utabs.scm +++ b/src/runtime/utabs.scm @@ -68,6 +68,17 @@ USA. (microcode-identification-item 'CONSOLE-WIDTH)) (set! microcode-id/tty-y-size (microcode-identification-item 'CONSOLE-HEIGHT)) + + ;; Temporarily: ensure host knows new type code SEQUENCE. Older hosts + ;; have an equivalent SEQUENCE-2 and type-aliases. + (if (not (microcode-type/name->code 'sequence)) + (set! type-aliases + (cons '(SEQUENCE-2 SEQUENCE) + type-aliases))) + (if (not (microcode-return/name->code 'sequence-continue)) + (set! returns-aliases + (cons '(SEQUENCE-2-SECOND SEQUENCE-CONTINUE) + returns-aliases))) unspecific) (define (intern string)