setup/dirs et al.: thread-safe promises
Use `delay/sync` instead of `delay`.
This commit is contained in:
parent
7ac92703dc
commit
d96bfb6e29
|
@ -221,11 +221,11 @@
|
||||||
(loop hi (* 2 offset)))))))
|
(loop hi (* 2 offset)))))))
|
||||||
|
|
||||||
(define get-min-seconds
|
(define get-min-seconds
|
||||||
(let ([d (delay (find-extreme-date-seconds (current-seconds) -1))])
|
(let ([d (delay/sync (find-extreme-date-seconds (current-seconds) -1))])
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(force d))))
|
(force d))))
|
||||||
(define get-max-seconds
|
(define get-max-seconds
|
||||||
(let ([d (delay (find-extreme-date-seconds (current-seconds) 1))])
|
(let ([d (delay/sync (find-extreme-date-seconds (current-seconds) 1))])
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(force d))))
|
(force d))))
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
;; config: definitions
|
;; config: definitions
|
||||||
|
|
||||||
(define config-table
|
(define config-table
|
||||||
(delay (let ([d (find-config-dir)])
|
(delay/sync
|
||||||
|
(let ([d (find-config-dir)])
|
||||||
(if d
|
(if d
|
||||||
(let ([p (build-path d "config.rktd")])
|
(let ([p (build-path d "config.rktd")])
|
||||||
(if (file-exists? p)
|
(if (file-exists? p)
|
||||||
|
@ -45,7 +46,7 @@
|
||||||
(find-main-collects))]))
|
(find-main-collects))]))
|
||||||
|
|
||||||
(define-syntax-rule (define-config name key wrap)
|
(define-syntax-rule (define-config name key wrap)
|
||||||
(define name (delay
|
(define name (delay/sync
|
||||||
(wrap
|
(wrap
|
||||||
(hash-ref (force config-table) key #f)))))
|
(hash-ref (force config-table) key #f)))))
|
||||||
|
|
||||||
|
@ -104,7 +105,9 @@
|
||||||
(combine-search (force config:collects-search-dirs)
|
(combine-search (force config:collects-search-dirs)
|
||||||
(list (find-collects-dir))))
|
(list (find-collects-dir))))
|
||||||
(define user-collects-dir
|
(define user-collects-dir
|
||||||
(delay (simplify-path (build-path (find-system-path 'addon-dir) (get-installation-name) "collects"))))
|
(delay/sync (simplify-path (build-path (find-system-path 'addon-dir)
|
||||||
|
(get-installation-name)
|
||||||
|
"collects"))))
|
||||||
(define (find-user-collects-dir)
|
(define (find-user-collects-dir)
|
||||||
(force user-collects-dir))
|
(force user-collects-dir))
|
||||||
(define (get-collects-search-dirs)
|
(define (get-collects-search-dirs)
|
||||||
|
@ -139,7 +142,9 @@
|
||||||
(define-finder provide config:id id get-false default)
|
(define-finder provide config:id id get-false default)
|
||||||
(provide user-id)
|
(provide user-id)
|
||||||
(define user-dir
|
(define user-dir
|
||||||
(delay (simplify-path (build-path (find-system-path 'addon-dir) (get-installation-name) user-default))))
|
(delay/sync (simplify-path (build-path (find-system-path 'addon-dir)
|
||||||
|
(get-installation-name)
|
||||||
|
user-default))))
|
||||||
(define (user-id)
|
(define (user-id)
|
||||||
(force user-dir)))]
|
(force user-dir)))]
|
||||||
[(_ provide config:id id user-id config:search-id search-id default)
|
[(_ provide config:id id user-id config:search-id search-id default)
|
||||||
|
@ -165,7 +170,7 @@
|
||||||
#'(begin
|
#'(begin
|
||||||
(provide id)
|
(provide id)
|
||||||
(define dir
|
(define dir
|
||||||
(delay
|
(delay/sync
|
||||||
(or (force config:id) (get-default))))
|
(or (force config:id) (get-default))))
|
||||||
(define (id)
|
(define (id)
|
||||||
(force dir))))]
|
(force dir))))]
|
||||||
|
@ -174,7 +179,7 @@
|
||||||
#'(begin
|
#'(begin
|
||||||
(provide id)
|
(provide id)
|
||||||
(define dir
|
(define dir
|
||||||
(delay
|
(delay/sync
|
||||||
(or (force config:id)
|
(or (force config:id)
|
||||||
(let ([p (find-collects-dir)])
|
(let ([p (find-collects-dir)])
|
||||||
(and p (simplify-path (build-path p 'up default)))))))
|
(and p (simplify-path (build-path p 'up default)))))))
|
||||||
|
@ -188,7 +193,7 @@
|
||||||
;; ----------------------------------------
|
;; ----------------------------------------
|
||||||
;; "doc"
|
;; "doc"
|
||||||
|
|
||||||
(define delayed-#f (delay #f))
|
(define delayed-#f (delay/sync #f))
|
||||||
|
|
||||||
(provide find-doc-dir
|
(provide find-doc-dir
|
||||||
find-user-doc-dir
|
find-user-doc-dir
|
||||||
|
@ -280,7 +285,7 @@
|
||||||
|
|
||||||
(provide find-dll-dir)
|
(provide find-dll-dir)
|
||||||
(define dll-dir
|
(define dll-dir
|
||||||
(delay
|
(delay/sync
|
||||||
(case (system-type)
|
(case (system-type)
|
||||||
[(windows)
|
[(windows)
|
||||||
;; Extract "lib" location from binary:
|
;; Extract "lib" location from binary:
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
(provide variant-suffix)
|
(provide variant-suffix)
|
||||||
|
|
||||||
(define plain-mz-is-cgc?
|
(define plain-mz-is-cgc?
|
||||||
(delay (let* ([dir (find-console-bin-dir)]
|
(delay/sync
|
||||||
|
(let* ([dir (find-console-bin-dir)]
|
||||||
[exe (cond [(eq? 'windows (system-type)) "Racket.exe"]
|
[exe (cond [(eq? 'windows (system-type)) "Racket.exe"]
|
||||||
[(equal? #".dll" (system-type 'so-suffix))
|
[(equal? #".dll" (system-type 'so-suffix))
|
||||||
;; in cygwin so-suffix is ".dll"
|
;; in cygwin so-suffix is ".dll"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user