Dear CL hackers, this issue with needed-in-image vs not dependencies is solved in 2.26.51; a new refactoring of traverse was required, which led to new simplifications afterwards. It's simpler than ever despite doing more (and more correctly) than ever — see function traverse-action for the substance. POIU was updated, and once again, making POIU work helped make the ASDF code much better, and once again, some of antifuchs' code that I had once deleted anticipated things I ended up needing.
I *really* hope 2.27 will be the last deep refactoring of ASDF internals that's ever needed. Now I'll go back to fixing any ASDF client that depends on obsolete behavior so I may release at long last. I hope this release can then make it to ECL, killing asdf-bundle and asdf-ecl, as well as to other implementations. PS: For very bad reasons, I resurrected the GCL 2.6 port, which sadly is lacking support for output-translations (lack for pathname-match-p). —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org When you've seen one nuclear war, you've seen them all. On Mon, Dec 31, 2012 at 12:57 PM, Faré <fah...@gmail.com> wrote: > 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 _______________________________________________ asdf-devel mailing list asdf-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel