Open
Description
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.