diff --git a/asdf.asd b/asdf.asd index 2337e06536f4d8ef52b82ca7d81fb4f4c91cee3a..2a5ec0c2713ff4f59dfce62e456aad63eecddffe 100644 --- a/asdf.asd +++ b/asdf.asd @@ -62,7 +62,7 @@ :licence "MIT" :description "Another System Definition Facility" :long-description "ASDF builds Common Lisp software organized into defined systems." - :version "2.26.155" ;; to be automatically updated by make bump-version + :version "2.26.156" ;; to be automatically updated by make bump-version :depends-on () #+asdf3 :encoding #+asdf3 :utf-8 ;; For most purposes, asdf itself specially counts as a builtin system. diff --git a/backward-interface.lisp b/backward-interface.lisp index 450b453e6b670aa723cd0b9ed16db3ea84a5cab9..a77703e4b516bee668d7cf52e230067ac26bd8a1 100644 --- a/backward-interface.lisp +++ b/backward-interface.lisp @@ -9,7 +9,7 @@ (:export #:*asdf-verbose* #:operation-error #:compile-error #:compile-failed #:compile-warned - #:error-component #:error-operation #:load-sysdef + #:error-component #:error-operation #:component-load-dependencies #:enable-asdf-binary-locations-compatibility #:operation-forced @@ -116,11 +116,6 @@ ASDF:ENABLE-ASDF-BINARY-LOCATIONS-COMPATIBILITY as documented in the manual; call that function where you would otherwise have loaded and configured A-B-L."))) -;;;; load-sysdef -(defun* load-sysdef (name pathname) - (load-asd pathname :name name)) - - ;;;; run-shell-command ;; ;; WARNING! The function below is dysfunctional and deprecated. diff --git a/backward-internals.lisp b/backward-internals.lisp index 79e31e5edb73ce37cfd301eab25aacfab4742458..6caf4d2a8b58f5b0c2386637904cd953cd858e06 100644 --- a/backward-internals.lisp +++ b/backward-internals.lisp @@ -7,9 +7,11 @@ :asdf/system :asdf/component :asdf/operation :asdf/find-system :asdf/action :asdf/lisp-action) (:export ;; for internal use + #:load-sysdef #:make-temporary-package #:%refresh-component-inline-methods #:%resolve-if-component-dep-fails - #:make-sub-operation)) + #:make-sub-operation + #:load-sysdef #:make-temporary-package)) (in-package :asdf/backward-internals) ;;;; Backward compatibility with "inline methods" @@ -70,3 +72,13 @@ (when-upgrade (:when (fboundp 'make-sub-operation)) (defun* make-sub-operation (c o dep-c dep-o) (declare (ignore c o dep-c dep-o)) (asdf-upgrade-error))) + + +;;;; load-sysdef +(defun* load-sysdef (name pathname) + (load-asd pathname :name name)) + +(defun* make-temporary-package () + (make-package (fresh-package-name :prefix :asdf :index 0) :use '(:cl :asdf/interface))) + + diff --git a/component.lisp b/component.lisp index 663b31b206d1d79d44ae8ba4c18e07ab4b5892e8..3e8c7fd4e9ab7e0d37265adccbdc17b1a1088f32 100644 --- a/component.lisp +++ b/component.lisp @@ -25,6 +25,7 @@ #:component-build-operation #:module-default-component-class #:module-components ;; backward-compatibility. DO NOT USE. + #:sub-components ;; Internals we'd like to share with the ASDF package, especially for upgrade purposes #:name #:version #:description #:long-description #:author #:maintainer #:licence @@ -257,3 +258,16 @@ another pathname in a degenerate way.")) (defmethod version-satisfies ((cver string) version) (version-compatible-p cver version)) + + +;;; all sub-components (of a given type) + +(defun* sub-components (component &key (type t)) + (while-collecting (c) + (labels ((recurse (x) + (when (if-let (it (component-if-feature x)) (featurep it) t) + (when (typep x type) + (c x)) + (when (typep x 'parent-component) + (map () #'recurse (component-children x)))))) + (recurse component)))) diff --git a/configuration.lisp b/configuration.lisp index 898fe2b47aa27f76ff18092232fd0f6f887ef1e4..b9105750daf0a2a0db7f0011637e21fd2e61d582 100644 --- a/configuration.lisp +++ b/configuration.lisp @@ -240,21 +240,22 @@ directive.") (:ensure-directory boolean)) t) resolve-location)) (defun* (resolve-location) (x &key ensure-directory wilden directory) - (when directory (setf ensure-directory t)) ;; :directory backward compatibility, until 2014-01-16. - (if (atom x) - (resolve-absolute-location x :ensure-directory ensure-directory :wilden wilden) - (loop* :with (first . rest) = x - :with path = (resolve-absolute-location - first :ensure-directory (and (or ensure-directory rest) t) - :wilden (and wilden (null rest))) - :for (element . morep) :on rest - :for dir = (and (or morep ensure-directory) t) - :for wild = (and wilden (not morep)) - :do (setf path (merge-pathnames* - (resolve-relative-location - element :ensure-directory dir :wilden wild) - path)) - :finally (return path)))) + ;; :directory backward compatibility, until 2014-01-16: accept directory as well as ensure-directory + (let ((dirp (or directory ensure-directory))) + (if (atom x) + (resolve-absolute-location x :ensure-directory dirp :wilden wilden) + (loop* :with (first . rest) = x + :with path = (resolve-absolute-location + first :ensure-directory (and (or dirp rest) t) + :wilden (and wilden (null rest))) + :for (element . morep) :on rest + :for dir = (and (or morep dirp) t) + :for wild = (and wilden (not morep)) + :do (setf path (merge-pathnames* + (resolve-relative-location + element :ensure-directory dir :wilden wild) + path)) + :finally (return path))))) (defun* location-designator-p (x) (flet ((absolute-component-p (c) diff --git a/driver.lisp b/driver.lisp index 138a99651837f01e5ea51e01ff51c913242c631b..950ed7c9d50a5a071a58e43c57294224a72ac7cb 100644 --- a/driver.lisp +++ b/driver.lisp @@ -13,4 +13,4 @@ :asdf/package :asdf/utility :asdf/pathname :asdf/stream :asdf/os :asdf/image :asdf/run-program :asdf/lisp-build - :asdf/configuration)) + :asdf/configuration :asdf/backward-driver)) diff --git a/header.lisp b/header.lisp index e16fb7f2e7f5ff709d046da1e72e2231f8531efb..d8f53cef0c437a6de165c58fb1332c2106f5d2e0 100644 --- a/header.lisp +++ b/header.lisp @@ -1,5 +1,5 @@ ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*- -;;; This is ASDF 2.26.155: Another System Definition Facility. +;;; This is ASDF 2.26.156: Another System Definition Facility. ;;; ;;; Feedback, bug reports, and patches are all welcome: ;;; please mail to <asdf-devel@common-lisp.net>. diff --git a/lisp-action.lisp b/lisp-action.lisp index 063b4800268de364957f0e24b3e9e40f52e150db..899da73752f20fa7b05310de9c4ac5f3efb0eae9 100644 --- a/lisp-action.lisp +++ b/lisp-action.lisp @@ -145,13 +145,13 @@ #+(or clozure sbcl) (defmethod input-files ((o compile-op) (c system)) (declare (ignorable o c)) - (unless (builtin-system-p c) - (loop* :for (sub-o . sub-c) - :in (traverse-sub-actions - o c :other-systems nil - :keep-operation 'compile-op :keep-component 'cl-source-file) - :append (remove-if-not 'warnings-file-p - (output-files sub-o sub-c))))) + (when *warnings-file-type* + (unless (builtin-system-p c) + ;; The most correct way to do it would be to use: + ;; (traverse-sub-actions o c :other-systems nil :keep-operation 'compile-op :keep-component 'cl-source-file) + ;; but it's expensive and we don't care too much about file order or ASDF extensions. + (loop :for sub :in (sub-components c :type 'cl-source-file) + :nconc (remove-if-not 'warnings-file-p (output-files o sub)))))) #+sbcl (defmethod output-files ((o compile-op) (c system)) (unless (builtin-system-p c) diff --git a/upgrade.lisp b/upgrade.lisp index 0ff92ad265b0aa99f7ebbc6842a41623f9166fb1..5f11e470e8ea0930619cc18291ba265ea147009c 100644 --- a/upgrade.lisp +++ b/upgrade.lisp @@ -35,7 +35,7 @@ ;; "2.345.6" would be a development version in the official upstream ;; "2.345.0.7" would be your seventh local modification of official release 2.345 ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6 - (asdf-version "2.26.155") + (asdf-version "2.26.156") (existing-asdf (find-class (find-symbol* :component :asdf nil) nil)) (existing-version *asdf-version*) (already-there (equal asdf-version existing-version)) diff --git a/version.lisp-expr b/version.lisp-expr index 8c163475d37beda491ff62146958156df4008a94..208d5b7431689ebb7eeb8aec51bd6cdfdd7bdec3 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -1 +1 @@ -"2.26.155" +"2.26.156"