Skip to content
This repository has been archived by the owner on Apr 25, 2020. It is now read-only.
Daniel Gröber edited this page Jun 21, 2017 · 19 revisions

Known issues related to Cabal

Known issues related to Stack

It's not working

Make sure the dist/setup-config file doesn't exist in your project directory (the directory also containing your *.cabal file). When this file exists ghc-mod assumes you want to use cabal-install instead of Stack.

Most common Stack related issue

Most ghc-mod+Stack issues have to do with a GHC version mismatch.

ghc-mod once compiled is bound to one version of GHC since we link against the GHC API library. This used to not be a very big problem but since Stack made it exceedingly easy to use more than one version of GHC without even realising.

Many users report success with starting their editors/IDEs or shells with stack exec inside the project they are working on after installing ghc-mod locally inside that project, for example:

$ cd my/super/cool/project/
$ stack install ghc-mod
$ stack exec -- emacs

The install command only needs to be run once unless you want to upgrade the ghc-mod version in use for that project. The stack exec command will run Emacs (or your editor of choice) with a modified environment which (among other things) adds the project-local binary installation directory to PATH.

readPackageDb: inappropriate type

ghc-mod: $HOME/.stack/snapshots/x86_64-linux/lts-2.22/7.8.4/pkgdb/package.cache: GHC.PackageDb.readPackageDb: inappropriate type (not a ghc-pkg db file, wrong file magic number)

Your Stack resolver uses a different GHC version from what ghc-mod was linked with, in this case:

$ ghc-mod --version
ghc-mod version 5.3.0.0 compiled by GHC 7.10.2

VS.

$ stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 7.8.4

You need to recompile ghc-mod using GHC version 7.8.4 to fix this. Note that you can use the cabal install option --program-suffix=SUFFIX to append a GHC version number to ghc-mod's executable name so you can keep multiple copies of ghc-mod around without recompiling. There is no frontend support for automatically switching to the right executable though so you'll have to manage that manually using symlinks or a wrapper script. See also ghc-mod Issue: Support switching GHC versions without recompiling

cannot satisfy -package-id ... is unusable due to missing or recursive dependencies

ghc-mod: <command line>: cannot satisfy -package-id aeson-0.10.0.0-a37a650f6e5d5ca2347967c8f8609dfd: 
    aeson-0.10.0.0-a37a650f6e5d5ca2347967c8f8609dfd is unusable due to missing or recursive dependencies:
      attoparsec-0.13.0.1-9f9155916734a226d3befd6aaf235548 base-4.8.2.0-0d6d1084fbc041e1cded9228e80e264d <...>
    (use -v for more information)

Same root cause as above: readPackageDb: inappropriate type.

Failed to load interface for ...

Failed to load interface for ‘Some.Module’ There are files missing in the ‘package-1.2.3’ 
package,try running 'ghc-pkg check'

Same root cause as above: readPackageDb: inappropriate type.

cabal-helper-wrapper: ghc: [...]: does not exist

Full error message:

cabal-helper-wrapper: ghc: readCreateProcess: runInteractiveProcess: exec: does not exist (No such file or directory) 

cabal-helper needs a working ghc executable at runtime to build it's wrapper component, when using only Stack's builtin GHC there is no ghc on $PATH hence this error.

To fix this simply add one of the paths in the output of the following command to your $PATH environment variable.

printf '%s\n' ~/.stack/programs/*/ghc-*/bin/

See https://github.com/kazu-yamamoto/ghc-mod/issues/660

Clone this wiki locally