ghc 6.2 gets confused about Main.hi reuse
Simon Marlow
simonmar at microsoft.com
Mon Mar 8 08:00:03 EST 2004
Reviving an old thread:
> When trying to build HaRe with ghc 6.2 (builds fine with ghc 6.0.1),
> we encountered a long list of strange error messages of the kind:
>
> ...
>
> *** Compiling Main:
> compile: input file pfe_client.hs
> *** Checking old interface for Main:
>
> Failed to load interface for `MapDeclMBase':
> Could not find interface file for `MapDeclMBase'
> locations searched:
> /proj/haskell/lib/ghc-6.2/imports/MapDeclMBase.hi
> /proj/haskell/lib/ghc-6.2/hslibs-imports/text/MapDeclMBase.hi
> /proj/haskell/lib/ghc-6.2/hslibs-imports/data/MapDeclMBase.hi
> /proj/haskell/lib/ghc-6.2/hslibs-imports/util/MapDeclMBase.hi
> /proj/haskell/lib/ghc-6.2/hslibs-imports/posix/MapDeclMBase.hi
>
> /proj/haskell/lib/ghc-6.2/hslibs-imports/concurrent/MapDeclMBase.hi
> /proj/haskell/lib/ghc-6.2/hslibs-imports/lang/MapDeclMBase.hi
>
> ...
We've found the reason that 6.2 was failing in this way and fixed it in
6.2.1. It was indeed a bug.
*However*, this doesn't change the fact that swapping in a new Main
module is a dangerous thing to do: the recompilation system relies on
the date of the source file to determine whether compilation is
required, so if you use a new Main module without touching it first, the
compiler might not recompile as it should.
There are ways we might try to get around this problem. Putting an md5
signature of the source file in the .hi file is one way. Using
different .hi files for different source files is another, but we
couldn't see a good way to do this when using the -hidir flag as in your
example.
Cheers,
Simon
More information about the Glasgow-haskell-bugs
mailing list