[Haskell-cafe] Do something about Cabal?
Ben Franksen
ben.franksen at online.de
Sun Dec 20 16:59:47 UTC 2020
Am 10.12.20 um 12:23 schrieb Ignat Insarov:
> Cabal is the second most used tool in Haskell after GHC. It has many
> problems. It may be noticed that there is one and a half developers working on
> it. This is clearly not enough to address these problems. I propose that this is
> a good place to invest in.
Cabal has *dramatically* improved over the years and since version 3.2
is working very smoothly for me. I generally favour cabal over stack
because I like the extra flexibility in chosing package versions that
cabal offers. Stack is also a very fine tool and has a slightly more
polished UI.
> It is ordinary to receive output like this:
>
> ```
> % cabal run example-executable
> Warning: The package list for 'hackage.haskell.org' is 84 days old.
> Run 'cabal update' to get the latest list of available packages.
> Resolving dependencies...
> cabal: Could not resolve dependencies:
> [__0] trying: example-0.1.0.6 (user goal)
> [__1] next goal: opaleye (dependency of example)
> [__1] rejecting: opaleye-0.7.1.0, opaleye-0.7.0.0 (constraint from project
> config TODO requires ==0.6.7006.1)
> [__1] rejecting: opaleye-0.6.7006.1 (conflict: example => opaleye^>=0.7)
> [__1] skipping: opaleye-0.6.7006.0, opaleye-0.6.7005.0, opaleye-0.6.7004.2,
> opaleye-0.6.7004.1, opaleye-0.6.7004.0, opaleye-0.6.7003.1,
> opaleye-0.6.7003.0, opaleye-0.6.1.0, opaleye-0.6.0.0, opaleye-0.5.4.0,
> opaleye-0.5.3.1, opaleye-0.5.3.0, opaleye-0.5.2.2, opaleye-0.5.2.0,
> opaleye-0.5.1.1, opaleye-0.5.1.0, opaleye-0.5.0.0, opaleye-0.4.2.0,
> opaleye-0.4.1.0, opaleye-0.4.0.0, opaleye-0.3.1.2, opaleye-0.3.1, opaleye-0.3,
> opaleye-0.2, opaleye-0.6.7002.0, opaleye-0.6.7001.0, opaleye-0.6.7000.0,
> opaleye-0.5.2.1, opaleye-0.3.1.1 (has the same characteristics that caused the
> previous version to fail: excluded by constraint '^>=0.7' from example)
> [__1] fail (backjumping, conflict set: example, opaleye)
> After searching the rest of the dependency tree exhaustively, these were the
> goals I've had most trouble fulfilling: opaleye, example
> ```
>
> There are so many things that are wrong here.
The output is a bit verbose but the punch line at the end is pretty plain:
> goals I've had most trouble fulfilling: opaleye, example
It doesn't take a PHD to conclude that you'll have to experiment with
(usually: relax) the version bounds for these two packages to find a
valid build plan. And the detailed output, however intimidating at
first, is acually helpful to find out what goes wrong.
I don't know how much effort goes into stackage (curating packages into
coherent sets) but my guess is: quite a bit. Without that extra effort
stack wouldn't be as useful as it is.
Cheers
Ben
More information about the Haskell-Cafe
mailing list