haskell / haskell/cabal

blacklist of dependencies is ignored

Open
#1,792 13 comments 0 reactions 0 assignees View on GitHub
cabal-install: solver re: deprecated packages and versions type: discussion
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

Original issue: haskell/HTTP#55. The following was run on April 20, 2014 at ~12:00 UTC. I mention this because later uploads to Hackage will likely cause different results.

There is currently a blacklist on Hackage to prevent HTTP < 4000.2.5 from being used. This is respected when installing HTTP directly, but _not_ when HTTP is depended on by another package (in this case, the warp test suite).

Starting with a clean user package database, GHC 7.6.3, and cabal-install 1.16, I get the following:
- `cabal install HTTP --dry-run` indicates that it will install network-2.4.2.3 and HTTP-4000.2.12. Good.
- `cabal install HTTP warp --dry-run` installs those versions too. Again good.
- `cabal install warp --dry-run` uses network-2.5.0.0 and does not include HTTP (HTTP is only used by the test suite). Once again, good.
- `cabal install warp --dry-run --enable-tests` _still_ uses network-2.5.0.0 and HTTP-4000.2.4. _This_ is the problem.

With this bug, Hackage blacklisting can only be relied upon in very narrow cases.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue with the listed cabal install --dry-run commands, especially warp with --enable-tests, using the stated GHC and cabal-install versions if available. Trace dependency resolution for test suites and Hackage blacklists; done means the dry run no longer selects the blacklisted HTTP version.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.