Commit 03bff8ee authored by Robert P. Goldman's avatar Robert P. Goldman

Merge branch 'master' of ssh://common-lisp.net/project/asdf/public_html/asdf

Merge necessary because of local docstring addition.
parents 2cf1cd0c cc377e63
......@@ -134,32 +134,31 @@ test: test-lisp test-clean-load test-load-systems doc
test-load-systems: build/asdf.lisp
./test/run-tests.sh -l ${l} ${s}
test-all-lisps:
${MAKE} test-load-systems
@for lisp in ${lisps} ; do \
${MAKE} test-clean-load test-lisp test-upgrade l=$$lisp || exit 1 ; \
done
test-all-lisps: test-load-systems test-all-clean-load test-all-lisp test-all-upgrade
# test upgrade is a very long run... This does just the regression tests
test-all-no-upgrade:
@for lisp in ${lisps} ; do \
${MAKE} test-clean-load test-lisp l=$$lisp || exit 1 ; \
done
test-all-clean-load:
@for lisp in ${lisps} ; do ${MAKE} test-clean-load l=$$lisp || exit 1 ; done
test-all-lisp:
@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp || exit 1 ; done
test-all-upgrade:
@for lisp in ${lisps} ; do \
${MAKE} test-upgrade l=$$lisp || exit 1 ; \
done
@for lisp in ${lisps} ; do ${MAKE} test-upgrade l=$$lisp || exit 1 ; done
test-all-no-upgrade: doc test-load-systems test-all-clean-load test-all-lisp
test-all: test-all-no-upgrade test-all-upgrade
test-all-lisp-no-stop:
@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp ; done ; :
test-all-upgrade-no-stop:
@for lisp in ${lisps} ; do ${MAKE} test-upgrade l=$$lisp ; done ; :
test-all: doc test-all-lisps
test-all-no-upgrade-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop
test-all-no-stop:
-make doc ; for l in ${lisps} ; do \
make test-clean-load test-lisp l=$$l ; make test-upgrade l=$$l ; \
done ; true
test-all-no-stop: test-all-no-upgrade-no-stop test-all-upgrade-no-stop
test-all-no-upgrade-no-stop:
-make doc ; for l in ${lisps} ; do make test-clean-load test-lisp l=$$l ; done ; true
extract: extract-all-tagged-asdf
extract-all-tagged-asdf: build/asdf.lisp
......
......@@ -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.0.34" ;; to be automatically updated by make bump-version
:version "3.1.0.36" ;; to be automatically updated by make bump-version
:depends-on ()
#+asdf3 :encoding #+asdf3 :utf-8
:class #.(if (find-class 'package-system nil) 'package-system 'system)
......
......@@ -4,7 +4,7 @@ cl-asdf (2:3.1.1-1) unstable; urgency=low
* asdf-package-system combines the one-file, one-package, one-system paradigm
of quick-build and faslpath with the portability and robustness of ASDF 3.
* Portability: much improved support for the latest GCL 2.8.
* Robustness: Fixes and tweaks for ABCL, CLISP, ECL, SBCL/Windows.
* Robustness: Fixes and tweaks for ABCL, CLISP, ECL, SBCL/Windows, XCL.
Test improvements. Added missing dependencies in asdf.asd(!).
Fixes to version-satisfies (thanks to stassats) and to the file-stamp cache.
* run-program tweaked again on Windows;
......@@ -20,7 +20,7 @@ cl-asdf (2:3.1.1-1) unstable; urgency=low
* ASDF3.1 feature pushed, to signal the slew of significant improvements
since initial ASDF 3.0 pre-release (i.e. version 2.27).
-- Francois-Rene Rideau <fare@tunes.org> Tue, 19 Dec 2013 15:31:56 -0500
-- Francois-Rene Rideau <fare@tunes.org> Tue, 03 Jan 2014 15:10:56 -0500
cl-asdf (2:3.0.3-1) unstable; urgency=low
......
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; This is ASDF 3.1.0.34: Another System Definition Facility.
;;; This is ASDF 3.1.0.36: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
......
......@@ -119,6 +119,7 @@
#:missing-dependency-of-version
#:circular-dependency ; errors
#:duplicate-names #:non-toplevel-system #:non-system-system
#:package-system-missing-package-error
#:try-recompiling
#:retry
......
......@@ -8,7 +8,7 @@
:asdf/upgrade :asdf/component :asdf/system :asdf/find-system :asdf/lisp-action)
(:export
#:package-system #:register-system-packages #:sysdef-package-system-search
#:*defpackage-forms* #:*package-systems*))
#:*defpackage-forms* #:*package-systems* #:package-system-missing-package-error))
(in-package :asdf/package-system)
(with-upgradability ()
......@@ -31,15 +31,22 @@
(member (car form) *defpackage-forms*)))
(defun stream-defpackage-form (stream)
(loop :for form = (read stream)
:when (defpackage-form-p form)
:return form))
(loop :for form = (read stream nil nil) :while form
:when (defpackage-form-p form) :return form))
(defun file-defpackage-form (file)
"Return the first DEFPACKAGE form in FILE."
(with-input-file (f file)
(stream-defpackage-form f)))
(define-condition package-system-missing-package-error (system-definition-error)
((system :initarg :system :reader error-system)
(pathname :initarg :pathname :reader error-pathname))
(:report (lambda (c s)
(format s (compatfmt "~@<No package form found while ~
trying to define package-system ~A from file ~A~>")
(error-system c) (error-pathname c)))))
(defun package-dependencies (defpackage-form)
"Return a list of packages depended on by the package
defined in DEFPACKAGE-FORM. A package is depended upon if
......@@ -76,10 +83,10 @@ otherwise return a default system name computed from PACKAGE-NAME."
system-name
(string-downcase package-name)))
(defun package-system-file-dependencies (file)
(let* ((defpackage-form (file-defpackage-form file))
(package-dependencies (package-dependencies defpackage-form)))
(remove t (mapcar 'package-name-system package-dependencies))))
(defun package-system-file-dependencies (file &optional system)
(if-let (defpackage-form (file-defpackage-form file))
(remove t (mapcar 'package-name-system (package-dependencies defpackage-form)))
(error 'package-system-missing-package-error :system system :pathname file)))
(defun same-package-system-p (system name directory subpath dependencies)
(and (eq (type-of system) 'package-system)
......@@ -104,7 +111,7 @@ otherwise return a default system name computed from PACKAGE-NAME."
(f (probe-file* (subpathname dir sub :type "lisp")
:truename *resolve-symlinks*)))
(when (file-pathname-p f)
(let ((dependencies (package-system-file-dependencies f))
(let ((dependencies (package-system-file-dependencies f system))
(previous (cdr (system-registered-p system))))
(if (same-package-system-p previous system dir sub dependencies)
previous
......
......@@ -4,7 +4,7 @@
(in-package :asdf-pathname-test)
(eval-when (:compile-toplevel :load-toplevel :execute)
#-xcl (push :asdf-test-logical-pathname *features*)
#-(or xcl gcl) (push :asdf-test-logical-pathname *features*)
#+xcl (push :buggy-untyped-file *features*))
;;(setf *unspecific-pathname-type* nil)
......@@ -423,20 +423,20 @@
(asdf:initialize-output-translations)
(format t "output translations: ~S~%" (asdf::output-translations))
(progn
;; we're testing with unix or some emulation, are we not?
(assert-pathname-equal (resolve-location '(:home)) (truename (user-homedir-pathname)))
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz")) #p"/foo/bar/baz")
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory t) #p"/foo/bar/baz/")
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory t :wilden t) (wilden #p"/foo/bar/baz/"))
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory nil :wilden t) (wilden #p"/foo/bar/"))
(assert-pathname-equal (resolve-location '("/foo" "bar" :**/ "baz" #p"*.*") :ensure-directory nil :wilden t) #p"/foo/bar/**/baz/*.*")
;; we're testing with unix or some emulation, are we not?
(assert (directory-pathname-p (system-source-directory (find-system :test-asdf/test-source-directory-1))))
(assert (directory-pathname-p (system-source-directory (find-system :test-asdf/test-source-directory-2))))
(assert-pathname-equal (resolve-location '(:home)) (truename (user-homedir-pathname)))
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz")) #p"/foo/bar/baz")
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory t) #p"/foo/bar/baz/")
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory t :wilden t) (wilden #p"/foo/bar/baz/"))
(assert-pathname-equal (resolve-location '("/foo" "bar" "baz") :ensure-directory nil :wilden t) (wilden #p"/foo/bar/"))
(assert-pathname-equal (resolve-location '("/foo" "bar" :**/ "baz" #p"*.*") :ensure-directory nil :wilden t) #p"/foo/bar/**/baz/*.*")
(or (test-component-pathnames :delete-host t :support-string-pathnames nil)
(leave-test "test failed" 1)))
(assert (directory-pathname-p (system-source-directory (find-system :test-asdf/test-source-directory-1))))
(assert (directory-pathname-p (system-source-directory (find-system :test-asdf/test-source-directory-2))))
#-gcl
(assert (test-component-pathnames :delete-host t :support-string-pathnames nil))
#|
(load "LIBRARY:de;setf;utility;asdf;cp-test.lisp")
......
(defpackage :test-asdf/dll-test (:use)) ;; dummy, for package-system dependencies.
#+ecl
(ffi:clines "
extern int sample_function();
......
(defpackage :test-asdf/dll-user (:use)) ;; dummy, for package-system dependencies.
(in-package :test-package)
(ffi:def-function "sample_function" () :returning :int)
(register-directory (subpathname *test-directory* "package-system-test/"))
(load-system :package-system-test/a/x)
(load-system :package-system-test/d)
(signals package-system-missing-package-error (load-system :package-system-test/e))
;; No such file.
(signals missing-component (load-system :package-system-test/f))
;; This file is missing a defpackage form, and loading it as a package-system should trigger an error.
(in-package :asdf-test)
......@@ -71,6 +71,3 @@
(defsystem :test-asdf/bundle-2
:depends-on (:test-asdf/bundle-1) :components ((:file "file2")))
(defsystem :test-asdf/dll-test :components ((:file "dll-test")))
(defsystem :test-asdf/dll-user :components ((:file "dll-user")))
......@@ -4,11 +4,12 @@
:components ((:file "test-compile-file-failure")))
(assert (handler-case
(let ((*compile-file-failure-behaviour* :warn))
(load-system 'test-compile-file-failure :force t)
t)
(let ((*compile-file-failure-behaviour* :warn))
(load-system 'test-compile-file-failure :force t)
t)
(compile-file-error () nil)))
#-gcl
(assert (handler-case
(let ((*compile-file-failure-behaviour* :error))
(load-system 'test-compile-file-failure :force t)
......
......@@ -17,7 +17,7 @@
(translate-logical-pathname "ASDF:test;test-logical-pathname.asd")
(truename "ASDF:test;test-logical-pathname.asd"))
#+xcl (leave-test "GCL 2.6 doesn't do Logical pathnames well enough" 0)
#+(or gcl xcl) (leave-test "This implementation doesn't do Logical pathnames well enough" 0)
(DBG "Test logical pathnames in central registry")
(setf *central-registry* '(#p"ASDF:test;"))
......
......@@ -267,7 +267,7 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
(defun chdir (x)
"Change current directory, as per POSIX chdir(2), to a given pathname object"
(if-let (x (pathname x))
(or #+abcl (java:jstatic "setProperty" "java.lang.System" "user.dir" (native-namestring x))
(or #+abcl (java:jstatic "setProperty" "java.lang.System" "user.dir" (namestring x))
#+allegro (excl:chdir x)
#+clisp (ext:cd x)
#+clozure (setf (ccl:current-directory) x)
......
......@@ -64,7 +64,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 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.0.34")
(asdf-version "3.1.0.36")
(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