- (destructuring-bind (source system name) (where)
- (labels ((one-iter (packages)
- (dolist (asd
- (loop for p in (mapcar 'string packages)
- unless (probe-file p)
- do (let ((tmp (temp-file-name p)))
- (pushnew tmp *temporary-files*)
- (download-files-for-package p tmp)
- (setf p tmp))
- end
- do (format t "Installing ~A in ~A,~A~%"
- p source system)
- append (install-package source system p)))
- (handler-bind
- ((asdf:missing-dependency
- (lambda (c)
- (format t
- "Downloading package ~A, required by ~A~%"
- (asdf::missing-requires c)
- (asdf:component-name
- (asdf::missing-required-by c)))
- (one-iter (list
- (symbol-name
- (asdf::missing-requires c))))
- (invoke-restart 'retry))))
- (loop
- (multiple-value-bind (ret restart-p)
- (with-simple-restart
- (retry "Retry installation")
- (asdf:operate 'asdf:load-op asd))
- (unless restart-p (return))))))))
- (one-iter packages)))
+ (destructuring-bind (source system name) (where)
+ (labels ((one-iter (packages)
+ (dolist (asd
+ (loop for p in (mapcar 'string packages)
+ unless (probe-file p)
+ do (let ((tmp (temp-file-name p)))
+ (pushnew tmp *temporary-files*)
+ (download-files-for-package p tmp)
+ (setf p tmp))
+ end
+ do (format t "Installing ~A in ~A,~A~%"
+ p source system)
+ append (install-package source system p)))
+ (handler-bind
+ ((asdf:missing-dependency
+ (lambda (c)
+ (format t
+ "Downloading package ~A, required by ~A~%"
+ (asdf::missing-requires c)
+ (asdf:component-name
+ (asdf::missing-required-by c)))
+ (one-iter (list
+ (symbol-name
+ (asdf::missing-requires c))))
+ (invoke-restart 'retry))))
+ (loop
+ (multiple-value-bind (ret restart-p)
+ (with-simple-restart
+ (retry "Retry installation")
+ (asdf:operate 'asdf:load-op asd))
+ (unless restart-p (return))))))))
+ (one-iter packages)))