I'm trying to install a Haskell project using cabal and I'm having dependency issues:
cabal install && cabal run
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: Chips-0.1.0.0 (user goal)
trying: aeson-0.8.0.2 (dependency of Chips-0.1.0.0)
trying: unordered-containers-0.2.4.0/installed-698... (dependency of
aeson-0.8.0.2)
next goal: text (dependency of aeson-0.8.0.2)
rejecting: text-1.1.0.0/installed-9bd... (conflict: aeson => text>=1.1.1.0)
trying: text-1.2.0.0
next goal: hashable (dependency of aeson-0.8.0.2)
rejecting: hashable-1.2.2.0/installed-45b... (conflict: text==1.2.0.0,
hashable => text==1.1.0.0/installed-9bd...)
rejecting: hashable-1.2.2.0, 1.2.1.0, 1.2.0.10, 1.2.0.9, 1.2.0.8, 1.2.0.7,
1.2.0.6, 1.2.0.5, 1.2.0.4, 1.2.0.3, 1.2.0.2, 1.2.0.1, 1.2.0.0, 1.1.2.5,
1.1.2.4, 1.1.2.3, 1.1.2.2, 1.1.2.1, 1.1.2.0, 1.1.1.0, 1.1.0.0, 1.0.1.1,
1.0.1.0, 1.0.0 (conflict: unordered-containers =>
hashable==1.2.2.0/installed-45b...)
Dependency tree exhaustively searched.
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
make: *** [all] Error 1
I understand dependencies and I understand that if two packages require a different version of the same dependency cabal won't be able to compile the whole application. That said, I don't really understand what this error message is trying to tell me. Which packages have clashing dependencies? Why doesn't the sandbox that I'm using prevent this?
What does this part even mean?
rejecting: hashable-1.2.2.0/installed-45b... (conflict: text==1.2.0.0,
hashable => text==1.1.0.0/installed-9bd...)
Sandboxes won't help you, unfortunately, if you have text
version 1.1.0.0 installed globally. (That version comes with the current Platform.) cabal
is trying to install aeson
0.8.0.2, which requires text
version >=1.1.1.0 for some reason.
If Chips
is your own project, you should be able to relax the version dependency on aeson
so that an older version compatible with text
1.1.0.0 can be installed.