X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/runlisp/blobdiff_plain/59d4ae8bbbd70e257b4db14a45d092ae7c8d6361..7e3a86038e2a2cbb48b356cb029f9de99c14ec79:/runlisp-base.conf diff --git a/runlisp-base.conf b/runlisp-base.conf index d733c1c..dc1ecef 100644 --- a/runlisp-base.conf +++ b/runlisp-base.conf @@ -85,11 +85,24 @@ require-asdf = ;; Prevent ASDF from upgrading itself. Otherwise it will do this ;; automatically if a script invokes `asdf:load-system', but that will have a ;; bad effect on startup time, and risks spamming the output streams with -;; drivel. +;; drivel. Some ancient Lisps come with an ASDF which doesn't understand +;; `register-immutable-system', so do the job by hand if necessary. inhibit-asdf-upgrade = - (funcall (intern "REGISTER-IMMUTABLE-SYSTEM" - (find-package "ASDF")) - "asdf") + (let* ((#1300=#:root (find-package "ASDF")) + (#1301=#:ris (find-symbol "REGISTER-IMMUTABLE-SYSTEM" #1300#))) + (if (and #1301# (fboundp #1301#)) + (funcall #1301# "asdf") + (let* ((#1302=#:fsys (find-package "ASDF/FIND-SYSTEM")) + (#1303=#:iss (find-symbol "*IMMUTABLE-SYSTEMS*" #1302#)) + (#1304=#:dss (find-symbol "*DEFINED-SYSTEMS*" #1302#)) + (#1305=#:sys (find-symbol "SYSTEM" #1300#))) + (unless (symbol-value #1303#) + (setf (symbol-value #1303#) + (make-hash-table :test (function equal)))) + (setf (gethash "asdf" (symbol-value #1303#)) t + (gethash "asdf" (symbol-value #1304#)) + (cons (get-universal-time) + (make-instance #1305# :name "asdf")))))) ;; Upgrade ASDF from the source registry. upgrade-asdf = @@ -261,7 +274,12 @@ run-script = ${command} $?@image{-core "${image-path}" -eval "${image-restore}" | -batch -noinit -quiet - -eval "(progn + -eval "(handler-bind + ((warning + (lambda (#0=#:c) + (declare (ignore #0#)) + (invoke-restart + 'muffle-warning)))) (setf ext:*require-verbose* nil) ${run-script-prelude} ${clear-cl-user})"}