Skip to content

Require top-level build-depends when it occurs in all branches of a conditional #984

Open
@andreasabel

Description

@andreasabel

This is the companion issue of haskell/cabal#7768.

See e.g. jvranish/Lenses#3.
Currently hackage does not allow revision of conditionals, and it does not allow new build-depends in a revision.
In the situation (1)

build-depends: base
  , A
if cond
  build-depends: B >= 0.1 && < 0.4
else
  build-depends: B >= 0.2 && < 0.5

the constraints for B cannot be revised.
Thus, the better practice is to put a top-level B with extra constraints in the conditional (2):

build-depends: base
  , A
  , B >= 0.1 && < 0.5
if cond
  build-depends: B < 0.4
else
  build-depends: B >= 0.2

hackage uploads could be required to add a top-level build-depends if it appears in all branches. So (1) would be rejected, and a suggestion of adding B to the top-level dependencies could be given:

build-depends: base
  , A
  , B
if cond
  build-depends: B >= 0.1 && < 0.4
else
  build-depends: B >= 0.2 && < 0.5

Enforcing this discipline would help with revisions on hackage that tighten constraints.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions