[asdf-devel] Loading another system for an operation?

Robert Goldman rpgoldman at sift.info
Thu Aug 27 14:06:44 UTC 2009


Here is a case that I haven't encountered before using ASDF, that seems
like an interesting one:

Imagine that you have a system S, with a new component class, C in it.
Further there is an operation O that you MAY need to perform on the
components of class C.  In order to perform operation O on C, you need
to have system S1 loaded.  However, if O is unnecessary, then you don't
need to load S1.

In this case, S does not really depend on S1.  You only want to load S1
if there's some component of class C such that the operation-done-p test
on O and C fails.  Otherwise S1 should not be loaded.

So how do we record this dependency?  I had thought of attaching it to
the actual method of component-depends-on for O and C, but that won't
work because when we look up the name of S1, it will be relative to C's
parent, so ASDF will be looking for components of S, not for other
systems....  I can break that with an around method on FIND-COMPONENT,
but thought that might be the wrong thing....

If I was to attach the dependency to performing the operation O onto the
system S, then I believe S1 would always be loaded --- unless I record
that operation-done-p O S is T if operation-done-p is T for all of the
children of class C.  That may be the right thing to do, but seems quite
cumbersome.

This seems like it would be a common use case -- the dependency is
really a dependency for the transformation, not for the code that's
actually loaded -- so I'm wondering if anyone's encountered it before
and handled it more elegantly than I am...

Cheers,
r




More information about the asdf-devel mailing list