Faré fahree@gmail.com wrote:
what are you *really* trying to do?
Really, trying to get the same thing that component-load-dependencies gives me, but as component objects instead of names.
Usually, one wants to get a list of components within a system. Then, one typically uses required-components, e.g. like this (YMMV): (asdf:required-components (asdf:find-system :fare-utils) :component-type '(not asdf:system) :keep-operation 'asdf:load-op :keep-component 'asdf:source-file)
That's the opposite of what I want. It seems that component-load-dependencies gets me all the (direct) things a component depends on (for loading). That may be implicit in an ASDF system description if :serial t is used, or explicit with a :depend-on declaration. This is exactly what I want, but as objects, not names.
If you *really* want to walk the dependencies by yourself, use asdf/plan:visit-dependencies. There are also functions map-direct-dependencies, reduce-direct-dependencies, direct-dependencies that you may want to use instead. More often than not, it's a bad idea, though. Most of the time, if you need to go under the hood, it is better to manually use traverse-action traverse-actions traverse-sub-actions with your choice of plan, e.g. a sequential-plan or filtered-sequential-plan.
All of this is way beyond me.