X-Git-Url: https://git.distorted.org.uk/~mdw/runlisp/blobdiff_plain/574db4d92e1e9e043b8729ece64f96d16a705478..35f7e5a0bf3d4fd5984e3ef3d8daf91417eff6e4:/runlisp-base.conf?ds=sidebyside diff --git a/runlisp-base.conf b/runlisp-base.conf index 7f7207f..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 =