Skip to content

Commit f37164e

Browse files
authored
cabal project override semantics proposal (#179)
1 parent 49a4b75 commit f37164e

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: improved override semantics for cabal.project files
3+
---
4+
5+
The files which cabal uses to configure multipackage projects (cabal.project files) have been extended in recent years to allow includes and conditionals.
6+
7+
This makes more common and useful situations where certain stanzas (build constraints, flags, index-state, etc) may be used to override other stanzas, rather than simply augment them. (But also, we may at times want augmenting semantics -- there's a delicate balance).
8+
9+
The contents of different stanzas in cabal project files are monoidally accumulated. However, the monoid chosen for different stanzas has been done without much thought -- typically either with purely accumulating or purely replacement semantics.
10+
11+
This project is for an audit of the monoidal semantics of the various setting which can be controlled by cabal.project, as well as proposal of and implementation of _more useful_ ones.
12+
13+
Related tickets are
14+
15+
[https://github.com/haskell/cabal/issues/8568]
16+
[https://github.com/haskell/cabal/pull/9510]
17+
[https://github.com/haskell/cabal/issues/7556#issuecomment-1120433903]
18+
19+
## Mentorship
20+
21+
Gershom is willing to mentor
22+
23+
## Difficulty and size
24+
25+
The difficulty of implementation is medium at most, but this will require somebody who is able to thoughtfully inventory, think through, and propose the specifics of a solution, ideally with prior experience with cabal project files as a user, and also with a sense of existing user workflows. The size of the project is likely **medium**.

0 commit comments

Comments
 (0)