[asdf-devel] Problems with asdf:load-system :force

Faré fahree at gmail.com
Fri Jul 26 22:05:37 UTC 2013


>> This is ASDF3. Dependencies are propagated correctly, unlike with ASDF 1&2.
>> If you want to catch a macro redefinition, just define a dependency,
>> as you should.
>
> When I develop interactively and change stuff without saving files,
> perhaps because I'm working in a scratch buffer, I still want the suite
> to be recompiled.
>
If you recompiled a file but did not recompile some files that depend on it,
ASDF3 will correctly recompile them when you (test-system :swap-bytes).
No need to force anything. This is not ASDF 1&2.

>> Which files do or don't get compiled twice?
>
> :swap-bytes/test depends on :swap-bytes. When I
> (asdf:load-system :swap-bytes/test :force '(:swap-bytes/test)), some
> files from :swap-bytes get recompiled too, namely the last two,
> network.lisp and endianness.lisp
>
Indeed, this is a subtle bug in madeira-port: when you depend on
a component that is excluded from the build by madeira-port,
the component fails to declare an empty set of output-files,
while its perform method fails to create the declared output-files,
and therefore ASDF while planning decides that this build step
is incomplete, as well as anything that depends on it directly or indirectly.

The solution is for madeira-port to also provide a :around method for
output-files.
That's subtle: I didn't think of it when reading the source code.

For once, this wasn't an ASDF bug.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
If once you have paid him the Dane-geld / You never get rid of the Dane.
        — Rudyard Kipling



More information about the asdf-devel mailing list