raco exe: add --config-path
option, default to "etc"
Make executables created by `raco exe` not refer to the original
configuration directory by default, but add an option for setting
the directory.
For Unix ELF executables, fix `raco exe` to set/preserve the
configuration directory.
Merge to v6.0
original commit: 33b7d49b2e
This commit is contained in:
parent
b94fd95bbf
commit
88c3578e52
|
@ -16,6 +16,7 @@
|
||||||
(define exe-embedded-flags (make-parameter '("-U" "--")))
|
(define exe-embedded-flags (make-parameter '("-U" "--")))
|
||||||
(define exe-embedded-libraries (make-parameter null))
|
(define exe-embedded-libraries (make-parameter null))
|
||||||
(define exe-aux (make-parameter null))
|
(define exe-aux (make-parameter null))
|
||||||
|
(define exe-embedded-config-path (make-parameter "etc"))
|
||||||
(define exe-embedded-collects-path (make-parameter null))
|
(define exe-embedded-collects-path (make-parameter null))
|
||||||
(define exe-embedded-collects-dest (make-parameter #f))
|
(define exe-embedded-collects-dest (make-parameter #f))
|
||||||
|
|
||||||
|
@ -29,6 +30,8 @@
|
||||||
(gui #t)]
|
(gui #t)]
|
||||||
[("-l" "--launcher") "Generate a launcher"
|
[("-l" "--launcher") "Generate a launcher"
|
||||||
(launcher #t)]
|
(launcher #t)]
|
||||||
|
[("--config-path") path "Set <path> as configuration directory for executable"
|
||||||
|
(exe-embedded-config-path path)]
|
||||||
[("--collects-path") path "Set <path> as main collects for executable"
|
[("--collects-path") path "Set <path> as main collects for executable"
|
||||||
(exe-embedded-collects-path path)]
|
(exe-embedded-collects-path path)]
|
||||||
[("--collects-dest") dir "Write collection code to <dir>"
|
[("--collects-dest") dir "Write collection code to <dir>"
|
||||||
|
@ -133,6 +136,7 @@
|
||||||
#:cmdline (exe-embedded-flags)
|
#:cmdline (exe-embedded-flags)
|
||||||
#:collects-path (exe-embedded-collects-path)
|
#:collects-path (exe-embedded-collects-path)
|
||||||
#:collects-dest (exe-embedded-collects-dest)
|
#:collects-dest (exe-embedded-collects-dest)
|
||||||
#:aux (exe-aux))])
|
#:aux (cons `(config-dir . ,(exe-embedded-config-path))
|
||||||
|
(exe-aux)))])
|
||||||
(when (verbose)
|
(when (verbose)
|
||||||
(printf " [output to \"~a\"]\n" dest)))
|
(printf " [output to \"~a\"]\n" dest)))
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
(module embed-me6b racket/base
|
||||||
|
(with-output-to-file "stdout"
|
||||||
|
(lambda ()
|
||||||
|
(printf "This is 6\n")
|
||||||
|
(with-handlers ([void (lambda (exn) (printf "no etc.ss\n"))])
|
||||||
|
(printf "~a\n" (and (dynamic-require 'racket/fixnum #f) #t))))
|
||||||
|
#:exists 'append))
|
||||||
|
|
|
@ -363,46 +363,64 @@
|
||||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me1.rkt")))
|
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me1.rkt")))
|
||||||
(try-exe (mk-dest mred?) "This is 1\n" mred?)
|
(try-exe (mk-dest mred?) "This is 1\n" mred?)
|
||||||
|
|
||||||
;; Check that etc.rkt isn't found if it's not included:
|
(define (check-collection-path prog lib in-main?)
|
||||||
(printf ">>not included\n")
|
;; Check that etc.rkt isn't found if it's not included:
|
||||||
(system* mzc
|
(printf ">>not included\n")
|
||||||
(if mred? "--gui-exe" "--exe")
|
(system* mzc
|
||||||
(path->string (mk-dest mred?))
|
(if mred? "--gui-exe" "--exe")
|
||||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
(path->string (mk-dest mred?))
|
||||||
(try-exe (mk-dest mred?) "This is 6\nno etc.ss\n" mred?)
|
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||||
|
(try-exe (mk-dest mred?) "This is 6\nno etc.ss\n" mred?)
|
||||||
|
|
||||||
;; And it is found if it is included:
|
;; And it is found if it is included:
|
||||||
(printf ">>included\n")
|
(printf ">>included\n")
|
||||||
(system* mzc
|
(system* mzc
|
||||||
(if mred? "--gui-exe" "--exe")
|
(if mred? "--gui-exe" "--exe")
|
||||||
(path->string (mk-dest mred?))
|
(path->string (mk-dest mred?))
|
||||||
"++lib" "mzlib/etc.rkt"
|
"++lib" lib
|
||||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||||
(try-exe (mk-dest mred?) "This is 6\n#t\n" mred?)
|
(try-exe (mk-dest mred?) "This is 6\n#t\n" mred?)
|
||||||
|
|
||||||
;; Or, it's found if we set the collection path:
|
;; Or, it's found if we set the collection path and the config path (where the latter
|
||||||
(printf ">>set coll path\n")
|
;; finds links for packages):
|
||||||
(system* mzc
|
(printf ">>set coll path\n")
|
||||||
(if mred? "--gui-exe" "--exe")
|
(system* mzc
|
||||||
(path->string (mk-dest mred?))
|
(if mred? "--gui-exe" "--exe")
|
||||||
"--collects-path"
|
(path->string (mk-dest mred?))
|
||||||
(path->string (find-collects-dir))
|
"--collects-path"
|
||||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
(path->string (find-collects-dir))
|
||||||
;; Don't try a distribution for this one:
|
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||||
(try-one-exe (mk-dest mred?) "This is 6\n#t\n" mred?)
|
;; Don't try a distribution for this one:
|
||||||
|
(try-one-exe (mk-dest mred?) (if in-main? "This is 6\n#t\n" "This is 6\nno etc.ss\n") mred?)
|
||||||
|
|
||||||
;; Try --collects-dest mode
|
;; Or, it's found if we set the collection path and the config path (where the latter
|
||||||
(printf ">>--collects-dest\n")
|
;; finds links for packages):
|
||||||
(system* mzc
|
(printf ">>set coll path plus config\n")
|
||||||
(if mred? "--gui-exe" "--exe")
|
(system* mzc
|
||||||
(path->string (mk-dest mred?))
|
(if mred? "--gui-exe" "--exe")
|
||||||
"++lib" "mzlib/etc.rkt"
|
(path->string (mk-dest mred?))
|
||||||
"--collects-dest" "cts"
|
"--collects-path"
|
||||||
"--collects-path" "cts"
|
(path->string (find-collects-dir))
|
||||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
"--config-path"
|
||||||
(try-exe (mk-dest mred?) "This is 6\n#t\n" mred? void "cts") ; <- cts copied to distribution
|
(path->string (find-config-dir))
|
||||||
(delete-directory/files "cts")
|
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||||
(test #f system* (mk-dest mred?))
|
;; Don't try a distribution for this one:
|
||||||
|
(try-one-exe (mk-dest mred?) "This is 6\n#t\n" mred?)
|
||||||
|
|
||||||
|
;; Try --collects-dest mode
|
||||||
|
(printf ">>--collects-dest\n")
|
||||||
|
(system* mzc
|
||||||
|
(if mred? "--gui-exe" "--exe")
|
||||||
|
(path->string (mk-dest mred?))
|
||||||
|
"++lib" lib
|
||||||
|
"--collects-dest" "cts"
|
||||||
|
"--collects-path" "cts"
|
||||||
|
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||||
|
(try-exe (mk-dest mred?) "This is 6\n#t\n" mred? void "cts") ; <- cts copied to distribution
|
||||||
|
(delete-directory/files "cts")
|
||||||
|
(test #f system* (mk-dest mred?)))
|
||||||
|
(check-collection-path "embed-me6b.rkt" "racket/fixnum.rkt" #t)
|
||||||
|
(check-collection-path "embed-me6.rkt" "mzlib/etc.rkt" #f)
|
||||||
|
|
||||||
(void)))
|
(void)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user