diff --git a/asdf.lisp b/asdf.lisp index 9c206199e655b59c01db88c557e5b00b0c745af6..5f5f5eaf20014e152673d720e2c863d1a98e802e 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -72,7 +72,7 @@ (defvar *asdf-version* nil) (defvar *upgraded-p* nil) (let* ((asdf-version ;; the 1+ helps the version bumping script discriminate - (subseq "VERSION:2.007" (1+ (length "VERSION")))) ; same as 2.124 + (subseq "VERSION:2.008" (1+ (length "VERSION")))) ; same as 2.128 (existing-asdf (fboundp 'find-system)) (existing-version *asdf-version*) (already-there (equal asdf-version existing-version))) @@ -176,6 +176,9 @@ :shadow ',shadow :unintern ',(append #-(or gcl ecl) redefined-functions unintern) :fmakunbound ',(append fmakunbound)))) + (let ((u (find-package :asdf-utilities))) + (when u + (ensure-unintern u (loop :for s :being :each :present-symbol :in u :collect s)))) (pkgdcl :asdf :use (:common-lisp) @@ -287,29 +290,29 @@ #:clear-source-registry #:ensure-source-registry #:process-source-registry + #:system-registered-p + #:asdf-message ;; Utilities #:absolute-pathname-p - #:aif - #:appendf - #:asdf-message + ;; #:aif #:it + ;; #:appendf #:coerce-name #:directory-pathname-p - #:ends-with + ;; #:ends-with #:ensure-directory-pathname #:getenv - #:get-uid - #:length=n-p + ;; #:get-uid + ;; #:length=n-p #:merge-pathnames* #:pathname-directory-pathname #:read-file-forms - #:remove-keys - #:remove-keyword + ;; #:remove-keys + ;; #:remove-keyword #:resolve-symlinks #:split-string #:component-name-to-pathname-components #:split-name-type - #:system-registered-p #:truenamize #:while-collecting))) (setf *asdf-version* asdf-version @@ -531,7 +534,7 @@ Also, if either argument is NIL, then the other argument is returned unmodified. (let* ((specified (pathname specified)) (defaults (pathname defaults)) (directory (pathname-directory specified)) - #-sbcl (directory (if (stringp directory) `(:absolute ,directory) directory)) + #-(or sbcl cmu) (directory (if (stringp directory) `(:absolute ,directory) directory)) (name (or (pathname-name specified) (pathname-name defaults))) (type (or (pathname-type specified) (pathname-type defaults))) (version (or (pathname-version specified) (pathname-version defaults)))) @@ -740,7 +743,9 @@ actually-existing directory." '(ffi:clines "#include <sys/types.h>" "#include <unistd.h>")) (defun* get-uid () #+allegro (excl.osi:getuid) - #+clisp (posix:uid) + #+clisp (loop :for s :in '("posix:uid" "LINUX:getuid") + :for f = (ignore-errors (read-from-string s)) + :when f :return (funcall f)) #+(or cmu scl) (unix:unix-getuid) #+ecl #.(cl:if (cl:< ext:+ecl-version-number+ 100601) '(ffi:c-inline () () :int "getuid()" :one-liner t) @@ -764,11 +769,13 @@ actually-existing directory." (defun* probe-file* (p) "when given a pathname P, probes the filesystem for a file or directory with given pathname and if it exists return its truename." - (and (pathnamep p) (not (wild-pathname-p p)) - #+(or allegro clozure cmu ecl sbcl scl) (probe-file p) - #+clisp (ext:probe-pathname p) - #-(or allegro clisp clozure cmu ecl sbcl scl) - (ignore-errors (truename p)))) + (etypecase p + (null nil) + (string (probe-file* (parse-namestring p))) + (pathname (unless (wild-pathname-p p) + #.(or #+(or allegro clozure cmu ecl sbcl scl) '(probe-file p) + #+clisp (aif (find-symbol (string :probe-pathname) :ext) `(,it p)) + '(ignore-errors (truename p))))))) (defun* truenamize (p) "Resolve as much of a pathname as possible" @@ -779,7 +786,7 @@ with given pathname and if it exists return its truename." (when (typep p 'logical-pathname) (return p)) (let ((found (probe-file* p))) (when found (return found))) - #-sbcl (when (stringp directory) (return p)) + #-(or sbcl cmu) (when (stringp directory) (return p)) (when (not (eq :absolute (car directory))) (return p)) (let ((sofar (probe-file* (pathname-root p)))) (unless sofar (return p)) @@ -857,7 +864,8 @@ with given pathname and if it exists return its truename." error-name error-pathname error-condition duplicate-names-name error-component error-operation - module-components module-components-by-name) + module-components module-components-by-name + circular-dependency-components) (ftype (function (t t) t) (setf module-components-by-name))) @@ -1353,7 +1361,7 @@ to ~S which is not a directory.~@:>" ;; NOTE that the host and device slots will be taken from the defaults, ;; but that should only matter if you either (a) use absolute pathnames, or ;; (b) later merge relative pathnames with CL:MERGE-PATHNAMES instead of - ;; ASDF-UTILITIES:MERGE-PATHNAMES* + ;; ASDF:MERGE-PATHNAMES* (etypecase name (pathname name) diff --git a/doc/asdf.texinfo b/doc/asdf.texinfo index c9195e9a293b2e4b3f527fe587da09b5d3bf6aff..5c81e45b773ec6b15c8d817ce9783f835f5e84c2 100644 --- a/doc/asdf.texinfo +++ b/doc/asdf.texinfo @@ -1891,8 +1891,10 @@ and for XCVB the corresponding functions are in package XCVB. @defun clear-source-registry undoes any source registry configuration and clears any cache for the search algorithm. - You might want to call that before you - dump an image that would be resumed with a different configuration, + You might want to call this function + (or better, @code{clear-configuration}) + before you dump an image that would be resumed + with a different configuration, and return an empty configuration. Note that this does not include clearing information about systems defined in the current image, only about @@ -1904,6 +1906,15 @@ and for XCVB the corresponding functions are in package XCVB. If not, initialize it with the given @var{PARAMETER}. @end defun +Every time you use ASDF's @code{find-system}, or +anything that uses it (such as @code{operate}, @code{load-system}, etc.), +@code{ensure-source-registry} is called with parameter NIL, +which the first time around causes your configuration to be read. +If you change a configuration file, +you need to explicitly @code{initialize-source-registry} again, +or maybe simply to @code{clear-source-registry} (or @code{clear-configuration}) +which will cause the initialization to happen next time around. + @section Future @@ -2375,8 +2386,10 @@ The specified functions are exported from package ASDF. @defun clear-output-translations undoes any output translation configuration and clears any cache for the mapping algorithm. - You might want to call that before you - dump an image that would be resumed with a different configuration, + You might want to call this function + (or better, @code{clear-configuration}) + before you dump an image that would be resumed + with a different configuration, and return an empty configuration. Note that this does not include clearing information about systems defined in the current image, only about @@ -2394,6 +2407,15 @@ The specified functions are exported from package ASDF. (calls @code{ensure-output-translations} for the translations). @end defun +Every time you use ASDF's @code{output-files}, or +anything that uses it (that may compile, such as @code{operate}, @code{perform}, etc.), +@code{ensure-output-translations} is called with parameter NIL, +which the first time around causes your configuration to be read. +If you change a configuration file, +you need to explicitly @code{initialize-output-translations} again, +or maybe @code{clear-output-translations} (or @code{clear-configuration}), +which will cause the initialization to happen next time around. + @section Credits for output translations @@ -3140,6 +3162,15 @@ initform for the @code{type} slot: ((type :initform "cl"))) @end lisp +To support both ASDF 1 and ASDF 2, +you may omit the above @code{type} slot definition and instead define: + +@lisp +(defmethod source-file-type ((f my-cl-source-file) (m module)) + (declare (ignorable f m)) + "cl") +@end lisp + Then make your system use this subclass in preference to the standard one: diff --git a/doc/index.html b/doc/index.html index 703ec163aee5e329c2f9098504432af6f20dd65e..cc184dbf29b27dece95f593df01417e43cb82bab 100644 --- a/doc/index.html +++ b/doc/index.html @@ -28,7 +28,7 @@ <div class="contents"> <a id="ASDF 2"></a> <h3>ASDF 2</h3> - <p>We recently released ASDF 2 (on May 31st 2010). + <p>We released ASDF 2 on May 31st 2010. It will hopefully be bundled will all official releases of Common Lisp implementations made after that date. </p> @@ -98,7 +98,7 @@ <a id="news"></a> <h3>What is happening</h3> <dl> - <dt>December 2009 to August 2010</dt> + <dt>Since December 2009</dt> <dd>François-René Rideau is de facto maintainer, with notable contributions from Robert P. Goldman, Juanjo Garcia-Ripoll and James Anderson. @@ -133,7 +133,7 @@ <a class="nav" href="http://common-lisp.net/" title="Common-Lisp.net"> <img src="http://common-lisp.net/project/cl-containers/shared/buttons/lisp-lizard.png" width="80" height="15" title="Common-Lisp.net" alt="Common-Lisp.net button" /></a> <p><span class="copyright"Copyright © 2001-2010 Daniel Barlow and contributors</span></p> <p>ASDF has an <a href="http://www.opensource.org/licenses/mit-license.php">MIT style</a> license</p> - <div id="timestamp">Last updated 2010-06-02</div> + <div id="timestamp">Last updated 2010-10-06</div> </div> </body> </html>