Commit 602d43dc authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

2.26.83: fix issues found by CLISP and ABCL.

* 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
parent 21594070
......@@ -103,13 +103,13 @@ mrproper: clean
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 \
......
......@@ -15,7 +15,7 @@
: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))))
......
......@@ -180,7 +180,7 @@ values of TAG include :source-registry and :output-translations."
(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
......@@ -231,7 +231,7 @@ directive.")
(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>.
......
......@@ -292,17 +292,19 @@ for processing later (possibly in a different process)."
(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)
(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 (compile-file-pathname
output-file . #+ecl (:type :object) #+mkcl (:fasl-p nil)) keys)
(values (and object-file
: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)
......
......@@ -154,7 +154,7 @@ or when loading the package is optional."
;;; 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))
......@@ -198,7 +198,7 @@ or when loading the package is optional."
(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)
......@@ -423,7 +423,7 @@ or when loading the package is optional."
#+(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))))
......
......@@ -19,9 +19,9 @@ usage () {
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)
......@@ -30,6 +30,9 @@ do
u)
upgrade=t
;;
c)
clean_load=t
;;
h)
usage
exit 1
......@@ -56,6 +59,7 @@ DO () { ( set -x ; "$@" ); }
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
......@@ -125,7 +129,7 @@ case "$lisp" in
eval="--eval" ;;
clisp)
command="${CLISP:-clisp}"
flags="-norc -ansi -I "
flags="-norc --silent -ansi -I "
nodebug="-on-error exit"
eval="-x" ;;
cmucl)
......@@ -185,7 +189,7 @@ case "$lisp" in
exit 42 ;;
esac
if ! type "$command" ; then
if ! type "$command" > /dev/null ; then
echo "lisp implementation not found: $command" >&2
exit 43
fi
......@@ -193,7 +197,6 @@ 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
......@@ -273,14 +276,37 @@ run_tests () {
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
......
......@@ -31,9 +31,9 @@ Some constraints:
#+(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)
......@@ -52,8 +52,8 @@ Some constraints:
(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)
......@@ -334,7 +334,7 @@ is bound, write a message and exit on an error. If
`(: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*))
......@@ -358,8 +358,6 @@ is bound, write a message and exit on an error. If
(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.
......
......@@ -7,7 +7,7 @@
(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"))
......
......@@ -32,7 +32,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.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)))
......
......@@ -230,7 +230,7 @@ starting the separation from the end, e.g. when called with arguments
(apply (ensure-function function-spec) arguments))
(defun* call-functions (function-specs)
(map () 'call-hook-function function-specs))
(map () 'call-function function-specs))
;;; Version handling
......
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