From 5104d83f4b4f975d8d112c10daf47b11bdd27304 Mon Sep 17 00:00:00 2001 From: Eric Timmons Date: Tue, 10 Jan 2017 20:15:08 -0500 Subject: [PATCH] Support installing non-primary systems not explicitly defined in .asd When using ASDF's package-inferred-system, not all systems are explicitly defined in the .asd file, and therefore do not get picked up during the metadata generation. This makes it impossible to install these subsystems directly (for example: "lil/pure/all"). This patch solves this by trying to find a system in a dist by its primary name (the part before the first slash) if it is not found verbatim. If the minimum ASDF version is upped in the future, I recommend replacing much of this with `asdf:primary-system-name`. --- quicklisp/dist.lisp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/quicklisp/dist.lisp b/quicklisp/dist.lisp index 960e2c9..7f985ce 100644 --- a/quicklisp/dist.lisp +++ b/quicklisp/dist.lisp @@ -954,7 +954,11 @@ the given NAME." (ensure-system-cdb-file dist)))) (when line (setf (gethash system-name index) - (make-system-from-line line dist))))))) + (make-system-from-line line dist)))) + (let ((slash-index (position #\/ system-name))) + (when (and slash-index + (plusp slash-index)) + (find-system-in-dist (subseq system-name 0 slash-index) dist)))))) (defmethod preference ((system system)) (if (probe-file (preference-file system))