@@ -166,34 +166,43 @@ Quicklisp-provided systems first, and catching ASDF missing
166
166
dependencies too if possible."
167
167
(setf name (string-downcase name))
168
168
(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 ~
188
180
~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))))))
197
206
name))
198
207
199
208
(defvar *initial-dist-url*
0 commit comments