From e096e4d5a4eff427db431155e76bbf4942d7c8e1 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 8 Feb 2011 15:08:34 -0600 Subject: [PATCH] moved find-exe to its own top-level file --- collects/compiler/embed-unit.rkt | 44 ++---------------------- collects/compiler/find-exe.rkt | 45 +++++++++++++++++++++++++ collects/scribblings/raco/exe-api.scrbl | 12 +++++++ 3 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 collects/compiler/find-exe.rkt diff --git a/collects/compiler/embed-unit.rkt b/collects/compiler/embed-unit.rkt index 4385ad07d3..84a95ee717 100644 --- a/collects/compiler/embed-unit.rkt +++ b/collects/compiler/embed-unit.rkt @@ -16,7 +16,8 @@ "private/macfw.ss" "private/mach-o.ss" "private/windlldir.ss" - "private/collects-path.ss") + "private/collects-path.ss" + "find-exe.rkt") (provide compiler:embed@) @@ -61,47 +62,6 @@ (path-replace-suffix name #""))) dest)) - ;; Find executable relative to the "mzlib" - ;; collection. - (define (find-exe mred? variant) - (let* ([base (if mred? - (find-gui-bin-dir) - (find-console-bin-dir))] - [fail - (lambda () - (error 'create-embedding-executable - "can't find ~a executable for variant ~a" - (if mred? "GRacket" "Racket") - variant))]) - (let ([exe (build-path - base - (case (system-type) - [(macosx) - (cond - [(not mred?) - ;; Need Racket: - (string-append "racket" (variant-suffix variant #f))] - [mred? - ;; Need GRacket: - (let ([sfx (variant-suffix variant #t)]) - (build-path (format "GRacket~a.app" sfx) - "Contents" "MacOS" - (format "GRacket~a" sfx)))])] - [(windows) - (format "~a~a.exe" (if mred? - "Gracket" - "Racket") - (variant-suffix variant #t))] - [(unix) - (format "~a~a" (if mred? - "gracket" - "racket") - (variant-suffix variant #f))]))]) - (unless (or (file-exists? exe) - (directory-exists? exe)) - (fail)) - exe))) - (define exe-suffix? (delay (equal? #"i386-cygwin" (path->bytes (system-library-subpath))))) diff --git a/collects/compiler/find-exe.rkt b/collects/compiler/find-exe.rkt new file mode 100644 index 0000000000..a98dba1891 --- /dev/null +++ b/collects/compiler/find-exe.rkt @@ -0,0 +1,45 @@ +#lang racket/base +(require setup/dirs + setup/variant) +(provide find-exe) + +;; Find executable relative to the "mzlib" +;; collection. +(define (find-exe mred? [variant (system-type 'gc)]) + (let* ([base (if mred? + (find-gui-bin-dir) + (find-console-bin-dir))] + [fail + (lambda () + (error 'find-exe + "can't find ~a executable for variant ~a" + (if mred? "GRacket" "Racket") + variant))]) + (let ([exe (build-path + base + (case (system-type) + [(macosx) + (cond + [(not mred?) + ;; Need Racket: + (string-append "racket" (variant-suffix variant #f))] + [mred? + ;; Need GRacket: + (let ([sfx (variant-suffix variant #t)]) + (build-path (format "GRacket~a.app" sfx) + "Contents" "MacOS" + (format "GRacket~a" sfx)))])] + [(windows) + (format "~a~a.exe" (if mred? + "Gracket" + "Racket") + (variant-suffix variant #t))] + [(unix) + (format "~a~a" (if mred? + "gracket" + "racket") + (variant-suffix variant #f))]))]) + (unless (or (file-exists? exe) + (directory-exists? exe)) + (fail)) + exe))) diff --git a/collects/scribblings/raco/exe-api.scrbl b/collects/scribblings/raco/exe-api.scrbl index 9f9c888fb2..e781c14323 100644 --- a/collects/scribblings/raco/exe-api.scrbl +++ b/collects/scribblings/raco/exe-api.scrbl @@ -425,3 +425,15 @@ Includes the identifiers provided by @racketmodname[compiler/embed].} @defthing[compiler:embed@ unit?]{ A unit that imports nothing and exports @racket[compiler:embed^].} + +@section{Finding the name of the executable} + +@defmodule[compiler/find-exe] + +@defproc[(find-exe [gracket? boolean?] + [variant (or/c 'cgc '3m) (system-type 'gc)]) + path?]{ + + Finds the path to the racket (or gracket) executable. +} + \ No newline at end of file