Use a temporary directory to eliminate DrDr races in running benchmarks.

This commit is contained in:
Sam Tobin-Hochstadt 2011-08-17 11:24:53 -04:00
parent 9608c0f041
commit 5979a42448
2 changed files with 12 additions and 4 deletions

View File

@ -1,8 +1,8 @@
#lang racket/base #lang racket/base
(provide (rename-out (module-begin #%module-begin))) (provide (rename-out (module-begin #%module-begin)))
(require (prefix-in ts: typed/scheme/base) (require (prefix-in ts: typed/racket/base)
(for-syntax racket/base (prefix-in r: typed-scheme/typed-reader)) (for-syntax racket/base (prefix-in r: typed-scheme/typed-reader))
racket/include typed/scheme/base) racket/include typed/racket/base racket/file)
(define-syntax (module-begin stx) (define-syntax (module-begin stx)
(let* ([name (symbol->string (syntax-property stx 'enclosing-module-name))] (let* ([name (symbol->string (syntax-property stx 'enclosing-module-name))]
@ -21,4 +21,9 @@
"../wrap-common.rkt" "../wrap-common.rkt"
[copy-input (-> Void)] [copy-input (-> Void)]
[remove-input (-> Void)]) [remove-input (-> Void)])
(copy-input) (include/reader #,fname r:read-syntax) (remove-input)))) (define dir (make-temporary-file "input-tmp-~a" 'directory))
(current-directory dir)
(copy-input)
(include/reader #,fname r:read-syntax)
(remove-input)
(delete-directory dir))))

View File

@ -10,7 +10,10 @@
(define tokens (rest (syntax->datum stx))) (define tokens (rest (syntax->datum stx)))
(define r5rs? (memq 'r5rs tokens)) (define r5rs? (memq 'r5rs tokens))
#`(#%module-begin #`(#%module-begin
(define dir (make-temporary-file "input-tmp-~a" 'directory))
(current-directory dir)
(copy-input) (copy-input)
#,@(if r5rs? #'((require r5rs)) #'()) #,@(if r5rs? #'((require r5rs)) #'())
(include #,(format "~a.sch" name)) (include #,(format "~a.sch" name))
(remove-input))) (remove-input)
(delete-directory dir)))