<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 18 Jan 2021, at 17:37, Wilfredo Velazquez wrote:</p>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">Hello all,<br>
<br>
Moving this question from<br>
<a href="https://gitlab.common-lisp.net/asdf/asdf/-/issues/52" style="color:#777">https://gitlab.common-lisp.net/asdf/asdf/-/issues/52</a><br>
<br>
To reiterate, I believe that the instructions in<br>
<a href="https://common-lisp.net/project/asdf/asdf/Upgrading-ASDF.html" style="color:#777">https://common-lisp.net/project/asdf/asdf/Upgrading-ASDF.html</a> 'Upgrading<br>
ASDF' could use some clarification.<br>
<br>
I am attempting to run a newer version of ASDF than that provided by my<br>
impl. The text I'm having issue with is:<br>
</p>
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">If your implementation already provides ASDF 3 or later (and it should),<br>
but you want a more recent ASDF version than your implementation provides,<br>
then you just need to ensure the more recent ASDF is installed in a<br>
configured path, like any other system. We recommend you download an<br>
official tarball or checkout a release from git into ~/common-lisp/asdf/.<br>
Once the source code for ASDF is installed, you don’t need any extra step<br>
to load it beyond the usual (require "asdf"): ASDF 3 will automatically<br>
look whether an updated version of itself is available amongst the<br>
regularly configured systems, before it compiles anything else.</p>
</blockquote></blockquote><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">First, it says I should download an official tarball. I looked to the best<br>
of my ability and could not find one. Even if I had found one, I don't know<br>
what I'd do with it.</p>
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">There should be tarballs here:</p>

<p dir="auto"><a href="https://common-lisp.net/project/asdf/" style="color:#3983C4">https://common-lisp.net/project/asdf/</a></p>

<p dir="auto">Look for the "Getting it" section.</p>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">So I moved to the second option and cloned ASDF to `~/common-lisp/asdf/`<br>
and built it successfully.<br>
<br>
I verify that indeed I am running a newer ASDF. However, I noticed<br>
`~/comon-lisp/asdf/ext/` includes certain third-party libraries bundled in<br>
the repo. These are being prioritized over Quicklisp libraries, and it's<br>
causing conflicts.<br>
<br>
So my question is:<br>
<br>
May I get clarification on how I may build & install ASDF such that the<br>
implementation-bundled one will automatically find the newer version, while<br>
omitting the libraries ext/ directory from being picked up?</p>
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">As far as I can tell, if you put a directory tree into <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">~/common-lisp/</code>, ASDF will traverse it looking for system definitions, and there is nothing you can do to override this.  I have come to dislike the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">~/common-lisp/</code> solution for this reason.</p>

<p dir="auto">There are other ways you can make the new directory visible to ASDF <em>without</em> exposing <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">ext/</code>:</p>

<ul>
<li><p dir="auto">The libraries in <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">ext/</code> are there so that ASDF can be downloaded in isolation and tested without any external dependencies.  If you don't pull the git submodules for the ASDF repository, they won't be there, and you won't have the problem you are having.  You could do "git get rid of my submodules" somehow, but this is the ASDF list, not the git help list -- you'll have to figure that out on your own!</p></li>
<li><p dir="auto">You can make the directory find-able using Faré's configuration language either directly in your lisp init file, or by using the environment variables.  I'm not a fan of environment variables, because they add more complexity to my lisp configuration.  I like to keep all of the configuration in my lisp init file, so I don't have to worry about <em>where</em> a setting is made.  If you add <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">(:directory <my asdf directory>)</code> to the configuration, then ASDF will not search it recursively (the alternative is the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">:tree</code> keyword, which tells ASDF you <em>do</em> want it to search recursively). There's a way of making this same distinction in the environment variables: it's explained in the manual.</p></li>
<li><p dir="auto">If you are old school and don't want to fuss with debugging the configuration DSL, you can just do: <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">(push <my asdf directory> asdf:*central-registry*)</code> -- again, ASDF will not search this directory recursively.</p></li>
</ul>

<p dir="auto">I hope that will solve your problem!</p>
</div>
</div>
</body>
</html>