diff --git a/gui-lib/info.rkt b/gui-lib/info.rkt index 6b284a82..2e38d4bc 100644 --- a/gui-lib/info.rkt +++ b/gui-lib/info.rkt @@ -4,7 +4,7 @@ (define deps '("srfi-lite-lib" "data-lib" - ["base" #:version "6.4"] + ["base" #:version "6.5.0.2"] "syntax-color-lib" ["draw-lib" #:version "1.13"] ["snip-lib" #:version "1.2"] diff --git a/gui-lib/mred/info.rkt b/gui-lib/mred/info.rkt index 7f7cafc5..5e9f8f5d 100644 --- a/gui-lib/mred/info.rkt +++ b/gui-lib/mred/info.rkt @@ -1,7 +1,7 @@ #lang info (define version '(400)) -(define post-install-collection "installer.rkt") +(define install-collection "installer.rkt") (define copy-man-pages '("mred.1")) (define release-note-files diff --git a/gui-lib/mred/installer.rkt b/gui-lib/mred/installer.rkt index 850968e0..a3e17b05 100644 --- a/gui-lib/mred/installer.rkt +++ b/gui-lib/mred/installer.rkt @@ -3,44 +3,71 @@ compiler/embed racket/file racket/path + setup/dirs setup/cross-system) -(provide post-installer) +(provide installer) ;; Platforms that get a `MrEd' executable: (define mred-exe-systems '(unix)) -(define (post-installer path coll user?) +(define (installer path coll user? no-main?) + (unless no-main? + (do-installer path coll user? #f) + (when (and (not user?) + (find-config-tethered-console-bin-dir)) + (do-installer path coll #f #t))) + (when (find-addon-tethered-console-bin-dir) + (do-installer path coll #t #t))) + +(define (do-installer path coll user? tethered?) (define variants (available-mred-variants)) (when (memq (cross-system-type) mred-exe-systems) (for ([v variants] #:when (memq v '(3m cgc))) (parameterize ([current-launcher-variant v]) (create-embedding-executable - (prep-dir (mred-program-launcher-path "MrEd" #:user? user?)) - #:cmdline '("-I" "scheme/gui/init") + (prep-dir (mred-program-launcher-path "MrEd" #:user? user? #:tethered? tethered?)) + #:cmdline (append + (if tethered? (if user? (addon-flags) (config-flags)) null) + '("-I" "scheme/gui/init")) #:variant v #:launcher? #t #:gracket? #t #:aux `((relative? . ,(not user?))))))) ;; add a mred-text executable that uses the -z flag (preferring a script) + (define tether-mode (and tethered? (if user? 'addon 'config))) (for ([vs '((script-3m 3m) (script-cgc cgc))]) (let ([v (findf (lambda (v) (memq v variants)) vs)]) (when v (parameterize ([current-launcher-variant v]) (make-gracket-launcher + #:tether-mode tether-mode '("-I" "scheme/gui/init" "-z") - (prep-dir (mred-program-launcher-path "mred-text" #:user? user?)) - `([relative? . ,(not user?)] [subsystem . console] [single-instance? . #f])))))) + (prep-dir (mred-program-launcher-path "mred-text" #:user? user? #:tethered? tethered?)) + `([relative? . ,(not (or user? tethered?))] + [subsystem . console] + [single-instance? . #f])))))) ;; add bin/mred script under OS X (when (eq? 'macosx (cross-system-type)) (for ([v variants] #:when (memq v '(script-3m script-cgc))) (parameterize ([current-launcher-variant v]) (make-gracket-launcher - '() - (prep-dir (mred-program-launcher-path "MrEd" #:user? user?)) - '([exe-name . "GRacket"] [relative? . ,(not user?)] [exe-is-gracket . #t])))))) + #:tether-mode tether-mode + null + (prep-dir (mred-program-launcher-path "MrEd" #:user? user? #:tethered? tethered?)) + `([exe-name . "GRacket"] + [relative? . ,(not (or user? tethered?))] + [exe-is-gracket . #t])))))) (define (prep-dir p) (define dir (path-only p)) (make-directory* dir) p) + +(define (addon-flags) + (append + (config-flags) + (list "-A" (path->string (find-system-path 'addon-dir))))) + +(define (config-flags) + (list "-C" (path->string (find-config-dir)))) diff --git a/gui-lib/racket/gui/info.rkt b/gui-lib/racket/gui/info.rkt index 481f2b13..754fd76d 100644 --- a/gui-lib/racket/gui/info.rkt +++ b/gui-lib/racket/gui/info.rkt @@ -1,4 +1,4 @@ #lang info -(define post-install-collection "installer.rkt") +(define install-collection "installer.rkt") (define copy-man-pages '("gracket.1")) diff --git a/gui-lib/racket/gui/installer.rkt b/gui-lib/racket/gui/installer.rkt index adc43183..55993a52 100644 --- a/gui-lib/racket/gui/installer.rkt +++ b/gui-lib/racket/gui/installer.rkt @@ -1,32 +1,47 @@ #lang racket/base (require launcher racket/path - racket/file) + racket/file + setup/dirs) -(provide post-installer) +(provide installer) -(define (post-installer path collection user?) +(define (installer path coll user? no-main?) + (unless no-main? + (do-installer path coll user? #f) + (when (and (not user?) + (find-config-tethered-console-bin-dir)) + (do-installer path coll #f #t))) + (when (find-addon-tethered-console-bin-dir) + (do-installer path coll #t #t))) + +(define (do-installer path collection user? tethered?) (define variants (available-mred-variants)) + (define tether-mode (and tethered? (if user? 'addon 'config))) ;; add a gracket-text executable that uses the -z flag (preferring a script) (for ([vs '((script-3m 3m) (script-cgc cgc))]) (let ([v (findf (lambda (v) (memq v variants)) vs)]) (when v (parameterize ([current-launcher-variant v]) (make-mred-launcher + #:tether-mode tether-mode '("-z") (prep-dir - (mred-program-launcher-path "gracket-text" #:user? user?)) - `([subsystem . console] [single-instance? . #f] - [relative? . ,(not user?)])))))) + (mred-program-launcher-path "gracket-text" #:user? user? #:tethered? tethered?)) + `([subsystem . console] + [single-instance? . #f] + [relative? . ,(not (or user? tethered?))])))))) ;; add a bin/gracket (in addition to lib/gracket) (for ([vs '((script-3m 3m) (script-cgc cgc))]) (let ([v (findf (lambda (v) (memq v variants)) vs)]) (when v (parameterize ([current-launcher-variant v]) - (make-mred-launcher null + (make-mred-launcher #:tether-mode tether-mode + null (prep-dir - (mred-program-launcher-path "GRacket" #:user? user?)) - '([exe-name . "GRacket"] [relative? . ,(not user?)] + (mred-program-launcher-path "GRacket" #:user? user? #:tethered? tethered?)) + `([exe-name . "GRacket"] + [relative? . ,(not (or user? tethered?))] [exe-is-gracket . #t]))))))) (define (prep-dir p)