diff --git a/asdf.lisp b/asdf.lisp index 946d79f0c7ba365a850ecfcdc734b98743413174..09b4c3230d74261471fd399d8e4013519c129b32 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -70,7 +70,7 @@ :test 'equalp :key 'car)) (let* ((asdf-version ;; the 1+ helps the version bumping script discriminate - (subseq "VERSION:1.715" (1+ (length "VERSION")))) + (subseq "VERSION:1.716" (1+ (length "VERSION")))) (existing-asdf (find-package :asdf)) (vername '#:*asdf-version*) (versym (and existing-asdf @@ -500,7 +500,7 @@ Also, if either argument is NIL, then the other argument is returned unmodified. (unspecific-handler (p) (if (typep p 'logical-pathname) #'ununspecific #'identity))) (multiple-value-bind (host device directory unspecific-handler) - (ecase (first directory) + (#-gcl ecase #+gcl case (first directory) ((nil) (values (pathname-host defaults) (pathname-device defaults) @@ -735,14 +735,13 @@ actually-existing directory." (return p)) (let ((sofar (ignore-errors (truename (pathname-root p))))) (unless sofar (return p)) - (flet ((solution (directory) + (flet ((solution (directories) (merge-pathnames* (make-pathname :host nil :device nil - :directory directory + :directory `(:relative ,@directories) :name (pathname-name p) :type (pathname-type p) - :version (pathname-version p) - :defaults "/" :case :local) + :version (pathname-version p)) sofar))) (loop :for component :in (cdr directory) :for rest :on (cdr directory) @@ -753,7 +752,7 @@ actually-existing directory." sofar))) :do (if more (setf sofar more) - (return (solution `(:relative ,@rest)))) + (return (solution rest))) :finally (return (solution nil)))))))) @@ -2288,9 +2287,10 @@ located." (defparameter *os-features* '((:windows :mswindows :win32 :mingw32) (:solaris :sunos) + :linux ;; for GCL at least, must appear before :bsd. :macosx :darwin :apple :freebsd :netbsd :openbsd :bsd - :linux :unix)) + :unix)) (defparameter *architecture-features* '((:x86-64 :amd64 :x86_64 :x8664-target) @@ -2312,6 +2312,7 @@ located." (:-ics "8") (:+ics "")) (if (member :64bit *features*) "-64bit" "")) + #+clisp (subseq s 0 (position #\space s)) #+clozure (format nil "~d.~d-fasl~d" ccl::*openmcl-major-version* ccl::*openmcl-minor-version* @@ -2322,11 +2323,11 @@ located." (let ((vcs-id (ext:lisp-implementation-vcs-id))) (when (>= (length vcs-id) 8) (subseq vcs-id 0 8)))) + #+gcl (subseq s (1+ (position #\space s))) #+lispworks (format nil "~A~@[~A~]" s (when (member :lispworks-64bit *features*) "-64bit")) ;; #+sbcl (format nil "~a-fasl~d" s sb-fasl:+fasl-file-version+) ; fasl-f-v is redundant #+(or armedbear cormanlisp mcl sbcl scl) s - #+(or clisp gcl) (subseq s 0 (position #\space s)) #-(or allegro armedbear clisp clozure cmu cormanlisp digitool ecl gcl lispworks mcl sbcl scl) s)) diff --git a/doc/asdf.texinfo b/doc/asdf.texinfo index 9c151c90d6ee33fa3e68f096fa1604fd19a61dfa..1b9aea2e1cbe1a2c7796b75f091cfa903177b263 100644 --- a/doc/asdf.texinfo +++ b/doc/asdf.texinfo @@ -552,7 +552,7 @@ by evaluating the following Lisp form: (asdf:load-system :@var{foo}) @end example -On some implementations (namely, SBCL and Clozure CL), +On some implementations (namely ABCL, Clozure CL and SBCL), ASDF hooks into the @code{CL:REQUIRE} facility and you can just use: @@ -2731,11 +2731,18 @@ Other issues include the following: @item There is a slight performance bug, notably on SBCL, -when initially searching for @file{asd} files -(depending on your configuration). -The @code{(directory "**/*.asd")} can make things slower than desired. +when initially searching for @file{asd} files, +the implicit @code{(directory "/configured/path/**/*.asd")} +for every configured path @code{(:tree "/configured/path/")} +in your @code{source-registry} configuration can cause a slight pause. Try to @code{(time (asdf:initialize-source-registry))} to see how bad it is or isn't on your system. +If you insist on not having this pause, +you can avoid the pause by overriding the default source-registry configuration +and not use any deep @code{:tree} entry but only @code{:directory} entries +or shallow @code{:tree} entries. +Or you can fix your implementation to not be quite that slow +when recursing through directories. @item On Windows, only LispWorks supports proper default configuration pathnames