~ 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