[asdf-devel] (asdf:system-source-directory :uiop) not working after upgrade to

Faré fahree at gmail.com
Wed Oct 16 15:33:22 UTC 2013

On Wed, Oct 16, 2013 at 1:42 AM, Dave Cooper <david.cooper at genworks.com> wrote:
> Hi,
> There is an outstanding request from the maintainer to test the latest asdf
> "in production," and I'm here trying to do that.
> So what do I have to do in order to make
>  (asdf:system-source-directory :uiop)
> still work after upgrading asdf?
General remarks:One limitation of the ASDF upgrade process is that
extensions often stop working after upgrade, and need to be reloaded.

You may have to upgrade ASDF *before* you load quicklisp,
and/or re-load quicklisp (and all other extensions) after you upgrade ASDF.

That is why I recommend upgrading ASDF
as the very first step in any installation:
It's a no-op if no upgrade is available, and a lifesaver is one is.

As to UIOP, I disrecommend using a version of UIOP older than ASDF.
If you upgrade to the latest ASDF, don't use an older UIOP from quicklisp
(that said, if you do the upgrade right, your own ASDF & UIOP should shadow
those from quicklisp, and/or you should )

Now I'm looking at your detailed explanations:

> Is it a bug that after upgrading from (the current ASDF shipping
> with fully patched Allegro) to, then
>   (uiop:system-source-directory :uiop)
> returns nil?
Did you actually load the ASDF from Allegro at some point in the same image?

> Before upgrading, it returns the uiop- in the
> quicklisp/dists/quicklisp/software directory. After upgrading, it returns
> nil.
Does the upgrade happen after or before you load quicklisp?
Does quicklisp work at all after the upgrade?

> The impact of this in production is that I am trying to make a monolithic
> fasl of a system which depends on :uiop, and the :uiop module is not getting
> included in this monofasl. This of course results in "package missing"
> errors when trying to load this monofasl into a vanilla image to do a build.
> The way I install asdf for trying to use it in production is:
>  1. git pull into my local asdf directory.
>  2. make (to make a single asdf.lisp file in asdf/build/)
>  3. copy this to quicklisp/asdf.lisp
>  4. rm -r quicklisp/cache
>  5. edit quicklisp/setup.lisp to say:
>      (defvar *required-asdf-version* "")
>  6. copy the uiop/ directory from local asdf/ into quicklisp/local-projects/
>  7. restart the Lisp
>  8. load quicklisp/setup.lisp and (ql:register-local-projects)
> Having done all this, the (asdf:system-source-directory :uiop) still returns
> nil, and uiop is not ending up in my monofasls which depend on it.
> Am I doing it wrong?
It looks right, or at least defensible.
Did you copy the contents of version.lisp-expr in uiop/
or a symlink that's now dangling? That could make a difference,
though I would expect a more noisy failure.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
There are three types of people in the world;
those who can count, and those who can't.

More information about the asdf-devel mailing list