fix `planet'-path bug in module-name resolver for generated eecutables
This commit is contained in:
parent
41551a4987
commit
195b37831b
|
@ -657,37 +657,37 @@
|
|||
(cddr name)))
|
||||
(ss->rkt (cadr name))))
|
||||
(if (eq? 'planet (car name))
|
||||
(if (null? (cddr name))
|
||||
;; need to normalize:
|
||||
(let-values ([(s) (if (symbol? (cadr name))
|
||||
(symbol->string (cadr name))
|
||||
(cadr name))])
|
||||
(letrec-values ([(split)
|
||||
(lambda (s rx suffix-after)
|
||||
(let-values ([(m) (regexp-match-positions
|
||||
rx
|
||||
s)])
|
||||
(if m
|
||||
(cons (substring s 0 (caar m))
|
||||
(split (substring s (cdar m))
|
||||
rx
|
||||
(- suffix-after 1)))
|
||||
(list
|
||||
(if (suffix-after . <= . 0)
|
||||
(if (regexp-match? #rx"[.]" s)
|
||||
s
|
||||
(string-append s ".rkt"))
|
||||
s)))))]
|
||||
[(last-of)
|
||||
(lambda (l)
|
||||
(if (null? (cdr l))
|
||||
(car l)
|
||||
(last-of (cdr l))))]
|
||||
[(not-last)
|
||||
(lambda (l)
|
||||
(if (null? (cdr l))
|
||||
null
|
||||
(cons (car l) (not-last (cdr l)))))])
|
||||
(letrec-values ([(split)
|
||||
(lambda (s rx suffix-after)
|
||||
(let-values ([(m) (regexp-match-positions
|
||||
rx
|
||||
s)])
|
||||
(if m
|
||||
(cons (substring s 0 (caar m))
|
||||
(split (substring s (cdar m))
|
||||
rx
|
||||
(- suffix-after 1)))
|
||||
(list
|
||||
(if (suffix-after . <= . 0)
|
||||
(if (regexp-match? #rx"[.]" s)
|
||||
s
|
||||
(string-append s ".rkt"))
|
||||
s)))))]
|
||||
[(last-of)
|
||||
(lambda (l)
|
||||
(if (null? (cdr l))
|
||||
(car l)
|
||||
(last-of (cdr l))))]
|
||||
[(not-last)
|
||||
(lambda (l)
|
||||
(if (null? (cdr l))
|
||||
null
|
||||
(cons (car l) (not-last (cdr l)))))])
|
||||
(if (null? (cddr name))
|
||||
;; need to normalize:
|
||||
(let-values ([(s) (if (symbol? (cadr name))
|
||||
(symbol->string (cadr name))
|
||||
(cadr name))])
|
||||
(let-values ([(parts) (split s #rx"/" 2)])
|
||||
(let-values ([(vparts) (split (cadr parts) #rx":" +inf.0)])
|
||||
(cons 'planet
|
||||
|
@ -705,13 +705,23 @@
|
|||
(cdddr parts))))
|
||||
(if (null? (cddr parts))
|
||||
null
|
||||
(not-last (cddr parts))))))))))
|
||||
;; already in long form:
|
||||
name)
|
||||
(not-last (cddr parts)))))))))
|
||||
;; already in long form; move subcollects to end:
|
||||
(let-values ([(s) (cadr name)])
|
||||
(let-values ([(parts) (split s #rx"/" +inf.0)])
|
||||
(if (= 1 (length parts))
|
||||
name
|
||||
(list* 'planet
|
||||
(last-of parts)
|
||||
(caddr name)
|
||||
(append
|
||||
(cdddr name)
|
||||
(not-last parts))))))))
|
||||
#f))
|
||||
#f))]
|
||||
[(planet-match?)
|
||||
(lambda (a b)
|
||||
(eprintf "pmatch? ~s ~s\n" a b)
|
||||
(if (equal? (cons (car a) (cddr a))
|
||||
(cons (car b) (cddr b)))
|
||||
(let-values ([(a) (cadr a)]
|
||||
|
|
|
@ -1694,6 +1694,11 @@ path/s is either such a string or a list of them.
|
|||
"collects/tests/racket/embed-me5.rkt" drdr:command-line (gracket-text "-t" *)
|
||||
"collects/tests/racket/embed-me7.rkt" drdr:command-line (gracket-text "-t" *)
|
||||
"collects/tests/racket/embed-me9.rkt" drdr:command-line #f
|
||||
"collects/tests/racket/embed-planet-1/alt.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/embed-planet-1/main.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/embed-planet-1/other.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/embed-planet-2/main.ss" drdr:command-line #f
|
||||
"collects/tests/racket/embed-planet-2/private/sub.rkt" drdr:command-line #f
|
||||
"collects/tests/racket/embed.rktl" drdr:command-line #f
|
||||
"collects/tests/racket/etc.rktl" drdr:command-line (racket "-f" *)
|
||||
"collects/tests/racket/expand.rktl" drdr:command-line #f
|
||||
|
|
6
collects/tests/racket/embed-planet-1/alt.rkt
Normal file
6
collects/tests/racket/embed-planet-1/alt.rkt
Normal file
|
@ -0,0 +1,6 @@
|
|||
#lang racket/base
|
||||
(require "main.ss")
|
||||
|
||||
(with-output-to-file "stdout"
|
||||
#:exists 'append
|
||||
(lambda () (displayln "alt")))
|
4
collects/tests/racket/embed-planet-1/main.rkt
Normal file
4
collects/tests/racket/embed-planet-1/main.rkt
Normal file
|
@ -0,0 +1,4 @@
|
|||
#lang racket/base
|
||||
|
||||
(with-output-to-file "stdout"
|
||||
(lambda () (displayln "one")))
|
6
collects/tests/racket/embed-planet-1/other.rkt
Normal file
6
collects/tests/racket/embed-planet-1/other.rkt
Normal file
|
@ -0,0 +1,6 @@
|
|||
#lang racket/base
|
||||
(require (planet racket-tester/p2))
|
||||
|
||||
(with-output-to-file "stdout"
|
||||
#:exists 'append
|
||||
(lambda () (displayln "other")))
|
5
collects/tests/racket/embed-planet-2/main.ss
Normal file
5
collects/tests/racket/embed-planet-2/main.ss
Normal file
|
@ -0,0 +1,5 @@
|
|||
#lang racket/base
|
||||
|
||||
|
||||
(with-output-to-file "stdout"
|
||||
(lambda () (displayln "two")))
|
6
collects/tests/racket/embed-planet-2/private/sub.rkt
Normal file
6
collects/tests/racket/embed-planet-2/private/sub.rkt
Normal file
|
@ -0,0 +1,6 @@
|
|||
#lang racket/base
|
||||
(require "../main.ss")
|
||||
|
||||
(with-output-to-file "stdout"
|
||||
#:exists 'append
|
||||
(lambda () (displayln "sub")))
|
|
@ -234,18 +234,19 @@
|
|||
`(,(flags "ne") "(out \"\u7237...\U1D671\n\")"))
|
||||
(try-exe dest "\uA9, \u7238, and \U1D670\n\u7237...\U1D671\n" mred?))
|
||||
|
||||
(mz-tests #f)
|
||||
(mz-tests #t)
|
||||
(define (try-basic)
|
||||
(mz-tests #f)
|
||||
(mz-tests #t)
|
||||
|
||||
(begin
|
||||
(prepare mr-dest "embed-me5.rkt")
|
||||
(make-embedding-executable
|
||||
mr-dest #t #f
|
||||
`((#t (lib "embed-me5.rkt" "tests" "racket")))
|
||||
null
|
||||
#f
|
||||
`("-l" "tests/racket/embed-me5.rkt"))
|
||||
(try-exe mr-dest "This is 5: #<class:button%>\n" #t))
|
||||
(begin
|
||||
(prepare mr-dest "embed-me5.rkt")
|
||||
(make-embedding-executable
|
||||
mr-dest #t #f
|
||||
`((#t (lib "embed-me5.rkt" "tests" "racket")))
|
||||
null
|
||||
#f
|
||||
`("-l" "tests/racket/embed-me5.rkt"))
|
||||
(try-exe mr-dest "This is 5: #<class:button%>\n" #t)))
|
||||
|
||||
;; Try the mzc interface:
|
||||
(require setup/dirs
|
||||
|
@ -306,8 +307,9 @@
|
|||
|
||||
(void)))
|
||||
|
||||
(mzc-tests #f)
|
||||
(mzc-tests #t)
|
||||
(define (try-mzc)
|
||||
(mzc-tests #f)
|
||||
(mzc-tests #t))
|
||||
|
||||
(require dynext/file)
|
||||
(define (extension-test mred?)
|
||||
|
@ -364,32 +366,34 @@
|
|||
(path->string (build-path (collection-path "tests" "racket") "embed-me10.rkt")))
|
||||
(try-exe (mk-dest mred?) "#t\n" mred?)))
|
||||
|
||||
(extension-test #f)
|
||||
(extension-test #t)
|
||||
(define (try-extension)
|
||||
(extension-test #f)
|
||||
(extension-test #t))
|
||||
|
||||
;; A GRacket-specific test with mzc:
|
||||
(parameterize ([current-directory (find-system-path 'temp-dir)])
|
||||
(system* mzc
|
||||
"--gui-exe"
|
||||
(path->string (mk-dest #t))
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me5.rkt")))
|
||||
(try-exe (mk-dest #t) "This is 5: #<class:button%>\n" #t))
|
||||
(define (try-gracket)
|
||||
;; A GRacket-specific test with mzc:
|
||||
(parameterize ([current-directory (find-system-path 'temp-dir)])
|
||||
(system* mzc
|
||||
"--gui-exe"
|
||||
(path->string (mk-dest #t))
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me5.rkt")))
|
||||
(try-exe (mk-dest #t) "This is 5: #<class:button%>\n" #t))
|
||||
|
||||
;; Another GRacket-specific: try embedding plot, which has extra DLLs and font files:
|
||||
(parameterize ([current-directory (find-system-path 'temp-dir)])
|
||||
(define direct (build-path (find-system-path 'temp-dir) "direct.ps"))
|
||||
;; Another GRacket-specific: try embedding plot, which has extra DLLs and font files:
|
||||
(parameterize ([current-directory (find-system-path 'temp-dir)])
|
||||
(define direct (build-path (find-system-path 'temp-dir) "direct.ps"))
|
||||
|
||||
(test #t
|
||||
system* (build-path (find-console-bin-dir) "mred")
|
||||
"-qu"
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me7.rkt"))
|
||||
(path->string direct))
|
||||
(test #t
|
||||
system* (build-path (find-console-bin-dir) "mred")
|
||||
"-qu"
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me7.rkt"))
|
||||
(path->string direct))
|
||||
|
||||
(system* mzc
|
||||
"--gui-exe"
|
||||
(path->string (mk-dest #t))
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me7.rkt")))
|
||||
(try-exe (mk-dest #t) "plotted\n" #t))
|
||||
(system* mzc
|
||||
"--gui-exe"
|
||||
(path->string (mk-dest #t))
|
||||
(path->string (build-path (collection-path "tests" "racket") "embed-me7.rkt")))
|
||||
(try-exe (mk-dest #t) "plotted\n" #t)))
|
||||
|
||||
;; Try including source that needs a reader extension
|
||||
|
||||
|
@ -417,7 +421,60 @@
|
|||
(try-exe dest "It goes to eleven!\n" mred?)
|
||||
(putenv "ELEVEN" "done"))
|
||||
|
||||
(try-reader-test #f)
|
||||
(try-reader-test #t)
|
||||
(define (try-reader)
|
||||
(try-reader-test #f)
|
||||
(try-reader-test #t))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(define planet (build-path (find-console-bin-dir) (if (eq? 'windows (system-type))
|
||||
"planet.exe"
|
||||
"planet")))
|
||||
|
||||
(define (try-planet)
|
||||
(system* planet "link" "racket-tester" "p1.plt" "1" "0"
|
||||
(path->string (collection-path "tests" "racket" "embed-planet-1")))
|
||||
(system* planet "link" "racket-tester" "p2.plt" "2" "2"
|
||||
(path->string (collection-path "tests" "racket" "embed-planet-2")))
|
||||
|
||||
(let ([go (lambda (path expected)
|
||||
(printf "Trying planet ~s...\n" path)
|
||||
(let ([tmp (make-temporary-file)]
|
||||
[dest (mk-dest #f)])
|
||||
(with-output-to-file tmp
|
||||
#:exists 'truncate
|
||||
(lambda ()
|
||||
(printf "#lang racket/base (require ~s)\n" path)))
|
||||
(system* mzc "--exe" (path->string dest) (path->string tmp))
|
||||
(try-exe dest expected #f)
|
||||
|
||||
(delete-directory/files dest)
|
||||
|
||||
(delete-file tmp)))])
|
||||
(go '(planet racket-tester/p1) "one\n")
|
||||
(go '(planet "racket-tester/p1:1") "one\n")
|
||||
(go '(planet "racket-tester/p1:1:0") "one\n")
|
||||
(go '(planet "racket-tester/p1:1:0/main.ss") "one\n")
|
||||
(go '(planet racket-tester/p2) "two\n")
|
||||
|
||||
(go '(planet racket-tester/p1/alt) "one\nalt\n")
|
||||
(go '(planet racket-tester/p1/other) "two\nother\n")
|
||||
(go '(planet "private/sub.rkt" ("racket-tester" "p2.plt" 2 0)) "two\nsub\n")
|
||||
|
||||
(void))
|
||||
|
||||
(system* planet "unlink" "racket-tester" "p1.plt" "1" "0")
|
||||
(system* planet "unlink" "racket-tester" "p2.plt" "2" "2"))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(try-basic)
|
||||
(try-mzc)
|
||||
(try-extension)
|
||||
(try-gracket)
|
||||
(try-reader)
|
||||
(try-planet)
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(report-errs)
|
||||
|
|
Loading…
Reference in New Issue
Block a user