Thanks, I missed that the flags are set dynamically if a dependency cannot be satisfied.

Am 17.03.2010 13:23 schrieb Daniel Fischer:
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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to