haskell / haskell/cabal

Cabal can't new-build bytestring with GHC 8.0.1

Open
#3,824 12 comments 0 reactions 0 assignees View on GitHub
cabal-install: solver cabal-install: v2-build system type: bug
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

~/Haskell/bytestring$ cd ~/tmp/
~/tmp$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.0.1
~/tmp$ cabal --version
cabal-install version 1.24.0.0
compiled using version 1.24.0.0 of the Cabal library
~/tmp$ date
Sun Sep 11 15:15:40 EDT 2016
~/tmp$ git clone https://github.com/haskell/bytestring.git
Cloning into 'bytestring'...
remote: Counting objects: 6795, done.
remote: Total 6795 (delta 0), reused 0 (delta 0), pack-reused 6795
Receiving objects: 100% (6795/6795), 12.25 MiB | 3.33 MiB/s, done.
Resolving deltas: 100% (4409/4409), done.
Checking connectivity... done.
~/tmp$ cd bytestring/

Starting with a clean slate, cabal-install-1.24 ponders for 83 seconds, then claims that the globally installed unix-2.7.2.0 package is broken:

~/tmp/bytestring$ mv ~/.cabal/ ~/.ghc/ ~/tmp/
~/tmp/bytestring$ ~/tmp/.cabal/bin/cabal update
Downloading the latest package list from hackage.haskell.org
~/tmp/bytestring$ /usr/bin/time ~/tmp/.cabal/bin/cabal new-build
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: process-1.4.2.0/installed-1.4... (dependency of
optparse-applicative-0.12.1.0)
next goal: unix (dependency of process-1.4.2.0/installed-1.4...)
rejecting: unix-2.7.2.0/installed-2.7... (package is broken)
rejecting: unix-2.7.2.0, unix-2.7.1.0, unix-2.7.0.1, unix-2.7.0.0,
unix-2.6.0.1, unix-2.6.0.0, unix-2.5.1.1, unix-2.5.1.0, unix-2.5.0.0,
unix-2.4.2.0, unix-2.4.1.0, unix-2.4.0.2, unix-2.4.0.1, unix-2.4.0.0,
unix-2.3.2.0, unix-2.3.1.0, unix-2.3.0.0, unix-2.2.0.0, unix-2.0 (conflict:
process => unix==2.7.2.0/installed-2.7...)
Backjump limit reached (currently 2000, change with --max-backjumps or try to
run with --reorder-goals).
Command exited with non-zero status 1
83.05user 0.16system 1:23.74elapsed 99%CPU (0avgtext+0avgdata 298340maxresident)k
20432inputs+8outputs (75major+78990minor)pagefaults 0swaps

The HEAD version of cabal-install instead quickly diverges and thrashes my machine, unless I stop it:

~/tmp/bytestring$ /usr/bin/time ~/Haskell/cabal/dist-newstyle/build/cabal-install-1.25.0.0/build/cabal/cabal new-build
Resolving dependencies...
^CCommand terminated by signal 2
23.38user 1.23system 0:24.63elapsed 99%CPU (0avgtext+0avgdata 6580484maxresident)k
0inputs+8outputs (0major+1649612minor)pagefaults 0swaps

I tried installing a fresh new user-local unix-2.7.2.0 but that didn't help.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the reported `cabal new-build` failure for bytestring with GHC 8.0.1 and cabal-install 1.24, then compare it with the HEAD cabal-install behavior shown in the report. Trace dependency resolution around the rejected installed unix package and the process dependency; done means new-build resolves and builds bytestring without reporting unix as broken or exhausting resources.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
build-system, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.