Skip to content
Snippets Groups Projects
Commit fefea18b authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

2.32.10: Patch a subtle issue causing multiple compilations + more

If system-a :depends-on (system-c ... system-b) and
system-b :defsystem-depends-on (system-c), then
system-c would have been loaded twice, first via the defsystem-depends-on,
second via the plan for system-a which would have
included the items from system-c before system-c was loaded.

Also, allow an arbitrary number of qualifiers in inline-methods,
not just 1 or 0.

On CCL, don't punt on upgrade anymore: all tests are passing.

Make UIOP compile on versions of ASDF older than 2.018.

Finally, yet another tweak for run-program on Allegro on Windows.
parent 1750c17a
No related branches found
No related tags found
No related merge requests found
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
:licence "MIT" :licence "MIT"
:description "Another System Definition Facility" :description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems." :long-description "ASDF builds Common Lisp software organized into defined systems."
:version "2.32.9" ;; to be automatically updated by make bump-version :version "2.32.10" ;; to be automatically updated by make bump-version
:depends-on () :depends-on ()
#+asdf3 :encoding #+asdf3 :utf-8 #+asdf3 :encoding #+asdf3 :utf-8
;; For most purposes, asdf itself specially counts as a builtin system. ;; For most purposes, asdf itself specially counts as a builtin system.
......
...@@ -31,23 +31,18 @@ ...@@ -31,23 +31,18 @@
(component-inline-methods component) nil) (component-inline-methods component) nil)
(defun %define-component-inline-methods (ret rest) (defun %define-component-inline-methods (ret rest)
(dolist (name +asdf-methods+) (loop* :for (key value) :on rest :by #'cddr
(let ((keyword (intern (symbol-name name) :keyword))) :for name = (and (keywordp key) (find key +asdf-methods+ :test 'string=))
(loop :for data = rest :then (cddr data) :when name :do
:for key = (first data) (destructuring-bind (op &rest body) value
:for value = (second data) (loop :for arg = (pop body)
:while data :while (atom arg)
:when (eq key keyword) :do :collect arg :into qualifiers
(destructuring-bind (op qual? &rest rest) value :finally
(multiple-value-bind (qual args-and-body) (destructuring-bind (o c) arg
(if (symbolp qual?) (pushnew
(values (list qual?) rest) (eval `(defmethod ,name ,@qualifiers ((,o ,op) (,c (eql ,ret))) ,@body))
(values nil (cons qual? rest))) (component-inline-methods ret)))))))
(destructuring-bind ((o c) &body body) args-and-body
(pushnew
(eval `(defmethod ,name ,@qual ((,o ,op) (,c (eql ,ret)))
,@body))
(component-inline-methods ret)))))))))
(defun %refresh-component-inline-methods (component rest) (defun %refresh-component-inline-methods (component rest)
;; clear methods, then add the new ones ;; clear methods, then add the new ones
......
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*- ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; This is ASDF 2.32.9: Another System Definition Facility. ;;; This is ASDF 2.32.10: Another System Definition Facility.
;;; ;;;
;;; Feedback, bug reports, and patches are all welcome: ;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>. ;;; please mail to <asdf-devel@common-lisp.net>.
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
(declaim (optimize (speed 1) (safety 3) (debug 3))) (declaim (optimize (speed 1) (safety 3) (debug 3)))
(setf ext:*gc-verbose* nil)) (setf ext:*gc-verbose* nil))
#+(or abcl clisp clozure cmu ecl xcl) #+(or abcl clisp cmu ecl xcl)
(eval-when (:load-toplevel :compile-toplevel :execute) (eval-when (:load-toplevel :compile-toplevel :execute)
(unless (member :asdf3 *features*) (unless (member :asdf3 *features*)
(let* ((existing-version (let* ((existing-version
...@@ -74,5 +74,5 @@ ...@@ -74,5 +74,5 @@
(or #+abcl 2.25 #+cmu 2.018 2.27))) (or #+abcl 2.25 #+cmu 2.018 2.27)))
(rename-package :asdf away) (rename-package :asdf away)
(when *load-verbose* (when *load-verbose*
(format t "; Renamed old ~A package away to ~A~%" :asdf away)))))) (format t "~&; Renamed old ~A package away to ~A~%" :asdf away))))))
...@@ -88,7 +88,7 @@ The :FORCE or :FORCE-NOT argument to OPERATE can be: ...@@ -88,7 +88,7 @@ The :FORCE or :FORCE-NOT argument to OPERATE can be:
(defmethod operate ((operation operation) (component component) (defmethod operate ((operation operation) (component component)
&rest keys &key &allow-other-keys) &rest keys &key &allow-other-keys)
(let ((plan (apply 'traverse operation component keys))) (let ((plan (apply 'traverse operation component keys)))
(perform-plan plan) (apply 'perform-plan plan keys)
(values operation plan))) (values operation plan)))
(defun oos (operation component &rest args &key &allow-other-keys) (defun oos (operation component &rest args &key &allow-other-keys)
......
...@@ -386,9 +386,10 @@ processed in order by OPERATE.")) ...@@ -386,9 +386,10 @@ processed in order by OPERATE."))
(with-compilation-unit () ;; backward-compatibility. (with-compilation-unit () ;; backward-compatibility.
(call-next-method)))) ;; Going forward, see deferred-warning support in lisp-build. (call-next-method)))) ;; Going forward, see deferred-warning support in lisp-build.
(defmethod perform-plan ((steps list) &key) (defmethod perform-plan ((steps list) &key force &allow-other-keys)
(loop* :for (op . component) :in steps :do (loop* :for (o . c) :in steps
(perform-with-restarts op component))) :when (or force (not (nth-value 1 (compute-action-stamp nil o c))))
:do (perform-with-restarts o c)))
(defmethod plan-operates-on-p ((plan list) (component-path list)) (defmethod plan-operates-on-p ((plan list) (component-path list))
(find component-path (mapcar 'cdr plan) (find component-path (mapcar 'cdr plan)
......
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
(in-package :asdf) (in-package :asdf)
#-gcl2.6 #+gcl2.6 (leave-test "GCL 2.6 sucks. Skipping test." 0)
(assert (handler-case (assert (handler-case
(let ((*compile-file-failure-behaviour* :warn)) (let ((*compile-file-failure-behaviour* :warn))
(load-system 'test-compile-file-failure :force t) (load-system 'test-compile-file-failure :force t)
t) t)
(compile-file-error () nil))) (compile-file-error () nil)))
#-gcl2.6
(assert (handler-case (assert (handler-case
(let ((*compile-file-failure-behaviour* :error)) (let ((*compile-file-failure-behaviour* :error))
(load-system 'test-compile-file-failure :force t) (load-system 'test-compile-file-failure :force t)
......
...@@ -354,7 +354,9 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process ...@@ -354,7 +354,9 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process
(declare (ignorable interactive)) (declare (ignorable interactive))
#+(or abcl xcl) (ext:run-shell-command command) #+(or abcl xcl) (ext:run-shell-command command)
#+allegro #+allegro
(excl:run-shell-command command :input interactive :output interactive :wait t) (excl:run-shell-command
command :input interactive :output interactive :wait t
#+os-windows :show-window #+os-windows (unless (or interactive (eq output t)) :hide))
#+(or clisp clozure cmu (and lispworks os-unix) sbcl scl) #+(or clisp clozure cmu (and lispworks os-unix) sbcl scl)
(process-result (run-program command :pipe nil :interactive interactive) nil) (process-result (run-program command :pipe nil :interactive interactive) nil)
#+ecl (ext:system command) #+ecl (ext:system command)
...@@ -362,7 +364,7 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process ...@@ -362,7 +364,7 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process
#+gcl (lisp:system command) #+gcl (lisp:system command)
#+(and lispworks os-windows) #+(and lispworks os-windows)
(system:call-system-showing-output (system:call-system-showing-output
command :show-cmd interactive :prefix "" :output-stream nil) command :show-cmd (or interactive (eq output t)) :prefix "" :output-stream nil)
#+mcl (ccl::with-cstrs ((%command command)) (_system %command)) #+mcl (ccl::with-cstrs ((%command command)) (_system %command))
#+mkcl (nth-value 2 #+mkcl (nth-value 2
(mkcl:run-program #+windows command #+windows () (mkcl:run-program #+windows command #+windows ()
......
...@@ -17,7 +17,7 @@ UIOP is also known as ASDF/DRIVER or ASDF-UTILS, ...@@ -17,7 +17,7 @@ UIOP is also known as ASDF/DRIVER or ASDF-UTILS,
being transcluded into asdf.lisp together with ASDF/DEFSYSTEM." being transcluded into asdf.lisp together with ASDF/DEFSYSTEM."
#+asdf3 :version #+asdf3 (:read-file-form "version.lisp-expr") #+asdf3 :version #+asdf3 (:read-file-form "version.lisp-expr")
#+asdf-encoding :encoding #+asdf-encoding :utf-8 #+asdf-encoding :encoding #+asdf-encoding :utf-8
:around-compile call-without-redefinition-warnings #+asdf3 :around-compile #+asdf3 call-without-redefinition-warnings
:components :components
((:static-file "version.lisp-expr") ((:static-file "version.lisp-expr")
(:static-file "contrib/debug.lisp") (:static-file "contrib/debug.lisp")
......
...@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO ...@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
;; "3.4.5.67" would be a development version in the official upstream of 3.4.5. ;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5 ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67 ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
(asdf-version "2.32.9") (asdf-version "2.32.10")
(existing-version (asdf-version))) (existing-version (asdf-version)))
(setf *asdf-version* asdf-version) (setf *asdf-version* asdf-version)
(when (and existing-version (not (equal asdf-version existing-version))) (when (and existing-version (not (equal asdf-version existing-version)))
......
"2.32.9" "2.32.10"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment