~ chicken-core (chicken-5) d84ce9b756aa8737cf11a0ad0ff892709d717ef9
commit d84ce9b756aa8737cf11a0ad0ff892709d717ef9 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu May 12 04:42:13 2011 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu May 12 04:42:13 2011 -0400 simplifed egg-name-and-version to egg-name; added -csi option to chicken-install; documentation update diff --git a/chicken-install.scm b/chicken-install.scm index 8c3ac0c4..178ff007 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -648,12 +648,15 @@ (define (installed-extensions) (delete-duplicates (filter-map - (lambda (sf) - (let ((info (first (read-file sf)))) - (cond ((assq 'egg-name-and-version info) => cadr) + (lambda (sf) + (let* ((info (first (read-file sf))) + (v (cond ((assq 'version info) => cadr) + (else "")))) + (cond ((assq 'egg-name info) => + (lambda (a) (cons (cadr a) (->string v)))) (else (warning - "installed extension has no information about the egg it belongs to" + "installed extension has no information about which egg it belongs to" (pathname-file sf)) #f)))) (glob (make-pathname (repo-path) "*" "setup-info"))) @@ -695,6 +698,7 @@ usage: chicken-install [OPTION | EXTENSION[:VERSION]] ... -keep-going continue installation even if dependency fails -scan DIRECTORY scan local directory for highest available egg versions -override FILENAME override versions for installed eggs with information from file + -csi FILENAME use given pathname for invocations of "csi" EOF );| (exit code)) @@ -712,9 +716,9 @@ EOF (set! *proxy-port* 80))))))) (define (info->egg info) - (if (member (cadr info) '("" "unknown" "trunk")) + (if (member (cdr info) '("" "unknown" "trunk")) (car info) - (cons (car info) (cadr info)))) + info)) (define *short-options* '(#\h #\k #\l #\t #\s #\p #\r #\n #\v #\i #\u #\D)) @@ -868,6 +872,10 @@ EOF ((string=? "-keep-going" arg) (set! *keep-going* #t) (loop (cdr args) eggs)) + ((string=? "-csi" arg) + (unless (pair? (cdr args)) (usage 1)) + (set! *csi* (cadr args)) + (loop (cddr args) eggs)) ((string=? "-password" arg) (unless (pair? (cdr args)) (usage 1)) (set! *password* (cadr args)) diff --git a/distribution/manifest b/distribution/manifest index 88a7ff00..857d25d7 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -180,9 +180,12 @@ tests/functor-tests.scm tests/square-functor.scm tests/use-square-functor.scm tests/pp-test.scm -tests/reverser/reverser.meta -tests/reverser/reverser.setup -tests/reverser/reverser.scm +tests/reverser/tags/1.0/reverser.meta +tests/reverser/tags/1.0/reverser.setup +tests/reverser/tags/1.0/reverser.scm +tests/reverser/tags/1.1/reverser.meta +tests/reverser/tags/1.1/reverser.setup +tests/reverser/tags/1.1/reverser.scm tests/rev-app.scm tweaks.scm utils.scm diff --git a/manual/Extensions b/manual/Extensions index e7bc2e47..7aa6f4af 100644 --- a/manual/Extensions +++ b/manual/Extensions @@ -132,6 +132,14 @@ does not require code to be loaded at runtime. Specifies version string. +===== egg-name + + [extension property] (egg-name STRING) + +This is reserved for internal use. It is only listed here to tell you that you should +avoid using this property. + + ==== install-program <procedure>(install-program ID FILELIST [INFOLIST])</procedure> @@ -576,6 +584,7 @@ Available options: ; {{-reinstall}} : reinstall all currently installed extensions, keeping the current versions, if possible ; {{-scan DIRECTORY}} : scan local egg source repository or highest available versions ; {{-override FILENAME}} : override versions for installed eggs with information given in {{FILENAME}}, which can be generated by {{-scan}} or by the {{-list}} option of the {{chicken-status}} program +; {{-csi FILENAME}} : when invoking {{csi}}, the CHICKEN interpreter for executing installation scripts, use this program instead. {{chicken-install}} recognizes the {{http_proxy}} environment variable, if set. diff --git a/setup-api.scm b/setup-api.scm index 60d41b0f..294441eb 100644 --- a/setup-api.scm +++ b/setup-api.scm @@ -547,13 +547,13 @@ (cond ((assq 'version info) => (lambda (a) (cons - `(egg-name-and-version (,(extension-name) ,(->string (cadr a)))) + `(egg-name ,(extension-name)) info))) (else (let ((v (what-version version))) (cons* `(version ,v) - `(egg-name-and-version (,(extension-name) ,(->string v))) + `(egg-name ,(extension-name)) info))))) diff --git a/tests/rev-app.scm b/tests/rev-app.scm index a7dfb011..ce1aacad 100644 --- a/tests/rev-app.scm +++ b/tests/rev-app.scm @@ -1,3 +1,5 @@ -(use reverser) +(use reverser srfi-1) (assert (equal? "oof" (rev "foo"))) (assert (equal? '(a b c) (rev '(c b a)))) +(assert (= rev-version (string->number (last (command-line-arguments))))) +(exit) diff --git a/tests/reverser/reverser.meta b/tests/reverser/tags/1.0/reverser.meta similarity index 100% rename from tests/reverser/reverser.meta rename to tests/reverser/tags/1.0/reverser.meta diff --git a/tests/reverser/reverser.scm b/tests/reverser/tags/1.0/reverser.scm similarity index 86% rename from tests/reverser/reverser.scm rename to tests/reverser/tags/1.0/reverser.scm index 6af50656..4159bb84 100644 --- a/tests/reverser/reverser.scm +++ b/tests/reverser/tags/1.0/reverser.scm @@ -1,6 +1,7 @@ -(module reverser (rev) +(module reverser * (import scheme chicken) (use srfi-13) + (define rev-version 1.0) (define (rev x) (cond ((string? x) (string-reverse x)) ((symbol? x) (string->symbol (rev (symbol->string x)))) diff --git a/tests/reverser/reverser.setup b/tests/reverser/tags/1.0/reverser.setup similarity index 100% rename from tests/reverser/reverser.setup rename to tests/reverser/tags/1.0/reverser.setup diff --git a/tests/reverser/tags/1.1/reverser.meta b/tests/reverser/tags/1.1/reverser.meta new file mode 100644 index 00000000..6a452c18 --- /dev/null +++ b/tests/reverser/tags/1.1/reverser.meta @@ -0,0 +1 @@ +() diff --git a/tests/reverser/tags/1.1/reverser.scm b/tests/reverser/tags/1.1/reverser.scm new file mode 100644 index 00000000..9815b7d0 --- /dev/null +++ b/tests/reverser/tags/1.1/reverser.scm @@ -0,0 +1,10 @@ +(module reverser * + (import scheme chicken) + (use srfi-13) + (define rev-version 1.1) + (define (rev x) + (cond ((string? x) (string-reverse x)) + ((symbol? x) (string->symbol (rev (symbol->string x)))) + ((list? x) (reverse x)) + ((vector? x) (list->vector (rev (vector->list x)))) + (else (error "can't reverse" x))))) diff --git a/tests/reverser/tags/1.1/reverser.setup b/tests/reverser/tags/1.1/reverser.setup new file mode 100644 index 00000000..68cc7a18 --- /dev/null +++ b/tests/reverser/tags/1.1/reverser.setup @@ -0,0 +1 @@ +(standard-extension 'reverser) diff --git a/tests/runtests.sh b/tests/runtests.sh index d0fc1491..83d544f0 100644 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -29,6 +29,7 @@ done CHICKEN_REPOSITORY=${TEST_DIR}/test-repository CHICKEN=../chicken CHICKEN_INSTALL=${TEST_DIR}/../chicken-install +CHICKEN_UNINSTALL=${TEST_DIR}/../chicken-uninstall ASMFLAGS= FAST_OPTIONS="-O5 -d0 -b -disable-interrupts" @@ -323,16 +324,25 @@ tmp/xxx $PWD/tmp PATH=$PWD/tmp:$PATH xxx $PWD/tmp # this may crash, if the PATH contains a non-matching libchicken.dll on Windows: #PATH=$PATH:$PWD/tmp xxx $PWD/tmp +rm -fr rev-app rev-app-2 reverser/*.import.* reverser/*.so + +echo "======================================== reinstall tests" +CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $CHICKEN_UNINSTALL -force reverser +CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $CHICKEN_INSTALL -t local -l $TEST_DIR reverser:1.0 \ + -csi ${TEST_DIR}/../csi +CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $interpret -bnq rev-app.scm 1.0 +CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $CHICKEN_INSTALL -t local -l $TEST_DIR -reinstall -force \ + -csi ${TEST_DIR}/../csi +CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $interpret -bnq rev-app.scm 1.0 echo "======================================== deployment tests" -rm -fr rev-app rev-app-2 reverser/*.import.* reverser/*.so mkdir rev-app CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $CHICKEN_INSTALL -t local -l $TEST_DIR reverser CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $compile2 -deploy rev-app.scm CHICKEN_REPOSITORY=$CHICKEN_REPOSITORY $CHICKEN_INSTALL -deploy -prefix rev-app -t local -l $TEST_DIR reverser unset LD_LIBRARY_PATH DYLD_LIBRARY_PATH CHICKEN_REPOSITORY -rev-app/rev-app +rev-app/rev-app 1.1 mv rev-app rev-app-2 -rev-app-2/rev-app +rev-app-2/rev-app 1.1 echo "======================================== done."Trap