Plaster
New
List
Login
common-lisp
default
anonymous
2022.05.29 14:55:27
(defun full-list (system) "Return a list of system names of all recursive dependencies for the designanted ASDF ‘system’." (let ((tab (make-hash-table :test #'equal)) (results)) (labels ((add-dependencies (system) "Add the dependencies for ‘system’ to the results." (loop :for dep in (asdf:system-depends-on (asdf:find-system system)) :do (typecase dep (list ;; Probably an expression like: ;; | ( :feature FEATURE-EXPRESSION dependency-def ) ;; | ( :version simple-component-name version-specifier ) ;; | ( :require module-name ) (let ((s (asdf/find-component::resolve-dependency-spec nil dep))) (when s (add-system (asdf:component-name s))))) (t (add-system dep))))) (add-system (system) "Add ‘system’ and its dependencies to the results." (when (not (gethash system tab)) (let ((name (string-downcase system))) (setf (gethash name tab) t) (pushnew name results :test #'equal)) (add-dependencies system)))) (add-dependencies system) results)))
Raw
Annotate
Repaste
Edit