~ chicken-core (chicken-5) a0eee6e938af40532996398223123b9ae9f549b8
commit a0eee6e938af40532996398223123b9ae9f549b8
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Fri Nov 8 06:28:27 2013 +1300
Commit: Peter Bex <peter.bex@xs4all.nl>
CommitDate: Fri Nov 8 15:51:26 2013 +0100
Warn and exit when the user declines an egg upgrade during chicken-install
This avoids an error when the user declines an egg upgrade, since that
extension doesn't go into eggs+dirs+vers but the installation carries on
regardless (and its dependency associates to #f where an e+d+v is
expected).
Signed-off-by: Peter Bex <peter.bex@xs4all.nl>
diff --git a/chicken-install.scm b/chicken-install.scm
index 8df88658..6f2dafe5 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -576,7 +576,13 @@
(unless *retrieve-only*
(let* ((dag (reverse (topological-sort *dependencies* string=?)))
(num (length dag))
- (depinstall-ok *force*))
+ (depinstall-ok *force*)
+ (eggs+dirs+vers (map (cut assoc <> *eggs+dirs+vers*) dag)))
+ (and-let* ((ibad (list-index not eggs+dirs+vers)))
+ ;; A dependency was left unretrieved, most likely because the user declined an upgrade.
+ (fprintf (current-error-port) "\nUnresolved dependency: ~a\n\n" (list-ref dag ibad))
+ (cleanup)
+ (exit 1))
(print "install order:")
(pp dag)
(for-each
@@ -646,7 +652,7 @@
(print "installing for target ...")
(fluid-let ((*host-extension* #f))
(setup tmpcopy)))))))
- (map (cut assoc <> *eggs+dirs+vers*) dag)
+ eggs+dirs+vers
(iota num num -1)))))
(define (delete-stale-binaries)
Trap