Hi,
I'm trying to find all the systems that use a particular subclass of system. The goal is that through that mechanism they signal/register themselves as modules of another system. In order to list all such modules I though map-systems would do the trick:
(remove-if #'null (let (results) (asdf:map-systems (lambda (system) (when (stumpwm-module-p system) (setf results (cons system results))))) results))
However it appears map-systems only works on when the system *definition* has been loaded (is that the proper term?). Is there a way to load all the system definitions in asdf's path? (That is according to *source-registry* and *central-registry*)
Cheers, Javier
Is there a way to load all the system definitions in asdf's path? (That is according to *source-registry* and *central-registry*)
You can try to iterate over: 1- the central-registry, using directory to identify all .asd files in there that haven't been defined by previous entries. 2- the source-registry, consulting the *source-registry* table after having initialized it, once again, shadowing entries previously defined.
Now, there may be arbitrary *system-definition-search-functions* that define yet more systems. There may be preloaded systems, for instance, some of them immutable. There may also be plenty of secondary systems as defined by e.g. package-inferred-system, or any other clever sysdef search function. package-inferred-system in particular means that any .lisp file under a package-inferred-system is potentially its own system.
So, there you go. If you do it, put the code in github!
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "To speak algebraically, Mr. M. is execrable, but Mr. G. is (x+1)ecrable." — Edgar Alan Poe