Using Cabal 1.22 against GHC 8.0 results in unhelpful errors
GHC 8.0 will require Cabal >1.22 due to a variety of interface changes (see #10714 (closed), D1780, https://mail.haskell.org/pipermail/ghc-devs/2016-January/010978.html). Unfortunately things currently blow up late in compilation with a seemingly unrelated error when this requirement isn't met. Namely, we complain about bad interface files for dependencies. For instance,
Text/Parsec/Prim.hs:85:1: error:
Bad interface file: /root/.cabal/lib/x86_64-linux-ghc-8.0.0.20160204/mtl-2.2.1-9wMhzcfsAXi7cNtl9n7svO/Control/Monad/Cont/Class.hi
Something is amiss; requested module mtl-2.2.1@mtl-2.2.1-1af5dabd2d7abb688f2145aec87badc4:Control.Monad.Cont.Class differs from name found in the interface file mtl_9wMhzcfsAXi7cNtl9n7svO:Control.Monad.Cont.Class
For users seeing this error
The solution here is to install Cabal
1.23 or later and a cabal-install
linking against it. Currently this requires installing Cabal
and cabal-install
from git. This is most easily done using GHC 7.10. Finally, you need to clear your package database.
This can be done with,
$ git clone git://github.com/haskell/cabal
$ cd cabal
$ cabal update
$ cabal install Cabal/ cabal-install/
$ rm -R $HOME/.ghc/*-8.0.0*
Edited by Ben Gamari