PSA for Cabal 2.2 new-* users regarding .ghc.environment files
gershomb at gmail.com
Sat May 12 20:41:29 UTC 2018
There is an important change in the cabal new- commands for 2.2 that
the release docs should have highlighted more significantly.
Cabal new-* commands now produce a .ghc.environment file by default.
These files  are picked up by ghc and ghci automatically (since
8.0.1), and allow them to operate directly with the same package
environment used by the new-* commands. This lets you, for example,
run `ghci` in a project where you are using `new-build` and get the
proper dependencies in scope. Herbert has written an experimental tool
to make it easier to create and manipulate these environments .
However: there is a drawback (on which some discussion at  and .
In particular, there is not good information provided by ghc about
when these files are picked up and used. So if you are admixing new-*
commands and other commands for the time being, jumping between the
two, or admixing ghc and ghcjs, etc., then you may run into unexpected
behavior!  The simplest solution for now is to delete the local
.ghc.environment file in those cases (i.e. where you're mixing
commands and get unexpected behavior). A particular gotcha is that
these files are picked up not just in the current directory but also
in any parent directory.
 documented at
 Error messages may be like
".cabal/store/ghc-8.0.2/package.db/package.cache: openBinaryFile: does
not exist (No such file or directory)" or complaints about missing
More information about the Glasgow-haskell-users