`cabal-validate`: Steps change depending on options which choose steps
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
The `build` step will build... the stuff used by the other steps you're running!
E.g. `solver-benchmarks` is only built if `--solver-benchmarks` is passed... but if you use `--step solver-benchmarks-run` manually, it won't be built. `cabal-install-solver` will not be built if `--lib-only` is passed.
So this introduces two confusing behaviors:
1. `./validate.sh -s build && ./validate.sh -s solver-benchmarks` will error because `solver-benchmarks` aren't built.
2. `./validate.sh -s build` won't catch compile errors in `solver-benchmarks`, which is a little confusing. `./validate.sh -s build` should... build everything that gets tested in CI, I think!
Related:
- #10564
- #10563
**Proposal:** There should be a `build` group which builds everything, and steps `build-lib`, `build-cli`, and `build-solver-benchmarks` which build specific sets of libraries.
Contributor guide
Research direction
Read validate.sh first, focusing on how options select steps and how the build step chooses targets. Trace the solver-benchmarks and cabal-install-solver paths, then verify that a build group covers all CI-tested components while build-lib, build-cli, and build-solver-benchmarks remain selectable separately.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell, shell
- Domain
- build-system, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100