Let me clarify this again:
- The fact that TRAVERSE now adds the same operation for all components was new. That was my source of confusion. Before this did not happen with LIB-OP and the like. Maybe a straightforrwad solution is just writing
(defun perform ((o bundle-op) (c component)) nil)
so that all components which are not modules get a default PERFORM that does nothing. Is this safe?
- The order and format of TRAVERSE's output is important. Details like ensuring that the list includes the operated systems and that a system's components appear before the system that owns them, is also important, for this allows us to use TRAVERSE for identifying what files make up a module, using a variant of
(let ((*forcing* t)) (traverse (make-instance 'load-op) some-system))
which lists all components and all systems that should be loaded, sorted in some appropriate order. We rely critically on this, because otherwise I do not know a way to traverse a set of systems "portably" without redoing all of ASDF's logic.
Juanjo
--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://tream.dreamhosters.com