haskell / haskell/cabal

Workflow with many separate library / executable / test-suite stanzas is slow

Open
#8,472 1 comment 1 reaction 0 assignees View on GitHub
attention: pr-welcome recompilation type: enhancement type: performance
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

**Describe the bug**
We have a project with a [`.cabal` file](https://github.com/facebookincubator/Glean/blob/main/glean.cabal.in) that contains 40+ library stanzas, a dozen or so executables and 50+ test-suite stanzas. Working with this project is painful, because every change to the `.cabal` file causes all the libraries to be re-configured on the next `cabal build`.

Instead I would hope that changes only cause re-configuring of any affected libraries or executables or tests.

**To Reproduce**

Build instructions here https://glean.software/docs/building/

But you probably don't need to reproduce it using Glean, it should be easy to construct a simpler repro.

**Expected behavior**
Changes to the `.cabal` file, e.g. adding a new module or a new item to a `build-depends`, don't cause so much re-configuring.

**System information**
Linux Fedora 35

Contributor guide

Open the contributing guide

Research direction

Start with the linked glean.cabal.in example and the Glean build instructions, then run cabal build after a .cabal-file change to observe which components are re-configured. A useful result would limit re-configuration to affected libraries, executables, or test suites rather than rebuilding all stanzas.

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
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.