Cabal and GHC
Manuel M T Chakravarty
chak at cse.unsw.edu.au
Fri Nov 23 02:11:26 CET 2012
Simon Peyton-Jones <simonpj at microsoft.com>:
> 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
This makes a lot of sense to me.
I think it is also time to admit that we are not the first trying to solve this problem. For example, Scala has the sbt tool:
http://www.scala-sbt.org
I am sure, it is not perfect, but it seems much more flexible and versatile than Cabal. Interestingly, the Scala guys were smart enough to avoid re-inventing the wheel and are using Apchae's Ivy
http://ant.apache.org/ivy/
to do their dependency management.
Manuel
More information about the Libraries
mailing list