installing all of hackage
duncan.coutts at worc.ox.ac.uk
Wed Apr 30 21:30:50 EDT 2008
We're getting nearer to being able to use cabal-install to install all
of hackage for us. :-)
I did a run this evening:
$ cabal install -O0 $(cat pkgs)
which is a list of 485 packages. I had to prune this list manually to
eliminate the ones that have unsatisfiable dependencies (about 10). I
hope to add a flag to get cabal-install to do that automatically, and
where we do not use that flag, to produce better error messages saying
*which* packages have the unsatisfiable dependencies.
So I now have 329 library packages installed.
It makes me notice this issue rather acutely:
"reading the package db is slow"
In fact this would be a really big problem for doing our own make-like
system where we invoke ghc once for each module. Where at the moment it
takes 1 second per library/executable, it'd take one second per module.
It would in fact mean that reading the package database would take more
time than compilation since compilation zips through at less than one
second per module on average with -O0.
I've also got a list of 163 install failures. Unfortunately we do not
get logs of the failing packages, just a summary like:
GuiTV-0.4 depends on wxcore-0.10.3 which failed to install.
xtc-1.0 depends on wxcore-0.10.3 which failed to install.
phooey-2.0 depends on wxcore-0.10.3 which failed to install.
GenI-0.16.1 depends on wxcore-0.10.3 which failed to install.
wx-0.10.3 depends on wxcore-0.10.3 which failed to install.
AutoForms-0.4.0 depends on wxcore-0.10.3 which failed to install.
wxcore-0.10.3 failed during the configure step. The exception was:
exit: ExitFailure 2
Still, it's progress I feel.
I've also added a flag to let us choose which version of the Cabal lib
to use when building packages. This should make it possible to compare
building everything with Cabal-1.2 and 1.4 for example.
BTW, if you're wondering about the discrepancy in package numbers, it's
because I had some packages installed already, some of which were not
from hackage. Some of the packages I installed were binaries for which
we do not track the installed state. Also, since some packages were
already installed, cabal-install did not re-install them. So I don't
know how many did actually install successfully, only how many failed.
More information about the cabal-devel