Cabal and GHC

Simon Peyton-Jones simonpj at
Thu Nov 22 10:33:32 CET 2012

| > Now, if Cabal can figure out a plan based on an empty database, it can
| deliver on that plan even in a non-empty database, without messing up
| any existing installations.
| This is an interesting invariant, weaker than the more obvious one:
| "Cabal should do the same plan no matter what the state of the database
| is" which is in tension with "don't install more than you have to."

Well I didn't say it should *ignore* the database. The current database might influence its plan.  For example if, after installing both yesod-platform and Fay, Cabal is asked to install a package P which depends on yesod-platform data-default 0.4-0.8, then Cabal could pick the already-installed version of yesod-platform depending on data-default 0.5, rather than installing yet another version depending on data-default-0.8.

So the invariant I suggest is
* If it'd work in an empty database, it should work in any non-empty one
* Installing X should never break the existing installation of Y


More information about the cabal-devel mailing list