Commit 235dce5a authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

2.28.7: have defsystem-depends-on takes arbitrary specs, not just names.

Fixes lp#1027521.
parent 0124eb1d
......@@ -74,7 +74,7 @@
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
:version "2.28.6" ;; to be automatically updated by make bump-version
:version "2.28.7" ;; 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.
......@@ -55,6 +55,8 @@ another pathname in a degenerate way."))
(defgeneric version-satisfies (component version))
(defgeneric component-version (component))
(defgeneric (setf component-version) (new-version component))
(defgeneric component-parent (component))
(defmethod component-parent ((component null)) (declare (ignorable component)) nil)
;; Backward compatible way of computing the FILE-TYPE of a component.
;; TODO: find users, have them stop using that, remove it for ASDF4.
......@@ -189,8 +189,10 @@
(make-instance 'system :name name :source-file source-file))))
(system (reset-system (cdr registered!)
:name name :source-file source-file))
(component-options (remove-plist-key :class options)))
(apply 'load-systems defsystem-depends-on)
(component-options (remove-plist-key :class options))
(defsystem-dependencies (loop :for spec :in defsystem-depends-on :collect
(resolve-dependency-spec nil spec))))
(apply 'load-systems defsystem-dependencies)
;; We change-class AFTER we loaded the defsystem-depends-on
;; since the class might be defined as part of those.
(let ((class (class-for-type nil class)))
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; This is ASDF 2.28.6: Another System Definition Facility.
;;; This is ASDF 2.28.7: Another System Definition Facility.
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <>.
;;; -*- Lisp -*-
(def-test-system :versioned-system-1
(def-test-system :versioned-system-1
:pathname #.*test-directory*
:version "1.0")
(def-test-system :versioned-system-2
(def-test-system :versioned-system-2
:pathname #.*test-directory*
:version "1.1")
(def-test-system :versioned-system-3
(def-test-system :versioned-system-3
:defsystem-depends-on ((:version :test-asdf/file2 "2.1"))
:pathname #.*test-directory*
:version "1.2")
(flet ((test (name v &optional (true t))
(defun vtest (name v &optional (true t))
(or (eq true (version-satisfies (find-system name) v))
(error "no satisfaction: ~S version ~A not ~A" name v true))))
(test :versioned-system-1 "1.0")
(test :versioned-system-2 "1.0")
(test :versioned-system-3 "2.0" nil)))
(error "no satisfaction: ~S version ~A not ~A" name v true)))
(vtest :versioned-system-1 "1.0")
(vtest :versioned-system-2 "1.0")
(vtest :versioned-system-3 "2.0" nil)
......@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
;; "" would be a development version in the official upstream of 3.4.5.
;; "" would be your eighth local modification of official release 3.4.5
;; "" would be your eighth local modification of development version
(asdf-version "2.28.6")
(asdf-version "2.28.7")
(existing-version (asdf-version)))
(setf *asdf-version* asdf-version)
(when (and existing-version (not (equal asdf-version existing-version)))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment