1
0
Fork 0
cl-sites/asdf.common-lisp.dev/asdf/Configuring-ASDF-to-find-your-systems.html
2023-11-12 11:34:18 +01:00

198 lines
9.5 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>Configuring ASDF to find your systems (ASDF Manual)</title>
<meta name="description" content="Configuring ASDF to find your systems (ASDF Manual)">
<meta name="keywords" content="Configuring ASDF to find your systems (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="Configuring-ASDF.html" rel="up" title="Configuring ASDF">
<link href="Configuring-ASDF-to-find-your-systems-_002d_002d_002d-old-style.html" rel="next" title="Configuring ASDF to find your systems --- old style">
<link href="Configuring-ASDF.html" rel="prev" title="Configuring ASDF">
<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="Configuring-ASDF-to-find-your-systems">
<div class="header">
<p>
Next: <a href="Configuring-ASDF-to-find-your-systems-_002d_002d_002d-old-style.html" accesskey="n" rel="next">Configuring ASDF to find your systems &mdash; old style</a>, Previous: <a href="Configuring-ASDF.html" accesskey="p" rel="prev">Configuring ASDF</a>, Up: <a href="Configuring-ASDF.html" accesskey="u" rel="up">Configuring ASDF</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="Configuring-ASDF-to-find-your-systems-1"></span><h3 class="section">4.1 Configuring ASDF to find your systems</h3>
<p>In order to compile and load your systems, ASDF must be configured to find
the <samp>.asd</samp> files that contain system definitions.
</p>
<p>There are a number of different techniques for setting yourself up with
ASDF, starting from easiest to the most complex:
</p>
<ul>
<li> Put all of your systems in one of the standard locations,
subdirectories of
<ul>
<li> <samp>~/common-lisp/</samp> or
</li><li> <samp>~/.local/share/common-lisp/source/</samp>.
</li></ul>
<p>If you install software there, you don&rsquo;t need further
configuration.<a id="DOCF2" href="Configuring-ASDF-to-find-your-systems.html#FOOT2"><sup>2</sup></a>
You can then skip to the next section. See <a href="Loading-a-system.html">Loading a system</a>.
</p>
</li><li> If you&rsquo;re using some tool to install software (e.g. Quicklisp),
the authors of that tool should already have configured ASDF.
</li><li> If you have more specific desires about how to lay out your software on
disk, the preferred way to configure where ASDF finds your systems is
the <code>source-registry</code> facility,
fully described in its own chapter of this manual.
See <a href="Controlling-where-ASDF-searches-for-systems.html">Controlling where ASDF searches for systems</a>.
Here is a quick recipe for getting started.
<p>First create the directory
<samp>~/.config/common-lisp/source-registry.conf.d/</samp><a id="DOCF3" href="Configuring-ASDF-to-find-your-systems.html#FOOT3"><sup>3</sup></a>;
there create a file with any name of your choice
but with the type <samp>conf</samp><a id="DOCF4" href="Configuring-ASDF-to-find-your-systems.html#FOOT4"><sup>4</sup></a>,
for instance <samp>50-luser-lisp.conf</samp>;
in this file, add the following line
to tell ASDF to recursively scan all the subdirectories under <samp>/home/luser/lisp/</samp>
for <samp>.asd</samp> files:
<kbd>(:tree &quot;/home/luser/lisp/&quot;)</kbd>
</p>
<p>That&rsquo;s enough. You may replace <samp>/home/luser/lisp/</samp> by wherever you want to install your source code.
You don&rsquo;t actually need to specify anything if you use the default <samp>~/common-lisp/</samp> as above
and your implementation provides ASDF 3.1.2 or later.
If your implementation provides an earlier variant of ASDF 3,
you might want to specify <kbd>(:tree (:home &quot;common-lisp/&quot;))</kbd> for bootstrap purposes,
then install a recent source tree of ASDF under <samp>~/common-lisp/asdf/</samp>.
</p>
<p>If you prefer to use a &ldquo;link farm&rdquo;, which is faster to use but costlier to manage than a recursive traversal,
say at <samp>/home/luser/.asd-link-farm/</samp>, then
you may instead (or additionally) create a file <samp>42-asd-link-farm.conf</samp>, containing the line:
<kbd>(:directory &quot;/home/luser/.asd-link-farm/&quot;)</kbd>
</p>
<p>ASDF will automatically read your configuration
the first time you try to find a system.
If necessary, you can reset the source-registry configuration with:
</p>
<div class="example lisp">
<pre class="lisp">(asdf:clear-source-registry)
</pre></div>
</li><li> In earlier versions of ASDF, the system source registry was configured
using a global variable, <code>asdf:*central-registry*</code>.
For more details about this, see the following section,
<a href="Configuring-ASDF-to-find-your-systems-_002d_002d_002d-old-style.html">Configuring ASDF to find your systems &mdash; old style</a>.
Unless you need to understand this,
skip directly to <a href="Configuring-where-ASDF-stores-object-files.html">Configuring where ASDF stores object files</a>.
</li></ul>
<p>Note that your Operating System distribution or your system administrator
may already have configured system-managed libraries for you.
</p>
</div>
<div class="footnote">
<hr>
<h4 class="footnotes-heading">Footnotes</h4>
<h5><a id="FOOT2" href="Configuring-ASDF-to-find-your-systems.html#DOCF2">(2)</a></h5>
<p><samp>~/common-lisp/</samp> is only included in
the default configuration
starting with ASDF 3.1.2 or later.
If your implementation provides an earlier variant of ASDF,
you may need to explicitly configure it to use this path,
as further explained.
</p>
<h5><a id="FOOT3" href="Configuring-ASDF-to-find-your-systems.html#DOCF3">(3)</a></h5>
<p>For Windows users, and starting with ASDF 3.1.5, start from your
<samp>%LOCALAPPDATA%</samp>, which is usually <samp>~/AppData/Local/</samp>
(but you can ask in a <code>CMD.EXE</code> terminal
<code>echo %LOCALAPPDATA%</code> to make sure)
and underneath create a subpath
<samp>config/common-lisp/source-registry.conf.d/</samp>.
</p>
<h5><a id="FOOT4" href="Configuring-ASDF-to-find-your-systems.html#DOCF4">(4)</a></h5>
<p>By requiring the <samp>.conf</samp>
extension, and ignoring other files, ASDF allows you to have disabled files,
editor backups, etc. in the same directory with your active
configuration files.
</p>
<p>ASDF will also ignore files whose names start with a <samp>.</samp> character.
</p>
<p>It is customary to start the filename with two digits, to control the
sorting of the <code>conf</code> files in the source registry directory, and
thus the order in which the directories will be scanned.
</p>
</div>
<hr>
<div class="header">
<p>
Next: <a href="Configuring-ASDF-to-find-your-systems-_002d_002d_002d-old-style.html">Configuring ASDF to find your systems &mdash; old style</a>, Previous: <a href="Configuring-ASDF.html">Configuring ASDF</a>, Up: <a href="Configuring-ASDF.html">Configuring ASDF</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>