haskell / haskell/cabal

`cabal-validate`: Steps change depending on options which choose steps

Open
#10,565 0 comments 0 reactions 0 assignees View on GitHub
cabal-validate meta: tracking re: devx type: testing
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.