~ 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