[Haskell-cafe] How to determine correct dependency versions for a library?

Peter Simons simons at cryp.to
Fri Nov 16 18:30:51 CET 2012


Hi Tobias,

 > A 1.1.4.0 build-depends: B ==2.5.* C ==3.7.* (overspecified)
 > B 2.5.3.0 build-depends: C ==3.* (underspecified)
 > C 3.7.1.0
 >
 > Everything works nice until C-3.8.0.0 appears with incompatible changes
 > that break B, but not A.
 >
 > Now both A and B have to update their dependencies and we have now:
 >
 > A 1.1.5.0 build-depends: B ==2.5.* C >=3.7 && <3.9
 > B 2.5.4.0 build-depends: C >=3 && <3.8
 > C 3.8.0.0
 >
 > And now the following combination is still valid:
 > A 1.1.5.0
 > B 2.5.3.0 (old version)
 > C 3.8.0.0
 > Bang!

thank you for contributing this insightful example.

When such a situation has arisen in the past, it's my experience that the
author of B typically releases an update to fix the issue with the latest
version of C:

  B 2.5.4.0 build-depends: C >= 3.8

So that particular conflict does hardly ever occur in practice.

Note that package A would build just fine after that update of B -- if the
author of A hadn't overspecified its dependencies. As it is, however, a
new version of A has to released that changes no code, but only the Cabal
file.

Take care,
Peter




More information about the Haskell-Cafe mailing list