~ chicken-core (chicken-5) ba0857d233f628f87f54dc0d1c56b2ba5fbc6df0
commit ba0857d233f628f87f54dc0d1c56b2ba5fbc6df0
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Thu May 5 03:45:22 2011 -0400
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Thu May 5 03:45:22 2011 -0400
chicken-install -keep-installed
diff --git a/chicken-install.scm b/chicken-install.scm
index 8e38c953..a7f43789 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -72,6 +72,7 @@
(foreign-value "C_INSTALL_BIN_HOME" c-string) ) )
(define *keep* #f)
+ (define *keep-existing* #f)
(define *force* #f)
(define *run-tests* #f)
(define *retrieve-only* #f)
@@ -477,6 +478,11 @@
(tmp))))))
(define (install eggs)
+ (when *keep-existing*
+ (set! eggs
+ (remove
+ (lambda (egg) (extension-information (if (pair? egg) (car egg) egg)))
+ eggs)))
(retrieve eggs)
(unless *retrieve-only*
(let* ((dag (reverse (topological-sort *dependencies* string=?)))
@@ -638,6 +644,7 @@ usage: chicken-install [OPTION | EXTENSION[:VERSION]] ...
-v -version show version and exit
-force don't ask, install even if versions don't match
-k -keep keep temporary files
+ -x -keep-installed install only if not already installed
-l -location LOCATION install from given location instead of default
-t -transport TRANSPORT use given transport instead of default
-proxy HOST[:PORT] download via HTTP proxy
@@ -805,6 +812,9 @@ EOF
(unless (pair? (cdr args)) (usage 1))
(set! *override* (read-file (cadr args)))
(loop (cddr args) eggs))
+ ((or (string=? "-x") (string=? "-keep-installed" arg))
+ (set! *keep-existing* #t)
+ (loop (cdr args) eggs))
((string=? "-trunk" arg)
(set! *trunk* #t)
(loop (cdr args) eggs))
Trap