[Haskell-cafe] Sifflet dependencies

Iavor Diatchki iavor.diatchki at gmail.com
Mon Aug 16 17:08:12 EDT 2010


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 <dons at galois.com> wrote:
>    $ 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list