| > 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

Simon
_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://www.haskell.org/mailman/listinfo/cabal-devel

Reply via email to