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