* Fix bug found by CLISP regarding improper wildening.
* On CLISP, avoid nicknames in the package-definition-form.
* For ABCL avoid (a . #+foo b) pattern
* Also, test-clean-load now works on all lisps, not just SBCL
test-upgrade: build/asdf.lisp
./test/run-tests.sh -u ${lisp}
-test-compile: build/asdf.lisp
- ${SBCL} --noinform --no-userinit --no-sysinit --load build/asdf.lisp --load test/script-support.lisp --eval '(asdf-test::exit-lisp 0)' 2>&1 | cmp - /dev/null
+test-clean-load: build/asdf.lisp
+ ./test/run-tests.sh -c ${lisp}
test-lisp: build/asdf.lisp
@cd test; ${MAKE} clean;./run-tests.sh ${lisp} ${test-glob}
-test: test-lisp test-compile doc
+test: test-lisp test-clean-load doc
test-all-lisps:
@for lisp in ${lisps} ; do \
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
- :version "2.26.82" ;; to be automatically updated by bin/bump-revision
+ :version "2.26.83" ;; to be automatically updated by bin/bump-revision
:depends-on ()
:components ((:module "build" :components ((:file "asdf"))))
:in-order-to (#+asdf2.27 (compile-op (monolithic-load-concatenated-source-op generate-asdf))))
(coerce-pathname (hostname) :type :directory)))))
(when (absolute-pathname-p r)
(error (compatfmt "~@<pathname ~S is not relative~@:>") x))
- (if (or (pathnamep x) (not wilden)) r (wilden r))))
+ (if (or (pathnamep x) (symbolp x) (not wilden)) r (wilden r))))
(defvar *here-directory* nil
"This special variable is bound to the currect directory during calls to
(error "Using the :system-cache is deprecated. ~%~
Please remove it from your ASDF configuration"))
((eql :default-directory) (default-directory))))
- (s (if (and wilden (not (pathnamep x)))
+ (s (if (and wilden (not (or (pathnamep x) (symbolp x))))
(wilden r)
r)))
(unless (absolute-pathname-p s)
;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.26.82: Another System Definition Facility.
+;;; This is ASDF 2.26.83: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
(defun* compile-file-keeping-object (input-file &rest keys &key output-file &allow-other-keys)
(#+ecl if #+ecl (use-ecl-byte-compiler-p) #+ecl (apply 'compile-file* input-file keys)
#+mkcl progn
- (multiple-value-bind (object-file flags1 flags2)
- (apply 'compile-file* input-file
- #+ecl :system-p #+ecl t #+mkcl :fasl-p #+mkcl nil
- :output-file (compile-file-pathname
- output-file . #+ecl (:type :object) #+mkcl (:fasl-p nil)) keys)
- (values (and object-file
+ (let ((object-file
+ (apply 'compile-file-pathname
+ output-file #+ecl :type #+ecl :object #+mkcl :fasl-p #+mkcl nil)))
+ (multiple-value-bind (result flags1 flags2)
+ (apply 'compile-file* input-file
+ #+ecl :system-p #+ecl t #+mkcl :fasl-p #+mkcl nil
+ :output-file object-file keys)
+ (values (and (equal result object-file)
(compiler::build-fasl
output-file #+ecl :lisp-files #+mkcl :lisp-object-files (list object-file))
object-file)
flags1
- flags2)))))
+ flags2))))))
;;; Links FASLs together
(defun* combine-fasls (inputs output)
;;; Communicable representation of symbol and package information
(eval-when (:load-toplevel :compile-toplevel :execute)
- (defun package-definition-form (package-designator &key internp (error t))
+ (defun package-definition-form (package-designator &key internp (nicknamesp t) (error t))
(let* ((package (find-package* package-designator error))
(name (package-name package))
(nicknames (package-nicknames package))
(loop :for i :in (sort-names (table-keys table))
:collect `(,key ,i ,@(sort-names (gethash i table))))))
`(defpackage ,name
- ,@(when-relevant :nicknames (sort-names nicknames))
+ ,@(when-relevant :nicknames (and nicknamesp (sort-names nicknames)))
(:use ,@(sort-names use))
,@(when-relevant :shadow (sort-names shadow))
,@(import-options :shadowing-import-from shadowing-import)
#+(or ecl gcl) (defpackage ,package (:use))
#+clisp (macrolet ((foo ()
(apply 'ensure-package ',(parse-define-package-form package clauses))
- (package-definition-form ',package)))
+ (package-definition-form ',package :nicknamesp nil)))
(foo))
(apply 'ensure-package ',(parse-define-package-form package clauses))))
echo " -u -- upgrade tests."
}
-unset DEBUG_ASDF_TEST upgrade
+unset DEBUG_ASDF_TEST upgrade clean_load
-while getopts "duh" OPTION
+while getopts "duhc" OPTION
do
case $OPTION in
d)
u)
upgrade=t
;;
+ c)
+ clean_load=t
+ ;;
h)
usage
exit 1
do_tests() {
command="$1" eval="$2"
+ env | grep -i asdf
rm -f ~/.cache/common-lisp/"`pwd`"/* || true
( cd .. && DO $command $eval '(or #.(load "test/script-support.lisp") #.(asdf-test::compile-asdf-script))' )
if [ $? -ne 0 ] ; then
eval="--eval" ;;
clisp)
command="${CLISP:-clisp}"
- flags="-norc -ansi -I "
+ flags="-norc --silent -ansi -I "
nodebug="-on-error exit"
eval="-x" ;;
cmucl)
exit 42 ;;
esac
-if ! type "$command" ; then
+if ! type "$command" > /dev/null ; then
echo "lisp implementation not found: $command" >&2
exit 43
fi
ASDFDIR="$(cd .. ; /bin/pwd)"
export CL_SOURCE_REGISTRY="${ASDFDIR}"
export ASDF_OUTPUT_TRANSLATIONS="(:output-translations (\"${ASDFDIR}\" (\"${ASDFDIR}/build/fasls\" :implementation)) :ignore-inherited-configuration)"
-env | grep asdf
command="$command $flags"
if [ -z "${DEBUG_ASDF_TEST}" ] ; then
tee "../build/results/${lisp}.text" "../build/results/${lisp}-${thedate}.save"
read a < ../build/results/status
clean_up
- [ success = "$a" ] ## exit code
+ if [ success = "$a" ] ; then ## exit code
+ return 0
+ else
+ echo "To view full results and failures, try the following command:" >&2
+ echo " less -p ABORTED build/results/${lisp}.text" >&2
+ return 1
+ fi
}
clean_up () {
rm -rf ../build/test-source-registry-conf.d ../build/test-asdf-output-translations-conf.d
}
+test_clean_load () {
+ nop=build/results/${lisp}-nop.text
+ load=build/results/${lisp}-load.text
+ ${command} ${eval} \
+ '(or #.(setf *load-verbose* nil) #.(load "test/script-support.lisp") #.(asdf-test::exit-lisp 0))' \
+ > $nop 2>&1
+ ${command} ${eval} \
+ '(or #.(setf *load-verbose* nil) #.(load "build/asdf.lisp") #.(asdf/image:quit 0))' \
+ > $load 2>&1
+ if diff $nop $load ; then
+ echo "GOOD: Loading ASDF on $lisp produces no message" >&2 ; return 0
+ else
+ echo "BAD: Loading ASDF on $lisp produces messages" >&2 ; return 1
+ fi
+}
if [ -z "$command" ] ; then
echo "Error: cannot find or do not know how to run Lisp named $lisp"
+elif [ -n "$clean_load" ] ; then
+ test_clean_load
elif [ -n "$upgrade" ] ; then
run_upgrade_tests
else
#+(or cmu scl) (c::brevity 2)))
(defvar *trace-symbols*
- ;; IF YOU WANT TO TRACE SOME STUFF WHILE DEBUGGING, HERE'S A NICE PLACE TO SAY WHAT.
- ;; TO BE INTERNED IN :ASDF AFTER IT IS LOADED.
- '( :upgrade-asdf :operate :run-program/
+ '(;; If you want to trace some stuff while debugging ASDF,
+ ;; here's a nice place to say what.
+ ;; These string designators will be interned in ASDF after it is loaded.
))
(defvar *debug-asdf* nil)
(unless (fboundp 'ensure-directories-exist)
(defun ensure-directories-exist (path)
#+genera (fs:create-directories-recursively (pathname path))
- #+gcl (lisp:system (format nil "mkdir -p ~S" (namestring (make-pathname :name nil :type nil :defaults path))))))
-
+ #+gcl (lisp:system (format nil "mkdir -p ~S"
+ (namestring (make-pathname :name nil :type nil :defaults path))))))
;;; Survival utilities
(defun asym (name)
`(:source-registry :ignore-inherited-configuration))
(acall :initialize-output-translations
`(:output-translations
- (,*test-directory* (,*asdf-directory* "build/fasls" :implementation "test"))
+ ((,*test-directory* :**/ :*.*.*) (,*asdf-directory* "build/fasls" :implementation "test"))
(t (,*asdf-directory* "build/fasls" :implementation "root"))
:ignore-inherited-configuration))
(set (asym :*central-registry*) `(,*test-directory*))
(defun common-lisp-user::debug-asdf ()
(debug-asdf))
-(trace load compile-file)
-
#| The following form is sometimes useful to insert in compute-action-stamp to find out what's happening.
It depends on the DBG macro in contrib/debug.lisp, that you should load in your ASDF.
(touch-file "file2.lisp" :offset -3400)
(with-test ()
- (DBG "loading test1")
+ (DBG "loading test1" #+clisp asdf/output-translations::*output-translations*)
(asdf:load-system 'test1)
(let* ((file1 (asdf:compile-file-pathname* "file1"))
(file2 (asdf:compile-file-pathname* "file2"))
;; "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.82")
+ (asdf-version "2.26.83")
(existing-asdf (find-class (find-symbol* :component :asdf nil) nil))
(existing-version *asdf-version*)
(already-there (equal asdf-version existing-version)))
(apply (ensure-function function-spec) arguments))
(defun* call-functions (function-specs)
- (map () 'call-hook-function function-specs))
+ (map () 'call-function function-specs))
;;; Version handling