
On Sun, 2008-04-27 at 23:49 +0400, Bulat Ziganshin wrote:
Hello Duncan,
Sunday, April 27, 2008, 11:42:01 PM, you 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.
The solution is not to identify installed packages by their name and version but by a hash that identifies the package ABI.
probably not ABI (it should be the same), but random number generated when compilation (build) occurs
The package name and version do not identify an ABI. You change the ABI by using -O0 vs -O1. Also, I think modeling build processes as randomness isn't the right approach. Build are really pure functions but with a rather large number of inputs. The Nix approach is to identify them all and calculate a hash of them all and use that to identify each built package. Duncan