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


> 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- instead of the 
already installed old-locale-, 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.


More information about the Haskell-Cafe mailing list