| 
1
 | 
1
 | 
 ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; Package: CL-USER ; buffer-read-only: t; -*-
  | 
| 
2
 | 
 
 | 
-;;; This is ASDF 3.3.6: Another System Definition Facility.
  | 
| 
 
 | 
2
 | 
+;;; This is ASDF 3.3.7: Another System Definition Facility.
  | 
| 
3
 | 
3
 | 
 ;;;
  | 
| 
4
 | 
4
 | 
 ;;; Feedback, bug reports, and patches are all welcome:
  | 
| 
5
 | 
5
 | 
 ;;; please mail to <asdf-devel@common-lisp.net>.
  | 
| ... | 
... | 
@@ -1848,7 +1848,7 @@ form suitable for testing with #+." | 
| 
1848
 | 
1848
 | 
 (in-package :uiop/version)
  | 
| 
1849
 | 
1849
 | 
 
  | 
| 
1850
 | 
1850
 | 
 (with-upgradability ()
  | 
| 
1851
 | 
 
 | 
-  (defparameter *uiop-version* "3.3.6")
  | 
| 
 
 | 
1851
 | 
+  (defparameter *uiop-version* "3.3.7")
  | 
| 
1852
 | 
1852
 | 
 
  | 
| 
1853
 | 
1853
 | 
   (defun unparse-version (version-list)
  | 
| 
1854
 | 
1854
 | 
     "From a parsed version (a list of natural numbers), compute the version string"
  | 
| ... | 
... | 
@@ -2144,18 +2144,56 @@ use getenvp to return NIL in such a case." | 
| 
2144
 | 
2144
 | 
 
  | 
| 
2145
 | 
2145
 | 
   (defsetf getenv (x) (val)
  | 
| 
2146
 | 
2146
 | 
     "Set an environment variable."
  | 
| 
2147
 | 
 
 | 
-    (declare (ignorable x val))
  | 
| 
2148
 | 
 
 | 
-    #+allegro `(setf (sys:getenv ,x) ,val)
  | 
| 
2149
 | 
 
 | 
-    #+clasp `(ext:setenv ,x ,val)
  | 
| 
2150
 | 
 
 | 
-    #+clisp `(system::setenv ,x ,val)
  | 
| 
2151
 | 
 
 | 
-    #+clozure `(ccl:setenv ,x ,val)
  | 
| 
2152
 | 
 
 | 
-    #+cmucl `(unix:unix-setenv ,x ,val 1)
  | 
| 
2153
 | 
 
 | 
-    #+(or ecl clasp) `(ext:setenv ,x ,val)
  | 
| 
2154
 | 
 
 | 
-    #+lispworks `(setf (lispworks:environment-variable ,x) ,val)
  | 
| 
2155
 | 
 
 | 
-    #+mkcl `(mkcl:setenv ,x ,val)
  | 
| 
2156
 | 
 
 | 
-    #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
  | 
| 
2157
 | 
 
 | 
-    #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
  | 
| 
2158
 | 
 
 | 
-    '(not-implemented-error '(setf getenv)))
  | 
| 
 
 | 
2147
 | 
+    (declare (ignorable x val))         ; for the not-implemented cases.
  | 
| 
 
 | 
2148
 | 
+    (if (constantp val)
  | 
| 
 
 | 
2149
 | 
+        (if val
  | 
| 
 
 | 
2150
 | 
+         #+allegro `(setf (sys:getenv ,x) ,val)
  | 
| 
 
 | 
2151
 | 
+         #+clasp `(ext:setenv ,x ,val)
  | 
| 
 
 | 
2152
 | 
+         #+clisp `(system::setenv ,x ,val)
  | 
| 
 
 | 
2153
 | 
+         #+clozure `(ccl:setenv ,x ,val)
  | 
| 
 
 | 
2154
 | 
+         #+cmucl `(unix:unix-setenv ,x ,val 1)
  | 
| 
 
 | 
2155
 | 
+         #+ecl `(ext:setenv ,x ,val)
  | 
| 
 
 | 
2156
 | 
+         #+lispworks `(setf (lispworks:environment-variable ,x) ,val)
  | 
| 
 
 | 
2157
 | 
+         #+mkcl `(mkcl:setenv ,x ,val)
  | 
| 
 
 | 
2158
 | 
+         #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
  | 
| 
 
 | 
2159
 | 
+         #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
  | 
| 
 
 | 
2160
 | 
+         '(not-implemented-error '(setf getenv))
  | 
| 
 
 | 
2161
 | 
+         ;; VAL is NIL, unset the variable
  | 
| 
 
 | 
2162
 | 
+         #+allegro `(symbol-call :excl.osi :unsetenv ,x)
  | 
| 
 
 | 
2163
 | 
+         ;; #+clasp `(ext:setenv ,x ,val) ; UNSETENV is not supported.
  | 
| 
 
 | 
2164
 | 
+         #+clisp `(system::setenv ,x ,val) ; need fix -- no idea if this works.
  | 
| 
 
 | 
2165
 | 
+         #+clozure `(ccl:unsetenv ,x)
  | 
| 
 
 | 
2166
 | 
+         #+cmucl `(unix:unix-unsetenv ,x)
  | 
| 
 
 | 
2167
 | 
+         #+ecl `(ext:setenv ,x ,val) ; Looked at source, don't see UNSETENV
  | 
| 
 
 | 
2168
 | 
+         #+lispworks `(setf (lispworks:environment-variable ,x) ,val) ; according to their docs, this should unset the variable
  | 
| 
 
 | 
2169
 | 
+         #+mkcl `(mkcl:setenv ,x ,val) ; like other ECL-family implementations, don't see UNSETENV
  | 
| 
 
 | 
2170
 | 
+         #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :unsetenv ,x))
  | 
| 
 
 | 
2171
 | 
+         #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl)
  | 
| 
 
 | 
2172
 | 
+         '(not-implemented-error 'unsetenv))
  | 
| 
 
 | 
2173
 | 
+        `(if ,val
  | 
| 
 
 | 
2174
 | 
+             #+allegro (setf (sys:getenv ,x) ,val)
  | 
| 
 
 | 
2175
 | 
+             #+clasp (ext:setenv ,x ,val)
  | 
| 
 
 | 
2176
 | 
+             #+clisp (system::setenv ,x ,val)
  | 
| 
 
 | 
2177
 | 
+             #+clozure (ccl:setenv ,x ,val)
  | 
| 
 
 | 
2178
 | 
+             #+cmucl (unix:unix-setenv ,x ,val 1)
  | 
| 
 
 | 
2179
 | 
+             #+ecl (ext:setenv ,x ,val)
  | 
| 
 
 | 
2180
 | 
+             #+lispworks (setf (lispworks:environment-variable ,x) ,val)
  | 
| 
 
 | 
2181
 | 
+             #+mkcl (mkcl:setenv ,x ,val)
  | 
| 
 
 | 
2182
 | 
+             #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
  | 
| 
 
 | 
2183
 | 
+             #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
  | 
| 
 
 | 
2184
 | 
+             '(not-implemented-error '(setf getenv))
  | 
| 
 
 | 
2185
 | 
+             ;; VAL is NIL, unset the variable
  | 
| 
 
 | 
2186
 | 
+             #+allegro (symbol-call :excl.osi :unsetenv ,x)
  | 
| 
 
 | 
2187
 | 
+             ;; #+clasp (ext:setenv ,x ,val) ; UNSETENV not supported
  | 
| 
 
 | 
2188
 | 
+             #+clisp (system::setenv ,x ,val) ; need fix -- no idea if this works.
  | 
| 
 
 | 
2189
 | 
+             #+clozure (ccl:unsetenv ,x)
  | 
| 
 
 | 
2190
 | 
+             #+cmucl (unix:unix-unsetenv ,x)
  | 
| 
 
 | 
2191
 | 
+             #+ecl (ext:setenv ,x ,val) ; Looked at source, don't see UNSETENV
  | 
| 
 
 | 
2192
 | 
+             #+lispworks (setf (lispworks:environment-variable ,x) ,val) ; according to their docs, this should unset the variable
  | 
| 
 
 | 
2193
 | 
+             #+mkcl (mkcl:setenv ,x ,val) ; like other ECL-family implementations, don't see UNSETENV
  | 
| 
 
 | 
2194
 | 
+             #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :unsetenv ,x))
  | 
| 
 
 | 
2195
 | 
+             #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl)
  | 
| 
 
 | 
2196
 | 
+             '(not-implemented-error 'unsetenv))))
  | 
| 
2159
 | 
2197
 | 
 
  | 
| 
2160
 | 
2198
 | 
   (defun getenvp (x)
  | 
| 
2161
 | 
2199
 | 
     "Predicate that is true if the named variable is present in the libc environment,
  | 
| ... | 
... | 
@@ -2240,7 +2278,7 @@ then returning the non-empty string value of the variable" | 
| 
2240
 | 
2278
 | 
                 ;; Note if not using International ACL
  | 
| 
2241
 | 
2279
 | 
                 ;; see http://www.franz.com/support/documentation/8.1/doc/operators/excl/ics-target-case.htm
  | 
| 
2242
 | 
2280
 | 
                 (excl:ics-target-case (:-ics "8"))
  | 
| 
2243
 | 
 
 | 
-                (and (member :smp *features*) "S"))
  | 
| 
 
 | 
2281
 | 
+                (and (member :smp *features*) "SBT"))
  | 
| 
2244
 | 
2282
 | 
         #+armedbear (format nil "~a-fasl~a" s system::*fasl-version*)
  | 
| 
2245
 | 
2283
 | 
         #+clisp
  | 
| 
2246
 | 
2284
 | 
         (subseq s 0 (position #\space s)) ; strip build information (date, etc.)
  | 
| ... | 
... | 
@@ -2282,7 +2320,8 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie | 
| 
2282
 | 
2320
 | 
              (or (implementation-type) (lisp-implementation-type))
  | 
| 
2283
 | 
2321
 | 
              (lisp-version-string)
  | 
| 
2284
 | 
2322
 | 
              (or (operating-system) (software-type))
  | 
| 
2285
 | 
 
 | 
-             (or (architecture) (machine-type))))))
  | 
| 
 
 | 
2323
 | 
+             (or (architecture) (machine-type))
  | 
| 
 
 | 
2324
 | 
+             #+sbcl (if (featurep :sb-thread) "S" "")))))
  | 
| 
2286
 | 
2325
 | 
 
  | 
| 
2287
 | 
2326
 | 
 
  | 
| 
2288
 | 
2327
 | 
 ;;;; Other system information
  | 
| ... | 
... | 
@@ -2426,8 +2465,6 @@ the number having BYTES octets (defaulting to 4)." | 
| 
2426
 | 
2465
 | 
         (end-of-file (c)
  | 
| 
2427
 | 
2466
 | 
           (declare (ignore c))
  | 
| 
2428
 | 
2467
 | 
           nil)))))
  | 
| 
2429
 | 
 
 | 
-
  | 
| 
2430
 | 
 
 | 
-
  | 
| 
2431
 | 
2468
 | 
 ;;;; -------------------------------------------------------------------------
  | 
| 
2432
 | 
2469
 | 
 ;;;; Portability layer around Common Lisp pathnames
  | 
| 
2433
 | 
2470
 | 
 ;; This layer allows for portable manipulation of pathname objects themselves,
  | 
| ... | 
... | 
@@ -4554,7 +4591,7 @@ Upon success, the KEEP form is evaluated and the file is is deleted unless it ev | 
| 
4554
 | 
4591
 | 
                        ,@before)))
  | 
| 
4555
 | 
4592
 | 
               ,@(when after
  | 
| 
4556
 | 
4593
 | 
                   (assert pathnamep)
  | 
| 
4557
 | 
 
 | 
-                  `((,afterf (,pathname) ,@after))))
  | 
| 
 
 | 
4594
 | 
+                  `((,afterf (,pathname) (declare (ignorable ,pathname)) ,@after))))
  | 
| 
4558
 | 
4595
 | 
          #-gcl (declare (dynamic-extent ,@(when before `(#',beforef)) ,@(when after `(#',afterf))))
  | 
| 
4559
 | 
4596
 | 
          (call-with-temporary-file
  | 
| 
4560
 | 
4597
 | 
           ,(when before `#',beforef)
  | 
| ... | 
... | 
@@ -4673,7 +4710,7 @@ when the image is restarted, but before the entry point is called.") | 
| 
4673
 | 
4710
 | 
 before the image dump hooks are called and before the image is dumped.")
  | 
| 
4674
 | 
4711
 | 
 
  | 
| 
4675
 | 
4712
 | 
   (defvar *image-dump-hook* nil
  | 
| 
4676
 | 
 
 | 
-    "Functions to call (in order) when before an image is dumped"))
  | 
| 
 
 | 
4713
 | 
+    "Functions to call (in order) before an image is dumped"))
  | 
| 
4677
 | 
4714
 | 
 
  | 
| 
4678
 | 
4715
 | 
 (eval-when (#-lispworks :compile-toplevel :load-toplevel :execute)
  | 
| 
4679
 | 
4716
 | 
   (deftype fatal-condition ()
  | 
| ... | 
... | 
@@ -4984,9 +5021,17 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows." | 
| 
4984
 | 
5021
 | 
     #-(or clisp clozure (and cmucl executable) lispworks sbcl scl)
  | 
| 
4985
 | 
5022
 | 
     (when executable
  | 
| 
4986
 | 
5023
 | 
       (not-implemented-error 'dump-image "dumping an executable"))
  | 
| 
4987
 | 
 
 | 
-    #+allegro
  | 
| 
 
 | 
5024
 | 
+    #+allegro ;; revised with help from Franz
  | 
| 
4988
 | 
5025
 | 
     (progn
  | 
| 
4989
 | 
 
 | 
-      (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000
  | 
| 
 
 | 
5026
 | 
+      #+(and allegro-version>= (version>= 11))
  | 
| 
 
 | 
5027
 | 
+      (sys:resize-areas
  | 
| 
 
 | 
5028
 | 
+       :old :no-change :old-code :no-change
  | 
| 
 
 | 
5029
 | 
+       :global-gc t
  | 
| 
 
 | 
5030
 | 
+       :tenure t)
  | 
| 
 
 | 
5031
 | 
+      #+(and allegro-version>= (version= 10 1))
  | 
| 
 
 | 
5032
 | 
+      (sys:resize-areas :old 10000000 :global-gc t :pack-heap t :sift-old-areas t :tenure t)
  | 
| 
 
 | 
5033
 | 
+      #+(and allegro-version>= (not (version>= 10 1)))
  | 
| 
 
 | 
5034
 | 
+      (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t)
  | 
| 
4990
 | 
5035
 | 
       (excl:dumplisp :name filename :suppress-allegro-cl-banner t))
  | 
| 
4991
 | 
5036
 | 
     #+clisp
  | 
| 
4992
 | 
5037
 | 
     (apply #'ext:saveinitmem filename
  | 
| ... | 
... | 
@@ -5122,7 +5167,8 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows." | 
| 
5122
 | 
5167
 | 
    ;; Variables
  | 
| 
5123
 | 
5168
 | 
    #:*compile-file-warnings-behaviour* #:*compile-file-failure-behaviour*
  | 
| 
5124
 | 
5169
 | 
    #:*output-translation-function*
  | 
| 
5125
 | 
 
 | 
-   #:*optimization-settings* #:*previous-optimization-settings*
  | 
| 
 
 | 
5170
 | 
+   ;; the following dropped because unnecessary.
  | 
| 
 
 | 
5171
 | 
+   ;; #:*optimization-settings* #:*previous-optimization-settings*
  | 
| 
5126
 | 
5172
 | 
    #:*base-build-directory*
  | 
| 
5127
 | 
5173
 | 
    #:compile-condition #:compile-file-error #:compile-warned-error #:compile-failed-error
  | 
| 
5128
 | 
5174
 | 
    #:compile-warned-warning #:compile-failed-warning
  | 
| ... | 
... | 
@@ -5132,7 +5178,10 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows." | 
| 
5132
 | 
5178
 | 
    ;; Types
  | 
| 
5133
 | 
5179
 | 
    #+sbcl #:sb-grovel-unknown-constant-condition
  | 
| 
5134
 | 
5180
 | 
    ;; Functions & Macros
  | 
| 
5135
 | 
 
 | 
-   #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings
  | 
| 
 
 | 
5181
 | 
+   ;; the following three removed from UIOP because they have bugs, it's
  | 
| 
 
 | 
5182
 | 
+   ;; easier to remove tham than to fix them, and they could never have been
  | 
| 
 
 | 
5183
 | 
+   ;; used successfully in the wild. [2023/12/11:rpg]
  | 
| 
 
 | 
5184
 | 
+   ;; #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings
  | 
| 
5136
 | 
5185
 | 
    #:call-with-muffled-compiler-conditions #:with-muffled-compiler-conditions
  | 
| 
5137
 | 
5186
 | 
    #:call-with-muffled-loader-conditions #:with-muffled-loader-conditions
  | 
| 
5138
 | 
5187
 | 
    #:reify-simple-sexp #:unreify-simple-sexp
  | 
| ... | 
... | 
@@ -5167,6 +5216,7 @@ what more while the input-file is shortened if possible to ENOUGH-PATHNAME relat | 
| 
5167
 | 
5216
 | 
 This can help you produce more deterministic output for FASLs."))
  | 
| 
5168
 | 
5217
 | 
 
  | 
| 
5169
 | 
5218
 | 
 ;;; Optimization settings
  | 
| 
 
 | 
5219
 | 
+#+ignore
  | 
| 
5170
 | 
5220
 | 
 (with-upgradability ()
  | 
| 
5171
 | 
5221
 | 
   (defvar *optimization-settings* nil
  | 
| 
5172
 | 
5222
 | 
     "Optimization settings to be used by PROCLAIM-OPTIMIZATION-SETTINGS")
  | 
| ... | 
... | 
@@ -5224,7 +5274,7 @@ This can help you produce more deterministic output for FASLs.")) | 
| 
5224
 | 
5274
 | 
            (proclaim `(optimize ,@,reset-settings)))))
  | 
| 
5225
 | 
5275
 | 
     #-(or allegro clasp clisp)
  | 
| 
5226
 | 
5276
 | 
     `(let ,(loop :for v :in +optimization-variables+ :collect `(,v ,v))
  | 
| 
5227
 | 
 
 | 
-       ,@(when settings `((proclaim `(optimize ,@,settings))))
  | 
| 
 
 | 
5277
 | 
+       ,@(when settings `((proclaim '(optimize ,@settings))))
  | 
| 
5228
 | 
5278
 | 
        ,@body)))
  | 
| 
5229
 | 
5279
 | 
 
  | 
| 
5230
 | 
5280
 | 
 
  | 
| ... | 
... | 
@@ -5495,7 +5545,16 @@ Simple means made of symbols, numbers, characters, simple-strings, pathnames, co | 
| 
5495
 | 
5545
 | 
 using READ within a WITH-SAFE-IO-SYNTAX, that represents the warnings currently deferred by
  | 
| 
5496
 | 
5546
 | 
 WITH-COMPILATION-UNIT. One of three functions required for deferred-warnings support in ASDF."
  | 
| 
5497
 | 
5547
 | 
     #+allegro
  | 
| 
5498
 | 
 
 | 
-    (list :functions-defined excl::.functions-defined.
  | 
| 
 
 | 
5548
 | 
+    (list :functions-defined
  | 
| 
 
 | 
5549
 | 
+          #+(and allegro-version>= (version>= 11))
  | 
| 
 
 | 
5550
 | 
+          (let (functions-defined)
  | 
| 
 
 | 
5551
 | 
+            (maphash #'(lambda (k v)
  | 
| 
 
 | 
5552
 | 
+                         (declare (ignore v))
  | 
| 
 
 | 
5553
 | 
+                         (push k functions-defined))
  | 
| 
 
 | 
5554
 | 
+                     excl::.functions-defined.)
  | 
| 
 
 | 
5555
 | 
+            functions-defined)
  | 
| 
 
 | 
5556
 | 
+          #+(and allegro-version>= (not (version>= 11)))
  | 
| 
 
 | 
5557
 | 
+          excl::.functions-defined.
  | 
| 
5499
 | 
5558
 | 
           :functions-called excl::.functions-called.)
  | 
| 
5500
 | 
5559
 | 
     #+clozure
  | 
| 
5501
 | 
5560
 | 
     (mapcar 'reify-deferred-warning
  | 
| ... | 
... | 
@@ -5539,10 +5598,18 @@ One of three functions required for deferred-warnings support in ASDF." | 
| 
5539
 | 
5598
 | 
     #+allegro
  | 
| 
5540
 | 
5599
 | 
     (destructuring-bind (&key functions-defined functions-called)
  | 
| 
5541
 | 
5600
 | 
         reified-deferred-warnings
  | 
| 
5542
 | 
 
 | 
-      (setf excl::.functions-defined.
  | 
| 
 
 | 
5601
 | 
+      (setf #+(and allegro-version>= (not (version>= 11)))
  | 
| 
 
 | 
5602
 | 
+            excl::.functions-defined.
  | 
| 
 
 | 
5603
 | 
+            #+(and allegro-version>= (not (version>= 11)))
  | 
| 
5543
 | 
5604
 | 
             (append functions-defined excl::.functions-defined.)
  | 
| 
5544
 | 
5605
 | 
             excl::.functions-called.
  | 
| 
5545
 | 
 
 | 
-            (append functions-called excl::.functions-called.)))
  | 
| 
 
 | 
5606
 | 
+            (append functions-called excl::.functions-called.))
  | 
| 
 
 | 
5607
 | 
+      #+(and allegro-version>= (version>= 11))
  | 
| 
 
 | 
5608
 | 
+      ;; in ACL >= 11, instead of adding defined functions to a list,
  | 
| 
 
 | 
5609
 | 
+      ;; we insert them into a no-values hash-table.
  | 
| 
 
 | 
5610
 | 
+      (mapc #'(lambda (fn)
  | 
| 
 
 | 
5611
 | 
+                (excl:puthash-key fn excl::.functions-defined.))
  | 
| 
 
 | 
5612
 | 
+            functions-defined))
  | 
| 
5546
 | 
5613
 | 
     #+clozure
  | 
| 
5547
 | 
5614
 | 
     (let ((dw (or ccl::*outstanding-deferred-warnings*
  | 
| 
5548
 | 
5615
 | 
                   (setf ccl::*outstanding-deferred-warnings* (ccl::%defer-warnings t)))))
  | 
| ... | 
... | 
@@ -5605,7 +5672,11 @@ One of three functions required for deferred-warnings support in ASDF." | 
| 
5605
 | 
5672
 | 
     "Reset the set of deferred warnings to be handled at the end of the current WITH-COMPILATION-UNIT.
  | 
| 
5606
 | 
5673
 | 
 One of three functions required for deferred-warnings support in ASDF."
  | 
| 
5607
 | 
5674
 | 
     #+allegro
  | 
| 
5608
 | 
 
 | 
-    (setf excl::.functions-defined. nil
  | 
| 
 
 | 
5675
 | 
+    (setf excl::.functions-defined.
  | 
| 
 
 | 
5676
 | 
+          #+(and allegro-version>= (not (version>= 11)))
  | 
| 
 
 | 
5677
 | 
+          nil
  | 
| 
 
 | 
5678
 | 
+          #+(and allegro-version>= (version>= 11))
  | 
| 
 
 | 
5679
 | 
+          (make-hash-table :test #'equal :values nil)
  | 
| 
5609
 | 
5680
 | 
           excl::.functions-called. nil)
  | 
| 
5610
 | 
5681
 | 
     #+clozure
  | 
| 
5611
 | 
5682
 | 
     (if-let (dw ccl::*outstanding-deferred-warnings*)
  | 
| ... | 
... | 
@@ -7809,7 +7880,8 @@ DEPRECATED." | 
| 
7809
 | 
7880
 | 
    #:*post-upgrade-cleanup-hook* #:cleanup-upgraded-asdf
  | 
| 
7810
 | 
7881
 | 
    ;; There will be no symbol left behind!
  | 
| 
7811
 | 
7882
 | 
    #:with-asdf-deprecation
  | 
| 
7812
 | 
 
 | 
-   #:intern*)
  | 
| 
 
 | 
7883
 | 
+   #:intern*
  | 
| 
 
 | 
7884
 | 
+   #:asdf-install-warning)
  | 
| 
7813
 | 
7885
 | 
   (:import-from :uiop/package #:intern* #:find-symbol*))
  | 
| 
7814
 | 
7886
 | 
 (in-package :asdf/upgrade)
  | 
| 
7815
 | 
7887
 | 
 
  | 
| ... | 
... | 
@@ -7894,7 +7966,7 @@ previously-loaded version of ASDF." | 
| 
7894
 | 
7966
 | 
          ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
  | 
| 
7895
 | 
7967
 | 
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
  | 
| 
7896
 | 
7968
 | 
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
  | 
| 
7897
 | 
 
 | 
-         (asdf-version "3.3.6")
  | 
| 
 
 | 
7969
 | 
+         (asdf-version "3.3.7")
  | 
| 
7898
 | 
7970
 | 
          (existing-version (asdf-version)))
  | 
| 
7899
 | 
7971
 | 
     (setf *asdf-version* asdf-version)
  | 
| 
7900
 | 
7972
 | 
     (when (and existing-version (not (equal asdf-version existing-version)))
  | 
| ... | 
... | 
@@ -7970,6 +8042,19 @@ previously-loaded version of ASDF." | 
| 
7970
 | 
8042
 | 
             (call-functions (reverse *post-upgrade-cleanup-hook*)))
  | 
| 
7971
 | 
8043
 | 
           t))))
  | 
| 
7972
 | 
8044
 | 
 
  | 
| 
 
 | 
8045
 | 
+  (define-condition asdf-install-warning (simple-condition warning)
  | 
| 
 
 | 
8046
 | 
+    ((format-control
  | 
| 
 
 | 
8047
 | 
+      :initarg :format-control)
  | 
| 
 
 | 
8048
 | 
+     (format-arguments
  | 
| 
 
 | 
8049
 | 
+      :initarg :format-arguments
  | 
| 
 
 | 
8050
 | 
+      :initform nil))
  | 
| 
 
 | 
8051
 | 
+    (:documentation "Warning class for issues related to upgrading or loading ASDF.")
  | 
| 
 
 | 
8052
 | 
+    (:report (lambda (c s)
  | 
| 
 
 | 
8053
 | 
+               (format s "WARNING: ~?"
  | 
| 
 
 | 
8054
 | 
+                       (slot-value c 'format-control)
  | 
| 
 
 | 
8055
 | 
+                       (slot-value c 'format-arguments)))))
  | 
| 
 
 | 
8056
 | 
+
  | 
| 
 
 | 
8057
 | 
+
  | 
| 
7973
 | 
8058
 | 
   (defun upgrade-asdf ()
  | 
| 
7974
 | 
8059
 | 
     "Try to upgrade of ASDF. If a different version was used, return T.
  | 
| 
7975
 | 
8060
 | 
    We need do that before we operate on anything that may possibly depend on ASDF."
  | 
| ... | 
... | 
@@ -12551,7 +12636,9 @@ into a single file")) | 
| 
12551
 | 
12636
 | 
    #:package-inferred-system #:sysdef-package-inferred-system-search
  | 
| 
12552
 | 
12637
 | 
    #:package-system ;; backward compatibility only. To be removed.
  | 
| 
12553
 | 
12638
 | 
    #:register-system-packages
  | 
| 
12554
 | 
 
 | 
-   #:*defpackage-forms* #:*package-inferred-systems* #:package-inferred-system-missing-package-error))
  | 
| 
 
 | 
12639
 | 
+   #:*defpackage-forms* #:*package-inferred-systems*
  | 
| 
 
 | 
12640
 | 
+   #:package-inferred-system-missing-package-error
  | 
| 
 
 | 
12641
 | 
+   #:package-inferred-system-unknown-defpackage-option-error))
  | 
| 
12555
 | 
12642
 | 
 (in-package :asdf/package-inferred-system)
  | 
| 
12556
 | 
12643
 | 
 
  | 
| 
12557
 | 
12644
 | 
 (with-upgradability ()
  | 
| ... | 
... | 
@@ -12602,15 +12689,34 @@ every such file")) | 
| 
12602
 | 
12689
 | 
                                      trying to define package-inferred-system ~A from file ~A~>")
  | 
| 
12603
 | 
12690
 | 
                        (error-system c) (error-pathname c)))))
  | 
| 
12604
 | 
12691
 | 
 
  | 
| 
12605
 | 
 
 | 
-  (defun package-dependencies (defpackage-form)
  | 
| 
 
 | 
12692
 | 
+  (define-condition package-inferred-system-unknown-defpackage-option-error (system-definition-error)
  | 
| 
 
 | 
12693
 | 
+    ((system :initarg :system :reader error-system)
  | 
| 
 
 | 
12694
 | 
+     (pathname :initarg :pathname :reader error-pathname)
  | 
| 
 
 | 
12695
 | 
+     (option :initarg :clause-head :reader error-option)
  | 
| 
 
 | 
12696
 | 
+     (arguments :initarg :clause-rest :reader error-arguments))
  | 
| 
 
 | 
12697
 | 
+    (:report (lambda (c s)
  | 
| 
 
 | 
12698
 | 
+               (format s (compatfmt "~@<Don't know how to infer package dependencies ~
  | 
| 
 
 | 
12699
 | 
+                                     for non-standard option ~S ~
  | 
| 
 
 | 
12700
 | 
+                                     while trying to define package-inferred-system ~A ~
  | 
| 
 
 | 
12701
 | 
+                                     from file ~A~>")
  | 
| 
 
 | 
12702
 | 
+                       (cons (error-option c)
  | 
| 
 
 | 
12703
 | 
+                             (error-arguments c))
  | 
| 
 
 | 
12704
 | 
+                       (error-system c)
  | 
| 
 
 | 
12705
 | 
+                       (error-pathname c)))))
  | 
| 
 
 | 
12706
 | 
+
  | 
| 
 
 | 
12707
 | 
+  (defun package-dependencies (defpackage-form &optional system pathname)
  | 
| 
12606
 | 
12708
 | 
     "Return a list of packages depended on by the package
  | 
| 
12607
 | 
12709
 | 
 defined in DEFPACKAGE-FORM.  A package is depended upon if
  | 
| 
12608
 | 
 
 | 
-the DEFPACKAGE-FORM uses it or imports a symbol from it."
  | 
| 
 
 | 
12710
 | 
+the DEFPACKAGE-FORM uses it or imports a symbol from it.
  | 
| 
 
 | 
12711
 | 
+
  | 
| 
 
 | 
12712
 | 
+SYSTEM should be the name of the system being defined, and
  | 
| 
 
 | 
12713
 | 
+PATHNAME should be the file which contains the DEFPACKAGE-FORM.
  | 
| 
 
 | 
12714
 | 
+These will be used to report errors when encountering an unknown defpackage argument."
  | 
| 
12609
 | 
12715
 | 
     (assert (defpackage-form-p defpackage-form))
  | 
| 
12610
 | 
12716
 | 
     (remove-duplicates
  | 
| 
12611
 | 
12717
 | 
      (while-collecting (dep)
  | 
| 
12612
 | 
12718
 | 
        (loop :for (option . arguments) :in (cddr defpackage-form) :do
  | 
| 
12613
 | 
 
 | 
-         (ecase option
  | 
| 
 
 | 
12719
 | 
+         (case option
  | 
| 
12614
 | 
12720
 | 
            ((:use :mix :reexport :use-reexport :mix-reexport)
  | 
| 
12615
 | 
12721
 | 
             (dolist (p arguments) (dep (string p))))
  | 
| 
12616
 | 
12722
 | 
            ((:import-from :shadowing-import-from)
  | 
| ... | 
... | 
@@ -12619,7 +12725,37 @@ the DEFPACKAGE-FORM uses it or imports a symbol from it." | 
| 
12619
 | 
12725
 | 
            ((:local-nicknames)
  | 
| 
12620
 | 
12726
 | 
             (loop :for (nil actual-package-name) :in arguments :do
  | 
| 
12621
 | 
12727
 | 
               (dep (string actual-package-name))))
  | 
| 
12622
 | 
 
 | 
-           ((:nicknames :documentation :shadow :export :intern :unintern :recycle)))))
  | 
| 
 
 | 
12728
 | 
+           ((:nicknames :documentation :shadow :export :intern :unintern :recycle))
  | 
| 
 
 | 
12729
 | 
+
  | 
| 
 
 | 
12730
 | 
+           ;;; SBCL extensions to defpackage relating to package locks.
  | 
| 
 
 | 
12731
 | 
+           ;; See https://www.sbcl.org/manual/#Implementation-Packages .
  | 
| 
 
 | 
12732
 | 
+           #+(or sbcl ecl) ;; MKCL too?
  | 
| 
 
 | 
12733
 | 
+           ((:lock)
  | 
| 
 
 | 
12734
 | 
+            ;; A :LOCK clause introduces no dependencies.
  | 
| 
 
 | 
12735
 | 
+            nil)
  | 
| 
 
 | 
12736
 | 
+           #+sbcl
  | 
| 
 
 | 
12737
 | 
+           ((:implement)
  | 
| 
 
 | 
12738
 | 
+            ;; A :IMPLEMENT clause introduces dependencies on the listed packages,
  | 
| 
 
 | 
12739
 | 
+            ;; as it's not meaningful to :IMPLEMENT a package which hasn't yet been defined.
  | 
| 
 
 | 
12740
 | 
+            (dolist (p arguments) (dep (string p))))
  | 
| 
 
 | 
12741
 | 
+
  | 
| 
 
 | 
12742
 | 
+           #+lispworks
  | 
| 
 
 | 
12743
 | 
+           ((:add-use-defaults) nil)
  | 
| 
 
 | 
12744
 | 
+
  | 
| 
 
 | 
12745
 | 
+           #+allegro
  | 
| 
 
 | 
12746
 | 
+           ((:implementation-packages :alternate-name :flat) nil)
  | 
| 
 
 | 
12747
 | 
+
  | 
| 
 
 | 
12748
 | 
+           ;; When encountering an unknown OPTION, signal a continuable error.
  | 
| 
 
 | 
12749
 | 
+           ;; We cannot in general know whether the unknown clause should introduce any dependencies,
  | 
| 
 
 | 
12750
 | 
+           ;; so we cannot do anything other than signal an error here,
  | 
| 
 
 | 
12751
 | 
+           ;; but users may know that certain extensions do not introduce dependencies,
  | 
| 
 
 | 
12752
 | 
+           ;; and may wish to manually continue building.
  | 
| 
 
 | 
12753
 | 
+           (otherwise (cerror "Treat the unknown option as introducing no package dependencies"
  | 
| 
 
 | 
12754
 | 
+                              'package-inferred-system-unknown-defpackage-option-error
  | 
| 
 
 | 
12755
 | 
+                              :system system
  | 
| 
 
 | 
12756
 | 
+                              :pathname pathname
  | 
| 
 
 | 
12757
 | 
+                              :option option
  | 
| 
 
 | 
12758
 | 
+                              :arguments arguments)))))
  | 
| 
12623
 | 
12759
 | 
      :from-end t :test 'equal))
  | 
| 
12624
 | 
12760
 | 
 
  | 
| 
12625
 | 
12761
 | 
   (defun package-designator-name (package)
  | 
| ... | 
... | 
@@ -13974,6 +14110,13 @@ system or its dependencies if it has already been loaded." | 
| 
13974
 | 
14110
 | 
   (when (boundp 'excl:*warn-on-nested-reader-conditionals*)
  | 
| 
13975
 | 
14111
 | 
     (setf excl:*warn-on-nested-reader-conditionals* uiop/common-lisp::*acl-warn-save*))
  | 
| 
13976
 | 
14112
 | 
 
  | 
| 
 
 | 
14113
 | 
+  #+(and allegro allegro-v10.1) ;; check for patch needed for upgradeability
  | 
| 
 
 | 
14114
 | 
+  (unless (assoc "ma040" (cdr (assoc :lisp sys:*patches*)) :test 'equal)
  | 
| 
 
 | 
14115
 | 
+    (warn 'asdf-install-warning
  | 
| 
 
 | 
14116
 | 
+          :format-control "On Allegro Common Lisp 10.1, patch pma040 is ~
  | 
| 
 
 | 
14117
 | 
+needed for correct ASDF upgrading. Please update your Allegro image ~
  | 
| 
 
 | 
14118
 | 
+using (SYS:UPDATE-ALLEGRO)."))
  | 
| 
 
 | 
14119
 | 
+
  | 
| 
13977
 | 
14120
 | 
   ;; Advertise the features we provide.
  | 
| 
13978
 | 
14121
 | 
   (dolist (f '(:asdf :asdf2 :asdf3 :asdf3.1 :asdf3.2 :asdf3.3)) (pushnew f *features*))
  | 
| 
13979
 | 
14122
 | 
 
  |