Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: haskell/cabal
head fork: haskell/cabal
Checking mergeability… Don't worry, you can still create the pull request.
Commits on Sep 25, 2011
@dcoutts dcoutts Add brief description of PVP to cabal init generated .cabal files
Commits on Oct 14, 2011
Brent Yorgey init: improve prompt: 'homepage' field is not for repos.
Brent Yorgey init: improve prompt: enclose y/n in parens
Brent Yorgey init: see whether source directory 'src' exists.
Commits on Oct 25, 2011
Brent Yorgey init: guess at filling in deps in the build-depends: field
Commits on Nov 11, 2011
@dcoutts dcoutts Note in the README that you can install using the cabal program
Commits on Nov 17, 2011
@dcoutts dcoutts Now require mtl-2
Commits on Dec 12, 2011
@igfoo igfoo Bump version to 1.14.0
@igfoo igfoo Update dependencies
Commits on Dec 16, 2011
@kosmikus kosmikus removing datatype contexts
Commits on Jan 01, 2012
@kosmikus kosmikus removing trailing whitespace
Commits on Jan 09, 2012
@kosmikus kosmikus Added a comment.
Commits on Jan 10, 2012
@kosmikus kosmikus fix compilation with ghc-7.4
Thanks to Tuncer Ayaz.
@kosmikus kosmikus updating dependencies in
Thanks to Tuncer Ayaz.
Commits on Feb 04, 2012
@ttuegel ttuegel Automatically run test suites when invoked with 'cabal install --enab…
…le-tests'. Do not install if tests fail.
Commits on Feb 07, 2012
@ttuegel ttuegel Handle test and benchmark dependencies through the resolver properly.
Previously, test and benchmark dependencies were handled by editing the
package description to include or exclude those stanzas before running
the dependency resolver. Test and benchmark dependencies could only be
installed for source packages because no package description is available
for named packages before dependency resolution.

Now, test and benchmark stanzas are enabled or disabled through constraints
passed to the dependency resolver. This way, we can install dependencies for
the test suites of target packages without propagating '--enable-tests'
through the entire dependency tree; i.e., tests and benchmarks, when enabled,
are built only for target packages. Later, this will allow us to
automatically run test suites and, e.g., install only upon their success.
@ttuegel ttuegel Update types in modular dependency solver to compile with new test/be…
…nchmark dependency constraints.
@ttuegel ttuegel Don't build benchmarks, even if installing benchmark dependencies.
Commits on Feb 08, 2012
@ttuegel ttuegel Enable tests and benchmarks in cabal-install without modifications to…
… the Cabal library.
Commits on Feb 11, 2012
@kosmikus kosmikus Added a missing case.
@kosmikus kosmikus show optional stanzas when printing install plans
Commits on Feb 12, 2012
@kosmikus kosmikus stanza support in modular solver
@kosmikus kosmikus let --reinstall imply --force-reinstalls for targets
Commits on Feb 13, 2012
@kosmikus kosmikus make test and bench available as user constraints

  cabal install foo --enable-tests

is now equivalent to saying

  cabal install foo --constraint="foo test"

The constraint syntax in addition allows to enable tests and benchmarks
for packages that are further down in the dependency chain.
Commits on Feb 16, 2012
@ttuegel ttuegel Fixed non-exhaustive pattern matches with new InstallOutcome.
@ttuegel ttuegel Don't try to run test suites where none exist.
Commits on Feb 17, 2012
@kosmikus kosmikus added missing error message
Thanks to Thomas Tuegel for spotting this.
@tuncer tuncer Update cabal-install package versions
Commits on Feb 19, 2012
@ttuegel ttuegel Fix 'cabal configure --enable-{tests,benchmarks}'.
'cabal configure' was not adding optional stanza constraints when checking
dependencies, causing '--enable-{tests,benchmarks}' to be silently ignored.
Commits on Mar 09, 2012
@kosmikus kosmikus bootstrap with --global should still respect $PREFIX
Thanks to milkypostman for providing the patch. Closes ticket #926.
Commits on Mar 15, 2012
@kosmikus kosmikus Added a comment
Commits on Mar 28, 2012
@dcoutts dcoutts Fix ticket #731
Commits on Mar 29, 2012
@dcoutts dcoutts Bump version to 0.13.9, the 0.14.0 pre-release version
And depend on the released Cabal-1.14.x
Commits on Mar 31, 2012
@kosmikus kosmikus choose default solver based on compiler version
GHC-6.12 has base-3 depending on base-4. This is a situation the
topdown solver is hacked to deal with, but the new modular solver
currently doesn't support it. We therefore switch back to the
topdown solver if a GHC version before 7 is detected, but switch
to the modular solver by default in all other situations.
Commits on Apr 05, 2012
@kosmikus kosmikus adding the possibility for index-disabled packages
In the modular solver, it's now possible to mark packages
as disabled in the index conversion phase. This can be used
to mark broken packages (with missing dependencies) in such
a way that they can still be seen by the solver and reported
in error messages.

Furthermore, the feature could be used to implement
shadowing restrictions. Currently, there are some things
that can go wrong if multiple installed instances of
the same version and package exist on the system. However,
I've not enabled the use of shadowing for now, as it's
hard to match the restrictions exactly, and we can end up
excluding perfectly valid cases. Enabling shadowing
selectively by a solver flag would be an option.
Commits on Apr 06, 2012
@kosmikus kosmikus adding a solver flag for shadowing of installed packages
@kosmikus kosmikus disable line-wrapping for solver debug output
@kosmikus kosmikus make the reinstall check less noisy
There are two aspects to this change.

The uncontroversial one is that if the install plan contains
reinstalls, we now determine if there are reverse dependencies
of such reinstalled packages that we can see. If so, these
are likely to be broken. If we find such packages, we list
them and state that we can only install the plan if
--force-reinstalls is explicitly stated.

The more controversial change is that if we cannot find such
reverse dependencies, we now merely print a warning but
continue, even though there are situations where executing
the build process can still break packages. The most likely
example of this is that we're installing to the global package
database, and user package databases on the system have
dependencies on the replaces packages -- but we cannot see
these user package databases.
Commits on Apr 07, 2012
@kosmikus kosmikus for empty install plans, print the packages that are installed
This is a fix for #623.

If we ask to install a package without --reinstall that's already
there, then we'll show the package and its version in the warning
message and suggest the use of the --reinstall flag.
Commits on Apr 08, 2012
@kosmikus kosmikus no longer pre-filter broken packages for modular solver
The modular solver can now deal with broken packages in the
index. I have, however, discovered, that broken packages were
filtered before even passing the installed package index to
the solver. I have made that filtering conditional on using
the topdown solver for now.

Related is the issue that we should not warn about possible
breakage of already broken packages. So we now exclude
already broken packages when considering whether an install
plan contains dangerous reinstalls.
@kosmikus kosmikus minor wording change when printing install plans
Commits on Apr 12, 2012
@tuncer tuncer Update cabal-install
Commits on Apr 16, 2012
@kosmikus kosmikus treat packages that are unknown no longer as an "internal error" in m…
…odular solver
@kosmikus kosmikus handling the "optimization" option properly in config file
@kosmikus kosmikus handling the solver options properly in config file
@kosmikus kosmikus added deepseq to
deepseq is a dependency of text, and not included with ghc-7.0.4.
@kosmikus kosmikus updated changelog
@kosmikus kosmikus updated copyright year for Duncan
@kosmikus kosmikus bumping version to 0.14.0
Commits on Apr 17, 2012
@kosmikus kosmikus last-minute README changes
Commits on Apr 18, 2012
@kosmikus kosmikus version update in Cabal Makefile
Commits on Apr 22, 2012
@kosmikus kosmikus Update repo location.
@kosmikus kosmikus Updated repo location in cabal files.
Commits on Apr 25, 2012
@kosmikus kosmikus Handle test and bench stanzas without dependencies properly in modula…
…r solver.

During index conversion, the modular solver was discarding test and
bench stanzas without dependencies. As a result, constraints to enable
tests and benchmarks were then ignored in the solver.

This should close issue #940.
Commits on May 31, 2012
@kosmikus kosmikus Maintain info about manual flags in modular solver.
@kosmikus kosmikus Store manual flag info in search tree.
@kosmikus kosmikus Make modular solver handle manual flags properly.
@kosmikus kosmikus Bumping version to 0.14.1.
Commits on Jun 25, 2012
@kosmikus kosmikus Remove goal choice nodes after reordering is completed.
This saves a lot of heap space while exploring the tree and backtracking.
@kosmikus kosmikus Force the log for the error to be printed in parallel with the comple…
…te trace.

This saves a bit of heap space when running the solver with unlimited
backtracking enabled.
@kosmikus kosmikus Extended a comment.
@23Skidoo 23Skidoo Spelling.
@23Skidoo 23Skidoo 80-col violation.
@23Skidoo 23Skidoo Fix typos.
@23Skidoo 23Skidoo Add a '-j' flag for the 'install' command.
@23Skidoo 23Skidoo InstallPlan: Add a Processing package state.
We don't want 'InstallPlan.ready' to return packages that are currently
being processed in other threads.
@dcoutts dcoutts Parallelise the install command This is based on Mikhail Glushenkov's…
… patches.

It adds a '-j N' (= 'number of jobs') option for the 'install' command, which
can be used to specify the number of concurrent workers. If possible, at most
N packages will be built concurrently.

This version of the patch is less featureful than Mikhail's version but also
rather simpler. The key difference compared to Mikhail's version is that this
version is lacking the output serialisation and the ability to tag each output
message with the task it came from. All output is interleaved. The next step
will be to make parallel builds log to files rather than the console and only
to display a summary on the console.

In addition to not having to change the output functions, the code is a bit
simpler by keep the structure of the code the same as before, rather than
splitting it into a number of concurrent tasks with channels. Instead each
task simply executes the same pattern of install actions and concurrency
limits are enforced using semaphores.
@23Skidoo 23Skidoo Add -threaded and -rtsopts to cabal-install's ghc-options.
We don't want FFI calls to block all Haskell threads, so we need to use the
threaded runtime; -rtsopts is for experimenting with the number of capabilities.
@dcoutts dcoutts Drop the "ghc-options: -rtsopts" on cabal-install. We do not need it.
Duncan Coutts Add the missing JobControl module
Needed for the parallel builds.