haskell / haskell/cabal

Consider enabling --independent-goals by default

Open
#6,460 0 comments 1 reaction 0 assignees View on GitHub
cabal-install: solver type: enhancement
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

#4481 exposed the --independent-goals flag but set the default to false. It may be better to change the default to true to handle projects that contain packages that are setup dependencies or build tools for other packages within the project. Without --independent-goals, all targets are forced to have consistent versions for their dependencies. See issue #4295 for an example of a project that needs --independent-goals.

There are also disadvantages to enabling --independent-goals:

- Removing the requirement of consistent versions for targets' dependencies could cause more packages to be built.
- It would increase solver run time, since the solver would need to choose versions for dependencies under more qualifiers.
- It would increase the complexity of package qualifiers, which would affect solver error messages and constraints.
- It could increase the complexity of install plans.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the --independent-goals flag through Cabal's option handling and dependency solver. Compare the behavior with the example in issue #4295, then evaluate whether making it true by default preserves acceptable solver time, package qualifiers, error messages, and install plans.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.