haskell / haskell/cabal

inconsistency due to "impossible version range" in configure phase *after* the solver phase

Open
#5,829 0 comments 0 reactions 0 assignees View on GitHub
type: bug
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

Preliminary bug description:

1. cabal solver finds valid build-plan (where e.g. a test component of a dependency `foo` isn't enabled)
2. build-plan gets executed, and during the configure phase of `foo` the internal check fails due to an internal `build-depends: foo ==0.0.*` dependency even though the test component isn't relevant for the picked build-plan:

> cabal: The package has an impossible version range for a dependency on an internal library: foo ==0.0.*. This version range does not include the current package, and must be removed as the current package's library will always be used.

I consider the `configure` phase to be the culprit here, as it triggered a failure for a component which was irrelevant to the requested build-plan.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the build plan where dependency foo's test component is disabled, then trace how the solver's plan is passed into the configure phase. Compare validation of enabled and irrelevant components; done means an impossible internal dependency in an unselected component no longer fails configuration, while relevant invalid dependencies remain checked.

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
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.