
Hi,
according to this page:
http://hackage.haskell.org/package/pango-0.11.0
pango should work with cairo 0.11.0 (or any other 0.11.* version)
So it seems that the problem is that cabal tried to use pango-0.11.1,
and I am guessing that it does not backtrack and try an older version
if a build fails (which is reasonable). So why did Cabal choose
pango-0.11.1? Because gtk-0.11.0 claims to work with _any_ 0.11.*
version of pango and cairo, so Cabal just picked the latest one.
Therefore, the problem seems to be with the dependencies of gtk-0.11.0
and pango-0.11.0 (indeed, later versions of gtk have more precise
dependencies). Unfortunately, we have no way of improving the
dependencies of a package without changing its version, which suggests
that it is never safe to depend on gtk-0.11.0. This might be
something that we should look into, but in the meantime, it may be
better to make sifflet depend on a later specific version of "gtk"
(e.g., 0.11.2) rather then claiming that works with any 0.11.*
version.
By the way, it is unfortunate that packages which only differ in their
third version field (e.g., 0.11.0 vs 0.11.1) are incompatible with
each other, I thought that the recommendation was to increase the
second version field to avoid that.
-Iavor
On Mon, Aug 16, 2010 at 12:56 PM, Don Stewart
$ cabal update Downloading the latest package list from hackage.haskell.org
$ cabal install sifflet Resolving dependencies... cabal: cannot configure pango-0.11.1. It requires cairo >=0.11.1 && <0.12 and glib >=0.11.1 && <0.12 For the dependency on cairo >=0.11.1 && <0.12 there are these packages:
cairo-0.11.1. However none of them are available. cairo-0.11.1 was excluded because sifflet-lib-1.0 requires cairo ==0.11.0 cairo-0.11.1 was excluded because cairo-0.11.0 was selected instead cairo-0.11.1 was excluded because sifflet-1.0 requires cairo ==0.11.0
For the dependency on glib >=0.11.1 && <0.12 there are these packages: glib-0.11.1. However none of them are available. glib-0.11.1 was excluded because sifflet-lib-1.0 requires glib ==0.11.0 glib-0.11.1 was excluded because glib-0.11.0 was selected instead glib-0.11.1 was excluded because sifflet-1.0 requires glib ==0.11.0
So that's pretty simple. 'sifflet' requires cairo ==0.11.0 and pango. But since pango doesn't work with cairo 0.11.0, the package can't be built. The solution is to ask the sifflet author to adjust the dependencies to be more flexible.
http://hackage.haskell.org/package/sifflet
Those specific versions of packages are overly constrained. They should follow the PVP, and be thus,
0.11.*
-- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe