Bug in the handling of wired-in packages (like template-haskell)
|Reported by:||simonmar||Owned by:||simonmar|
|Type of failure:||None/Unknown||Difficulty:||Unknown|
|Test Case:||Blocked By:|
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-188.8.131.52, but GHC ships with 184.108.40.206. Cabal installed template-haskell-220.127.116.11, but while building aeson against it we get:
Data/Aeson/TH.hs:181:1: Bad interface file: /Users/tibbe/.cabal/lib/template-haskell-18.104.22.168/ghc-22.214.171.12411213/Language/Haskell/TH.hi Something is amiss; requested module template-haskell-126.96.36.199: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-188.8.131.52 to be the wired-in package:
wired-in package template-haskell mapped to template-haskell-184.108.40.206-inplace
whereas we wanted to use template-haskell-220.127.116.11.
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-18.104.22.168.