1
0
Fork 0
cl-sites/asdf.common-lisp.dev/asdf/Configuration-DSL.html
2023-11-12 11:34:18 +01:00

232 lines
10 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This manual describes ASDF, a system definition facility
for Common Lisp programs and libraries.
You can find the latest version of this manual at
https://common-lisp.net/project/asdf/asdf.html.
ASDF Copyright (C) 2001-2019 Daniel Barlow and contributors.
This manual Copyright (C) 2001-2019 Daniel Barlow and contributors.
This manual revised (C) 2009-2019 Robert P. Goldman and Francois-Rene Rideau.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
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.
-->
<title>Configuration DSL (ASDF Manual)</title>
<meta name="description" content="Configuration DSL (ASDF Manual)">
<meta name="keywords" content="Configuration DSL (ASDF Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Controlling-where-ASDF-searches-for-systems.html" rel="up" title="Controlling where ASDF searches for systems">
<link href="Configuration-Directories.html" rel="next" title="Configuration Directories">
<link href="Backward-Compatibility.html" rel="prev" title="Backward Compatibility">
<style type="text/css">
<!--
a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
span:hover a.copiable-anchor {visibility: visible}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<div class="section" id="Configuration-DSL">
<div class="header">
<p>
Next: <a href="Configuration-Directories.html" accesskey="n" rel="next">Configuration Directories</a>, Previous: <a href="Backward-Compatibility.html" accesskey="p" rel="prev">Backward Compatibility</a>, Up: <a href="Controlling-where-ASDF-searches-for-systems.html" accesskey="u" rel="up">Controlling where ASDF searches for systems</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="Configuration-DSL-1"></span><h3 class="section">8.5 Configuration DSL</h3>
<span id="index-_003ainherit_002dconfiguration-source-config-directive"></span>
<span id="index-inherit_002dconfiguration-source-config-directive"></span>
<span id="index-_003aignore_002dinvalid_002dentries-source-config-directive"></span>
<span id="index-ignore_002dinvalid_002dentries-source-config-directive"></span>
<span id="index-_003adirectory-source-config-directive"></span>
<span id="index-directory-source-config-directive"></span>
<span id="index-_003atree-source-config-directive"></span>
<span id="index-tree-source-config-directive"></span>
<span id="index-_003aexclude-source-config-directive"></span>
<span id="index-exclude-source-config-directive"></span>
<span id="index-_003aalso_002dexclude-source-config-directive"></span>
<span id="index-also_002dexclude-source-config-directive"></span>
<span id="index-_003ainclude-source-config-directive"></span>
<span id="index-include-source-config-directive"></span>
<span id="index-_003adefault_002dregistry-source-config-directive"></span>
<span id="index-default_002dregistry-source-config-directive"></span>
<p>Here is the grammar of the s-expression (SEXP) DSL for source-registry
configuration:
</p>
<div class="example">
<pre class="example">;; A configuration is a single SEXP starting with the keyword
;; :source-registry followed by a list of directives.
CONFIGURATION := (:source-registry DIRECTIVE ...)
;; A directive is one of the following:
DIRECTIVE :=
;; INHERITANCE DIRECTIVE:
;; Your configuration expression MUST contain
;; exactly one of the following:
:inherit-configuration |
;; splices inherited configuration (often specified last) or
:ignore-inherited-configuration |
;; drop inherited configuration (specified anywhere)
;; forward compatibility directive (since ASDF 2.011.4), useful when
;; you want to use new configuration features but have to bootstrap
;; the newer required ASDF from an older release that doesn't
;; support said features:
:ignore-invalid-entries |
;; add a single directory to be scanned (no recursion)
(:directory DIRECTORY-PATHNAME-DESIGNATOR) |
;; add a directory hierarchy, recursing but
;; excluding specified patterns
(:tree DIRECTORY-PATHNAME-DESIGNATOR) |
;; override the defaults for exclusion patterns
(:exclude EXCLUSION-PATTERN ...) |
;; augment the defaults for exclusion patterns
(:also-exclude EXCLUSION-PATTERN ...) |
;; Note that the scope of a an exclude pattern specification is
;; the rest of the current configuration expression or file.
;; splice the parsed contents of another config file
(:include REGULAR-FILE-PATHNAME-DESIGNATOR) |
;; This directive specifies that some default must be spliced.
:default-registry
REGULAR-FILE-PATHNAME-DESIGNATOR
:= PATHNAME-DESIGNATOR ; interpreted as a file
DIRECTORY-PATHNAME-DESIGNATOR
:= PATHNAME-DESIGNATOR ; interpreted as a directory
PATHNAME-DESIGNATOR :=
NIL | ;; Special: skip this entry.
ABSOLUTE-COMPONENT-DESIGNATOR ;; see pathname DSL
EXCLUSION-PATTERN := a string without wildcards, that will be matched
exactly against the name of a any subdirectory in the directory
component of a path. e.g. <code>&quot;_darcs&quot;</code> will match
<samp>#p&quot;/foo/bar/_darcs/src/bar.asd&quot;</samp>
</pre></div>
<p>Pathnames are designated using another DSL,
shared with the output-translations configuration DSL below.
The DSL is resolved by the function <code>asdf::resolve-location</code>,
to be documented and exported at some point in the future.
</p>
<div class="example">
<pre class="example">ABSOLUTE-COMPONENT-DESIGNATOR :=
(ABSOLUTE-COMPONENT-DESIGNATOR RELATIVE-COMPONENT-DESIGNATOR ...) |
STRING |
;; namestring (better be absolute or bust, directory assumed where
;; applicable). In output-translations, directory is assumed and
;; **/*.*.* added if it's last. On MCL, a MacOSX-style POSIX
;; namestring (for MacOS9 style, use #p&quot;...&quot;); Note that none of the
;; above applies to strings used in *central-registry*, which
;; doesn't use this DSL: they are processed as normal namestrings.
;; however, you can compute what you put in the *central-registry*
;; based on the results of say
;; (asdf::resolve-location &quot;/Users/fare/cl/cl-foo/&quot;)
PATHNAME |
;; pathname (better be an absolute path, or bust)
;; In output-translations, unless followed by relative components,
;; it better have appropriate wildcards, as in **/*.*.*
:HOME | ; designates the user-homedir-pathname ~/
:USER-CACHE | ; designates the default location for the user cache
:HERE |
;; designates the location of the configuration file
;; (or *default-pathname-defaults*, if invoked interactively)
:ROOT
;; magic, for output-translations source only: paths that are relative
;; to the root of the source host and device
They keyword :SYSTEM-CACHE is not accepted in ASDF 3.1 and beyond: it
was a security hazard.
RELATIVE-COMPONENT-DESIGNATOR :=
(RELATIVE-COMPONENT-DESIGNATOR RELATIVE-COMPONENT-DESIGNATOR ...) |
STRING |
;; relative directory pathname as interpreted by
;; parse-unix-namestring.
;; In output translations, if last component, **/*.*.* is added
PATHNAME | ; pathname; unless last component, directory is assumed.
:IMPLEMENTATION |
;; directory based on implementation, e.g. sbcl-1.0.45-linux-x64
:IMPLEMENTATION-TYPE |
;; a directory based on lisp-implementation-type only, e.g. sbcl
:DEFAULT-DIRECTORY |
;; a relativized version of the default directory
:*/ | ;; any direct subdirectory (since ASDF 2.011.4)
:**/ | ;; any recursively inferior subdirectory (since ASDF 2.011.4)
:*.*.* | ;; any file (since ASDF 2.011.4)
The keywords :UID and :USERNAME are no longer supported.
</pre></div>
<p>For instance, as a simple case, my <samp>~/.config/common-lisp/source-registry.conf</samp>,
which is the default place ASDF looks for this configuration, once contained:
</p><div class="example">
<pre class="example">(:source-registry
(:tree (:home &quot;cl&quot;)) ;; will expand to e.g. &quot;/home/joeluser/cl/&quot;
:inherit-configuration)
</pre></div>
</div>
<hr>
<div class="header">
<p>
Next: <a href="Configuration-Directories.html">Configuration Directories</a>, Previous: <a href="Backward-Compatibility.html">Backward Compatibility</a>, Up: <a href="Controlling-where-ASDF-searches-for-systems.html">Controlling where ASDF searches for systems</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>