[Haskell-cafe] ANN: cabal-bounds 1.0.0

Daniel Trstenjak daniel.trstenjak at gmail.com
Thu Aug 20 21:23:39 UTC 2015

cabal-bounds[1] is a command line programm for managing the
bounds/versions of the dependencies in a cabal file.

Changes for 1.0.0
* automatically find the cabal and setup-config files
* ignore the base library by default

Perhaps the two most relevant use cases:

Initialize Bounds

If you have started a new project, created a cabal file, added dependencies to it,
build it, and now want to set the lower and upper bounds of the dependencies
according to the currently used versions of the build, then you can just call:

    $> cabal-bounds update

This call will update the bounds of the dependencies of the cabal file in the working directory.

Raise the Upper Bounds

If you have several cabalized projects, then it can be quite time consuming to keep the
bounds of your dependencies up to date. Especially if you're following the [package versioning policy](<http://www.haskell.org/haskellwiki/Package_versioning_policy>),
then you want to raise your upper bounds from time to time, to allow the building with newer
versions of the dependencies.

`cabal-bounds` tries to automate this update process to some degree. So a typical update process might look like:

    # update the version infos of all libraries
    $> cabal update

    # drops the upper bound of all dependencies of the cabal file in the working directory
    $> cabal-bounds drop --upper

    # create a cabal sandbox for building your project, this ensures that you're really using
    # the newest available versions of the dependencies, otherwise you would be constraint
    # to the already installed versions
    $> cabal sandbox init
    # build your project
    $> cabal install

    # update the upper bound of all dependencies of the cabal file in the working directory
    $> cabal-bounds update --upper

Please consult the README for further informations.

[1] https://github.com/dan-t/cabal-bounds

More information about the Haskell-Cafe mailing list