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