[racket-dev] bug in compiler ext dependencies?

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Jun 11 09:08:04 EDT 2013

I've pushed your repair - thanks!

I think I found (and fixed) similar problems with `require' and deleted
files.

At Mon, 10 Jun 2013 09:48:42 +0200, Tobias Hammer wrote:
> Hi,
> 
> i think i found a bug in the handling of external dependencies (via  
> register-external-file) in compiler/cm.
> Currently if an external dependency gets deleted after the registering  
> file was compiled, it is not recompiled because a missing file does not  
> trigger a file changed or timestamp newer condition.
> 
> With the attached patch a missing file is simply treated as newer than  
> everything. Would that be the correct behavior?
> 
> 
> Reproduce with:
> 
> ;; ----- test.rkt
> #lang racket
> 
> (require (for-syntax compiler/cm-accomplice))
> 
> (begin-for-syntax
>   (printf "compiled\n")
> 
>   (register-external-file (path->complete-path "ext-dep"))
>   (with-output-to-file
>       "ext-dep" #:exists 'replace values))
> 
> 
> ;; --- current
> # raco  make sample.rkt
> > compiled
> # raco  make sample.rkt
> 
> # rm ext-dep
> # raco  make sample.rkt
> << Missing "compiled"
> 
> 
> ;; --- patched
> # raco  make sample.rkt
> > compiled
> # raco  make sample.rkt
> 
> # rm ext-dep
> # raco  make sample.rkt
> > compiled
> 
> 
> 
> -- 
> ---------------------------------------------------------
> Tobias Hammer
> DLR / Robotics and Mechatronics Center (RMC)
> Muenchner Str. 20, D-82234 Wessling
> Tel.: 08153/28-1487
> Mail: tobias.hammer at dlr.de
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.