~ chicken-core (chicken-5) a5da30f852462440e96ddb9f083b9188001f9d33


commit a5da30f852462440e96ddb9f083b9188001f9d33
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Sep 4 22:28:06 2016 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Sep 4 22:28:06 2016 +0200

    improvements in egg-related code

diff --git a/egg-compile.scm b/egg-compile.scm
index 91201e1d..69c6273a 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -92,12 +92,6 @@
 
 (define install-command copy-directory-command)
 
-(define (destination-repository mode)
-  (or (get-environment-variable "CHICKEN_REPOSITORY")
-      (case mode
-        ((target) target-repo)
-        ((host) host-repo))))
-
 (define (uses-compiled-import-library? mode)
   (not (and (eq? mode 'host) staticbuild)))
 
@@ -345,8 +339,8 @@
          (ssname (and source (prefix srcdir source)))
          (out (quotearg (target-file (conc sname (object-extension platform)) mode)))
          (src (quotearg (or ssname (conc sname ".scm")))))
-    (print (slashify default-builder platform) " " out " " cmd 
-           " -I " srcdir (arglist options) 
+    (print "\n" (slashify default-builder platform) " " out " " cmd 
+           " -I " srcdir " -I" srcdir (arglist options) 
            " " src " -o " out " : "
            src (arglist dependencies))))
 
@@ -359,8 +353,8 @@
          (ssname (and source (prefix srcdir source)))
          (out (quotearg (target-file (conc sname ".so") mode)))
          (src (quotearg (or ssname (conc sname ".scm")))))
-    (print (slashify default-builder platform) " " out " " cmd 
-           " -I " srcdir (arglist options)
+    (print "\n" (slashify default-builder platform) " " out " " cmd 
+           " -I " srcdir " -I" srcdir (arglist options)
            (arglist link-options) " " src " -o " out " : "
            src (arglist dependencies))))
 
@@ -372,8 +366,8 @@
          (ssname (and source (prefix srcdir source)))
          (out (quotearg (target-file (conc sname ".import.so") mode)))
          (src (quotearg (or source (conc sname ".import.scm")))))
-    (print (slashify default-builder platform) " " out " " cmd 
-           " -I " srcdir (arglist options)
+    (print "\n" (slashify default-builder platform) " " out " " cmd 
+           " -I " srcdir " -I" srcdir (arglist options)
            (arglist link-options) " " src " -o " out " : "
            src (arglist dependencies))))
 
@@ -387,8 +381,8 @@
                                            (executable-extension platform)) 
                                      mode)))
          (src (quotearg (or ssname (conc sname ".scm")))))
-    (print (slashify default-builder platform) " " out " " cmd 
-           " -I " srcdir (arglist options)
+    (print "\n" (slashify default-builder platform) " " out " " cmd 
+           " -I " srcdir " -I" srcdir (arglist options)
            (arglist link-options) " " src " -o " out " : "
            src (arglist dependencies))))
 
@@ -402,8 +396,8 @@
                                            (executable-extension platform)) 
                                      mode)))
          (src (quotearg (or ssname (conc sname ".scm")))))
-    (print (slashify default-builder platform) " " out " " cmd 
-           " -I " srcdir (arglist options)
+    (print "\n" (slashify default-builder platform) " " out " " cmd 
+           " -I " srcdir " -I" srcdir (arglist options)
            (arglist link-options) " " src " -o " out " : "
            src (arglist dependencies))))
 
@@ -417,9 +411,11 @@
          (sname (prefix srcdir name))
          (out (quotearg (target-file (conc sname ext) mode)))
          (dest (destination-repository mode))
-         (dfile (quotearg dest platform)))
-    (print mkdir " " dfile)
-    (print cmd " " out " " (quotearg (slashify (conc dest "/" name ext) platform)))))
+         (dfile (quotearg dest platform))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd " " out " " ddir (quotearg (slashify (conc dest "/" name ext) 
+                                                    platform)))))
 
 (define (gen-install-dynamic-extension name #!key platform mode srcdir)
   (let* ((cmd (install-command platform))
@@ -428,9 +424,10 @@
          (out (quotearg (target-file (conc sname ".so") mode)))
          (ext (object-extension platform))
          (dest (destination-repository mode))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd " " out " "
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd " " out " " ddir
            (quotearg (slashify (conc dest "/" name ".so") platform)))))
 
 (define (gen-install-import-library name #!key platform mode srcdir)
@@ -439,9 +436,10 @@
          (sname (prefix srcdir name))
          (out (quotearg (target-file (conc sname ".import.so") mode)))
          (dest (destination-repository mode))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd " " out " " 
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd " " out " " ddir
            (quotearg (slashify (conc dest "/" name ".import.so") platform)))))
 
 (define (gen-install-import-library-source name #!key platform mode srcdir)
@@ -450,9 +448,10 @@
          (sname (prefix srcdir name))
          (out (quotearg (target-file (conc sname ".import.scm") mode)))
          (dest (destination-repository mode))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd " " out " " 
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd " " out " " ddir
           (quotearg (slashify (conc dest "/" name ".import.scm") platform)))))
 
 (define (gen-install-program name #!key platform mode srcdir)
@@ -462,26 +461,29 @@
          (sname (prefix srcdir name))
          (out (quotearg (target-file (conc sname ext) mode)))
          (dest (if (eq? mode 'target) target-bindir host-bindir))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd " " out " "
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd " " out " " ddir
            (quotearg (slashify (conc dest "/" name ext) platform)))))
 
 (define (gen-install-data name #!key platform files destination mode srcdir)
   (let* ((cmd (install-command platform))
          (mkdir (mkdir-command platform))
          (dest (or destination (if (eq? mode 'target) target-sharedir host-sharedir)))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd (arglist (map (cut prefix srcdir <>) files)) " " dfile)))
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd (arglist (map (cut prefix srcdir <>) files)) " " ddir dfile)))
 
 (define (gen-install-c-include name #!key platform deps files dest mode srcdir)
   (let* ((cmd (install-command platform))
          (mkdir (mkdir-command platform))
          (dest (or dest (if (eq? mode 'target) target-incdir host-incdir)))
-         (dfile (quotearg (slashify dest platform))))
-    (print mkdir " " dfile)
-    (print cmd (arglist (map (cut prefix srcdir <>) files)) " " dfile)))
+         (dfile (quotearg (slashify dest platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
+    (print "\n" mkdir " " ddir dfile)
+    (print cmd (arglist (map (cut prefix srcdir <>) files)) " " ddir dfile)))
 
 (define command-table
   `((compile-static-extension ,gen-compile-static-extension)
@@ -526,6 +528,8 @@
     ((unix)
      (printf #<<EOF
 #!/bin/sh~%
+set -e
+
 EOF
              ))
     ((windows)
@@ -550,6 +554,8 @@ EOF
     ((unix)
      (printf #<<EOF
 #!/bin/sh~%
+set -e
+
 EOF
              ))
     ((windows)
@@ -563,23 +569,26 @@ EOF
          (dir (destination-repository mode))
          (qdir (quotearg (slashify dir platform)))
          (dest (quotearg (slashify (make-pathname dir name +egg-info-extension+)
-                                   platform))))
+                                   platform)))
+         (ddir (shell-variable "DESTDIR" platform)))
     (case platform
       ((unix)
        (printf #<<EOF
-mkdir -p ~a
-cat >~a <<ENDINFO
+
+mkdir -p ~a~a
+cat >~a~a <<ENDINFO
 ~aENDINFO~%
 EOF
-               qdir dest infostr))
+               ddir qdir ddir dest infostr))
       ((windows)
        (printf #<<EOF
-mkdir ~a
+
+mkdir ~a~a
 echo ~a >~a~%
 EOF
-               qdir 
+               ddir qdir 
                (string-intersperse (string-split infostr) "^\n")
-               dest)))))
+               ddir dest)))))
 
 
 ;;; some utilities for mangling + quoting
@@ -611,3 +620,9 @@ EOF
 
 (define (arglist lst)
   (apply conc (map (lambda (x) (conc " " (quotearg x))) lst)))
+
+(define (shell-variable var platform)
+  (case platform
+    ((unix) (string-append "${" var "}"))
+    ((windows) (string-append "%" var "%"))))
+  
\ No newline at end of file
diff --git a/egg-environment.scm b/egg-environment.scm
index f0dea104..0fa691f5 100644
--- a/egg-environment.scm
+++ b/egg-environment.scm
@@ -57,3 +57,9 @@ EOF
 (define target-sharedir (foreign-value "C_TARGET_SHARE_HOME" c-string))
 
 (define +egg-info-extension+ ".egg-info") 
+
+(define (destination-repository mode)
+  (or (get-environment-variable "CHICKEN_REPOSITORY")
+      (case mode
+        ((target) target-repo)
+        ((host) host-repo))))
Trap