diff --git a/asdf.asd b/asdf.asd index 5ac4e8c8d42d0b9b8536538f2e59906280487ae6..d5d2996cbe52f931e7af0b53286dafebfc6f2eb1 100644 --- a/asdf.asd +++ b/asdf.asd @@ -12,7 +12,7 @@ :licence "MIT" :description "Another System Definition Facility" :long-description "ASDF builds Common Lisp software organized into defined systems." - :version "2.014.9" ;; to be automatically updated by bin/bump-revision + :version "2.014.10" ;; to be automatically updated by bin/bump-revision :depends-on () :components ((:file "asdf") diff --git a/asdf.lisp b/asdf.lisp index c56716cfa70b1ac56a105323be07f4900169a0b1..b750efe27c5f8b3e6541b0cfbab925f44293afbb 100755 --- a/asdf.lisp +++ b/asdf.lisp @@ -1,5 +1,5 @@ ;;; -*- mode: common-lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*- -;;; This is ASDF 2.014.9: Another System Definition Facility. +;;; This is ASDF 2.014.10: Another System Definition Facility. ;;; ;;; Feedback, bug reports, and patches are all welcome: ;;; please mail to <asdf-devel@common-lisp.net>. @@ -58,7 +58,6 @@ (make-package :asdf :use '(:common-lisp))) ;;; Implementation-dependent tweaks ;; (declaim (optimize (speed 2) (debug 2) (safety 3))) ; NO: rely on the implementation defaults. - (declaim (optimize (speed 2) (debug 3) (safety 3))) ; XXXXX debug only #+allegro (setf excl::*autoload-package-name-alist* (remove "asdf" excl::*autoload-package-name-alist* @@ -101,7 +100,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.014.9") + (asdf-version "2.014.10") (existing-asdf (fboundp 'find-system)) (existing-version *asdf-version*) (already-there (equal asdf-version existing-version))) @@ -1088,7 +1087,7 @@ processed in order by OPERATE.")) (defclass component () ((name :accessor component-name :initarg :name :type string :documentation "Component name: designator for a string composed of portable pathname characters") - (version :accessor component-version :initarg :version :type string) + (version :accessor component-version :initarg :version) ;; :type string -- not until we fix all systems that don't use it correctly! (description :accessor component-description :initarg :description) (long-description :accessor component-long-description :initarg :long-description) ;; This one below is used by POIU - http://www.cliki.net/poiu @@ -1264,11 +1263,13 @@ processed in order by OPERATE.")) "Parse a version string as a series of natural integers separated by dots. Return a (non-null) list of integers if the string is valid, NIL otherwise. NB: ignores leading zeroes, and so doesn't distinguish between 2.003 and 2.3" - (and (loop :for prev = nil :then c :for c :across string - :always (or (digit-char-p c) - (and (eql c #\.) prev (not (eql prev #\.)))) - :finally (return (and c (digit-char-p c)))) - (mapcar #'parse-integer (split-string string :separator ".")))) + (and + (stringp string) + (loop :for prev = nil :then c :for c :across string + :always (or (digit-char-p c) + (and (eql c #\.) prev (not (eql prev #\.)))) + :finally (return (and c (digit-char-p c)))) + (mapcar #'parse-integer (split-string string :separator ".")))) (defmethod version-satisfies ((cver string) version) (let ((x (parse-version cver)) @@ -2530,6 +2531,7 @@ Returns the new tree (which probably shares structure with the old one)" perform explain output-files operation-done-p weakly-depends-on depends-on serial in-order-to + (version nil versionp) ;; list ends &allow-other-keys) options (declare (ignorable perform explain output-files operation-done-p)) @@ -2543,6 +2545,11 @@ Returns the new tree (which probably shares structure with the old one)" (class-for-type parent type)))) (error 'duplicate-names :name name)) + (when versionp + (unless (parse-version version) + (warn (compatfmt "~@<Invalid version ~S for component ~S~@[ of ~S~]~@:>") + version name parent))) + (let* ((other-args (remove-keys '(components pathname default-component-class perform explain output-files operation-done-p