RE: ghc --make feature request
"Simon Marlow"
writes: GHC actually has rather sophisticated recompilation checking which goes beyond just checking whether the interface changed - it keeps version information for each entity exported by a module and only recompiles if any of the entities actually used by the module have changed (this is described in the user's guide under the section on recompilation checking).
I've seen unexpected compiles using ghc --make. I've got a system with modules A, B, and C; A depends on B and B depends on C. I've seen the following sequence of events:
I change C ghc --make A compiles C, B, and A I change A ghc --make A skips C and compiles B and A
I don't know of any reason why it would have compiled B in the second case.
If this is not a known bug, I can try to reproduce it and submit a formal bug report.
From your bug report on SourceForge, it looks like GHC has inferred the wrong dependency graph for your program. It appears that Point.lhs doesn't depend on GtkExtra, but nevertheless GHC has decided to compile GtkExtra before Point, but after the other dependencies of Point, which would seem to indicate that it thinks Point depends on GtkExtra.
If you do a 'ghc --make Point.lhs' (with whatever other options you need), does it try to compile GtkExtra? I tried a small example with similar module structure to your setup, but couldn't reproduce the bug. Cheers, Simon
participants (1)
-
Simon Marlow