Cabal and GHC
simonpj at microsoft.com
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