yesodweb / yesod

A RESTful Haskell web framework built on WAI.
http://www.yesodweb.com/
MIT License
2.64k stars 373 forks source link

Odd dependency conflict #160

Closed pbrisbin closed 13 years ago

pbrisbin commented 13 years ago

I doubt this is yesod's fault -- but I'm hoping reporting here gets me a resolution.

Yesterday, I went through the various yesod packages and git pulled and ./scripts/installed. Everything was going pretty well until I got to the yesod repo.

Since then, I've tried removing .ghc and .cabal, reinstalling and trying again -- same error. I've even gone so far as removing ghc entirely, rebooting, and trying again. Same error.

Attempting to install yesod-core:

Installing yesod-core...
Resolving dependencies...
Configuring yesod-core-0.9.3.2...
cabal: At least the following dependencies are missing:
aeson-native >=0.3.3.1 && <0.4,
clientsession >=0.7.3.1 && <0.8,
data-object-yaml ==0.3.*,
strict-concurrency ==0.2.4.*,
vector ==0.9.*
Resolving dependencies...
cabal: dependencies conflict: wai-extra-0.4.4 requires deepseq ==1.2.0.1
however
deepseq-1.2.0.1 was excluded because aeson-native-0.3.3.1 requires deepseq
<1.2

OK, so what if I install the older deepseq:

$ ghc-pkg list deepseq
/usr/lib/ghc-7.0.3/package.conf.d
/home/patrick/.ghc/x86_64-linux-7.0.3/package.conf.d
   deepseq-1.1.0.2
   deepseq-1.2.0.1

Same error!?

How bout if I try to install aeson-native itself:

$ cabal install --dry-run aeson-native
Resolving dependencies...
In order, the following would be installed (use -v for more details):
attoparsec-0.9.1.2
primitive-0.4.0.1
text-0.11.1.5
blaze-builder-0.3.0.1
hashable-1.1.2.1
unordered-containers-0.1.4.3
vector-0.9
blaze-textual-native-0.2.1
aeson-native-0.3.3.1

WTF? Half of those packages are already installed.

$ for pkg in attoparsec primitive text blaze-builder hashable unordered-containers vector blaze-textual aeson-native; do gl $pkg; done | grep '^ '
    attoparsec-0.9.1.2
    text-0.11.1.5
    blaze-builder-0.3.0.1
    hashable-1.1.2.1

And if I let you re-install them, it'll break half my other packages... Then re-installing those will break others and I'll end up back at the original dependency conflict (I've gone around that loop a few times).

Any ideas?

pbrisbin commented 13 years ago

Through liberal use of --dry-run --verbose, I'm making some headway.

It seems having deepseq 1.1 and 1.2 on your system at the same time is bad news. Different installs will link against different versions requiring reinstalls of other packages (like text) which breaks a lot of things.

Since aeson-native has a hard requirement for <1.2, I've removed that, unregistered whatever that broke and am more slowly and carefully rebuilding my install -- looking for any place that might try to bring 1.2 back in.

Will report back shortly (I hope).

pbrisbin commented 13 years ago

Well, wasn't that fun.

Here, yesod-auth tries to reinstall cryptohash against crypto-api 0.6 which was brought in somewhere along the way by other yesod-something... ^C that if you're quick.

Ensure a clean ghc-pkg check and all should be OK again.