fizz_ed
fizz_ed

Reputation: 131

Why can't I cabal install --only-dependencies with mongodb?

I have gone through the following steps:

$ mkdir mongoEg
$ cd mongoEg
$ cabal init
 ...

Configured to run as an executable. I add mongodb to the build-depends list. I make a dummy Main.hs file and put a basic hello world in there. I then do

$ cabal sandbox init
$ cabal install --only-dependencies

Which responds with:

Resolving dependencies...
cabal: Could not resolve dependencies:
trying: monogEg-0.1.0.0 (user goal)
next goal: mongodb (dependency of monogEg-0.1.0.0)
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. 

I read up on other problems people are having, and remove ~/.ghc, remove my mongoEg directory, and repeat to get the same results. I try to run through the analogous steps at http://howistart.org/posts/haskell/1 and find that everything works just fine.

I then guess that something is wrong with the mongodb package itself. I seem to be able to cabal install mongodb in a global environment and use it outside of a sandbox without any issue. So, why wont cabal sandboxes play with the mongodb package?

See this gist for details: https://gist.github.com/anonymous/e5a548cf7d9ec59bea31

Upvotes: 1

Views: 327

Answers (1)

fizz_ed
fizz_ed

Reputation: 131

After looking here

Cabal configure in a sandbox complains "At least the following dependencies are missing" on installed packages

I saw that the answer states that package names are case sensitive. So I tried changing mongodb to the way MongoDB spells it, namely MongoDB. This did not work, so I tried changing it to mongoDB, and finally there was joy.

So even though I can do cabal install mongodb I can't use that same spelling to install it from within a .cabal file, which is, obviously, completely stupid. I'm sure I'll find the right place to channel my rage about this kind of flagrant violation of the principle of least surprise, but for now I can say that to newcomers it is most needlessly confusing.

Upvotes: 3

Related Questions