patch applied (cabal-install): "Generalise the constraint set ADT in a couple ways" and 11 others

Duncan Coutts duncan.coutts at
Mon Apr 18 13:31:58 CEST 2011

Sat Mar 26 10:16:58 PDT 2011  Duncan Coutts <duncan at>
  * Generalise the constraint set ADT in a couple ways
  We now track target packages and only require constraints on those
  targets to be satisfiable. This allows us to overconstrain packages
  that we do not care about, which is useful for excluding broken
  We also now have a more general way of specifying constraints.
  Previously constraints were specified as the conjunction of a version
  range predicate and an optional installed constraint. This form made
  it impossible to express constraints such as "exclude this source
  package". Constraints for a package name are now specified simply by
  a function predicate on the package version and installed/source state.

    M ./Distribution/Client/Dependency/TopDown.hs -21 +27
    M ./Distribution/Client/Dependency/TopDown/Constraints.hs -160 +445
    M ./Distribution/Client/Dependency/TopDown/Types.hs -3 +4
    M ./Distribution/Client/PackageIndex.hs -1 +10

View patch online:;a=darcs_commitdiff;h=20110326171658-5c91e-7c203411e7a2bd03bc18e748dd553081aa5534d3.gz

Sun Mar 27 07:57:56 PDT 2011  Duncan Coutts <duncan at>
  * Update the solver to use the new target tracking
  The constraint set ADT now needs to be told which targets we are
  interested in, rather than assuming anything we constrain might
  be a target.

    M ./Distribution/Client/Dependency/TopDown.hs -9 +40

View patch online:;a=darcs_commitdiff;h=20110327145756-5c91e-e28bcab240f6ff9762bfae5bc4533597728a122f.gz

Sun Mar 27 08:37:49 PDT 2011  Duncan Coutts <duncan at>
  * Eliminate TaggedDependency type from solver code

    M ./Distribution/Client/Dependency/TopDown.hs -20 +21
    M ./Distribution/Client/Dependency/TopDown/Types.hs -11 +4

View patch online:;a=darcs_commitdiff;h=20110327153749-5c91e-8b49d31b11344b5abde55387fbb2dd4032d6e6c7.gz

Sun Mar 27 09:40:48 PDT 2011  Duncan Coutts <duncan at>
  * Distinguish installed constraint error messages

    M ./Distribution/Client/Dependency/TopDown.hs -3 +13

View patch online:;a=darcs_commitdiff;h=20110327164048-5c91e-91e87beada754922192e57c497e95c3f2828ddbb.gz

Sun Mar 27 10:57:33 PDT 2011  Duncan Coutts <duncan at>
  * Prune impossible packages as a solver pre-pass
  There are many packages that can never be successfully configured
  and by pruning them early we reduce the number of choices for the
  solver later (which is good since the solver does no backtracking
  when it makes bad choices). This relies on two recent features:
  1. we can now express constraints that exclude a particular source
  package and 2. that we can exclude packages without needing to know
  whether or not they will ever be needed.

    M ./Distribution/Client/Dependency/TopDown.hs -9 +62

View patch online:;a=darcs_commitdiff;h=20110327175733-5c91e-de4c7d7e2f4aca0c8d68958168af963d9bc6f68e.gz

Sun Mar 27 11:02:06 PDT 2011  Duncan Coutts <duncan at>
  * Log package exclusions due to top level constraints

    M ./Distribution/Client/Dependency/TopDown.hs -4 +5

View patch online:;a=darcs_commitdiff;h=20110327180206-5c91e-a192815653cc3e95d62e7a328bf84225beb6f16d.gz

Sun Mar 27 11:02:52 PDT 2011  Duncan Coutts <duncan at>
  * Tweak to conflict constraint error message

    M ./Distribution/Client/Dependency/TopDown.hs -2 +2

View patch online:;a=darcs_commitdiff;h=20110327180252-5c91e-bde160da3d17ff05c5394a9573dbff50e21aee3d.gz

Sun Mar 27 15:37:43 PDT 2011  Duncan Coutts <duncan at>
  * Remove a module dependency to avoid cyclic imports

    M ./Distribution/Client/Fetch.hs -1 +3
    M ./Distribution/Client/Install.hs -1 +3
    M ./Distribution/Client/List.hs -1 +2
    M ./Distribution/Client/Targets.hs -11 +5
    M ./Distribution/Client/Unpack.hs -2 +4

View patch online:;a=darcs_commitdiff;h=20110327223743-5c91e-02e7c59301b7a37d4fd939f674ae2f6c83e3eb46.gz

Sun Mar 27 16:52:54 PDT 2011  Duncan Coutts <duncan at>
  * Rename the constructors of PackageConstraint to be more consistent

    M ./Distribution/Client/Configure.hs -2 +2
    M ./Distribution/Client/Dependency.hs -2 +2
    M ./Distribution/Client/Dependency/TopDown.hs -4 +4
    M ./Distribution/Client/Dependency/Types.hs -3 +3
    M ./Distribution/Client/Install.hs -2 +2
    M ./Distribution/Client/List.hs -1 +1
    M ./Distribution/Client/Targets.hs -4 +4

View patch online:;a=darcs_commitdiff;h=20110327235254-5c91e-d383dd961067085735fefb7b62d788f93d160bb9.gz

Tue Mar 29 02:57:10 PDT 2011  Duncan Coutts <duncan at>
  * Add support for source constraints to the solver

    M ./Distribution/Client/Dependency/TopDown.hs +23
    M ./Distribution/Client/Dependency/TopDown/Types.hs -5 +8
    M ./Distribution/Client/Dependency/Types.hs +1

View patch online:;a=darcs_commitdiff;h=20110329095710-5c91e-035db6156112c9caf8f05ec8ffaf7f74dcdb3886.gz

Thu Apr 14 13:47:29 PDT 2011  Duncan Coutts <duncan at>
  * Change the use of the InstalledConstraint type and enhance solver logging
  Now log when things get excluded due to installed and source constraints.

    M ./Distribution/Client/Dependency/TopDown.hs -59 +83
    M ./Distribution/Client/Dependency/TopDown/Types.hs -2 +1

View patch online:;a=darcs_commitdiff;h=20110414204729-5c91e-4e0cef3d12d7a517b9fa4db15fadc1affa29592c.gz

Thu Apr 14 13:52:40 PDT 2011  Duncan Coutts <duncan at>
  * Add command line support for installed, source and flag constraints
  e.g. --constraint='foo source'
       --constraint='baz installed'
       --constraint='bar +this -that'

    M ./Distribution/Client/Configure.hs -2 +5
    M ./Distribution/Client/Install.hs -2 +1
    M ./Distribution/Client/Setup.hs -6 +20
    M ./Distribution/Client/Targets.hs -9 +92

View patch online:;a=darcs_commitdiff;h=20110414205240-5c91e-a0b9b951b80a0a4d4a9ab0a2e1f2f574d395bda7.gz

More information about the cabal-devel mailing list