On 18 Jan 2021, at 17:37, Wilfredo Velazquez wrote:
Hello all,
Moving this question from
https://gitlab.common-lisp.net/asdf/asdf/-/issues/52
To reiterate, I believe that the instructions in
https://common-lisp.net/project/asdf/asdf/Upgrading-ASDF.html
'Upgrading
ASDF' could use some clarification.
I am attempting to run a newer version of ASDF than that provided by
my
impl. The text I'm having issue with is:
If your implementation already provides ASDF 3 or later (and it
should),
but you want a more recent ASDF version than your implementation
provides,
then you just need to ensure the more recent ASDF is installed in a
configured path, like any other system. We recommend you download an
official tarball or checkout a release from git into
~/common-lisp/asdf/.
Once the source code for ASDF is installed, you don’t need any
extra step
to load it beyond the usual (require "asdf"): ASDF 3 will
automatically
look whether an updated version of itself is available amongst the
regularly configured systems, before it compiles anything else.
First, it says I should download an official tarball. I looked to the
best
of my ability and could not find one. Even if I had found one, I don't
know
what I'd do with it.
There should be tarballs here:
https://common-lisp.net/project/asdf/
Look for the "Getting it" section.
So I moved to the second option and cloned ASDF to
`~/common-lisp/asdf/`
and built it successfully.
I verify that indeed I am running a newer ASDF. However, I noticed
`~/comon-lisp/asdf/ext/` includes certain third-party libraries
bundled in
the repo. These are being prioritized over Quicklisp libraries, and
it's
causing conflicts.
So my question is:
May I get clarification on how I may build & install ASDF such that
the
implementation-bundled one will automatically find the newer version,
while
omitting the libraries ext/ directory from being picked up?
As far as I can tell, if you put a directory tree into `~/common-lisp/`,
ASDF will traverse it looking for system definitions, and there is
nothing you can do to override this. I have come to dislike the
`~/common-lisp/` solution for this reason.
There are other ways you can make the new directory visible to ASDF
*without* exposing `ext/`:
* The libraries in `ext/` 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!
* 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 *where* a setting is made. If you add `(:directory <my asdf
directory>)` to the configuration, then ASDF will not search it
recursively (the alternative is the `:tree` keyword, which tells ASDF
you *do* want it to search recursively). There's a way of making this
same distinction in the environment variables: it's explained in the
manual.
* If you are old school and don't want to fuss with debugging the
configuration DSL, you can just do: `(push <my asdf directory>
asdf:*central-registry*)` -- again, ASDF will not search this directory
recursively.
I hope that will solve your problem!