~ chicken-core (chicken-5) 70e091fdb198e03e62b819e647b7029b6d39cb95


commit 70e091fdb198e03e62b819e647b7029b6d39cb95
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Jan 6 08:35:25 2010 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed Jan 6 08:35:25 2010 +0100

    handle installation of deps in no-install mode; removed deprecated setup-install-flag and setup-verbose-flag

diff --git a/chicken-install.scm b/chicken-install.scm
index 79d55352..9d30369c 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -82,6 +82,7 @@
   (define *windows-shell* (foreign-value "C_WINDOWS_SHELL" bool))
   (define *proxy-host* #f)
   (define *proxy-port* #f)
+  (define *running-test* #f)
 
   (define-constant +module-db+ "modules.db")
   (define-constant +defaults-file+ "setup.defaults")
@@ -290,7 +291,7 @@
                       "- assuming it has no dependencies")) ] ) ) ) )
        *eggs+dirs+vers*) ) )
 
-  (define (make-install-command e+d+v)
+  (define (make-install-command e+d+v dep?)
     (conc
      *csi*
      " -bnq "
@@ -302,7 +303,7 @@
      (sprintf " -e \"(extension-name-and-version '(\\\"~a\\\" \\\"~a\\\"))\"" (car e+d+v) (caddr e+d+v))
      (if (sudo-install) " -e \"(sudo-install #t)\"" "")
      (if *keep* " -e \"(keep-intermediates #t)\"" "")
-     (if *no-install* " -e \"(setup-install-mode #f)\"" "")
+     (if (and *no-install* (not dep?)) " -e \"(setup-install-mode #f)\"" "")
      (if *host-extension* " -e \"(host-extension #t)\"" "")
      (if *prefix* (sprintf " -e \"(installation-prefix \\\"~a\\\")\"" *prefix*) "")
      #\space
@@ -311,26 +312,41 @@
   (define (install eggs)
     (retrieve eggs)
     (unless *retrieve-only*
-      (let ((dag (reverse (topological-sort *dependencies* string=?))))
+      (let* ((dag (reverse (topological-sort *dependencies* string=?)))
+	     (num (length dag))
+	     (depinstall-ok *force*))
 	(print "install order:")
 	(pp dag)
 	(for-each
-	 (lambda (e+d+v)
+	 (lambda (e+d+v i)
+	   (when (and (not depinstall-ok)
+		      (= i 1)
+		      (> num 1))
+	     (unless (yes-or-no?
+		      (string-append
+		       "You specified `-no-install', but this extension has dependencies"
+		       " that are required for building. Do you still want to install them?"))
+	       (print "aborting installation.")
+	       (cleanup)
+	       (exit 1)))
 	   (print "installing " (car e+d+v) #\: (caddr e+d+v) " ...")
 	   (print "changing current directory to " (cadr e+d+v))
 	   (parameterize ((current-directory (cadr e+d+v)))
-	     (let ([cmd (make-install-command e+d+v)])
+	     (let ([cmd (make-install-command e+d+v (< i num))])
 	       (print "  " cmd)
 	       ($system cmd))
 	     (when (and *run-tests*
 			(file-exists? "tests")
 			(directory? "tests")
 			(file-exists? "tests/run.scm") )
+	       (set! *running-test* #t)
 	       (current-directory "tests")
 	       (let ((cmd (sprintf "~a -s run.scm ~a" *csi* (car e+d+v))))
 		 (print "  " cmd)
-		 ($system cmd)))))
-	 (map (cut assoc <> *eggs+dirs+vers*) dag)))))
+		 ($system cmd))
+	       (set! *running-test* #f))))
+	 (map (cut assoc <> *eggs+dirs+vers*) dag)
+	 (iota num 1)))))
 
   (define (cleanup)
     (unless *keep*
@@ -540,7 +556,7 @@ EOF
 	(newline (current-error-port))
         (print-error-message ex (current-error-port))
         (cleanup)
-        (exit 1))
+        (exit (if *running-test* 2 1)))
     (main (command-line-arguments))
     (cleanup))
 
diff --git a/setup-api.scm b/setup-api.scm
index e80e5e60..abb53ac4 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -44,7 +44,6 @@
      host-extension
      install-extension install-program install-script
      setup-verbose-mode setup-install-mode
-     setup-verbose-flag setup-install-flag			; DEPRECATED
      installation-prefix chicken-prefix 
      find-library find-header 
      program-path remove-file* 
@@ -116,8 +115,6 @@
 (define setup-root-directory      (make-parameter *base-directory*))
 (define setup-verbose-mode        (make-parameter #f))
 (define setup-install-mode        (make-parameter #t))
-(define setup-verbose-flag setup-verbose-mode) ; DEPRECATED
-(define setup-install-flag setup-install-mode) ; DEPRECATED
 (define program-path              (make-parameter *chicken-bin-path*))
 (define keep-intermediates (make-parameter #f))
 
@@ -174,7 +171,7 @@
         ((car args)     (sudo-install-setup))
         (else           (user-install-setup)) ) )
 
-(define abort-setup (make-parameter exit))
+(define abort-setup (make-parameter (cut exit 1)))
 
 (define (yes-or-no? str #!key default (abort (abort-setup)))
   (let loop ()
Trap