haskell / haskell/cabal

Warn when module reexports are likely to break PVP

Open
#3,279 0 comments 0 reactions 0 assignees View on GitHub
Cabal: cmd/configure Cabal: other re: pvp type: enhancement
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

Hat tip @hvr. Consider the following package:

```
name: p
version: 1.0.0.0
library
build-depends: q >= 1 && < 2
reexported-modules: Q
```

Does `p` satisfy PVP? No: if I depend on `p == 1.0.0.0`, I may still get different choices for `q`, and if `p` reexports `q`, the difference between `q-1.0` and `q-1.1` is impermissible for the same version of `p`. This is fairly non-obvious unless you've been bitten by this in practice, so Cabal really should warn in this situation, and the documentation should mention it.

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points. Start by locating Cabal's handling of reexported-modules and dependency version ranges, then identify the documentation section covering PVP; done means the problematic case emits a warning and the documentation explains the constraint.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
build-system
Issue type
Feature
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.