Bug in the handling of wired-in packages (like template-haskell)
If you install an older version of a wired-in package (e.g. template-haskell) and then try to use it, GHC will use the newer one as the "wired-in" package rather than the older one.
This happened when trying to build aeson-0.4.0.0
with ghc 7.4: aeson
requires template-haskell-2.6.0.0
, but GHC ships with 2.7.0.0. Cabal installed template-haskell-2.6.0.0
, but while building aeson
against it we get:
Data/Aeson/TH.hs:181:1:
Bad interface file: /Users/tibbe/.cabal/lib/template-haskell-2.6.0.0/ghc-7.4.0.20111213/Language/Haskell/TH.hi
Something is amiss; requested module template-haskell-2.6.0.0:Language.Haskell.TH differs from name found in the interface file template-haskell:Language.Haskell.TH
the bug is that findWiredInPackage
has picked template-haskell-2.7.0.0
to be the wired-in package:
wired-in package template-haskell mapped to template-haskell-2.7.0.0-inplace
whereas we wanted to use template-haskell-2.6.0.0
.
Not immediately obvious what the fix should be, so I'm making a ticket for this. The workaround is to update the dependency in aeson
to allow template-haskell-2.7.0.0
.
Trac metadata
Trac field | Value |
---|---|
Version | 7.2.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | high |
Resolution | Unresolved |
Component | Package system |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |