[Haskell-cafe] Cabal dependency hell

Duncan Coutts duncan.coutts at googlemail.com
Mon Apr 12 07:00:18 EDT 2010


On Sun, 2010-04-11 at 14:28 -0700, Jason Dagit wrote:

> I've noticed another type of diamond dependency problem.  Suppose I
> build and install Foo today and it depends on Bar 2.0.0.  In a week, I
> install Bar 2.0.1.  Next I installed Baz that also depends on Bar, and
> it gets Bar 2.0.1.  When I install a package that depends on Foo, Baz,
> and possibly Bar, then cabal won't be able to figure out proper
> dependencies because Foo needs one version of Bar and Baz needs a
> different version. 

That's exactly the problem that cabal-install solves. It will rebuild
one or the other of Foo and Baz so that the dependency on Bar is
consistent.

> But if all these packages followed the PVP, then either version of Bar
> could have been used, if it was used consistently.

Yes, but one would still need to be rebuilt.

> i'm not sure what is the best solution to this problem.  Perhaps in
> this scenario, cabal should ask the user if it should rebuild Foo
> and/or Baz so they use the same Bar.  I think this could lead to a lot
> of rebuilding, and that rebuilding gets tedious when you're doing it
> manually.

So it happens automatically at the moment. It tries to minimise the
amount of rebuilding. I occasionally hear complaints that it is
rebuilding things when users did not expect it to.

Duncan



More information about the Haskell-Cafe mailing list