~ 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