From b1dfb61223be65c41e59ae610dbc68bccd15c0eb Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 17 Oct 2018 12:55:53 -0600 Subject: [PATCH] racocs exe: fill in implementation --- racket/collects/compiler/distribute.rkt | 9 +++++++-- racket/collects/compiler/embed.rkt | 5 ++++- racket/src/cs/linklet/read.ss | 6 +++--- racket/src/cs/main.sps | 23 +++++++++++++++++++++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/racket/collects/compiler/distribute.rkt b/racket/collects/compiler/distribute.rkt index 8d43200890..5a58aa6f3a 100644 --- a/racket/collects/compiler/distribute.rkt +++ b/racket/collects/compiler/distribute.rkt @@ -237,10 +237,15 @@ [dll-dir (find-framework fw-name)]) (copy-file* (build-path dll-dir fw-name) (build-path lib-dir fw-name)) + (let ([boot-src (build-path dll-dir sub-dir "boot")]) + (when (directory-exists? boot-src) + (copy-directory/files* + boot-src + (build-path lib-dir sub-dir "boot")))) (let ([rsrc-src (build-path dll-dir sub-dir "Resources")]) (when (directory-exists? rsrc-src) - (copy-directory/files* - rsrc-src + (copy-directory/files* + rsrc-src (build-path lib-dir sub-dir "Resources"))))))) (define (find-framework fw-name) diff --git a/racket/collects/compiler/embed.rkt b/racket/collects/compiler/embed.rkt index c398782e1b..dabc5bb160 100644 --- a/racket/collects/compiler/embed.rkt +++ b/racket/collects/compiler/embed.rkt @@ -484,7 +484,10 @@ (let ([code (or ready-code (get-module-code just-filename #:submodule-path submod-path - "compiled" + (let ([l (use-compiled-file-paths)]) + (if (pair? l) + (car l) + "compiled")) compiler (if on-extension (lambda (f l?) diff --git a/racket/src/cs/linklet/read.ss b/racket/src/cs/linklet/read.ss index e21fc42a29..a654a9f79f 100644 --- a/racket/src/cs/linklet/read.ss +++ b/racket/src/cs/linklet/read.ss @@ -32,8 +32,8 @@ sha-1)))))] [(equal? tag (char->integer #\D)) (unless initial? - (raise-argument-error 'read-compiled-linklet - "expected a linklet bundle")) + (raise-arguments-error 'read-compiled-linklet + "expected a linklet bundle")) (read-bundle-directory in start-pos)] [else (raise-arguments-error 'read-compiled-linklet @@ -69,7 +69,7 @@ (let ([bundle (cond [(equal? '#vu8(35 126) bstr) - (read-compiled-linklet in)] + (read-compiled-linklet-or-directory in #f)] [(equal? '#vu8(35 102) bstr) #f] [else diff --git a/racket/src/cs/main.sps b/racket/src/cs/main.sps index 3edf1bb0d3..3929d1a990 100644 --- a/racket/src/cs/main.sps +++ b/racket/src/cs/main.sps @@ -21,6 +21,7 @@ load dynamic-require namespace-require + embedded-load module-declared? module->language-info module-path-index-join @@ -283,6 +284,28 @@ (eval (read (open-input-string expr)))) loads)) (flags-loop rest-args (see saw 'non-config)))] + [("-k") + (let*-values ([(n rest-args) (next-arg "starting and ending offsets" arg within-arg args)] + [(m rest-args) (next-arg "first ending offset" arg within-arg (cons "-k" rest-args))] + [(p rest-args) (next-arg "second ending offset" arg within-arg (cons "-k" rest-args))]) + (let* ([add-segment-offset + (lambda (s what) + (let ([n (#%string->number s)]) + (unless (exact-integer? n) + (raise-user-error 'racket "bad ~a: ~a" what s)) + (#%number->string (+ n segment-offset))))] + [n (add-segment-offset n "starting offset")] + [m (add-segment-offset m "first ending offset")] + [p (add-segment-offset p "second ending offset")]) + (set! loads + (cons + (lambda () + ;; (register-embedded-load n m) + (embedded-load n m #f #t) + (embedded-load m p #f #f)) + loads))) + (no-init! saw) + (flags-loop rest-args (see saw 'non-config)))] [("-m" "--main") (set! loads (cons