
On Sun, 2008-04-27 at 18:47 +0100, Ian Lynagh wrote:
On Sun, Apr 27, 2008 at 06:32:57PM +0100, David MacIver wrote:
The problem is that if you install pretty, Cabal will suddenly cease working until you recompile it. It depends on a version of pretty which gets bundled with GHC is purportedly of the same version as the one on hackage, but the two aren't binary compatible. So when it tries to use it, everything goes boom.
If you compile with different flags then the results will not necessarily be binary compatible. I suspect that's what happened here.
Another way to look at the problem is that the user package basically allows interposing global packages and then other global packages will get linked against the user package not the global one they were built with. The solution is not to identify installed packages by their name and version but by a hash that identifies the package ABI. Another hack would be to maintain a more complex notion of package overlays and have dependencies within a package db be satisfied from the same package db or the one 'below' but never the one 'above'. Duncan