From 16a9f86f902cbb5b397bbffed997d4a406885c2a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 27 Feb 2015 12:27:27 -0700 Subject: [PATCH] raco exe: preserve `lib` form of runtime submodule references Otherwise, executable creation can fail because a module is referenced both through a `lib` path and through a filesystem path. --- racket/collects/compiler/embed.rkt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/racket/collects/compiler/embed.rkt b/racket/collects/compiler/embed.rkt index 686f7909e7..df735ed3b1 100644 --- a/racket/collects/compiler/embed.rkt +++ b/racket/collects/compiler/embed.rkt @@ -567,9 +567,15 @@ working)) (define (get-one-submodule-code m) (define name (cadr (module-compiled-name m))) - (define mpi (module-path-index-join `(submod "." ,name) #f)) + (define mp `(submod "." ,name)) + (define mpi (module-path-index-join mp #f)) (get-one-code (resolve-module-path-index mpi filename) - (collapse-module-path-index mpi filename) + (if (is-lib-path? module-path) + ;; Preserve `lib`-ness of module reference: + (collapse-module-path-index + (module-path-index-join mp module-path)) + ;; Ok to collapse based on filename: + (collapse-module-path-index mpi filename)) m)) ;; Add code for pre submodules: (for-each get-one-submodule-code pre-submods)