Commit 00e03b5e authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Merge branch 'master' into minimakefile

parents 7c57ba78 7ae97cd0
......@@ -75,7 +75,7 @@
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
:version "3.1.5.18" ;; to be automatically updated by make bump-version
:version "3.1.5.19" ;; to be automatically updated by make bump-version
:depends-on ()
#+asdf3 :encoding #+asdf3 :utf-8
:class #+asdf3.1 package-inferred-system #-asdf3.1 system
......
......@@ -514,7 +514,7 @@ for all the linkable object files associated with the system or its dependencies
(with-upgradability ()
;; I think that Juanjo intended for this to be, but it was disabled before 3.1
;; due to implementation bugs in ECL and MKCL that seem to have been fixed since
;; see for ECL test-xach-update-bug.script and test-bundle.script,
;; -- see for ECL test-xach-update-bug.script and test-bundle.script,
;; and for MKCL test-logical-pathname.script.
;; We should probably reenable these after consulting with ECL and MKCL maintainers.
;;(unless (or #+(or clasp ecl) (use-ecl-byte-compiler-p))
......
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*-
;;; This is ASDF 3.1.5.18: Another System Definition Facility.
;;; This is ASDF 3.1.5.19: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
......
......@@ -56,7 +56,7 @@
(ensure-directories-exist d)
(with-open-file (s (merge-pathnames* (format nil "foo~D.asd" i) d)
:direction :output
:if-exists :rename-and-delete
:if-exists :supersede
:if-does-not-exist :create)
(format s "(defsystem :foo~D)~%" i))))
......
......@@ -5,48 +5,51 @@
(defparameter foo :test-asdf-location-change)
(DBG "load foo. Should load from xach-foo-1/")
(setf *central-registry* (list (subpathname *test-directory* "xach-foo-1/")))
(defparameter foo1 (find-system foo))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-1/test-asdf-location-change.asd")
(system-source-file foo1))
(assert-equal (mapcar 'component-name (component-children foo1)) '("a"))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-1/a.lisp")
(component-pathname (find-component foo1 "a")))
(assert-equal nil (find-component foo1 "b"))
(load-system foo)
(defparameter loaded (find-symbol* :loaded :first-version))
(assert-equal (symbol-value loaded) t)
(with-expected-failure (#+ecl (not (asdf:version-satisfies (lisp-implementation-version) "16"))
#-ecl nil)
(DBG "load foo. Should load from xach-foo-1/")
(setf *central-registry* (list (subpathname *test-directory* "xach-foo-1/")))
(defparameter foo1 (find-system foo))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-1/test-asdf-location-change.asd")
(system-source-file foo1))
(assert-equal (mapcar 'component-name (component-children foo1)) '("a"))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-1/a.lisp")
(component-pathname (find-component foo1 "a")))
(assert-equal nil (find-component foo1 "b"))
(load-system foo)
(defparameter loaded (find-symbol* :loaded :first-version))
(assert-equal (symbol-value loaded) t)
(DBG "load foo again. Should not do anything -- already loaded")
(setf (symbol-value loaded) :test-that-we-dont-reload)
(load-system foo)
(assert-equal (symbol-value loaded) :test-that-we-dont-reload)
(assert (not (find-package :second-version)))
(DBG "load foo again. Should not do anything -- already loaded")
(setf (symbol-value loaded) :test-that-we-dont-reload)
(load-system foo)
(assert-equal (symbol-value loaded) :test-that-we-dont-reload)
(assert (not (find-package :second-version)))
(DBG "Now, change registry so foo is found from xach-foo-2/")
(setf *central-registry* (list (subpathname *test-directory* "xach-foo-2/")))
(defparameter foo2 (find-system foo))
(assert (eq foo1 foo2)) ;; the object should be the same
(assert-equal (mapcar 'component-name (component-children foo2)) '("a" "b"))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/test-asdf-location-change.asd")
(system-source-file foo2))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/a.lisp")
(component-pathname (find-component foo2 "a")))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/b.lisp")
(component-pathname (find-component foo2 "b")))
(DBG "load foo yet again. It should see the pathname has changed and load it anew")
;;; ECL bug: this fails if we use load-bundle-op instead of load-op as *load-system-operation*
;;; in bundle.lisp. The test-asdf-location-change.fasb is linked and loaded, but that fails to
;;; create the :second-version package; loading the same .fasb in another ecl works fine, and
;;; defines (second-version:wtf). WTF? You can test this bug by uncommenting the
;;; (setf asdf::*load-system-operation* 'load-bundle-op) line at the beginning of this file.
;;; NB: works on MKCL.
(load-system foo)
(assert (symbol-value (find-symbol* :loaded :second-version)))
(assert-equal 42 (symbol-call :second-version :wtf))
(DBG "Now, change registry so foo is found from xach-foo-2/")
(setf *central-registry* (list (subpathname *test-directory* "xach-foo-2/")))
(defparameter foo2 (find-system foo))
(assert (eq foo1 foo2)) ;; the object should be the same
(assert-equal (mapcar 'component-name (component-children foo2)) '("a" "b"))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/test-asdf-location-change.asd")
(system-source-file foo2))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/a.lisp")
(component-pathname (find-component foo2 "a")))
(assert-pathname-equal
(subpathname *test-directory* "xach-foo-2/b.lisp")
(component-pathname (find-component foo2 "b")))
(DBG "load foo yet again. It should see the pathname has changed and load it anew")
;;; ECL bug: this fails if we use load-bundle-op instead of load-op as *load-system-operation*
;;; in bundle.lisp. The test-asdf-location-change.fasb is linked and loaded, but that fails to
;;; create the :second-version package; loading the same .fasb in another ecl works fine, and
;;; defines (second-version:wtf). WTF? You can test this bug by uncommenting the
;;; (setf asdf::*load-system-operation* 'load-bundle-op) line at the beginning of this file.
;;; NB: works on MKCL.
(load-system foo)
(assert (symbol-value (find-symbol* :loaded :second-version)))
(assert-equal 42 (symbol-call :second-version :wtf))
)
......@@ -544,15 +544,19 @@ NILs."
(defun lisp-implementation-directory (&key truename)
"Where are the system files of the current installation of the CL implementation?"
(declare (ignorable truename))
#+(or clasp clozure ecl gcl mkcl sbcl)
(let ((dir
(ignore-errors
#+clozure #p"ccl:"
#+(or clasp ecl mkcl) #p"SYS:"
#+gcl system::*system-directory*
#+sbcl (if-let (it (find-symbol* :sbcl-homedir-pathname :sb-int nil))
(funcall it)
(getenv-pathname "SBCL_HOME" :ensure-directory t)))))
#+abcl extensions:*lisp-home*
#+(or allegro clasp ecl mkcl) #p"SYS:"
;;#+clisp custom:*lib-directory* ; causes failure in asdf-pathname-test(!)
#+clozure #p"ccl:"
#+cmu (ignore-errors (pathname-parent-directory-pathname (truename #p"modules:")))
#+gcl system::*system-directory*
#+lispworks lispworks:*lispworks-directory*
#+sbcl (if-let (it (find-symbol* :sbcl-homedir-pathname :sb-int nil))
(funcall it)
(getenv-pathname "SBCL_HOME" :ensure-directory t))
#+scl (ignore-errors (pathname-parent-directory-pathname (truename #p"file://modules/")))
#+xcl ext:*xcl-home*))
(if (and dir truename)
(truename* dir)
dir)))
......
......@@ -67,7 +67,7 @@ previously-loaded version of ASDF."
;; "3.4.5.67" would be a development version in the official branch, on top of 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
(asdf-version "3.1.5.18")
(asdf-version "3.1.5.19")
(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