~ chicken-core (chicken-5) 5fb25ad641e75c0c3bfafa524b1a24404c250472
commit 5fb25ad641e75c0c3bfafa524b1a24404c250472
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 Nov 13 11:37:04 2016 +0100
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