~ 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