4
votes

I'm trying to build a project of mine using Stackage lts-13.12.

After Stack was complaining that the version of Cabal was too new, I've tried to install an older version:

cabal --version
  cabal-install version 2.2.0.0
  compiled using version 2.2.0.1 of the Cabal library 

However, when I run stack solver, I get the following error:

Using configuration file: stack.yaml
Using cabal packages:
- ./

Using resolver: lts-13.12

Warning: Installed version of cabal-install (2.4.1.0) is newer than stack has been tested with.  If you run into difficulties, consider downgrading.

Using compiler: ghc-8.6.4
Asking cabal to calculate a build plan...
Trying with packages from lts-13.12 and 1 external packages as hard constraints...
The following lines from cabal-install output could not be parsed: 
optparse-applicative-0.14.3.0 (via: project-0.1.0.0 project-0.1.0.0) (new
package)
CallStack (from HasCallStack):
  error, called at src/Stack/Solver.hs:174:16 in stack-1.9.3-F7FXKCpM3pk5wCtbL9Utvv:Stack.Solver

My questions are:

  • Why is Stack seeing the newer Cabal? How can I make it see the older one?
  • Why is Stack incompatible with Cabal 2.4.1.0, when that's the version in the Stackage LTS 13.12?

I'm running Version 1.9.3 of Stack, if that makes a difference.

1

1 Answers

3
votes

Stack solver error messages are known to be bad and choke on cabal output. I don't believe this feature is well maintained.

I do wish stack would update its errors and warnings. Sticking with cabal-install-2.4.1.0 is probably the best choice.

Instead of using stack solver, I recommend you force it to use lts-13.12 and then add extra deps by hand to address any issues you encounter. Most of the time stack will helpfully recommend the right extra deps (without using the solver), but you do need to apply some intuition to make sure they are right.