Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What to do if libraries require a different version of `base`?

Tags:

haskell

cabal

I'm trying to install packages which require a different version of base than the one I have installed (I have 4.6.0.0, they require < 4.6). How can I install these on my system?

Edit: These packages actually require older packages in order to build, not just as a .cabal constraint.

like image 767
bfops Avatar asked Oct 15 '12 22:10

bfops


1 Answers

Since you can't reinstall base, the only way to get these packages installed before they are updated is to grab the source,

cabal unpack foo

and then edit foo.cabal, changing the upper bound for base there, bump the package version (append a .1) so that when installing other packages cabal doesn't think it is broken, since the .cabal file it knows (from the package index) says it requires a different version of base, and

cabal install

from the directory you unpacked to.

Since there were a few significant changes in base-4.6; the Eq and Show superclasses have been removed from Num, and Bits no longer has Num as a superclass, it may be necessary to fix the code by adding Eq, Show or Num to the constraints of some functions to make the packages compile.

That's inconvenient, but the price for being up-to-date yourself with the newest GHC version for a few weeks.

like image 88
Daniel Fischer Avatar answered Sep 27 '22 17:09

Daniel Fischer