automatic compilation in drscheme now avoids the installed planet files

svn: r15928
This commit is contained in:
Robby Findler 2009-09-09 02:35:09 +00:00
parent 8958f1893a
commit 83728f04fe
4 changed files with 29 additions and 11 deletions

View File

@ -13,6 +13,7 @@
manager-compile-notify-handler
manager-skip-file-handler
file-date-in-collection
file-date-in-paths
(rename-out [trace manager-trace-handler]))
(define manager-compile-notify-handler (make-parameter void))
@ -22,12 +23,15 @@
(define manager-skip-file-handler (make-parameter (λ (x) #f)))
(define (file-date-in-collection p)
(file-date-in-paths p (current-library-collection-paths)))
(define (file-date-in-paths p paths)
(let ([p-eles (explode-path (simplify-path p))])
(let c-loop ([collects-paths (current-library-collection-paths)])
(let c-loop ([paths paths])
(cond
[(null? collects-paths) #f]
[(null? paths) #f]
[else
(let i-loop ([collects-eles (explode-path (car collects-paths))]
(let i-loop ([collects-eles (explode-path (car paths))]
[p-eles p-eles])
(cond
[(null? collects-eles)
@ -60,13 +64,13 @@
(file-or-directory-modify-seconds p)])))]
[(null? p-eles)
;; this case shouldn't happen... I think.
(c-loop (cdr collects-paths))]
(c-loop (cdr paths))]
[else
(cond
[(equal? (car p-eles) (car collects-eles))
(i-loop (cdr collects-eles) (cdr p-eles))]
[else
(c-loop (cdr collects-paths))])]))]))))
(c-loop (cdr paths))])]))]))))
(define (trace-printf fmt . args)
(let ([t (trace)])

View File

@ -5,15 +5,16 @@
scheme/class
scheme/list
scheme/path
scheme/contract
mred
compiler/embed
compiler/cm
launcher
framework
string-constants
planet/config
"drsig.ss"
"rep.ss"
scheme/contract)
"rep.ss")
(define op (current-output-port))
(define (oprintf . args) (apply fprintf op args))
@ -184,7 +185,10 @@
(use-compiled-file-paths)))]))
(current-load/use-compiled (make-compilation-manager-load/use-compiled-handler))
(manager-skip-file-handler file-date-in-collection)))))
(manager-skip-file-handler
(λ (p) (file-date-in-paths
p
(cons (CACHE-DIR) (current-library-collection-paths)))))))))
(define/override (get-one-line-summary)
(string-constant module-language-one-line-summary))

View File

@ -1,7 +1,8 @@
#lang scribble/doc
@(require "common.ss"
(for-label errortrace/errortrace-lib
compiler/cm))
compiler/cm
planet/config))
@title[#:tag "languages" #:style 'toc]{Languages}
@ -52,7 +53,11 @@ of various libraries).
The @italic{populate compiled/ directories} option corresponds to
@schemeblock[(current-load/use-compiled
(make-compilation-manager-load/use-compiled-handler))
(manager-skip-file-handler file-date-in-collection)]
(manager-skip-file-handler
(λ (p)
(file-date-in-paths
p
(cons (CACHE-DIR) (current-library-collection-paths)))))]
plus adding either @scheme[(build-path "compiled" "drscheme")] or
@scheme[(build-path "compiled" "drscheme" "errortrace")]
to the front of @scheme[use-compiled-file-paths], depending if the

View File

@ -251,9 +251,14 @@ A parameter whose value is called for each file that is loaded and
@scheme[(lambda (x) #f)].}
@defproc[(file-date-in-collection [p path?]) (or/c number? #f)]{
Calls @scheme[file-date-in-paths] with @scheme[p] and
@scheme[(current-library-collection-paths)].
}
@defproc[(file-date-in-paths [p path?] [paths (listof path?)]) (or/c number? #f)]{
This is a function intended to be used with @scheme[manager-skip-file-handler].
It returns the date of the @tt{.ss} or @tt{.zo} file (whichever is newer)
for any path that is inside the collection hierarchy and returns
for any path that is inside the @scheme[paths] argument, and
@scheme[#f] for any other path.
}