maintaining non-Lisp systems with ASDF

Faré fahree at gmail.com
Mon Sep 21 23:31:42 UTC 2015


On Mon, Sep 21, 2015 at 7:15 PM, Robert Dodier <robert.dodier at gmail.com> wrote:
> Thanks a lot to everybody for the advice. I think I've made some
> progress. I've attached a patch showing the initial changes I've
> made, and with this much I can load a trivial system into Maxima.
>
Do NOT patch ASDF, unless there's a bug.
Create an extension and use defsystem-depends-on,
as documented in the manual.

> I'm working with asdf.lisp 2.26 which is packaged with Quicklisp,
> since the larger goal is to use Quicklisp to download and install
> Maxima packages.
>
Do NOT use ASDF 2.26.
It is not supported, and internals are somewhat incompatible.
ASDF 3 is available on every single maintained implementation.

> Incidentally I'm working with Clisp 2.49.
>
CLISP isn't currently maintained.
Unless you need it due for portability reasons,
or love it enough to become its new maintainer,
I suggest to use another implementation.
If you *must* use CLISP, use our script tools/install-asdf.lisp
to overwrite its ASDF with the latest ASDF release (currently 3.1.5).

> I've run into some strangeness, maybe someone can explain
> what's going on.
>
> (1) (asdf:load-system :foo) seems to always cause files to
> be compiled. That's kind of puzzling.
>
This typically means that your input-files or output-files are wrong.
Your code is not even wrong: it's missing a method on output-files.
ASDF 2.26 has also deep unfixable bugs regarding incremental build,
and it is unsupported. Use ASDF 3.

> (2) The first time asdf.lisp is loaded, Quicklisp writes asdf.fas
> into its own cache. The second time, I get an error about ASDF:OOS.
> Any ideas? Here's the error:
>
Use ASDF 3.

> *** - EVAL: undefined function ASDF:OOS
> The following restarts are available:
> USE-VALUE      :R1      Input a value to be used instead of
> (FDEFINITION 'ASDF:OOS).
> RETRY          :R2      Retry
> STORE-VALUE    :R3      Input a new value for (FDEFINITION 'ASDF:OOS).
> SKIP           :R4      skip (LET # #)
> RETRY          :R5      retry (LET # #)
> STOP           :R6      stop loading file /home/robert/quicklisp/setup.lisp
> SKIP           :R7      skip (LET # #)
> RETRY          :R8      retry (LET # #)
> STOP           :R9      stop loading file /home/robert/.clisprc.lisp
> Break 1 QL-SETUP[4]>
>
This is completely useless.
Give us a backtrace. From CCL or SBCL, not CLISP.
While compiling ASDF and/or your extension with extra debugging information.

Also, don't use (component-pathname c) in your perform method.
Use (first (input-files o c)), so users can suitable modify or extend
your methods.

Please come back after you've read the manual (notably section 7)
and actually tried to apply the recipes there.
And/or at least cargo culted from an existing extension.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
A politician divides mankind into two classes: tools and enemies. — Nietzsche



More information about the asdf-devel mailing list