@@ -166,34 +166,43 @@ Quicklisp-provided systems first, and catching ASDF missing
166166dependencies too if possible."
167167 (setf name (string-downcase name))
168168 (with-simple-restart (abort " Give up on ~S " name)
169- (let ((strategy (compute-load-strategy name))
170- (tried-so-far (make-hash-table :test ' equalp)))
171- (show-load-strategy strategy)
172- (when (or (not prompt)
173- (press-enter-to-continue))
174- (tagbody
175- retry
176- (handler-case (apply-load-strategy strategy)
177- (asdf :missing-dependency-of-version (c)
178- ; ; Nothing Quicklisp can do to recover from this, so just
179- ; ; resignal
180- (error c))
181- (asdf :missing-dependency (c)
182- (let ((parent (asdf ::missing-required-by c))
183- (missing (asdf ::missing-requires c)))
184- (typecase parent
185- (asdf :system
186- (if (gethash missing tried-so-far)
187- (error " Dependency looping -- already tried to load ~
169+ (let ((tried-so-far (make-hash-table :test ' equalp)))
170+ (tagbody
171+ retry
172+ (flet ((handle-missing-component-error (c)
173+ (let ((parent (asdf ::missing-required-by c))
174+ (missing (asdf ::missing-requires c)))
175+ (typecase parent
176+ ((or null
177+ asdf :system)
178+ (if (gethash missing tried-so-far)
179+ (error " Dependency looping -- already tried to load ~
188180 ~A " missing)
189- (setf (gethash missing tried-so-far) missing))
190- (autoload-system-and-dependencies missing
191- :prompt prompt)
192- (go retry))
193- (t
194- ; ; Error isn't from a system dependency, so there's
195- ; ; nothing to autoload
196- (error c)))))))))
181+ (setf (gethash missing tried-so-far) missing))
182+ (autoload-system-and-dependencies missing
183+ :prompt prompt)
184+ (go retry))
185+ (t
186+ ; ; Error isn't from a system dependency, so there's
187+ ; ; nothing to autoload
188+ (error c))))))
189+ (handler-case
190+ (let ((strategy (compute-load-strategy name)))
191+ (show-load-strategy strategy)
192+ (when (or (not prompt)
193+ (press-enter-to-continue))
194+ (apply-load-strategy strategy)))
195+ (asdf :missing-dependency-of-version (c)
196+ ; ; Nothing Quicklisp can do to recover from this, so just
197+ ; ; resignal
198+ (error c))
199+ (asdf :load-system-definition-error (c)
200+ (let ((original-error (asdf ::error-condition c)))
201+ (if (typep original-error ' asdf:missing-component)
202+ (handle-missing-component-error original-error)
203+ (error c))))
204+ (asdf :missing-component (c)
205+ (handle-missing-component-error c))))))
197206 name))
198207
199208(defvar *initial-dist-url*
0 commit comments