Raymond Toy pushed to branch master at cmucl / cmucl
Commits: 184a5a0d by Raymond Toy at 2016-03-26T07:55:18-07:00 Update to asdf 3.1.7.
- - - - -
4 changed files:
- src/contrib/asdf/asdf.lisp - src/contrib/asdf/doc/asdf.html - src/contrib/asdf/doc/asdf.info - src/contrib/asdf/doc/asdf.pdf
Changes:
===================================== src/contrib/asdf/asdf.lisp ===================================== --- a/src/contrib/asdf/asdf.lisp +++ b/src/contrib/asdf/asdf.lisp @@ -1,5 +1,5 @@ ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*- -;;; This is ASDF 3.1.6.9: Another System Definition Facility. +;;; This is ASDF 3.1.7: Another System Definition Facility. ;;; ;;; Feedback, bug reports, and patches are all welcome: ;;; please mail to asdf-devel@common-lisp.net. @@ -3762,7 +3762,7 @@ Otherwise, using WRITE-SEQUENCE using a buffer of size BUFFER-SIZE." (when eof (return))) (loop :with buffer-size = (or buffer-size 8192) - :for buffer = (make-array (list buffer-size) :element-type (or element-type 'character)) + :with buffer = (make-array (list buffer-size) :element-type (or element-type 'character)) :for end = (read-sequence buffer input) :until (zerop end) :do (write-sequence buffer output :end end) @@ -6138,25 +6138,26 @@ possibly in a different process. Otherwise just call THUNK." "This function provides a portable wrapper around COMPILE-FILE. It ensures that the OUTPUT-FILE value is only returned and the file only actually created if the compilation was successful, -even though your implementation may not do that, and including -an optional call to an user-provided consistency check function COMPILE-CHECK; +even though your implementation may not do that. It also checks an optional +user-provided consistency function COMPILE-CHECK to determine success; it will call this function if not NIL at the end of the compilation with the arguments sent to COMPILE-FILE*, except with :OUTPUT-FILE TMP-FILE where TMP-FILE is the name of a temporary output-file. It also checks two flags (with legacy british spelling from ASDF1), *COMPILE-FILE-FAILURE-BEHAVIOUR* and *COMPILE-FILE-WARNINGS-BEHAVIOUR* with appropriate implementation-dependent defaults, -and if a failure (respectively warnings) are reported by COMPILE-FILE -with consider it an error unless the respective behaviour flag +and if a failure (respectively warnings) are reported by COMPILE-FILE, +it will consider that an error unless the respective behaviour flag is one of :SUCCESS :WARN :IGNORE. If WARNINGS-FILE is defined, deferred warnings are saved to that file. On ECL or MKCL, it creates both the linkable object and loadable fasl files. On implementations that erroneously do not recognize standard keyword arguments, it will filter them appropriately." - #+(or clasp ecl) (when (and object-file (equal (compile-file-type) (pathname object-file))) - (format t "Whoa, some funky ASDF upgrade switched ~S calling convention for ~S and ~S~%" - 'compile-file* output-file object-file) - (rotatef output-file object-file)) + #+(or clasp ecl) + (when (and object-file (equal (compile-file-type) (pathname object-file))) + (format t "Whoa, some funky ASDF upgrade switched ~S calling convention for ~S and ~S~%" + 'compile-file* output-file object-file) + (rotatef output-file object-file)) (let* ((keywords (remove-plist-keys `(:output-file :compile-check :warnings-file #+clisp :lib-file #+(or clasp ecl mkcl) :object-file) keys)) @@ -6167,7 +6168,7 @@ it will filter them appropriately." (object-file (unless (use-ecl-byte-compiler-p) (or object-file - #+ecl(compile-file-pathname output-file :type :object) + #+ecl (compile-file-pathname output-file :type :object) #+clasp (compile-file-pathname output-file :output-type :object)))) #+mkcl (object-file @@ -6845,7 +6846,7 @@ previously-loaded version of ASDF." ;; "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.6.9") + (asdf-version "3.1.7") (existing-version (asdf-version))) (setf *asdf-version* asdf-version) (when (and existing-version (not (equal asdf-version existing-version))) @@ -8363,6 +8364,7 @@ The class needs to be updated for ASDF 3.1 and specify appropriate propagation m ;;;; Done performing (with-upgradability () (defgeneric component-operation-time (operation component)) ;; ASDF4: hide it behind plan-action-stamp + (defgeneric (setf component-operation-time) (time operation component)) (define-convenience-action-methods component-operation-time (operation component))
(defgeneric mark-operation-done (operation component)) ;; ASDF4: hide it behind (setf plan-action-stamp) @@ -9798,15 +9800,22 @@ after having found a .asd file? True by default.") (defun collect-sub*directories-asd-files (directory &key (exclude *default-source-registry-exclusions*) collect (recurse-beyond-asds *recurse-beyond-asds*) ignore-cache) - (collect-sub*directories - directory - #'(lambda (dir) - (unless (and (not ignore-cache) (process-source-registry-cache directory collect)) - (let ((asds (collect-asds-in-directory dir collect))) - (or recurse-beyond-asds (not asds))))) - #'(lambda (x) - (not (member (car (last (pathname-directory x))) exclude :test #'equal))) - (constantly nil))) + (let ((visited (make-hash-table :test 'equalp))) + (collect-sub*directories + directory + #'(lambda (dir) + (unless (and (not ignore-cache) (process-source-registry-cache directory collect)) + (let ((asds (collect-asds-in-directory dir collect))) + (or recurse-beyond-asds (not asds))))) + #'(lambda (x) ; x will be a directory pathname + (and + (not (member (car (last (pathname-directory x))) exclude :test #'equal)) + (flet ((pathname-key (x) + (namestring (truename* x)))) + (let ((visitedp (gethash (pathname-key x) visited))) + (if visitedp nil + (setf (gethash (pathname-key x) visited) t)))))) + (constantly nil))))
(defun validate-source-registry-directive (directive) (or (member directive '(:default-registry)) @@ -10592,10 +10601,10 @@ for all the linkable object files associated with the system or its dependencies (format nil "~A~@[~A~]" (component-name c) (slot-value o 'name-suffix)))) (type (bundle-pathname-type bundle-type))) (values (list (subpathname (component-pathname c) name :type type)) - (eq (type-of o) (coerce-class (component-build-operation c) - :package :asdf/interface - :super 'operation - :error nil))))))) + (eq (class-of o) (coerce-class (component-build-operation c) + :package :asdf/interface + :super 'operation + :error nil)))))))
(defmethod output-files ((o bundle-op) (c system)) (bundle-output-files o c))
===================================== src/contrib/asdf/doc/asdf.html ===================================== --- a/src/contrib/asdf/doc/asdf.html +++ b/src/contrib/asdf/doc/asdf.html @@ -31,7 +31,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> -<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ --> +<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ --> <head> <title>ASDF Manual</title>
@@ -48,16 +48,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. <style type="text/css"> <!-- a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} blockquote.smallquotation {font-size: smaller} div.display {margin-left: 3.2em} div.example {margin-left: 3.2em} -div.indentedblock {margin-left: 3.2em} div.lisp {margin-left: 3.2em} div.smalldisplay {margin-left: 3.2em} div.smallexample {margin-left: 3.2em} -div.smallindentedblock {margin-left: 3.2em; font-size: smaller} div.smalllisp {margin-left: 3.2em} -kbd {font-style:oblique} +kbd {font-style: oblique} pre.display {font-family: inherit} pre.format {font-family: inherit} pre.menu-comment {font-family: serif} @@ -66,10 +66,9 @@ pre.smalldisplay {font-family: inherit; font-size: smaller} pre.smallexample {font-size: smaller} pre.smallformat {font-family: inherit; font-size: smaller} pre.smalllisp {font-size: smaller} -span.nocodebreak {white-space:nowrap} -span.nolinebreak {white-space:nowrap} -span.roman {font-family:serif; font-weight:normal} -span.sansserif {font-family:sans-serif; font-weight:normal} +span.nolinebreak {white-space: nowrap} +span.roman {font-family: initial; font-weight: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} ul.no-bullet {list-style: none} --> </style> @@ -77,7 +76,7 @@ ul.no-bullet {list-style: none}
</head>
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<body lang="en"> <h1 class="settitle" align="center">ASDF Manual</h1>
@@ -123,16 +122,17 @@ ul.no-bullet {list-style: none} <li><a name="toc-Component-types" href="#Component-types">6.3.2 Component types</a></li> <li><a name="toc-System-class-names" href="#System-class-names">6.3.3 System class names</a></li> <li><a name="toc-Defsystem-depends-on" href="#Defsystem-depends-on">6.3.4 Defsystem depends on</a></li> - <li><a name="toc-Weakly-depends-on" href="#Weakly-depends-on">6.3.5 Weakly depends on</a></li> - <li><a name="toc-Pathname-specifiers" href="#Pathname-specifiers">6.3.6 Pathname specifiers</a></li> - <li><a name="toc-Version-specifiers" href="#Version-specifiers">6.3.7 Version specifiers</a></li> - <li><a name="toc-Require" href="#Require">6.3.8 Require</a></li> - <li><a name="toc-Using-logical-pathnames" href="#Using-logical-pathnames">6.3.9 Using logical pathnames</a></li> - <li><a name="toc-Serial-dependencies" href="#Serial-dependencies">6.3.10 Serial dependencies</a></li> - <li><a name="toc-Source-location-_0028_003apathname_0029" href="#Source-location-_0028_003apathname_0029">6.3.11 Source location (<code>:pathname</code>)</a></li> - <li><a name="toc-if_002dfeature-option" href="#if_002dfeature-option">6.3.12 if-feature option</a></li> - <li><a name="toc-if_002dcomponent_002ddep_002dfails-option" href="#if_002dcomponent_002ddep_002dfails-option">6.3.13 if-component-dep-fails option</a></li> - <li><a name="toc-feature-requirement" href="#feature-requirement">6.3.14 feature requirement</a></li> + <li><a name="toc-Build_002doperation" href="#Build_002doperation">6.3.5 Build-operation</a></li> + <li><a name="toc-Weakly-depends-on" href="#Weakly-depends-on">6.3.6 Weakly depends on</a></li> + <li><a name="toc-Pathname-specifiers" href="#Pathname-specifiers">6.3.7 Pathname specifiers</a></li> + <li><a name="toc-Version-specifiers" href="#Version-specifiers">6.3.8 Version specifiers</a></li> + <li><a name="toc-Require" href="#Require">6.3.9 Require</a></li> + <li><a name="toc-Using-logical-pathnames" href="#Using-logical-pathnames">6.3.10 Using logical pathnames</a></li> + <li><a name="toc-Serial-dependencies" href="#Serial-dependencies">6.3.11 Serial dependencies</a></li> + <li><a name="toc-Source-location-_0028_003apathname_0029" href="#Source-location-_0028_003apathname_0029">6.3.12 Source location (<code>:pathname</code>)</a></li> + <li><a name="toc-if_002dfeature-option" href="#if_002dfeature-option">6.3.13 if-feature option</a></li> + <li><a name="toc-if_002dcomponent_002ddep_002dfails-option" href="#if_002dcomponent_002ddep_002dfails-option">6.3.14 if-component-dep-fails option</a></li> + <li><a name="toc-feature-requirement" href="#feature-requirement">6.3.15 feature requirement</a></li> </ul></li> <li><a name="toc-Other-code-in-_002easd-files-1" href="#Other-code-in-_002easd-files">6.4 Other code in .asd files</a></li> <li><a name="toc-The-package_002dinferred_002dsystem-extension-1" href="#The-package_002dinferred_002dsystem-extension">6.5 The package-inferred-system extension</a></li> @@ -254,6 +254,7 @@ ul.no-bullet {list-style: none} <li><a name="toc-How-should-my-system-use-a-readtable-exported-by-another-system_003f" href="#How-should-my-system-use-a-readtable-exported-by-another-system_003f">13.6.7.1 How should my system use a readtable exported by another system?</a></li> <li><a name="toc-How-should-my-library-make-a-readtable-available-to-other-systems_003f" href="#How-should-my-library-make-a-readtable-available-to-other-systems_003f">13.6.7.2 How should my library make a readtable available to other systems?</a></li> </ul></li> + <li><a name="toc-How-can-I-capture-ASDF_0027s-output_003f-1" href="#How-can-I-capture-ASDF_0027s-output_003f">13.6.8 How can I capture ASDF’s output?</a></li> </ul></li> <li><a name="toc-ASDF-development-FAQs-1" href="#ASDF-development-FAQs">13.7 ASDF development FAQs</a> <ul class="no-bullet"> @@ -274,7 +275,7 @@ ul.no-bullet {list-style: none} <a name="Top"></a> <a name="ASDF_003a-Another-System-Definition-Facility"></a> <h1 class="top">ASDF: Another System Definition Facility</h1> -<p>Manual for Version 3.1.6.9 +<p>Manual for Version 3.1.6.14 </p>
<p>This manual describes ASDF, a system definition facility @@ -850,20 +851,23 @@ or silently convert lowercase to uppercase (lpns). <a name="Convenience-Functions-1"></a> <h3 class="section">5.2 Convenience Functions</h3>
-<a name="index-load_002dsystem"></a> -<a name="index-compile_002dsystem"></a> -<a name="index-test_002dsystem"></a> -<a name="index-require_002dsystem"></a> -<a name="index-make"></a>
<p>ASDF provides three commands for the most common system operations: <code>load-system</code>, <code>compile-system</code>, and <code>test-system</code>. -It also provides <code>require-system</code>, a version of <code>load-system</code> -that skips trying to update systems that are already loaded. -And it provides <code>make</code>, a function that uses whichever operation -was specified by the author of the target system, -which by default behaves like <code>load-system</code>. </p> +<p>ASDF also provides <code>require-system</code>, a variant of <code>load-system</code> +that skips loading systems that are already loaded. This is sometimes +useful, for example, in order to avoid re-loading libraries that come +pre-loaded into your lisp implementation. +</p> +<p>ASDF also provides <code>make</code>, a way of allowing system developers to +choose a default operation for their systems. For example, a developer +who has created a system intended to format a specific document, might +make document-formatting the default operation invoked by <code>make</code>, +instead of loading. If the system developer doesn’t specify in the +system definition, the default operation will be loading. +</p> +
<a name="index-operate"></a> <a name="index-oos"></a> @@ -877,49 +881,89 @@ which stands for operate-on-system, a name inherited from <code>mk-defsystem</co You’ll use <code>operate</code> whenever you want to do something beyond compiling, loading and testing. </p> -<p>Note that output from ASDF and ASDF extensions are sent -to the CL stream <code>*standard-output*</code>, -so rebinding that stream around calls to <code>asdf:operate</code> -should redirect all output from ASDF operations. -</p>
-<a name="index-load_002dsystem-1"></a> <a name="index-_002aload_002dsystem_002doperation_002a"></a> <a name="index-already_002dloaded_002dsystems"></a> -<a name="index-require_002dsystem-1"></a> -<p><code>load-system</code> applies <code>operate</code> with the operation from + +<dl> +<dt><a name="index-load_002dsystem"></a>Function: <strong>load-system</strong> <em>system &rest keys &key force force-not verbose version &allow-other-keys</em></dt> +<dd><p>Apply <code>operate</code> with the operation from <code>*load-system-operation*</code> -the system, and any provided keyword arguments. +the <var>system</var>, and any provided keyword arguments. <code>*load-system-operation*</code> by default is <code>load-op</code>; -it would be <code>load-bundle-op</code> by default on ECL, if only an implementation bug were fixed. -</p> -<p><code>require-system</code> skips any update to systems that have already been loaded, +it would be <code>load-bundle-op</code> by default on ECL, +if only an implementation bug were fixed. +Calling <code>load-system</code> is the regular, recommended way +to load a system into the current image. +</p></dd></dl> + +<dl> +<dt><a name="index-compile_002dsystem"></a>Function: <strong>compile-system</strong> <em>system &rest keys &key force force-not verbose version &allow-other-keys</em></dt> +<dd><p>Apply <code>operate</code> with the operation <code>compile-op</code>, +the <var>system</var>, and any provided keyword arguments. +This will make sure all the files in the system are compiled, +but not necessarily load any of them in the current image; +on most systems, it will <em>not</em> load all compiled files in the current image. +This function exists for symmetry with <code>load-system</code> but is not recommended +unless you are writing build scripts and know what you’re doing. +But then, you might be interested in <code>program-op</code> rather than <code>compile-op</code>. +</p></dd></dl> + +<dl> +<dt><a name="index-test_002dsystem"></a>Function: <strong>test-system</strong> <em>system &rest keys &key force force-not verbose version &allow-other-keys</em></dt> +<dd><p>Apply <code>operate</code> with the operation <code>test-op</code>, +the <var>system</var>, and any provided keyword arguments. +See <a href="#test_002dop">test-op</a>. +</p></dd></dl> + +<dl> +<dt><a name="index-make"></a>Function: <strong>make</strong> <em>system &rest keys &key &allow-other-keys</em></dt> +<dd><p>Do “The Right Thing” with your system. +Starting with ASDF 3.1, this function <code>make</code> is also available. +The default behaviour is to load the system as if by <code>load-system</code>; +but system authors can override this default in their system definition +they may specify an alternate operation as the intended use of their system, +with a <code>:build-operation</code> option in the <code>defsystem</code> form +(see <a href="#The-defsystem-grammar">build-operation</a>), +and an intended output pathname for that operation with +<code>:build-pathname</code>. +This function is experimental and largely untested. Use at your own risk. +</p></dd></dl> +<a name="index-build_002doperation"></a> + +<dl> +<dt><a name="index-require_002dsystem"></a>Function: <strong>require-system</strong> <em>system &rest keys &key &allow-other-keys</em></dt> +<dd><p><code>require-system</code> skips any update to systems that have already been loaded, in the spirit of <code>cl:require</code>. -It does it by calling <code>load-system</code> with a keyword option excluding already loaded systems.<a name="DOCF8" href="#FOOT8"><sup>8</sup></a>. +It does it by calling <code>load-system</code> with a keyword option +excluding already loaded systems.<a name="DOCF8" href="#FOOT8"><sup>8</sup></a>. On actively maintained free software implementations (namely recent versions of ABCL, Clozure CL, CMUCL, ECL, GNU CLISP, MKCL and SBCL), once ASDF itself is loaded, <code>cl:require</code> too can load ASDF systems, by falling back on <code>require-system</code> for module names not recognized by the implementation. +(Note however that <code>require-system</code> does <em>not</em> fall back on <code>cl:require</code>; +that would introduce an “interesting” potential infinite loop to break somehow.) </p> -<p>Note that <code>cl:require</code> and <code>require-system</code> are appropriate to load code +<p><code>cl:require</code> and <code>require-system</code> are appropriate to load code that is not being modified during the current programming session. -This notably includes the implementation-provided extension modules that <code>cl:require</code> can load. -This also includes any number of ASDF systems that the user isn’t either developing or debugging, -for which a previously installed version is deemed to be satisfactory. -<code>require-system</code> and through it <code>cl:require</code> can load these systems without any problem. +<code>cl:require</code> will notably load the implementation-provided extension modules; +<code>require-system</code> won’t, unless they are also defined as systems somehow, +which SBCL and MKCL do. +<code>require-system</code> may also be used to load any number of ASDF systems +that the user isn’t either developing or debugging, +for which a previously installed version is deemed to be satisfactory; +<code>cl:require</code> on the above-mentioned implementations will delegate to <code>require-system</code> +and may load them as well. But for code that you are actively developing, debugging, or otherwise modifying, you should use <code>load-system</code>, so ASDF will pick on your modifications -and transitively re-build the modified files and everything that depends on them. -</p> -<p>Finally, starting with ASDF 3.1, a function <code>make</code> is also available, -that does “The Right Thing” with your system. -The default behaviour is to load the system as if by <code>load-system</code>; -but instead of this default, system authors can specify -the intended use of their system by specifying their desired operation -with a <code>:build-operation</code> argument in the system definition. -</p> +and transitively re-build the modified files and everything that depends on them +(that the requested <var>system</var> itself depends on — +ASDF itself never builds anything unless +it’s an explicitly requested system or the dependencies thereof). +</p></dd></dl> +
<hr> <a name="Moving-on"></a> @@ -1202,6 +1246,7 @@ Presumably, the 4th form looks like <code>(defparameter *foo-version* "5.6. system-option := :defsystem-depends-on system-list | :weakly-depends-on <var>system-list</var> | :class class-name (see discussion below) + | :build-operation <var>operation-name</var> | system-option | module-option | option @@ -1323,8 +1368,21 @@ must be loaded <em>before</em> the system definition is processed. Typically this is used to load an ASDF extension that is used in the system definition. </p> +<a name="Build_002doperation"></a> +<h4 class="subsection">6.3.5 Build-operation</h4> +<a name="index-_003abuild_002doperation"></a> + +<p>The <code>:build-operation</code> option to <code>defsystem</code> allows the +programmer to specify an operation that will be applied, in place of +<code>load-op</code> when <code>make</code> (see <a href="#Convenience-Functions">make</a>) +is run on the system. The option +value should be the name of an operation. E.g., <code>:build-operation doc-op</code> +</p> +<p>This feature is +experimental and largely untested. Use at your own risk. +</p> <a name="Weakly-depends-on"></a> -<h4 class="subsection">6.3.5 Weakly depends on</h4> +<h4 class="subsection">6.3.6 Weakly depends on</h4> <a name="index-_003aweakly_002ddepends_002don"></a>
<p>We do <em>NOT</em> recommend you use this feature. @@ -1354,7 +1412,7 @@ this anomalous behaviour may be removed without warning.
<a name="Pathname-specifiers"></a> -<h4 class="subsection">6.3.6 Pathname specifiers</h4> +<h4 class="subsection">6.3.7 Pathname specifiers</h4> <a name="index-pathname-specifiers"></a>
<p>A pathname specifier (<code>pathname-specifier</code>) @@ -1434,7 +1492,7 @@ on the other hand, you can circumvent the file type that would otherwise be forced upon you if you were specifying a string. </p> <a name="Version-specifiers"></a> -<h4 class="subsection">6.3.7 Version specifiers</h4> +<h4 class="subsection">6.3.8 Version specifiers</h4> <a name="index-version-specifiers"></a> <a name="index-_003aversion-1"></a>
@@ -1469,7 +1527,7 @@ where significant API incompatibilities are signaled by an increased major numbe <p>See <a href="#Common-attributes-of-components">Common attributes of components</a>. </p> <a name="Require"></a> -<h4 class="subsection">6.3.8 Require</h4> +<h4 class="subsection">6.3.9 Require</h4> <a name="index-_003arequire-dependencies"></a>
<p>Use the implementation’s own <code>require</code> to load the <var>module-name</var>. @@ -1481,7 +1539,7 @@ See <a href="#if_002dfeature_002doption">if-feature-option</a>. </p>
<a name="Using-logical-pathnames"></a> -<h4 class="subsection">6.3.9 Using logical pathnames</h4> +<h4 class="subsection">6.3.10 Using logical pathnames</h4> <a name="index-logical-pathnames"></a>
<p>We do not generally recommend the use of logical pathnames, @@ -1537,7 +1595,7 @@ underscores, dots or CamelCase in pathnames. </p>
<a name="Serial-dependencies"></a> -<h4 class="subsection">6.3.10 Serial dependencies</h4> +<h4 class="subsection">6.3.11 Serial dependencies</h4> <a name="index-serial-dependencies"></a>
<p>If the <code>:serial t</code> option is specified for a module, @@ -1560,7 +1618,7 @@ This is done as if by <code>:depends-on</code>.
<a name="Source-location-_0028_003apathname_0029"></a> -<h4 class="subsection">6.3.11 Source location (<code>:pathname</code>)</h4> +<h4 class="subsection">6.3.12 Source location (<code>:pathname</code>)</h4>
<p>The <code>:pathname</code> option is optional in all cases for systems defined via <code>defsystem</code>, and generally is unnecessary. In the @@ -1606,7 +1664,7 @@ from within an editor without clobbering its source location) </li></ul>
<a name="if_002dfeature-option"></a> -<h4 class="subsection">6.3.12 if-feature option</h4> +<h4 class="subsection">6.3.13 if-feature option</h4> <a name="index-_003aif_002dfeature-component-option"></a> <a name="if_002dfeature_002doption"></a> <p>This option allows you to specify a feature expression to be evaluated @@ -1632,7 +1690,7 @@ been performed. See <a href="#required_002dfeatures">Required features</a>. </p> <a name="if_002dcomponent_002ddep_002dfails-option"></a> -<h4 class="subsection">6.3.13 if-component-dep-fails option</h4> +<h4 class="subsection">6.3.14 if-component-dep-fails option</h4> <a name="index-_003aif_002dcomponent_002ddep_002dfails-component-option"></a> <p>This option was removed in ASDF 3. Its semantics was limited in purpose and dubious to explain, @@ -1640,7 +1698,7 @@ and its implementation was breaking a hole into the ASDF object model. Please use the <code>if-feature</code> option instead. </p> <a name="feature-requirement"></a> -<h4 class="subsection">6.3.14 feature requirement</h4> +<h4 class="subsection">6.3.15 feature requirement</h4> <p>This requirement was removed in ASDF 3.1. Please do not use it. In most cases, <code>:if-feature</code> (see <a href="#if_002dfeature_002doption">if-feature-option</a>) will provide an adequate substitute. @@ -1971,7 +2029,7 @@ may be performed on a given component. </p></dd></dl>
<dl> -<dt><a name="index-load_002dsource_002dop"></a>Operation: <strong><code>load-source-op</code></strong> <em>, <code>prepare-source-op</code></em></dt> +<dt><a name="index-load_002dsource_002dop_002c"></a>Operation: <strong><code>load-source-op</code>,</strong> <em><code>prepare-source-op</code></em></dt> <dd> <p><code>load-source-op</code> will load the source for the files in a module rather than the compiled fasl output. @@ -1987,7 +2045,7 @@ that ensures the dependencies are themselves loaded via <code>load-source-op</co The default method will do nothing. The default dependency is to require <code>load-op</code> to be performed on the module first. -Its <code>operation-done-p</code> method returns <code>nil</code>, +Its default <code>operation-done-p</code> method returns <code>nil</code>, which means that the operation is <em>never</em> done – we assume that if you invoke the <code>test-op</code>, @@ -2034,7 +2092,7 @@ on a library. For example, one might have
<dl> -<dt><a name="index-compile_002dbundle_002dop"></a>Operation: <strong><code>compile-bundle-op</code></strong> <em>, <code>monolithic-compile-bundle-op</code>, <code>load-bundle-op</code>, <code>monolithic-load-bundle-op</code>, <code>deliver-asd-op</code>, <code>monolithic-deliver-asd-op</code>, <code>lib-op</code>, <code>monolithic-lib-op</code>, <code>dll-op</code>, <code>monolithic-dll-op</code>, <code>image-op</code>, <code>program-op</code></em></dt> +<dt><a name="index-compile_002dbundle_002dop_002c"></a>Operation: <strong><code>compile-bundle-op</code>,</strong> <em><code>monolithic-compile-bundle-op</code>, <code>load-bundle-op</code>, <code>monolithic-load-bundle-op</code>, <code>deliver-asd-op</code>, <code>monolithic-deliver-asd-op</code>, <code>lib-op</code>, <code>monolithic-lib-op</code>, <code>dll-op</code>, <code>monolithic-dll-op</code>, <code>image-op</code>, <code>program-op</code></em></dt> <dd> <p>These are “bundle” operations, that can create a single-file “bundle” for all the contents of each system in an application, @@ -2126,7 +2184,7 @@ Maybe you have suggestions on how to better configure it? </p></dd></dl>
<dl> -<dt><a name="index-concatenate_002dsource_002dop"></a>Operation: <strong><code>concatenate-source-op</code></strong> <em>, <code>monolithic-concatenate-source-op</code>, <code>load-concatenated-source-op</code>, <code>compile-concatenated-source-op</code>, <code>load-compiled-concatenated-source-op</code>, <code>monolithic-load-concatenated-source-op</code>, <code>monolithic-compile-concatenated-source-op</code>, <code>monolithic-load-compiled-concatenated-source-op</code></em></dt> +<dt><a name="index-concatenate_002dsource_002dop_002c"></a>Operation: <strong><code>concatenate-source-op</code>,</strong> <em><code>monolithic-concatenate-source-op</code>, <code>load-concatenated-source-op</code>, <code>compile-concatenated-source-op</code>, <code>load-compiled-concatenated-source-op</code>, <code>monolithic-load-concatenated-source-op</code>, <code>monolithic-compile-concatenated-source-op</code>, <code>monolithic-load-compiled-concatenated-source-op</code></em></dt> <dd> <p>These operations, as their respective names indicate, will concatenate all the <code>cl-source-file</code> source files in a system @@ -5241,7 +5299,7 @@ and lose configuration as they do. <a name="index-monolithic_002dfasl_002dop-_0028obsolete_0029"></a> <a name="index-monolithic_002dload_002dfasl_002dop-_0028obsolete_0029"></a> <a name="index-monolithic_002dbinary_002dop-_0028obsolete_0029"></a> -<a name="index-compile_002dbundle_002dop-1"></a> +<a name="index-compile_002dbundle_002dop"></a> <a name="index-load_002dbundle_002dop"></a> <a name="index-deliver_002dasd_002dop"></a> <a name="index-monolithic_002dcompile_002dbundle_002dop"></a> @@ -5699,6 +5757,21 @@ to eschew using such an important library anymore. <p>Use from the <code>named-readtables</code> system the macro <code>named-readtables:defreadtable</code>. </p> <hr> +<a name="How-can-I-capture-ASDF_0027s-output_003f"></a> +<a name="How-can-I-capture-ASDF_0027s-output_003f-1"></a> +<h4 class="subsection">13.6.8 How can I capture ASDF’s output?</h4> + +<a name="index-ASDF-output"></a> +<a name="index-Capturing-ASDF-output"></a> +<a name="index-_002astandard_002doutput_002a"></a> + +<p>Output from ASDF and ASDF extensions are sent to the CL stream +<code>*standard-output*</code>, so rebinding that stream around calls to +<code>asdf:operate</code> should redirect all output from ASDF operations. +</p> + + +<hr> <a name="ASDF-development-FAQs"></a> <a name="ASDF-development-FAQs-1"></a> <h3 class="section">13.7 ASDF development FAQs</h3> @@ -5878,6 +5951,7 @@ see the <samp>TODO</samp> file in the source repository. <tr><td></td><td valign="top"><a href="#index-_003aasdf">:asdf</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_003aasdf2">:asdf2</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_003aasdf3">:asdf3</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-_003abuild_002doperation">:build-operation</a>:</td><td> </td><td valign="top"><a href="#The-defsystem-grammar">The defsystem grammar</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_003acompile_002dcheck">:compile-check</a>:</td><td> </td><td valign="top"><a href="#Controlling-file-compilation">Controlling file compilation</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_003adefault_002dregistry-source-config-directive">:default-registry source config directive</a>:</td><td> </td><td valign="top"><a href="#Configuration-DSL">Configuration DSL</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_003adefsystem_002ddepends_002don">:defsystem-depends-on</a>:</td><td> </td><td valign="top"><a href="#The-defsystem-grammar">The defsystem grammar</a></td></tr> @@ -5898,6 +5972,7 @@ see the <samp>TODO</samp> file in the source repository. <tr><th><a name="Concept-Index_cp_letter-A">A</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-also_002dexclude-source-config-directive">also-exclude source config directive</a>:</td><td> </td><td valign="top"><a href="#Configuration-DSL">Configuration DSL</a></td></tr> <tr><td></td><td valign="top"><a href="#index-around_002dcompile-keyword">around-compile keyword</a>:</td><td> </td><td valign="top"><a href="#Controlling-file-compilation">Controlling file compilation</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-ASDF-output">ASDF output</a>:</td><td> </td><td valign="top"><a href="#How-can-I-capture-ASDF_0027s-output_003f">How can I capture ASDF's output?</a></td></tr> <tr><td></td><td valign="top"><a href="#index-ASDF-versions">ASDF versions</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> <tr><td></td><td valign="top"><a href="#index-ASDF_002dBINARY_002dLOCATIONS-compatibility">ASDF-BINARY-LOCATIONS compatibility</a>:</td><td> </td><td valign="top"><a href="#Output-Backward-Compatibility">Output Backward Compatibility</a></td></tr> <tr><td></td><td valign="top"><a href="#index-asdf_002doutput_002dtranslations">asdf-output-translations</a>:</td><td> </td><td valign="top"><a href="#Controlling-where-ASDF-saves-compiled-files">Controlling where ASDF saves compiled files</a></td></tr> @@ -5907,8 +5982,10 @@ see the <samp>TODO</samp> file in the source repository. <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-bug-tracker">bug tracker</a>:</td><td> </td><td valign="top"><a href="#Where-do-I-report-a-bug_003f">Where do I report a bug?</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-build_002doperation">build-operation</a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Concept-Index_cp_letter-C">C</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="#index-Capturing-ASDF-output">Capturing ASDF output</a>:</td><td> </td><td valign="top"><a href="#How-can-I-capture-ASDF_0027s-output_003f">How can I capture ASDF's output?</a></td></tr> <tr><td></td><td valign="top"><a href="#index-compile_002dcheck-keyword">compile-check keyword</a>:</td><td> </td><td valign="top"><a href="#Controlling-file-compilation">Controlling file compilation</a></td></tr> <tr><td></td><td valign="top"><a href="#index-component">component</a>:</td><td> </td><td valign="top"><a href="#Components">Components</a></td></tr> <tr><td></td><td valign="top"><a href="#index-component-designator">component designator</a>:</td><td> </td><td valign="top"><a href="#Components">Components</a></td></tr> @@ -6050,15 +6127,15 @@ see the <samp>TODO</samp> file in the source repository. <tr><td></td><td valign="top"><a href="#index-coerce_002dname"><code>coerce-name</code></a>:</td><td> </td><td valign="top"><a href="#Creating-new-operations">Creating new operations</a></td></tr> <tr><td></td><td valign="top"><a href="#index-coerce_002dname-1"><code>coerce-name</code></a>:</td><td> </td><td valign="top"><a href="#Components">Components</a></td></tr> <tr><td></td><td valign="top"><a href="#index-coerce_002dname-2"><code>coerce-name</code></a>:</td><td> </td><td valign="top"><a href="#Common-attributes-of-components">Common attributes of components</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-compile_002dbundle_002dop-1"><code>compile-bundle-op</code></a>:</td><td> </td><td valign="top"><a href="#What-happened-to-the-bundle-operations">What happened to the bundle operations</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-compile_002dbundle_002dop"><code><code>compile-bundle-op</code></code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-compile_002dbundle_002dop"><code>compile-bundle-op</code></a>:</td><td> </td><td valign="top"><a href="#What-happened-to-the-bundle-operations">What happened to the bundle operations</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-compile_002dbundle_002dop_002c"><code><code>compile-bundle-op</code>,</code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> <tr><td></td><td valign="top"><a href="#index-compile_002dfile_002a"><code>compile-file*</code></a>:</td><td> </td><td valign="top"><a href="#Controlling-file-compilation">Controlling file compilation</a></td></tr> <tr><td></td><td valign="top"><a href="#index-compile_002dop"><code><code>compile-op</code></code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> <tr><td></td><td valign="top"><a href="#index-compile_002dsystem"><code>compile-system</code></a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-component-1"><code>component</code></a>:</td><td> </td><td valign="top"><a href="#The-object-model-of-ASDF">The object model of ASDF</a></td></tr> <tr><td></td><td valign="top"><a href="#index-component_002ddepends_002don"><code>component-depends-on</code></a>:</td><td> </td><td valign="top"><a href="#Creating-new-operations">Creating new operations</a></td></tr> <tr><td></td><td valign="top"><a href="#index-component_002dpathname"><code>component-pathname</code></a>:</td><td> </td><td valign="top"><a href="#Common-attributes-of-components">Common attributes of components</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-concatenate_002dsource_002dop"><code><code>concatenate-source-op</code></code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-concatenate_002dsource_002dop_002c"><code><code>concatenate-source-op</code>,</code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Function-and-Class-Index_fn_letter-D">D</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-defsystem"><code>defsystem</code></a>:</td><td> </td><td valign="top"><a href="#The-defsystem-form">The defsystem form</a></td></tr> @@ -6090,9 +6167,8 @@ see the <samp>TODO</samp> file in the source repository. <tr><td></td><td valign="top"><a href="#index-load_002dbundle_002dop"><code>load-bundle-op</code></a>:</td><td> </td><td valign="top"><a href="#What-happened-to-the-bundle-operations">What happened to the bundle operations</a></td></tr> <tr><td></td><td valign="top"><a href="#index-load_002dfasl_002dop-_0028obsolete_0029"><code>load-fasl-op (obsolete)</code></a>:</td><td> </td><td valign="top"><a href="#What-happened-to-the-bundle-operations">What happened to the bundle operations</a></td></tr> <tr><td></td><td valign="top"><a href="#index-load_002dop"><code><code>load-op</code></code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-load_002dsource_002dop"><code><code>load-source-op</code></code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-load_002dsource_002dop_002c"><code><code>load-source-op</code>,</code></a>:</td><td> </td><td valign="top"><a href="#Predefined-operations-of-ASDF">Predefined operations of ASDF</a></td></tr> <tr><td></td><td valign="top"><a href="#index-load_002dsystem"><code>load-system</code></a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-load_002dsystem-1"><code>load-system</code></a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-locate_002dsystem"><code>locate-system</code></a>:</td><td> </td><td valign="top"><a href="#Components">Components</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Function-and-Class-Index_fn_letter-M">M</a></th><td></td><td></td></tr> @@ -6128,7 +6204,6 @@ see the <samp>TODO</samp> file in the source repository. <tr><td></td><td valign="top"><a href="#index-register_002dimmutable_002dsystem-1"><code>register-immutable-system</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-register_002dpreloaded_002dsystem"><code>register-preloaded-system</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-require_002dsystem"><code>require-system</code></a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-require_002dsystem-1"><code>require-system</code></a>:</td><td> </td><td valign="top"><a href="#Convenience-Functions">Convenience Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-run_002dprogram"><code>run-program</code></a>:</td><td> </td><td valign="top"><a href="#Some-Utility-Functions">Some Utility Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-run_002dshell_002dcommand"><code>run-shell-command</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr> <tr><td colspan="4"> <hr></td></tr> @@ -6212,6 +6287,7 @@ see the <samp>TODO</samp> file in the source repository. <tr><td></td><td valign="top"><a href="#index-_002anil_002dpathname_002a"><code>*nil-pathname*</code></a>:</td><td> </td><td valign="top"><a href="#Some-Utility-Functions">Some Utility Functions</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002aoldest_002dforward_002dcompatible_002dasdf_002dversion_002a"><code>*oldest-forward-compatible-asdf-version*</code></a>:</td><td> </td><td valign="top"><a href="#Pitfalls-of-the-upgrade-to-ASDF-3">Pitfalls of the upgrade to ASDF 3</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002asource_002dregistry_002dparameter_002a"><code>*source-registry-parameter*</code></a>:</td><td> </td><td valign="top"><a href="#g_t_002asource_002dregistry_002dparameter_002a-variable">*source-registry-parameter* variable</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-_002astandard_002doutput_002a"><code>*standard-output*</code></a>:</td><td> </td><td valign="top"><a href="#How-can-I-capture-ASDF_0027s-output_003f">How can I capture ASDF's output?</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002asystem_002ddefinition_002dsearch_002dfunctions_002a"><code>*system-definition-search-functions*</code></a>:</td><td> </td><td valign="top"><a href="#Components">Components</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Variable-Index_vr_letter-A">A</a></th><td></td><td></td></tr>
===================================== src/contrib/asdf/doc/asdf.info ===================================== --- a/src/contrib/asdf/doc/asdf.info +++ b/src/contrib/asdf/doc/asdf.info @@ -1,4 +1,4 @@ -This is asdf.info, produced by makeinfo version 5.2 from asdf.texinfo. +This is asdf.info, produced by makeinfo version 6.1 from asdf.texinfo.
This manual describes ASDF, a system definition facility for Common Lisp programs and libraries. @@ -43,7 +43,7 @@ File: asdf.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) ASDF: Another System Definition Facility ****************************************
-Manual for Version 3.1.6.9 +Manual for Version 3.1.6.14
This manual describes ASDF, a system definition facility for Common Lisp programs and libraries. @@ -243,6 +243,7 @@ Issues with using and extending ASDF to define systems * How do I create a system definition where all the source files have a .cl extension?:: * How do I mark a source file to be loaded only and not compiled?:: * How do I work with readtables?:: +* How can I capture ASDF's output?::
ASDF development FAQs
@@ -780,11 +781,19 @@ File: asdf.info, Node: Convenience Functions, Next: Moving on, Prev: Loading =========================
ASDF provides three commands for the most common system operations: -'load-system', 'compile-system', and 'test-system'. It also provides -'require-system', a version of 'load-system' that skips trying to update -systems that are already loaded. And it provides 'make', a function -that uses whichever operation was specified by the author of the target -system, which by default behaves like 'load-system'. +'load-system', 'compile-system', and 'test-system'. + + ASDF also provides 'require-system', a variant of 'load-system' that +skips loading systems that are already loaded. This is sometimes +useful, for example, in order to avoid re-loading libraries that come +pre-loaded into your lisp implementation. + + ASDF also provides 'make', a way of allowing system developers to +choose a default operation for their systems. For example, a developer +who has created a system intended to format a specific document, might +make document-formatting the default operation invoked by 'make', +instead of loading. If the system developer doesn't specify in the +system definition, the default operation will be loading.
Because ASDF is an extensible system for defining _operations_ on _components_, it also provides a generic function 'operate', so you may @@ -794,43 +803,71 @@ stands for operate-on-system, a name inherited from 'mk-defsystem'.) You'll use 'operate' whenever you want to do something beyond compiling, loading and testing.
- Note that output from ASDF and ASDF extensions are sent to the CL -stream '*standard-output*', so rebinding that stream around calls to -'asdf:operate' should redirect all output from ASDF operations. - - 'load-system' applies 'operate' with the operation from -'*load-system-operation*' the system, and any provided keyword -arguments. '*load-system-operation*' by default is 'load-op'; it would -be 'load-bundle-op' by default on ECL, if only an implementation bug -were fixed. - - 'require-system' skips any update to systems that have already been -loaded, in the spirit of 'cl:require'. It does it by calling -'load-system' with a keyword option excluding already loaded -systems.(1). On actively maintained free software implementations -(namely recent versions of ABCL, Clozure CL, CMUCL, ECL, GNU CLISP, MKCL -and SBCL), once ASDF itself is loaded, 'cl:require' too can load ASDF -systems, by falling back on 'require-system' for module names not -recognized by the implementation. - - Note that 'cl:require' and 'require-system' are appropriate to load -code that is not being modified during the current programming session. -This notably includes the implementation-provided extension modules that -'cl:require' can load. This also includes any number of ASDF systems -that the user isn't either developing or debugging, for which a -previously installed version is deemed to be satisfactory. -'require-system' and through it 'cl:require' can load these systems -without any problem. But for code that you are actively developing, -debugging, or otherwise modifying, you should use 'load-system', so ASDF -will pick on your modifications and transitively re-build the modified -files and everything that depends on them. - - Finally, starting with ASDF 3.1, a function 'make' is also available, -that does "The Right Thing" with your system. The default behaviour is -to load the system as if by 'load-system'; but instead of this default, -system authors can specify the intended use of their system by -specifying their desired operation with a ':build-operation' argument in -the system definition. + -- Function: load-system system &rest keys &key force force-not verbose + version &allow-other-keys + Apply 'operate' with the operation from '*load-system-operation*' + the SYSTEM, and any provided keyword arguments. + '*load-system-operation*' by default is 'load-op'; it would be + 'load-bundle-op' by default on ECL, if only an implementation bug + were fixed. Calling 'load-system' is the regular, recommended way + to load a system into the current image. + + -- Function: compile-system system &rest keys &key force force-not + verbose version &allow-other-keys + Apply 'operate' with the operation 'compile-op', the SYSTEM, and + any provided keyword arguments. This will make sure all the files + in the system are compiled, but not necessarily load any of them in + the current image; on most systems, it will _not_ load all compiled + files in the current image. This function exists for symmetry with + 'load-system' but is not recommended unless you are writing build + scripts and know what you're doing. But then, you might be + interested in 'program-op' rather than 'compile-op'. + + -- Function: test-system system &rest keys &key force force-not verbose + version &allow-other-keys + Apply 'operate' with the operation 'test-op', the SYSTEM, and any + provided keyword arguments. *Note test-op::. + + -- Function: make system &rest keys &key &allow-other-keys + Do "The Right Thing" with your system. Starting with ASDF 3.1, + this function 'make' is also available. The default behaviour is + to load the system as if by 'load-system'; but system authors can + override this default in their system definition they may specify + an alternate operation as the intended use of their system, with a + ':build-operation' option in the 'defsystem' form (*note + build-operation: The defsystem grammar.), and an intended output + pathname for that operation with ':build-pathname'. This function + is experimental and largely untested. Use at your own risk. + + -- Function: require-system system &rest keys &key &allow-other-keys + 'require-system' skips any update to systems that have already been + loaded, in the spirit of 'cl:require'. It does it by calling + 'load-system' with a keyword option excluding already loaded + systems.(1). On actively maintained free software implementations + (namely recent versions of ABCL, Clozure CL, CMUCL, ECL, GNU CLISP, + MKCL and SBCL), once ASDF itself is loaded, 'cl:require' too can + load ASDF systems, by falling back on 'require-system' for module + names not recognized by the implementation. (Note however that + 'require-system' does _not_ fall back on 'cl:require'; that would + introduce an "interesting" potential infinite loop to break + somehow.) + + 'cl:require' and 'require-system' are appropriate to load code that + is not being modified during the current programming session. + 'cl:require' will notably load the implementation-provided + extension modules; 'require-system' won't, unless they are also + defined as systems somehow, which SBCL and MKCL do. + 'require-system' may also be used to load any number of ASDF + systems that the user isn't either developing or debugging, for + which a previously installed version is deemed to be satisfactory; + 'cl:require' on the above-mentioned implementations will delegate + to 'require-system' and may load them as well. But for code that + you are actively developing, debugging, or otherwise modifying, you + should use 'load-system', so ASDF will pick on your modifications + and transitively re-build the modified files and everything that + depends on them (that the requested SYSTEM itself depends on -- + ASDF itself never builds anything unless it's an explicitly + requested system or the dependencies thereof).
---------- Footnotes ----------
@@ -1113,6 +1150,7 @@ File: asdf.info, Node: The defsystem grammar, Next: Other code in .asd files, system-option := :defsystem-depends-on system-list | :weakly-depends-on SYSTEM-LIST | :class class-name (see discussion below) + | :build-operation OPERATION-NAME | system-option | module-option | option @@ -1227,7 +1265,19 @@ to specify another ASDF-defined system or set of systems that must be loaded _before_ the system definition is processed. Typically this is used to load an ASDF extension that is used in the system definition.
-6.3.5 Weakly depends on +6.3.5 Build-operation +--------------------- + +The ':build-operation' option to 'defsystem' allows the programmer to +specify an operation that will be applied, in place of 'load-op' when +'make' (*note make: Convenience Functions.) is run on the system. The +option value should be the name of an operation. E.g., +':build-operation doc-op' + + This feature is experimental and largely untested. Use at your own +risk. + +6.3.6 Weakly depends on -----------------------
We do _NOT_ recommend you use this feature. If you are tempted to write @@ -1249,7 +1299,7 @@ only makes sense at the 'defsystem' level. Programmers are cautioned not to use this component option except at the 'defsystem' level, as this anomalous behaviour may be removed without warning.
-6.3.6 Pathname specifiers +6.3.7 Pathname specifiers -------------------------
A pathname specifier ('pathname-specifier') may be a pathname, a string @@ -1316,7 +1366,7 @@ a directory or a file with appropriate type); on the other hand, you can circumvent the file type that would otherwise be forced upon you if you were specifying a string.
-6.3.7 Version specifiers +6.3.8 Version specifiers ------------------------
Version specifiers are strings to be parsed as period-separated lists of @@ -1347,7 +1397,7 @@ number.
*Note Common attributes of components::.
-6.3.8 Require +6.3.9 Require -------------
Use the implementation's own 'require' to load the MODULE-NAME. @@ -1357,8 +1407,8 @@ than '#+_implementation-name_' to only depend on the specified module on the specific implementation that provides it. *Note if-feature-option::.
-6.3.9 Using logical pathnames ------------------------------ +6.3.10 Using logical pathnames +------------------------------
We do not generally recommend the use of logical pathnames, especially not so to newcomers to Common Lisp. However, we do support the use of @@ -1403,7 +1453,7 @@ are shared with software written in different programming languages where conventions include the use of underscores, dots or CamelCase in pathnames.
-6.3.10 Serial dependencies +6.3.11 Serial dependencies --------------------------
If the ':serial t' option is specified for a module, ASDF will add @@ -1419,7 +1469,7 @@ preceding it. This is done as if by ':depends-on'. (:file "b" :depends-on ("a")) (:file "c" :depends-on ("a" "b")))
-6.3.11 Source location (':pathname') +6.3.12 Source location (':pathname') ------------------------------------
The ':pathname' option is optional in all cases for systems defined via @@ -1458,7 +1508,7 @@ pathname will be set to: that a developer can evaluate a 'defsystem' form from within an editor without clobbering its source location)
-6.3.12 if-feature option +6.3.13 if-feature option ------------------------
This option allows you to specify a feature expression to be evaluated @@ -1481,14 +1531,14 @@ before any build operations have been performed. This option was added in ASDF 3. For more information, *Note Required features: required-features.
-6.3.13 if-component-dep-fails option +6.3.14 if-component-dep-fails option ------------------------------------
This option was removed in ASDF 3. Its semantics was limited in purpose and dubious to explain, and its implementation was breaking a hole into the ASDF object model. Please use the 'if-feature' option instead.
-6.3.14 feature requirement +6.3.15 feature requirement --------------------------
This requirement was removed in ASDF 3.1. Please do not use it. In @@ -1802,7 +1852,7 @@ They are invoked via the 'operate' generic function. before 'compile-op' and 'load-op' operations may be performed on a given component.
- -- Operation: 'load-source-op' , 'prepare-source-op' + -- Operation: 'load-source-op', 'prepare-source-op'
'load-source-op' will load the source for the files in a module rather than the compiled fasl output. It has a 'prepare-source-op' @@ -1813,7 +1863,7 @@ They are invoked via the 'operate' generic function.
This operation will perform some tests on the module. The default method will do nothing. The default dependency is to require - 'load-op' to be performed on the module first. Its + 'load-op' to be performed on the module first. Its default 'operation-done-p' method returns 'nil', which means that the operation is _never_ done - we assume that if you invoke the 'test-op', you want to test the system, even if you have already @@ -1850,7 +1900,7 @@ They are invoked via the 'operate' generic function. :foo-tests))) ...)
- -- Operation: 'compile-bundle-op' , 'monolithic-compile-bundle-op', + -- Operation: 'compile-bundle-op', 'monolithic-compile-bundle-op', 'load-bundle-op', 'monolithic-load-bundle-op', 'deliver-asd-op', 'monolithic-deliver-asd-op', 'lib-op', 'monolithic-lib-op', 'dll-op', 'monolithic-dll-op', @@ -1935,7 +1985,7 @@ They are invoked via the 'operate' generic function. very satisfactory and may change in the future. Maybe you have suggestions on how to better configure it?
- -- Operation: 'concatenate-source-op' , + -- Operation: 'concatenate-source-op', 'monolithic-concatenate-source-op', 'load-concatenated-source-op', 'compile-concatenated-source-op', @@ -4993,6 +5043,7 @@ File: asdf.info, Node: Issues with using and extending ASDF to define systems, * How do I create a system definition where all the source files have a .cl extension?:: * How do I mark a source file to be loaded only and not compiled?:: * How do I work with readtables?:: +* How can I capture ASDF's output?::
File: asdf.info, Node: How can I cater for unit-testing in my system?, Next: How can I cater for documentation generation in my system?, Prev: Issues with using and extending ASDF to define systems, Up: Issues with using and extending ASDF to define systems @@ -5001,7 +5052,7 @@ File: asdf.info, Node: How can I cater for unit-testing in my system?, Next: H -------------------------------------------------------
ASDF provides a predefined test operation, 'test-op'. *Note test-op: -Predefined operations of ASDF. The test operation, however, is largely +Predefined operations of ASDF. The test operation, however, is largely left to the system definer to specify. 'test-op' has been a topic of considerable discussion on the asdf-devel mailing list (http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel) (*note @@ -5152,7 +5203,7 @@ or with various bundle operations. In addition, the dependency model of ASDF would have to be modified incompatibly to allow for such a trick.
-File: asdf.info, Node: How do I work with readtables?, Prev: How do I mark a source file to be loaded only and not compiled?, Up: Issues with using and extending ASDF to define systems +File: asdf.info, Node: How do I work with readtables?, Next: How can I capture ASDF's output?, Prev: How do I mark a source file to be loaded only and not compiled?, Up: Issues with using and extending ASDF to define systems
13.6.7 How do I work with readtables? ------------------------------------- @@ -5226,6 +5277,16 @@ Use from the 'named-readtables' system the macro 'named-readtables:defreadtable'.
+File: asdf.info, Node: How can I capture ASDF's output?, Prev: How do I work with readtables?, Up: Issues with using and extending ASDF to define systems + +13.6.8 How can I capture ASDF's output? +--------------------------------------- + +Output from ASDF and ASDF extensions are sent to the CL stream +'*standard-output*', so rebinding that stream around calls to +'asdf:operate' should redirect all output from ASDF operations. + + File: asdf.info, Node: ASDF development FAQs, Prev: Issues with using and extending ASDF to define systems, Up: FAQ
13.7 ASDF development FAQs @@ -5364,36 +5425,40 @@ Concept Index * :asdf: Introduction. (line 6) * :asdf2: Introduction. (line 6) * :asdf3: Introduction. (line 6) +* :build-operation: The defsystem grammar. + (line 129) * :compile-check: Controlling file compilation. (line 6) * :default-registry source config directive: Configuration DSL. (line 6) * :defsystem-depends-on: The defsystem grammar. - (line 120) + (line 121) * :directory source config directive: Configuration DSL. (line 6) * :exclude source config directive: Configuration DSL. (line 6) * :if-component-dep-fails component option: The defsystem grammar. - (line 382) + (line 395) * :if-feature component option: The defsystem grammar. - (line 359) + (line 372) * :ignore-invalid-entries source config directive: Configuration DSL. (line 6) * :include source config directive: Configuration DSL. (line 6) * :inherit-configuration source config directive: Configuration DSL. (line 6) * :require dependencies: The defsystem grammar. - (line 248) + (line 261) * :tree source config directive: Configuration DSL. (line 6) * :version: The defsystem form. (line 68) * :version <1>: The defsystem grammar. - (line 217) + (line 230) * :version <2>: Common attributes of components. (line 23) * :weakly-depends-on: The defsystem grammar. - (line 128) + (line 141) * also-exclude source config directive: Configuration DSL. (line 6) * around-compile keyword: Controlling file compilation. (line 6) +* ASDF output: How can I capture ASDF's output?. + (line 6) * ASDF versions: Introduction. (line 6) * ASDF-BINARY-LOCATIONS compatibility: Output Backward Compatibility. (line 6) @@ -5404,6 +5469,10 @@ Concept Index * ASDF-USER package: Components. (line 41) * bug tracker: Where do I report a bug?. (line 6) +* build-operation: Convenience Functions. + (line 64) +* Capturing ASDF output: How can I capture ASDF's output?. + (line 6) * compile-check keyword: Controlling file compilation. (line 6) * component: Components. (line 6) @@ -5425,23 +5494,23 @@ Concept Index * launchpad: Where do I report a bug?. (line 6) * logical pathnames: The defsystem grammar. - (line 258) + (line 271) * mailing list: Mailing list. (line 6) * operation: Operations. (line 6) * pathname specifiers: The defsystem grammar. - (line 150) + (line 163) * Primary system name: Components. (line 70) * readtables: How do I work with readtables?. (line 6) * serial dependencies: The defsystem grammar. - (line 304) + (line 317) * system: Components. (line 6) * system designator: Components. (line 6) * System names: Components. (line 70) * Testing for ASDF: Introduction. (line 6) * tree source config directive: Configuration DSL. (line 6) * version specifiers: The defsystem grammar. - (line 217) + (line 230)
File: asdf.info, Node: Function and Class Index, Next: Variable Index, Prev: Concept Index, Up: Top @@ -5453,7 +5522,7 @@ Function and Class Index * Menu:
* already-loaded-systems: Convenience Functions. - (line 25) + (line 29) * apply-output-translations: Output location API. (line 36) * asdf-version: How do I detect the ASDF version?. (line 6) @@ -5474,21 +5543,21 @@ Function and Class Index (line 12) * compile-bundle-op: What happened to the bundle operations. (line 6) -* 'compile-bundle-op': Predefined operations of ASDF. +* compile-bundle-op,: Predefined operations of ASDF. (line 93) * compile-file*: Controlling file compilation. (line 6) -* 'compile-op': Predefined operations of ASDF. +* compile-op: Predefined operations of ASDF. (line 11) * compile-system: Convenience Functions. - (line 6) + (line 38) * component: The object model of ASDF. (line 6) * component-depends-on: Creating new operations. (line 45) * component-pathname: Common attributes of components. (line 155) -* 'concatenate-source-op': Predefined operations of ASDF. +* concatenate-source-op,: Predefined operations of ASDF. (line 178) * defsystem: The defsystem form. (line 6) * defsystem <1>: A more involved example. @@ -5521,17 +5590,15 @@ Function and Class Index (line 6) * load-fasl-op (obsolete): What happened to the bundle operations. (line 6) -* 'load-op': Predefined operations of ASDF. +* load-op: Predefined operations of ASDF. (line 25) -* 'load-source-op': Predefined operations of ASDF. +* load-source-op,: Predefined operations of ASDF. (line 45) * load-system: Convenience Functions. - (line 6) -* load-system <1>: Convenience Functions. - (line 25) + (line 29) * locate-system: Components. (line 97) * make: Convenience Functions. - (line 6) + (line 54) * merge-pathnames*: Some Utility Functions. (line 62) * module: Pre-defined subclasses of component. @@ -5549,11 +5616,11 @@ Function and Class Index * monolithic-load-fasl-op (obsolete): What happened to the bundle operations. (line 6) * oos: Convenience Functions. - (line 13) -* 'oos': Operations. (line 33) + (line 21) +* oos <1>: Operations. (line 33) * operate: Convenience Functions. - (line 13) -* 'operate': Operations. (line 31) + (line 21) +* operate <1>: Operations. (line 31) * operation: The object model of ASDF. (line 6) * operation-done-p: Creating new operations. @@ -5565,7 +5632,7 @@ Function and Class Index (line 12) * perform: Creating new operations. (line 19) -* 'prepare-op': Predefined operations of ASDF. +* prepare-op: Predefined operations of ASDF. (line 38) * primary-system-name: Components. (line 70) * primary-system-name <1>: Components. (line 91) @@ -5575,9 +5642,7 @@ Function and Class Index * register-preloaded-system: Miscellaneous Functions. (line 61) * require-system: Convenience Functions. - (line 6) -* require-system <1>: Convenience Functions. - (line 25) + (line 65) * run-program: Some Utility Functions. (line 89) * run-shell-command: Miscellaneous Functions. @@ -5605,10 +5670,10 @@ Function and Class Index (line 25) * system-weakly-depends-on: Information about system dependencies. (line 14) -* 'test-op': Predefined operations of ASDF. +* test-op: Predefined operations of ASDF. (line 52) * test-system: Convenience Functions. - (line 6) + (line 49) * traverse: Operations. (line 73) * version-satisfies: Common attributes of components. (line 23) @@ -5630,15 +5695,17 @@ Variable Index * *image-dump-hook*: Resetting the ASDF configuration. (line 14) * *load-system-operation*: Convenience Functions. - (line 25) + (line 29) * *nil-pathname*: Some Utility Functions. (line 43) * *oldest-forward-compatible-asdf-version*: Pitfalls of the upgrade to ASDF 3. (line 83) * *source-registry-parameter*: *source-registry-parameter* variable. (line 6) +* *standard-output*: How can I capture ASDF's output?. + (line 6) * *system-definition-search-functions*: Components. (line 6) -* 'asdf::*user-cache*': Output Configuration DSL. +* asdf::*user-cache*: Output Configuration DSL. (line 118) * ASDF_OUTPUT_TRANSLATIONS: Controlling where ASDF saves compiled files. (line 6) @@ -5647,136 +5714,137 @@ Variable Index Tag Table: Node: Top1684 -Node: Introduction7635 -Node: Quick start summary9938 -Node: Loading ASDF11645 -Node: Loading a pre-installed ASDF11947 -Ref: Loading a pre-installed ASDF-Footnote-113760 -Node: Checking whether ASDF is loaded13942 -Node: Upgrading ASDF14856 -Node: Replacing your implementation's ASDF15844 -Node: Loading ASDF from source17267 -Node: Configuring ASDF18368 -Node: Configuring ASDF to find your systems19141 -Ref: Configuring ASDF to find your systems-Footnote-122446 -Ref: Configuring ASDF to find your systems-Footnote-222693 -Ref: Configuring ASDF to find your systems-Footnote-322975 -Node: Configuring ASDF to find your systems --- old style23436 -Ref: Configuring ASDF to find your systems --- old style-Footnote-125863 -Ref: Configuring ASDF to find your systems --- old style-Footnote-226095 -Ref: Configuring ASDF to find your systems --- old style-Footnote-326862 -Node: Configuring where ASDF stores object files27018 -Node: Resetting the ASDF configuration28421 -Node: Using ASDF29478 -Node: Loading a system29689 -Node: Convenience Functions30706 -Ref: Convenience Functions-Footnote-133851 -Node: Moving on33929 -Node: Defining systems with defsystem34300 -Node: The defsystem form34728 -Node: A more involved example38134 -Ref: A more involved example-Footnote-145116 -Node: The defsystem grammar45798 -Ref: if-feature-option61938 -Node: Other code in .asd files63770 -Node: The package-inferred-system extension64906 -Node: The object model of ASDF69173 -Ref: The object model of ASDF-Footnote-171503 -Ref: The object model of ASDF-Footnote-271855 -Node: Operations72182 -Ref: operate73287 -Node: Predefined operations of ASDF75770 -Ref: test-op77885 -Node: Creating new operations85768 -Node: Components90981 -Ref: System names94465 -Ref: Components-Footnote-199137 -Ref: Components-Footnote-299433 -Node: Common attributes of components99755 -Ref: required-features101317 -Node: Pre-defined subclasses of component107164 -Node: Creating new component types109598 -Node: Dependencies110888 -Node: Functions112759 -Node: Controlling where ASDF searches for systems114593 -Node: Configurations115215 -Node: Truenames and other dangers118690 -Node: XDG base directory119976 -Node: Backward Compatibility121390 -Node: Configuration DSL122106 -Node: Configuration Directories127661 -Node: The here directive129488 -Node: Shell-friendly syntax for configuration131381 -Node: Search Algorithm132398 -Node: Caching Results133899 -Node: Configuration API137143 -Node: Introspection139182 -Node: *source-registry-parameter* variable139446 -Node: Information about system dependencies140015 -Node: Status140931 -Node: Rejected ideas141386 -Node: TODO143767 -Node: Credits for the source-registry143952 -Node: Controlling where ASDF saves compiled files144487 -Ref: Controlling where ASDF saves compiled files-Footnote-1145899 -Node: Output Configurations145943 -Ref: Output Configurations-Footnote-1148804 -Node: Output Backward Compatibility148870 -Node: Output Configuration DSL151596 -Node: Output Configuration Directories157051 -Node: Output Shell-friendly syntax for configuration158608 -Node: Semantics of Output Translations159917 -Node: Output Caching Results161486 -Node: Output location API161966 -Node: Credits for output translations164388 -Node: Error handling164908 -Node: Miscellaneous additional functionality165749 -Node: Controlling file compilation166221 -Node: Controlling source file character encoding169487 -Node: Miscellaneous Functions176302 -Ref: system-relative-pathname176599 -Ref: Miscellaneous Functions-Footnote-1182223 -Node: Some Utility Functions182334 -Node: Getting the latest version193062 -Node: FAQ194007 -Node: Where do I report a bug?194402 -Node: Mailing list194767 -Node: What has changed between ASDF 1 ASDF 2 and ASDF 3?195102 -Node: What are ASDF 1 2 3?197276 -Node: How do I detect the ASDF version?198317 -Node: ASDF can portably name files in subdirectories200624 -Node: Output translations202174 -Node: Source Registry Configuration203201 -Node: Usual operations are made easier to the user204828 -Node: Many bugs have been fixed205414 -Node: ASDF itself is versioned207246 -Node: ASDF can be upgraded208121 -Node: Decoupled release cycle209273 -Node: Pitfalls of the transition to ASDF 2210202 -Node: Pitfalls of the upgrade to ASDF 3214472 -Ref: Pitfalls of the upgrade to ASDF 3-Footnote-1218839 -Node: What happened to the bundle operations219009 -Node: Issues with installing the proper version of ASDF220111 -Node: My Common Lisp implementation comes with an outdated version of ASDF. What to do?220582 -Node: I'm a Common Lisp implementation vendor. When and how should I upgrade ASDF?221515 -Node: Issues with configuring ASDF225398 -Node: How can I customize where fasl files are stored?225773 -Node: How can I wholly disable the compiler output cache?226866 -Node: Issues with using and extending ASDF to define systems228245 -Node: How can I cater for unit-testing in my system?228969 -Node: How can I cater for documentation generation in my system?229858 -Node: How can I maintain non-Lisp (e.g. C) source files?230379 -Ref: report-bugs230811 -Node: I want to put my module's files at the top level. How do I do this?230811 -Node: How do I create a system definition where all the source files have a .cl extension?233961 -Node: How do I mark a source file to be loaded only and not compiled?235934 -Node: How do I work with readtables?236930 -Node: ASDF development FAQs240616 -Node: How do I run the tests interactively in a REPL?240855 -Node: Ongoing Work242721 -Node: Bibliography243000 -Node: Concept Index246436 -Node: Function and Class Index252728 -Node: Variable Index264556 +Node: Introduction7673 +Node: Quick start summary9976 +Node: Loading ASDF11683 +Node: Loading a pre-installed ASDF11985 +Ref: Loading a pre-installed ASDF-Footnote-113798 +Node: Checking whether ASDF is loaded13980 +Node: Upgrading ASDF14894 +Node: Replacing your implementation's ASDF15882 +Node: Loading ASDF from source17305 +Node: Configuring ASDF18406 +Node: Configuring ASDF to find your systems19179 +Ref: Configuring ASDF to find your systems-Footnote-122484 +Ref: Configuring ASDF to find your systems-Footnote-222731 +Ref: Configuring ASDF to find your systems-Footnote-323013 +Node: Configuring ASDF to find your systems --- old style23474 +Ref: Configuring ASDF to find your systems --- old style-Footnote-125901 +Ref: Configuring ASDF to find your systems --- old style-Footnote-226133 +Ref: Configuring ASDF to find your systems --- old style-Footnote-326900 +Node: Configuring where ASDF stores object files27056 +Node: Resetting the ASDF configuration28459 +Node: Using ASDF29516 +Node: Loading a system29727 +Node: Convenience Functions30744 +Ref: Convenience Functions-Footnote-136104 +Node: Moving on36182 +Node: Defining systems with defsystem36553 +Node: The defsystem form36981 +Node: A more involved example40387 +Ref: A more involved example-Footnote-147369 +Node: The defsystem grammar48051 +Ref: if-feature-option64666 +Node: Other code in .asd files66498 +Node: The package-inferred-system extension67634 +Node: The object model of ASDF71901 +Ref: The object model of ASDF-Footnote-174231 +Ref: The object model of ASDF-Footnote-274583 +Node: Operations74910 +Ref: operate76015 +Node: Predefined operations of ASDF78498 +Ref: test-op80612 +Node: Creating new operations88501 +Node: Components93714 +Ref: System names97198 +Ref: Components-Footnote-1101870 +Ref: Components-Footnote-2102166 +Node: Common attributes of components102488 +Ref: required-features104050 +Node: Pre-defined subclasses of component109897 +Node: Creating new component types112331 +Node: Dependencies113621 +Node: Functions115492 +Node: Controlling where ASDF searches for systems117326 +Node: Configurations117948 +Node: Truenames and other dangers121423 +Node: XDG base directory122709 +Node: Backward Compatibility124123 +Node: Configuration DSL124839 +Node: Configuration Directories130394 +Node: The here directive132221 +Node: Shell-friendly syntax for configuration134114 +Node: Search Algorithm135131 +Node: Caching Results136632 +Node: Configuration API139876 +Node: Introspection141915 +Node: *source-registry-parameter* variable142179 +Node: Information about system dependencies142748 +Node: Status143664 +Node: Rejected ideas144119 +Node: TODO146500 +Node: Credits for the source-registry146685 +Node: Controlling where ASDF saves compiled files147220 +Ref: Controlling where ASDF saves compiled files-Footnote-1148632 +Node: Output Configurations148676 +Ref: Output Configurations-Footnote-1151537 +Node: Output Backward Compatibility151603 +Node: Output Configuration DSL154329 +Node: Output Configuration Directories159784 +Node: Output Shell-friendly syntax for configuration161341 +Node: Semantics of Output Translations162650 +Node: Output Caching Results164219 +Node: Output location API164699 +Node: Credits for output translations167121 +Node: Error handling167641 +Node: Miscellaneous additional functionality168482 +Node: Controlling file compilation168954 +Node: Controlling source file character encoding172220 +Node: Miscellaneous Functions179035 +Ref: system-relative-pathname179332 +Ref: Miscellaneous Functions-Footnote-1184956 +Node: Some Utility Functions185067 +Node: Getting the latest version195795 +Node: FAQ196740 +Node: Where do I report a bug?197135 +Node: Mailing list197500 +Node: What has changed between ASDF 1 ASDF 2 and ASDF 3?197835 +Node: What are ASDF 1 2 3?200009 +Node: How do I detect the ASDF version?201050 +Node: ASDF can portably name files in subdirectories203357 +Node: Output translations204907 +Node: Source Registry Configuration205934 +Node: Usual operations are made easier to the user207561 +Node: Many bugs have been fixed208147 +Node: ASDF itself is versioned209979 +Node: ASDF can be upgraded210854 +Node: Decoupled release cycle212006 +Node: Pitfalls of the transition to ASDF 2212935 +Node: Pitfalls of the upgrade to ASDF 3217205 +Ref: Pitfalls of the upgrade to ASDF 3-Footnote-1221572 +Node: What happened to the bundle operations221742 +Node: Issues with installing the proper version of ASDF222844 +Node: My Common Lisp implementation comes with an outdated version of ASDF. What to do?223315 +Node: I'm a Common Lisp implementation vendor. When and how should I upgrade ASDF?224248 +Node: Issues with configuring ASDF228131 +Node: How can I customize where fasl files are stored?228506 +Node: How can I wholly disable the compiler output cache?229599 +Node: Issues with using and extending ASDF to define systems230978 +Node: How can I cater for unit-testing in my system?231739 +Node: How can I cater for documentation generation in my system?232627 +Node: How can I maintain non-Lisp (e.g. C) source files?233148 +Ref: report-bugs233580 +Node: I want to put my module's files at the top level. How do I do this?233580 +Node: How do I create a system definition where all the source files have a .cl extension?236730 +Node: How do I mark a source file to be loaded only and not compiled?238703 +Node: How do I work with readtables?239699 +Node: How can I capture ASDF's output?243426 +Node: ASDF development FAQs243857 +Node: How do I run the tests interactively in a REPL?244096 +Node: Ongoing Work245962 +Node: Bibliography246241 +Node: Concept Index249677 +Node: Function and Class Index256539 +Node: Variable Index268093 End Tag Table
===================================== src/contrib/asdf/doc/asdf.pdf ===================================== Binary files a/src/contrib/asdf/doc/asdf.pdf and b/src/contrib/asdf/doc/asdf.pdf differ
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/184a5a0de32e47ce88ac2dfee1...