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-libraries (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-dest (make-parameter #f))
|
||||
|
||||
|
@ -29,6 +30,8 @@
|
|||
(gui #t)]
|
||||
[("-l" "--launcher") "Generate a launcher"
|
||||
(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"
|
||||
(exe-embedded-collects-path path)]
|
||||
[("--collects-dest") dir "Write collection code to <dir>"
|
||||
|
@ -133,6 +136,7 @@
|
|||
#:cmdline (exe-embedded-flags)
|
||||
#:collects-path (exe-embedded-collects-path)
|
||||
#:collects-dest (exe-embedded-collects-dest)
|
||||
#:aux (exe-aux))])
|
||||
#:aux (cons `(config-dir . ,(exe-embedded-config-path))
|
||||
(exe-aux)))])
|
||||
(when (verbose)
|
||||
(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,12 +363,13 @@
|
|||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me1.rkt")))
|
||||
(try-exe (mk-dest mred?) "This is 1\n" mred?)
|
||||
|
||||
(define (check-collection-path prog lib in-main?)
|
||||
;; Check that etc.rkt isn't found if it's not included:
|
||||
(printf ">>not included\n")
|
||||
(system* mzc
|
||||
(if mred? "--gui-exe" "--exe")
|
||||
(path->string (mk-dest mred?))
|
||||
(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\nno etc.ss\n" mred?)
|
||||
|
||||
;; And it is found if it is included:
|
||||
|
@ -376,18 +377,33 @@
|
|||
(system* mzc
|
||||
(if mred? "--gui-exe" "--exe")
|
||||
(path->string (mk-dest mred?))
|
||||
"++lib" "mzlib/etc.rkt"
|
||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
||||
"++lib" lib
|
||||
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||
(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
|
||||
;; finds links for packages):
|
||||
(printf ">>set coll path\n")
|
||||
(system* mzc
|
||||
(if mred? "--gui-exe" "--exe")
|
||||
(path->string (mk-dest mred?))
|
||||
"--collects-path"
|
||||
(path->string (find-collects-dir))
|
||||
(path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me6.rkt")))
|
||||
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||
;; 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?)
|
||||
|
||||
;; Or, it's found if we set the collection path and the config path (where the latter
|
||||
;; finds links for packages):
|
||||
(printf ">>set coll path plus config\n")
|
||||
(system* mzc
|
||||
(if mred? "--gui-exe" "--exe")
|
||||
(path->string (mk-dest mred?))
|
||||
"--collects-path"
|
||||
(path->string (find-collects-dir))
|
||||
"--config-path"
|
||||
(path->string (find-config-dir))
|
||||
(path->string (build-path (collection-path "tests" "compiler" "embed") prog)))
|
||||
;; Don't try a distribution for this one:
|
||||
(try-one-exe (mk-dest mred?) "This is 6\n#t\n" mred?)
|
||||
|
||||
|
@ -396,13 +412,15 @@
|
|||
(system* mzc
|
||||
(if mred? "--gui-exe" "--exe")
|
||||
(path->string (mk-dest mred?))
|
||||
"++lib" "mzlib/etc.rkt"
|
||||
"++lib" lib
|
||||
"--collects-dest" "cts"
|
||||
"--collects-path" "cts"
|
||||
(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? void "cts") ; <- cts copied to distribution
|
||||
(delete-directory/files "cts")
|
||||
(test #f system* (mk-dest mred?))
|
||||
(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)))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user