
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