Search code examples
haskellcabalcabal-installleksah

couldn't install leksah on Ubuntu 16.10 using cabal 1.24.0.2/ghc 8.2.1


I'm trying to install leksah as my development environment using cabal but I ran into errors.

user@home:~$ cabal install leksah
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: leksah-0.15.2.0 (user goal)
next goal: base (dependency of leksah-0.15.2.0)
rejecting: base-4.10.0.0/installed-4.1... (conflict: leksah => base>=4.0.0.0 && <4.9)
rejecting: base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0,
base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0,
base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0,
base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1,
base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1
(constraint from non-upgradeable package requires installed instance)
Backjump limit reached (currently 2000, change with --max-backjumps or 
try to run with --reorder-goals).

other detauls regarding haskell install in my machine are as follows -

user@home:~$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.2.1
user@home:~$ cabal --version
cabal-install version 1.24.0.2
compiled using version 1.24.2.0 of the Cabal library 
user@home:~$ stack --version
Version 1.3.2, Git revision 3f675146590da4f3edf768b89355f798229da2a5 (4395 commits) x86_64 hpack-0.15.0

Any suggestions to resolve these errors?


Solution

  • Let's get the dependencies straight:

    • leksah has version 0.15.2, which has been released ~18 months ago. It depends on a base package strictly lower than 4.9 (see also the version bump commit).
    • ghc has version 8.2.1. According to the release notes, the base package has version 4.10.0.0.

    You cannot install another base package - it is intrinsically linked to the ghc version (see this post). Note that the version of the base package for ghc 8.0.1 (release notes) is4.9.0.0.


    So either

    • install a haskell version prior to 8, bringing with it an older base package, or
    • install leksah from its github source (install instructions), or
    • work with the other contributors to perhaps release a 0.15.1 (or whatever) just bumping versions (provided it's still working of course).

    It looks weird though - there are commits in the last two weeks, however the download page mentions that they are planning a 0.16 version - this was half a year ago.


    I'm kind of wondering why there is an upper limit on ghcs minor version - currently the version requirement is set to base >=4.0.0.0 && <4.11. So when a ghc next bumps the base package again, the same problem arises. So leksah is pretty much locked to the ghc release cycle.