~ chicken-core (chicken-5) 65f8c294651efb7444ab77e04c86627320c78682
commit 65f8c294651efb7444ab77e04c86627320c78682
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Aug 19 00:47:07 2016 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Aug 19 00:47:07 2016 +0200
bugfixes in egg-compile + new-install, added use of CHICKEN_REPOSITORY
diff --git a/egg-compile.scm b/egg-compile.scm
index a5018901..4bd800b9 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -93,9 +93,10 @@
(define install-command copy-directory-command)
(define (destination-repository mode)
- (case mode
- ((target) target-repo)
- ((host) host-repo)))
+ (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)))
@@ -336,122 +337,151 @@
;;; shell code generation - build operations
(define (gen-compile-static-extension name #!key mode platform dependencies source
- (options '()) custom)
- (let ((cmd (or custom
- (conc default-csc " -D compiling-extension -c -J -unit " name
- " -D compiling-static-extension")))
- (out (quotearg (target-file (conc name (object-extension platform)) mode)))
- (src (quotearg (or source (conc name ".scm")))))
- (print (slashify default-builder platform) " " out " " cmd (arglist options)
+ (options '()) custom srcdir)
+ (let* ((cmd (or custom
+ (conc default-csc " -D compiling-extension -c -J -unit " name
+ " -D compiling-static-extension")))
+ (sname (prefix srcdir name))
+ (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)
" " src " -o " out " : "
src (arglist dependencies))))
(define (gen-compile-dynamic-extension name #!key mode platform dependencies mode
source (options '()) (link-options '())
- custom)
- (let ((cmd (or custom
- (conc default-csc " -D compiling-extension -J -s")))
- (out (quotearg (target-file (conc name ".so") mode)))
- (src (quotearg (or source (conc name ".scm")))))
- (print (slashify default-builder platform) " " out " " cmd (arglist options)
+ custom srcdir)
+ (let* ((cmd (or custom
+ (conc default-csc " -D compiling-extension -J -s")))
+ (sname (prefix srcdir name))
+ (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)
(arglist link-options) " " src " -o " out " : "
src (arglist dependencies))))
(define (gen-compile-import-library name #!key platform dependencies source mode
(options '()) (link-options '())
- custom)
- (let ((cmd (or custom (conc default-csc " -s")))
- (out (quotearg (target-file (conc name ".import.so") mode)))
- (src (quotearg (or source (conc name ".import.scm")))))
- (print (slashify default-builder platform) " " out " " cmd (arglist options)
+ custom srcdir)
+ (let* ((cmd (or custom (conc default-csc " -s")))
+ (sname (prefix srcdir name))
+ (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)
(arglist link-options) " " src " -o " out " : "
src (arglist dependencies))))
(define (gen-compile-dynamic-program name #!key platform dependencies source mode
(options '()) (link-options '())
- custom)
- (let ((cmd (or custom default-csc))
- (out (quotearg
- (target-file (conc name (executable-extension platform)) mode)))
- (src (quotearg (or source (conc name ".scm")))))
- (print (slashify default-builder platform) " " out " " cmd (arglist options)
+ custom srcdir)
+ (let* ((cmd (or custom default-csc))
+ (sname (prefix srcdir name))
+ (ssname (and source (prefix srcdir source)))
+ (out (quotearg (target-file (conc sname
+ (executable-extension platform))
+ mode)))
+ (src (quotearg (or ssname (conc sname ".scm")))))
+ (print (slashify default-builder platform) " " out " " cmd
+ " -I " srcdir (arglist options)
(arglist link-options) " " src " -o " out " : "
src (arglist dependencies))))
(define (gen-compile-static-program name #!key platform dependencies source
(options '()) (link-options '())
- custom mode)
- (let ((cmd (or custom (conc default-csc " -static-libs")))
- (out (quotearg
- (target-file (conc name (executable-extension platform)) mode)))
- (src (quotearg (or source (conc name ".scm")))))
- (print (slashify default-builder platform) " " out " " cmd (arglist options)
+ custom mode srcdir)
+ (let* ((cmd (or custom (conc default-csc " -static-libs")))
+ (sname (prefix srcdir name))
+ (ssname (and source (prefix srcdir source)))
+ (out (quotearg (target-file (conc sname
+ (executable-extension platform))
+ mode)))
+ (src (quotearg (or ssname (conc sname ".scm")))))
+ (print (slashify default-builder platform) " " out " " cmd
+ " -I " srcdir (arglist options)
(arglist link-options) " " src " -o " out " : "
src (arglist dependencies))))
;; installation operations
-(define (gen-install-static-extension name #!key platform mode)
+(define (gen-install-static-extension name #!key platform mode srcdir)
(let* ((cmd (install-command platform))
(mkdir (mkdir-command platform))
(ext (object-extension platform))
- (out (quotearg (target-file (conc name ext) mode)))
+ (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 dest "/" name ext) platform))))
+ (print cmd " " out " " (quotearg (slashify (conc dest "/" name ext) platform)))))
-(define (gen-install-dynamic-extension name #!key platform mode)
+(define (gen-install-dynamic-extension name #!key platform mode srcdir)
(let* ((cmd (install-command platform))
- (out (quotearg (target-file (conc name ".so") mode)))
+ (mkdir (mkdir-command platform))
+ (sname (prefix srcdir name))
+ (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 " " (quotearg (slashify dest "/" name ".so") platform))))
+ (print cmd " " out " "
+ (quotearg (slashify (conc dest "/" name ".so") platform)))))
-(define (gen-install-import-library name #!key platform mode)
+(define (gen-install-import-library name #!key platform mode srcdir)
(let* ((cmd (install-command platform))
- (out (quotearg (target-file (conc name ".import.so") mode)))
+ (mkdir (mkdir-command platform))
+ (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 " "
(quotearg (slashify (conc dest "/" name ".import.so") platform)))))
-(define (gen-install-import-library-source name #!key platform mode)
+(define (gen-install-import-library-source name #!key platform mode srcdir)
(let* ((cmd (install-command platform))
- (out (quotearg (target-file (conc name ".import.scm") mode)))
+ (mkdir (mkdir-command platform))
+ (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 " "
(quotearg (slashify (conc dest "/" name ".import.scm") platform)))))
-(define (gen-install-program name #!key platform mode)
+(define (gen-install-program name #!key platform mode srcdir)
(let* ((cmd (install-command platform))
+ (mkdir (mkdir-command platform))
(ext (executable-extension platform))
- (out (quotearg (target-file (conc name ext) mode)))
+ (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 " "
(quotearg (slashify (conc dest "/" name ext) platform)))))
-(define (gen-install-data name #!key platform files destination mode)
+(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 files) " " dfile)))
+ (print cmd (arglist (map (cut prefix srcdir <>) files)) " " dfile)))
-(define (gen-install-c-include name #!key platform deps files dest mode)
+(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 files) " " dfile)))
+ (print cmd (arglist (map (cut prefix srcdir <>) files)) " " dfile)))
(define command-table
`((compile-static-extension ,gen-compile-static-extension)
@@ -471,7 +501,7 @@
;;; Generate shell or batch commands from abstract build/install operations
-(define (generate-shell-commands platform cmds dest prefix suffix)
+(define (generate-shell-commands platform cmds dest srcdir prefix suffix)
(with-output-to-file dest
(lambda ()
(prefix platform)
@@ -481,7 +511,9 @@
(cond ((assq (car cmd) command-table)
=> (lambda (op)
(apply (cadr op)
- (cons* (cadr cmd) platform: platform (cddr cmd)))))
+ (cons* (cadr cmd)
+ srcdir: srcdir platform: platform
+ (cddr cmd)))))
(else (error "invalid command" cmd))))
cmds)
(suffix platform))))
@@ -528,24 +560,33 @@ EOF
(define ((install-suffix mode name info) platform)
(let ((infostr (with-output-to-string (cut pp info)))
- (dest (make-pathname (destination-repository mode) name +egg-info-extension+)))
+ (dir (destination-repository mode))
+ (qdir (quotearg (slashify dir platform)))
+ (dest (quotearg (slashify (make-pathname dir name +egg-info-extension+)
+ platform))))
(case platform
((unix)
(printf #<<EOF
+mkdir -p ~a
cat >~a <<ENDINFO
~aENDINFO~%
EOF
- dest infostr))
+ qdir dest infostr))
((windows)
(printf #<<EOF
+mkdir ~a
echo ~a >~a~%
EOF
+ qdir
(string-intersperse (string-split infostr) "^\n")
dest)))))
;;; some utilities for mangling + quoting
+(define (prefix dir name)
+ (make-pathname dir (->string name)))
+
(define (quotearg str)
(let ((lst (string->list str)))
(if (any char-whitespace? lst)
diff --git a/new-install.scm b/new-install.scm
index a2e3dce2..2038da4c 100644
--- a/new-install.scm
+++ b/new-install.scm
@@ -33,7 +33,7 @@
(include "egg-download.scm")
(define user-defaults #f)
-(define quiet #f) ;XXX
+(define quiet #t)
(define default-servers '())
(define default-locations '())
(define mappings '())
@@ -62,6 +62,8 @@
(define current-status
(list (get-environment-variable "CSC_OPTIONS")
(get-environment-variable "LD_LIBRARY_PATH")
+ (get-environment-variable "CHICKEN_INCLUDE_PATH")
+ (get-environment-variable "CHICKEN_REPOSITORY")
(get-environment-variable "DYLD_LIBRARY_PATH"))) ;XXX more?
(define (probe-dir dir)
@@ -572,10 +574,10 @@
(iscript (make-pathname dir name
(install-script-extension 'host
platform))))
- (generate-shell-commands platform build bscript
+ (generate-shell-commands platform build bscript dir
(build-prefix 'host name info)
(build-suffix 'host name info))
- (generate-shell-commands platform install iscript
+ (generate-shell-commands platform install iscript dir
(install-prefix 'host name info)
(install-suffix 'host name info))
(run-script dir bscript platform)
@@ -587,10 +589,10 @@
(iscript (make-pathname dir name
(install-script-extension 'target
platform))))
- (generate-shell-commands platform build bscript
+ (generate-shell-commands platform build bscript dir
(build-prefix 'target name info)
(build-suffix 'target name info))
- (generate-shell-commands platform install iscript
+ (generate-shell-commands platform install iscript dir
(install-prefix 'target name info)
(install-suffix 'target name info))
(run-script dir bscript platform)
@@ -674,6 +676,9 @@
((equal? arg "-n")
(set! do-not-build #t)
(loop (cdr args)))
+ ((equal? arg "-v")
+ (set! quiet #f)
+ (loop (cdr args)))
;;XXX
Trap