[asdf-devel] ASDF traverse changed behavior?
Robert Goldman
rpgoldman at sift.info
Wed Mar 17 13:20:26 UTC 2010
On 3/17/10 Mar 17 -3:58 AM, Juan Jose Garcia-Ripoll wrote:
> Before, if an operation defined by me, such as LIB-OP, did not traverse
> a system, then the only operation we got was that operation applied on
> the system, as a generic object.
>
> Now TRAVERSE not only imposes the LIB-OP operation on the system, but it
> also scans the components and imposes the operation on the components.
>
> Why such an incompatible change? It definitely screwed up ALL of ECL's
> extensions.
TRAVERSE was modified in order to fix the problem of intra-system
dependencies from modules. Previously, if you had a system with module
A and file B, with A depending on B, and modified B, then did a
compile-op or load-op, none of A's components would be recompiled. This
was clearly a bug.
I'm sorry about the incompatible change, but I think you were relying on
what must have been a bug. TRAVERSE was ALWAYS supposed to apply the
methods for children when an operation was applied to the parent.
I have a hazy recollection that there used to be a catch-all PERFORM
that was a no-op to make extending the protocol simpler, but I don't see
one in asdf.lisp now (there is one for TEST-OP). I don't know how to
wrestle git into letting me know if this is a faulty memory on my part,
or whether there was such a method definition and it has been removed.
Anyone know how to check?
Best,
r
More information about the asdf-devel
mailing list