Ticket #5704 (closed bug: wontfix)
Bug in the handling of wired-in packages (like template-haskell)
| Reported by: | simonmar | Owned by: | simonmar |
|---|---|---|---|
| Priority: | high | Milestone: | 7.4.2 |
| Component: | Package system | Version: | 7.2.1 |
| Keywords: | Cc: | bgamari@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | Unknown |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
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.
