[asdf-devel] asdf bundle and do-first

Faré fahree at gmail.com
Mon Dec 31 17:57:27 UTC 2012


Another conceptual bug in ASDF.

Checking the plans generated for load-fasl-op, I find that with my new
ASDF 2.26.x (currently x=45), it systematically loads all the
individual .fasl's before it loads the .system.fasl, defeating the
purpose.

This was not the case before: in 2.26.7 and earlier, the (separately
distributed before 2.26.7) asdf-bundle has load-fasl-op depend-on
fasl-op which depends-on compile-op, which doesn't depend-on load-op,
but do-first's on it — so that the dependency is only considered but
if the immediate timestamp of the fasl is older than the timestamp of
its lisp source. If all fasl's satisfy this local timestamp check,
nothing is recompiled, none of the do-first is triggered, and the
load-op's are not attempted. But the old design also fails to
propagate timestamp information from the other files that are
depended-on, let alone do-firsted. Therefore, there is some notion in
the old do-first that must be preserved in the new ASDF, even though
the previous design was conceptually flawed overall.

In the end, what must be preserved is that some dependencies need to
have been performed in the current image, whereas other dependencies
only need to have been performed in some previous (or current) image.
This means a dependency can be walked over twice: once in without
"image-necessity", and a second time with it. Without image-necessity,
only the timestamp matters; with image-necessity, whether it was
performed in current image matters, too. Presumably, a node with
output-files clears the image-necessity flag before checking
timestamps, but re-traverses its dependencies with the flag if the
timestamp check fails. A node with no output-files on the other hand
is done for in-image effect, and heeds and propagates the
image-necessity flag to its subnodes. I believe that it's possible to
continue the current strategy of traversal without an explicit graph,
though nodes may now be traversed twice: once without image-necessity,
once with. Sigh.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Success is getting what you want. Happiness is wanting what you get.
        — Dale Carnegie




More information about the asdf-devel mailing list