The cabal-bounds package

[Tags: bsd3, library, program]

A command line program for managing the bounds/versions of the dependencies in a cabal file.


[Skip to ReadMe]

Properties

Versions0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 0.1.15, 0.1.16, 0.2, 0.2.1, 0.3, 0.4, 0.4.1, 0.5, 0.6, 0.7, 0.8, 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5, 0.8.6, 0.8.7, 0.8.8, 0.8.9, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4 (info)
Change logNone available
Dependenciesbase (>=3 && <5), Cabal (>=1.18.0), cmdargs (>=0.10.5 && <0.11), lens (>=4.0.1 && <4.1), strict (>=0.3.2 && <0.4) [details]
LicenseBSD3
AuthorDaniel Trstenjak
Maintainerdaniel.trstenjak@gmail.com
CategoryUtils
Source repositoryhead: git clone https://github.com/dan-t/cabal-bounds
Executablescabal-bounds
UploadedSun Feb 23 17:39:28 UTC 2014 by DanielTrstenjak
DistributionsNixOS:0.9.4
Downloads4459 total (183 in last 30 days)
Votes
0 []
StatusDocs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for cabal-bounds-0.1.2

cabal-bounds

A command line program for managing the bounds/versions of the dependencies in a cabal file.

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, 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 in 'myproject.cabal', most likely you want to ignore 'base'
$> cabal-bounds drop --upper --ignore=base myproject.cabal

$> # create a cabal sandbox for building of 'myproject'
$> cabal sandbox init
  
$> # build 'myproject'
$> cabal install

$> # update the upper bound of all dependencies in 'myproject.cabal' by the cabal build information
$> cabal-bounds update --upper --ignore=base myproject.cabal dist/dist-sandbox-*/setup-config 

Installation

You have to ensure, that the Cabal library of cabal-bounds matches the one used by the cabal binary:

$> cabal --version
cabal-install version 1.18.0.2
using version 1.18.1 of the Cabal library 

$> cabal install --constraint="Cabal == 1.18.1" cabal-bounds

If you update the cabal binary and the used Cabal library changes, then you have to rebuild cabal-bounds.

Command Line Usage

$> cabal-bounds --help
cabal-bounds [COMMAND] ... [OPTIONS]
  A command line program for managing the bounds/versions of the dependencies
  in a cabal file.

Common flags:
  -O --only=ITEM             Only the bounds of the dependency are modified.
  -I --ignore=ITEM           This dependency is ignored, not modified in any
                             way.
  -o --outputCabalFile=ITEM  Save modified cabal file to file, if empty, the
                             cabal file is modified inplace.
  -h --help                  Display help message
  -v --version               Print version information

cabal-bounds drop [OPTIONS] CABAL-FILE

  -U --upper                 Only the upper bound is dropped, otherwise both
                             - the lower and upper - bounds are dropped.
  -l --library               Only the bounds of the library are dropped.
  -e --executable=ITEM       Only the bounds of the executable are dropped.
  -t --testsuite=ITEM        Only the bounds of the test suite are dropped.
  -b --benchmark=ITEM        Only the bounds of the benchmark are dropped.

cabal-bounds update [OPTIONS] CABAL-FILE SETUP-CONFIG-FILE

  -L --lower                 Only the lower bound is updated.
  -U --upper                 Only the upper bound is updated.
  -l --library               Only the bounds of the library are updated.
  -e --executable=ITEM       Only the bounds of the executable are updated.
  -t --testsuite=ITEM        Only the bounds of the test suite are updated.
  -b --benchmark=ITEM        Only the bounds of the benchmark are updated.

Issues

Perhaps the currently most annoying thing is, that you have to live with the reformating of your cabal file done by the pretty printer of the Cabal library.

To reformat your cabal file without changing any bounds you can call cabal-bounds with the name of a section that isn't present in the cabal file:

$> cabal-bounds drop --executable=blub myproject.cabal