From f2dbacc73f4befd1cf71b87b8f85961bcc7bc41f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 9 Mar 2012 10:22:50 -0700 Subject: [PATCH] `raco exe' uses a `main' submodule, if any original commit: 85802f45f2ff1c3cf1701d30eb0899815a16e280 --- collects/compiler/commands/exe.rkt | 18 +++++++++++------- collects/tests/racket/embed-me15.rkt | 6 +++--- collects/tests/racket/embed-me16.rkt | 7 +++++++ collects/tests/racket/embed.rktl | 10 +++++++++- 4 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 collects/tests/racket/embed-me16.rkt diff --git a/collects/compiler/commands/exe.rkt b/collects/compiler/commands/exe.rkt index 0ac336f9a5..b18f17dabc 100644 --- a/collects/compiler/commands/exe.rkt +++ b/collects/compiler/commands/exe.rkt @@ -89,19 +89,23 @@ #:mred? (gui) #:variant (if (3m) '3m 'cgc) #:verbose? (very-verbose) - #:modules (cons `(#%mzc: (file ,source-file)) + #:modules (cons `(#%mzc: (file ,source-file) (main)) (map (lambda (l) `(#t (lib ,l))) (exe-embedded-libraries))) #:configure-via-first-module? #t #:literal-expression (parameterize ([current-namespace (make-base-namespace)]) + (define mod-sym (string->symbol + (format "#%mzc:~a" + (let-values ([(base name dir?) + (split-path source-file)]) + (path->bytes (path-replace-suffix name #"")))))) + (define main-sym (string->symbol (format "~a(main)" mod-sym))) (compile - `(namespace-require - '',(string->symbol - (format "#%mzc:~a" - (let-values ([(base name dir?) - (split-path source-file)]) - (path->bytes (path-replace-suffix name #"")))))))) + `(begin + (namespace-require '',mod-sym) + (when (module-declared? '',main-sym) + (dynamic-require '',main-sym #f))))) #:cmdline (exe-embedded-flags) #:collects-path (exe-embedded-collects-path) #:collects-dest (exe-embedded-collects-dest) diff --git a/collects/tests/racket/embed-me15.rkt b/collects/tests/racket/embed-me15.rkt index b6c4f00c57..d8107232ec 100644 --- a/collects/tests/racket/embed-me15.rkt +++ b/collects/tests/racket/embed-me15.rkt @@ -1,5 +1,5 @@ #lang racket/base (require (submod "embed-me15-one.rkt" one)) -(printf "This is ~a.\n" (+ 9 one two three)) - - +(with-output-to-file "stdout" + (lambda () (printf "This is ~a.\n" (+ 9 one two three))) + #:exists 'append) diff --git a/collects/tests/racket/embed-me16.rkt b/collects/tests/racket/embed-me16.rkt new file mode 100644 index 0000000000..3b109f622f --- /dev/null +++ b/collects/tests/racket/embed-me16.rkt @@ -0,0 +1,7 @@ +#lang racket/base + +;; a `main' submodule: +(module main racket/base + (with-output-to-file "stdout" + (lambda () (printf "This is 16.\n")) + #:exists 'append)) diff --git a/collects/tests/racket/embed.rktl b/collects/tests/racket/embed.rktl index 7e6254f467..1ccbc1bafd 100644 --- a/collects/tests/racket/embed.rktl +++ b/collects/tests/racket/embed.rktl @@ -223,7 +223,7 @@ (one-mz-test "embed-me2.rkt" "This is 1\nThis is 2: #t\n" #t) (one-mz-test "embed-me13.rkt" "This is 14\n" #f) (one-mz-test "embed-me14.rkt" "This is 14\n" #f) - (one-mz-test "embed-me15.rkt" "This is 15\n" #f) + (one-mz-test "embed-me15.rkt" "This is 15.\n" #f) ;; Try unicode expr and cmdline: (prepare dest "unicode") @@ -277,6 +277,14 @@ (path->string (build-path (collection-path "tests" "racket") "embed-me1.rkt"))) (try-exe (mk-dest mred?) "This is 1\n" mred?) + ;; raco exe on a module with a `main' submodule + (system* raco + "exe" + "-o" (path->string (mk-dest mred?)) + (if mred? "--gui" "--") + (path->string (build-path (collection-path "tests" "racket") "embed-me16.rkt"))) + (try-exe (mk-dest mred?) "This is 16.\n" mred?) + ;;raco exe --launcher (system* raco "exe"