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