[Haskell-cafe] A new cabal odissey: cabal-1.8 breaking its own
neck by updating its dependencies
Tillmann Rendel
rendel at Mathematik.Uni-Marburg.de
Sun Sep 12 09:26:19 EDT 2010
Hi Paolo,
Paolo Giarrusso wrote:
> - when recompiling a package with ABI changes, does cabal always
> update dependent packages?
It never recompiles them. Recompilation should not be needed, because
different versions of packages exports different symbols, so a package
can never be linked against the wrong version of its dependency.
However, see the following tickets:
http://hackage.haskell.org/trac/hackage/ticket/701
http://hackage.haskell.org/trac/hackage/ticket/704
> Interestingly, HTTP, directory, process, zip-archive were not
> reinstalled, which confirms that Cabal had reinstalled them before
> just because of an upgrade to the dependencies.
I think you are misinterpreting this.
When you asked cabal-install to install pandoc, it tried to make a
consistent install plan for all its transitive dependencies.
cabal-install will not touch a package which is not a transitive
dependency of the package you request to be installed. Therefore,
cabal-install will not touch Cabal if you ask it to install pandoc.
To make a consistent install plan, cabal-install has to pick exactly one
version number for each of the transitive dependencies, so that all
version constraints of all transitive dependencies are fullfilled. For
some reason, cabal-install picked old-locale-1.0.0.2 instead of the
already installed old-locale-1.0.0.1, and newer versions of HTTP,
directory etc. too.
I think this is the bug: cabal-install should not be allowed to install
old-locale, because doing so apparantly causes havoc.
Looking at the inter-dependencies of pandoc's transitive dependencies, I
do not see a reason to install a new version of a package instead of
keeping the old. Maybe it's somehow related to the transition from
base-3 to base-4? But I don't know how cabal-install decides which
install plan to follow anyway.
Tillmann
More information about the Haskell-Cafe
mailing list