diff --git a/racket/src/bc/Makefile.in b/racket/src/bc/Makefile.in index 874eac91f1..1f681354fd 100644 --- a/racket/src/bc/Makefile.in +++ b/racket/src/bc/Makefile.in @@ -50,6 +50,7 @@ RUN_THIS_RACKET_CGC = ./racket@CGC@ RUN_THIS_RACKET_MMM = ./racket@MMM@ SETUP_BOOT = -O "info@compiler/cm" -l- setup @BOOT_MODE@ $(srcdir)/../setup-go.rkt ../compiled +SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../start/collects-path.rkt" MZSRC = $(srcdir)/src @@ -479,7 +480,7 @@ unix-install: cp $(srcdir)/../start/starter-sh . cd ..; cp bc/starter-sh "$(DESTDIR)$(libpltdir)/starter-sh" cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@" - @RUN_RACKET_CGC@ -cu "$(srcdir)/collects-path.rkt" "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + @RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) "$(DESTDIR)$(libpltdir)/starter@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ cd ..; echo 'CC=@CC@' > "$(BUILDINFO)" cd ..; echo 'CFLAGS=$(CFLAGS) $(CPPFLAGS)' >> "$(BUILDINFO)" cd ..; echo 'OPTIONS=@OPTIONS@' >> "$(BUILDINFO)" @@ -492,7 +493,7 @@ unix-install-cgc: cd ..; $(ICP) bc/racket@CGC@ "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@" cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@" cd ..; cp bc/mzdyn.o "$(DESTDIR)$(libpltdir)/mzdyn.o" - @RUN_RACKET_CGC@ -cu "$(srcdir)/collects-path.rkt" "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + @RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) "$(DESTDIR)$(bindir)/racket@CGC_INSTALLED@@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ unix-install-libs-cgc: cd ..; $(ICP_LIB) bc/libmzgc.@LIBSFX@ "$(DESTDIR)$(libdir)/libmzgc.@LIBSFX@" @@ -512,7 +513,7 @@ unix-install-3m: cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@" $(MAKE) unix-@INSTALL_LIBS_ENABLE@-libs-3m cd ..; $(ICP) bc/mzdyn3m.o "$(DESTDIR)$(libpltdir)/mzdyn3m.o" - @RUN_RACKET_MMM@ -cu "$(srcdir)/collects-path.rkt" "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + @RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) "$(DESTDIR)$(bindir)/racket@MMM_INSTALLED@@EXE_SUFFIX@" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ unix-install-libs-3m: cd ..; $(ICP_LIB) bc/libracket3m.@LIBSFX@ "$(DESTDIR)$(libdir)/libracket3m.@LIBSFX@" @@ -555,7 +556,7 @@ mingw-install-cgc: cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/libracketxxxxxxx.dll" cd ..; $(STRIP_DEBUG) "$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@@EXE_SUFFIX@" cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/MzCOM@CGC_INSTALLED@@EXE_SUFFIX@" - @RUN_RACKET_CGC@ -cu "$(srcdir)/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + @RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ mingw-install-cgc-final: $(NOOP) @@ -573,7 +574,7 @@ mingw-install-3m: cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/libracket3mxxxxxxx.dll" cd ..; $(STRIP_DEBUG) "$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@@EXE_SUFFIX@" cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/MzCOM@MMM_INSTALLED@@EXE_SUFFIX@" - @RUN_RACKET_MMM@ -cu "$(srcdir)/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + @RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ mingw-install-3m-final: $(NOOP) diff --git a/racket/src/bc/gracket/Makefile.in b/racket/src/bc/gracket/Makefile.in index e795471658..c9514673a2 100644 --- a/racket/src/bc/gracket/Makefile.in +++ b/racket/src/bc/gracket/Makefile.in @@ -90,6 +90,7 @@ LINKRESULT_wx_mac = GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@ LINKRESULT = $(LINKRESULT_@WXVARIANT@) SETUP_BOOT = -O "info@compiler/cm" -l- setup @BOOT_MODE@ $(srcdir)/../../setup-go.rkt ../../compiled +SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../../start/collects-path.rkt" # Incremented each time the binaries change: DOWNLOAD_BIN_VERSION = 1 @@ -224,7 +225,7 @@ install-wx_xt-cgc: $(MAKE) @MRLIBINSTALL@-cgc-wx_xt cd ..; $(ICP) gracket/gracket@CGC@@EXE_SUFFIX@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@" cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@" - @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@ + @RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@ install-wx_xt-cgc-final: $(NOOP) @@ -239,7 +240,7 @@ install-wx_xt-3m: $(MAKE) @MRLIBINSTALL@-3m-wx_xt cd ..; $(ICP) gracket/gracket@MMM@@EXE_SUFFIX@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@" cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@" - @RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@ + @RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@ install-wx_xt-3m-final: $(NOOP) @@ -261,7 +262,7 @@ install-wx_mac-cgc: cd ..; $(ICP) -r gracket/GRacket@CGC@.app $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app" @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) $(INSTALL_SETUP_BOOT) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app" "GRacket@CGC@" "GRacket@CGC_CAP_INSTALLED@" /usr/bin/install_name_tool -change "@executable_path/../../../../Racket.framework/Versions/$(FWVERSION)/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)/Racket" $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@" - @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../collects-path.rkt" $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@ + @RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@ @STRIP_DEBUG@ $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@" install-wx_mac-cgc-final: @@ -271,7 +272,7 @@ install-wx_mac-3m: cd ..; $(ICP) -r "gracket/GRacket@MMM@.app" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app" @RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) $(INSTALL_SETUP_BOOT) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app" "GRacket@MMM@" "GRacket@MMM_CAP_INSTALLED@" /usr/bin/install_name_tool -change "@executable_path/../../../../Racket.framework/Versions/$(FWVERSION)_3m/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_3m/Racket" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@" - @RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../collects-path.rkt" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@ + @RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@ @STRIP_DEBUG@ $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@" install-wx_mac-3m-final: diff --git a/racket/src/cs/c/Makefile.in b/racket/src/cs/c/Makefile.in index 5383e795f1..6287176b5b 100644 --- a/racket/src/cs/c/Makefile.in +++ b/racket/src/cs/c/Makefile.in @@ -472,7 +472,7 @@ common-install: $(ICP) starter "$(DESTDIR)$(libpltdir)/starter" $(STRIP_DEBUG) "$(DESTDIR)$(libpltdir)/starter" $(ICP) $(srcdir)/../../start/starter-sh "$(DESTDIR)$(libpltdir)/starter-sh" - $(RACKET) -cu "$(srcdir)/../../bc/collects-path.rkt" "$(DESTDIR)$(libpltdir)/starter" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + $(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(libpltdir)/starter" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ $(MAKE) system-install $(MAKE) include-install $(MAKE) common-@INSTALL_LIBS_ENABLE@-libs @@ -498,8 +498,8 @@ unix-install: $(MAKE) common-install rm -f "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" $(ICP) gracketcs "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" - $(RACKET) -cu "$(srcdir)/../../bc/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ - $(RACKET) -cu "$(srcdir)/../../bc/collects-path.rkt" "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + $(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + $(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(libpltdir)/gracket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ $(MAKE) unix-@INSTALL_LIBS_ENABLE@-libs unix-install-cross: @@ -535,7 +535,7 @@ macos-install: cp $(RKTFWDIR)/boot/petite.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/ cp $(RKTFWDIR)/boot/scheme.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/ cp $(RKTFWDIR)/boot/racket.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/ - $(RACKET) -cu "$(srcdir)/../../bc/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ + $(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" "$(DESTDIR)$(bindir)/racket$(CS_INSTALLED)" $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ $(MAKE) macos-install-gracket CS_GR_INSTALLED="`echo $(CS_INSTALLED) | tr a-z A-Z`" $(MAKE) macos-@INSTALL_LIBS_ENABLE@-libs @@ -545,7 +545,7 @@ macos-install-gracket: $(ICP) -r "GRacketCS.app" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app" $(BOOTSTRAP_RACKET) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app" "GRacketCS" "GRacket$(CS_GR_INSTALLED)" no-up /usr/bin/install_name_tool -change "@executable_path/../../../../bc/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)" - $(RACKET) -cu "$(srcdir)/../../bc/collects-path.rkt" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)" ../../../../collects ../../../../etc + $(BOOTSTRAP_RACKET) "$(srcdir)/../../start/collects-path.rkt" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)" ../../../../collects ../../../../etc $(STRIP_DEBUG) $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app/Contents/MacOS/GRacket$(CS_GR_INSTALLED)" rm -rf $(DESTDIR)"$(libpltdir)/Starter.app" $(ICP) -r Starter.app $(DESTDIR)"$(libpltdir)/." diff --git a/racket/src/start/collects-path.rkt b/racket/src/start/collects-path.rkt index 65c3ddcb5b..d48bb39899 100644 --- a/racket/src/start/collects-path.rkt +++ b/racket/src/start/collects-path.rkt @@ -1,28 +1,41 @@ +#lang racket/base +(require racket/cmdline + racket/system) ;; This module is executed by the install process to update ;; the embedded path to "collects" and "lib" in an executable. -;; written in #%kernel because it's loaded with -c (ie, no compiled files) -(module collects-path '#%kernel - (define-values (fix-one) - (lambda (label pos) - (let-values ([(dest) (vector-ref (current-command-line-arguments) 0)] - [(path) (vector-ref (current-command-line-arguments) pos)]) - (let-values ([(i o) (open-input-output-file dest 'update)]) - (let-values ([(m) (regexp-match-positions label i)] - [(path) (if (string? path) - (string->path path) - path)]) - (if m - (void) - (error 'set-collects-path - "cannot find collection-path label in executable file")) - (file-position o (cdar m)) - (write-bytes (path->bytes path) o) - (write-byte 0 o) - (write-byte 0 o) - (close-input-port i) - (close-output-port o)))))) +(command-line + #:args (dest dir-path config-path) - (fix-one #rx#"coLLECTs dIRECTORy:" 1) - (fix-one #rx#"coNFIg dIRECTORy:" 2)) + ;; For a Mac OS executable, first strip any signature that the + ;; compiler may have added + (when (call-with-input-file* + dest + (lambda (i) + (define bstr (read-bytes 4 i)) + (and (= 4 (bytes-length bstr)) + (member (integer-bytes->integer bstr #f) + '(#xFeedFace #xFeedFacf))))) + (define codesign (find-executable-path "codesign")) + (when codesign + (system* codesign "--remove-signature" dest))) + + (define (fix-one label path-in) + (define-values (i o) (open-input-output-file dest #:exists 'update)) + (define m (regexp-match-positions label i)) + (define path (if (string? path-in) + (string->path path-in) + path-in)) + (unless m + (error 'set-collects-path + "cannot find collection-path label in executable file")) + (file-position o (cdar m)) + (write-bytes (path->bytes path) o) + (write-byte 0 o) + (write-byte 0 o) + (close-input-port i) + (close-output-port o)) + + (fix-one #rx#"coLLECTs dIRECTORy:" dir-path) + (fix-one #rx#"coNFIg dIRECTORy:" config-path))