(defun all-dependencies (system) (let ((ht (make-hash-table :test #'equal))) (labels ((recur (system) (unless (gethash system ht) (let ((deps (ql:who-depends-on system))) (setf (gethash system ht) t) (dolist (dep deps) (recur dep)))))) (recur system) (alexandria:hash-table-keys ht)))) CL-USER> (all-dependencies "hu.dwim.asdf") ("hu.dwim.zlib" "varint-test" "swank-crew-test" "swank-client-test" "snappy-test" "sip-hash-test" "scribble/test" "screamer-tests" "reader-interception-test" "random-test" "pileup-tests" "parser-combinators-tests" "package-renaming-test" "inferior-shell/test" "hu.dwim.zlib/test" "hu.dwim.stefil/test" "incf-cl-test" "hu.dwim.stefil+swank" "firephp-tests" "fare-utils-test" "fare-quasiquote-test" "fare-memoization/test" "com.google.flag-test" "com.google.base-test" "cl-m4-test" "cl-l10n/test" "cl-custom-hash-table-test" "cl-arrows-test" "city-hash-test" "cffi-objects.tests" "bencode-test" "babel-tests" "asdf-finalizers-test/2" "asdf-finalizers-test/1" "asdf-finalizers-test" "asdf-encodings/test" "arrows/test" "acm-random-test" "hu.dwim.stefil" "hu.dwim.sdl/ttf" "hu.dwim.sdl/image" "hu.dwim.sdl/gfx" "hu.dwim.sdl" "cl-graph+hu.dwim.graphviz" "hu.dwim.graphviz" "hu.dwim.defclass-star+swank" "hu.dwim.defclass-star+contextl" "hu.dwim.defclass-star" "hu.dwim.stefil+hu.dwim.def" "hu.dwim.defclass-star+hu.dwim.def+contextl" "hu.dwim.defclass-star+hu.dwim.def" "hu.dwim.stefil+hu.dwim.def+swank" "hu.dwim.def+swank" "hu.dwim.def+contextl" "hu.dwim.def+cl-l10n" "hu.dwim.def" "hu.dwim.common-lisp" "hu.dwim.syntax-sugar/unicode" "hu.dwim.syntax-sugar" "hu.dwim.graphviz.test" "hu.dwim.defclass-star.test" "hu.dwim.def.test" "hu.dwim.zlib/fancy" "hu.dwim.walker.test" "hu.dwim.syntax-sugar/lambda-with-bang-args" "hu.dwim.syntax-sugar.test" "trace-db" "software-evolution-library/utility" "software-evolution-library/stefil-plus" "software-evolution-library/serapi-io" "software-evolution-library/lisp-diff" "software-evolution-library/ast-diff-html" "software-evolution-library/ast-diff" "software-evolution-library/view" "software-evolution-library/test" "software-evolution-library/mongo" "software-evolution-library/clang-instrument" "software-evolution-library/clang-diff" "software-evolution-library" "repair-clang" "repair" "oclcl-test" "neutral" "gamebox-math.vari" "gamebox-math.tests" "gamebox-math" "umbra" "shadow" "game-math" "golden-utils" "cl-bson-test" "cl-bson" "arrow-macros-test" "arrow-macros" "hu.dwim.walker" "hu.dwim.util/source" "hu.dwim.util/mop" "hu.dwim.util/linear-mapping" "hu.dwim.util/i18n" "hu.dwim.util/error-handling+swank" "hu.dwim.util/error-handling" "hu.dwim.util/command-line" "hu.dwim.util/temporary-files" "hu.dwim.util+iolib" "hu.dwim.uri.test" "hu.dwim.uri" "hu.dwim.serializer.test" "cl-mw.examples.with-task-policy" "cl-mw.examples.ping" "cl-mw.examples.monte-carlo-pi" "cl-mw.examples.higher-order" "cl-mw.examples.hello-world" "cl-mw.examples.argument-processing" "cl-mw" "hu.dwim.serializer" "hu.dwim.reiterate" "hu.dwim.quasi-quote.xml+cxml" "hu.dwim.quasi-quote.xml" "hu.dwim.quasi-quote.pdf" "hu.dwim.quasi-quote.xml+hu.dwim.quasi-quote.js" "hu.dwim.quasi-quote.js" "hu.dwim.quasi-quote.test" "hu.dwim.quasi-quote.css" "hu.dwim.quasi-quote" "hu.dwim.util/threads" "hu.dwim.util/flexml" "hu.dwim.util/finite-state-machine" "hu.dwim.def.namespace" "hu.dwim.util" "hu.dwim.sdl/fancy" "projectured.swank" "projectured.test" "projectured.sdl.test" "projectured.executable" "projectured.sdl" "projectured.projection" "projectured.document" "projectured.editor" "libssh2.test" "libssh2" "hu.dwim.util/worker-group" "hu.dwim.util/soap" "hu.dwim.reiterate+hu.dwim.logger" "hu.dwim.rdbms.test" "hu.dwim.rdbms.sqlite.test" "hu.dwim.rdbms.sqlite" "hu.dwim.rdbms.postgresql.test" "hu.dwim.rdbms.postgresql" "hu.dwim.rdbms.all.test" "hu.dwim.rdbms.oracle.test" "hu.dwim.rdbms.all" "hu.dwim.rdbms.oracle" "hu.dwim.rdbms" "hu.dwim.util/authorization" "hu.dwim.partial-eval.test" "hu.dwim.partial-eval" "hu.dwim.logger.test" "hu.dwim.logger+swank" "hu.dwim.logger+iolib" "hu.dwim.logger" "hu.dwim.util/standard-process" "hu.dwim.delico.test" "hu.dwim.def+hu.dwim.delico" "hu.dwim.delico" "hu.dwim.web-server.websocket" "hu.dwim.walker.documentation" "hu.dwim.util.documentation" "hu.dwim.syntax-sugar.documentation" "hu.dwim.serializer.documentation" "hu.dwim.rdbms.documentation" "hu.dwim.quasi-quote.documentation" "hu.dwim.presentation+hu.dwim.stefil" "hu.dwim.presentation+cl-graph+cl-typesetting" "hu.dwim.presentation+cl-typesetting" "hu.dwim.partial-eval.documentation" "hu.dwim.logger.documentation" "hu.dwim.graphviz.documentation" "hu.dwim.delico.documentation" "hu.dwim.defclass-star.documentation" "hu.dwim.def.documentation" "hu.dwim.common-lisp.documentation" "hu.dwim.presentation" "hu.dwim.web-server.application" "hu.dwim.web-server+swank" "hu.dwim.presentation+hu.dwim.web-server" "hu.dwim.web-server" "weblocks-perec" "hu.dwim.web-server.application+hu.dwim.perec" "hu.dwim.perec.sqlite" "hu.dwim.util/production" "hu.dwim.util.test" "hu.dwim.perec.postgresql" "hu.dwim.perec.all" "hu.dwim.perec.oracle" "hu.dwim.perec+swank" "hu.dwim.perec+iolib" "hu.dwim.perec.sqlite.test" "hu.dwim.perec.postgresql.test" "hu.dwim.perec.documentation" "hu.dwim.perec.all.test" "hu.dwim.perec.oracle.test" "hu.dwim.perec.test" "hu.dwim.perec+hu.dwim.quasi-quote.xml" "hu.dwim.perec" "hu.dwim.computed-class+swank" "hu.dwim.web-server.documentation" "hu.dwim.web-server.application.test" "hu.dwim.web-server.test" "hu.dwim.computed-class.documentation" "hu.dwim.computed-class.test" "hu.dwim.computed-class+hu.dwim.logger" "hu.dwim.computed-class" "hu.dwim.def+hu.dwim.common" "hu.dwim.reiterate/test" "hu.dwim.debug.documentation" "hu.dwim.debug.test" "hu.dwim.debug" "hu.dwim.common.documentation" "hu.dwim.common" "hu.dwim.bluez/fancy" "hu.dwim.bluez" "hu.dwim.asdf.documentation" "hu.dwim.asdf") CL-USER> (length *) 223