
Am Mittwoch 17 März 2010 12:11:53 schrieb Matthias Reisner:
Hi,
for a package I need to ensure the user uses a certain package configuration. So how would I rewrite the following pseudo-cabal description?
Build-Depends: packageA < X, packageB < Y or packageA >= X && < X', packageB >= Y && < Y' or packageA >= X', packageB >= Y'
Build-Depends: ... common dependencies ...
where neither A nor B is the base package. Maybe I have to use if/else blocks, but I don't know what conditions to use then.
Read http://www.haskell.org/ghc/docs/latest/html/Cabal/authors.html for a general description of what you can do, I'd try something like in http://hackage.haskell.org/packages/archive/cabal-install/0.8.0/cabal- install.cabal flag oldAB description: ancient packages A and B default: False flag newAB description: shiny new A and B Library blubb build-depends: common, libraries if flag(newAB) build-depends: packageA >= X', packageB >= Y' else if flag(oldAB) build-depends: packageA < X, packageB < Y else build-depends: packageA >= X && < X', packageB >= Y && < Y' If I remember correctly, that tries first to build against the new A and B, that failing, it sets flag newAB to false and tries again, first with the not-so-ancient A and B, hopefully (but I'm not sure about the order in which flags are toggled if the defaults don't give a successful install plan).
Regards,
Matthias