[Haskell-cafe] Again, version conflicting problem with cabal-install

Jason Dagit dagitj at gmail.com
Fri Feb 3 16:48:16 CET 2012

In my experience the diamond of death is typically because:
  * You install package A that uses C-0.1
  * Someone uploads C-0.2 to hackage
  * Later you 'cabal update', this does not rebuild A to use C-0.2,
even though it could.
  * You install package B that uses C, and cabal builds it with C-0.2
  * Now you want to build D that uses A and B, but A requires C-0.1
and B requires C-0.2, even though they could be rebuilt to use the
same C.

Typically, the constraints on A, B, and D would all accept the same
version of C.  Except that when they were compiled separately and C
changed between building A and B, then the compiled versions become
fixed on C-0.1 and C-0.2.

It's true that it won't solve it in all cases, but in my experience
using cabal-dev made the problem go away.

I hope that clarifies.


On Fri, Feb 3, 2012 at 7:33 AM, Magicloud Magiclouds
<magicloud.magiclouds at gmail.com> wrote:
> Well, cabal-dev could not resolve the conflict of "the diamond".
> Because the conflict is "depending different version at the SAME
> time".
> On Fri, Feb 3, 2012 at 9:20 PM, Jason Dagit <dagitj at gmail.com> wrote:
>> On Thu, Feb 2, 2012 at 9:54 PM, Magicloud Magiclouds
>> <magicloud.magiclouds at gmail.com> wrote:
>>> Hello,
>>>  As I recalled, ghc works in staticly link mode. So after one library
>>> is compiled, all its build dependencies are useless. Lost, changed,
>>> wheresoever, it does not matter.
>>>  Then why the problem of version conflicting exists?
>> I'm not sure, but for me this problem has gone away by using cabal-dev
>> to build everything.
>> Jason
> --
> 竹密岂妨流水过
> 山高哪阻野云飞
> And for G+, please use magiclouds#gmail.com.

More information about the Haskell-Cafe mailing list