[Haskell-cafe] One problem with Cabal-install and dependencies

Daniel Fischer daniel.is.fischer at web.de
Sun Jul 4 09:04:45 EDT 2010


On Sunday 04 July 2010 14:39:05, Michael Lazarev wrote:
> Hi, everybody!
>
> I think there's either an error in cabal-install, or I don't have an
> idea on haskell packages.
> I tried to install one particular library that depends on
> containers-0.2.0.1 and got the following error:
>
> Data/IntMap.hs:182:7:
>     Could not find module `Data.Data':
>       It is a member of the hidden package `base'.
>       Perhaps you need to add `base' to the build-depends in your .cabal
> file. Use -v to see a list of the files searched for.

As you've figured out, that's base 4, in base 3 there's no Data.Data.

>
> Then I tried to install containers-0.2.0.1 separately, andin the
> process of the struggle I found that issuing the following command in
> containers-0.2.0.1 directory:
> ~/.cabal/bin/cabal install --constraint="base >= 4" -v
> ... prints this:
>

Hah-rumph:
$ cabal install --with-compiler=/home/dafis/bin/ghc-6.10.3 -v3 --reinstall 
--constraint="base == 4.*" --dry-run containers-0.2.0.1
<snip>
Resolving dependencies...
selecting containers-0.2.0.1 (hackage)
selecting array-0.2.0.0 (installed or hackage) and discarding 
array-0.1.0.0,
0.3.0.0 and 0.3.0.1
selecting base-3.0.3.1 (installed) and 4.1.0.0 (installed) and discarding
syb-0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.2 and 0.2.1
selecting ghc-prim-0.1.0.0 (installed)
selecting integer-0.1.0.1 (installed)
selecting rts-1.0 (installed)
selecting syb-0.1.0.1 (installed)
In order, the following would be installed:
containers-0.2.0.1 (reinstall) changes: base-4.1.0.0 -> 3.0.3.1

And it's pretty adamant about the last line.

Try containers-0.2.0.0, cabal-install doesn't announce to ignore the base-
constraint for that one.

>
> So, my qusetion is, whether I'm doing something wrong, or there are
> really two errors:
> 1) cabal-install makes a wrong choice for dependency version

containers-0.2.0.1 doesn't give an upper bound for the base version, so 
cabal-install chooses base-3 by default (less likely to break on older 
packages than the still more reduced base-4).
But I would've thought the preferred version could be overridden by a 
constraint (and it seems for containers-0.2.0.0, it can).

> 2) cabal-install does not respect the constraint, and proceeds to
> building the library without any warning



More information about the Haskell-Cafe mailing list