
Hi, I have two versions of Cabal, both are visible: $ ghc-pkg expose Cabal-1.16.0 $ ghc-pkg expose Cabal-1.18.1.2 I clone and build my package. Since I have GHC 7.6.3 it uses Cabal-1.16.0 (as specified in ghc-imported-from.cabal): $ git clone https://github.com/carlohamalainen/ghc-imported-from $ cd ghc-imported-from $ cabal install It looks like Cabal-1.16.0 was chosen, as expected: $ grep Cabal dist/build/autogen/cabal_macros.h /* DO NOT EDIT: This file is automatically generated by Cabal */ /* package Cabal-1.16.0 */ #define VERSION_Cabal "1.16.0" #define MIN_VERSION_Cabal(major1,major2,minor) (\ But my program doesn't run: $ ghc-imported-from src/Main.hs Main getArgs 11 11 --ghc-options --ghc-pkg-options GhcOptions [] GhcPkgOptions [] Language/Haskell/GhcImportedFrom.hs:132:54: Couldn't match expected type `Distribution.PackageDescription.BuildInfo' with actual type `Cabal-1.16.0:Distribution.PackageDescription.BuildInfo' In the fourth argument of `getGHCOptions', namely `binfo' In a stmt of a 'do' block: getGHCOptions [] c (fromJust $ cradleCabalDir c) binfo In the expression: do { c <- findCradle; pkgDesc <- GhcMonad.liftIO $ parseCabalFile $ fromJust $ cradleCabalFile c; let binfo = head $ cabalAllBuildInfo pkgDesc; getGHCOptions [] c (fromJust $ cradleCabalDir c) binfo } I'm surprised that the error didn't appear at compile time. I guess the first reference to Distribution.PackageDescription.BuildInfo is from Cabal-1.18.1.2? If I hide Cabal-1.18.1.2 then things work ok: $ ghc-pkg hide Cabal-1.18.1.2 $ cabal install $ ghc-imported-from .... (runs as expected) But I can't expect a user to know that they have to hide Cabal-1.18.1.2. Is this actually a GHC bug or have I stuffed up my ghc-imported-from.cabal file? Thanks, -- Carlo Hamalainen http://carlo-hamalainen.net