* GMP updated to 5.0.4.

* By default, QEMU's CPUID identifies the CPU as GenuineIntel, family
  6, model 2.  Since there never was a physical 64-bit CPU like that,
  64-bit GMP calls abort().  This causes every program linked against
  libgmp to fail under QEMU (unless an appropriate -cpu or -M flag is
  used), which is rather bad, especially for users of hosting
  providers who cannot change QEMU's flags.  The patch causes GMP to
  be more liberal (i.e., use non-CPU-specific implementations).

svn path=/nixpkgs/branches/stdenv-updates/; revision=33531
This commit is contained in:
Eelco Dolstra 2012-04-01 22:17:00 +00:00
commit 29b0341589
3 changed files with 36 additions and 3 deletions

View File

@ -1,13 +1,15 @@
{ stdenv, fetchurl, m4, cxx ? true }:
stdenv.mkDerivation rec {
name = "gmp-5.0.3";
name = "gmp-5.0.4";
src = fetchurl {
url = "mirror://gnu/gmp/${name}.tar.bz2";
sha256 = "dcafe9989c7f332b373e1f766af8e9cd790fc802fdec422a1910a6ef783480e3";
sha256 = "0vx0z5f1q8jjxjp8hcbcvzz8y41zs889nna4r4ahkpsb7vgamm1m";
};
patches = [ ./ignore-bad-cpuid.patch ];
buildNativeInputs = [ m4 ];
configureFlags =

View File

@ -0,0 +1,31 @@
Don't abort when seeing the default CPU model/platform returned by
QEMU.
diff -ru -x '*~' gmp-5.0.4-orig/mpn/x86_64/fat/fat.c gmp-5.0.4/mpn/x86_64/fat/fat.c
--- gmp-5.0.4-orig/mpn/x86_64/fat/fat.c 2012-02-10 11:23:05.000000000 +0100
+++ gmp-5.0.4/mpn/x86_64/fat/fat.c 2012-04-01 21:38:35.843066724 +0200
@@ -194,13 +194,16 @@
{
switch (family)
{
+#if 0
case 4:
case 5:
abort (); /* 32-bit processors */
+#endif
case 6:
switch (model)
{
+#if 0
case 0x00:
case 0x01:
case 0x02:
@@ -217,6 +220,7 @@
case 0x0d: /* Dothan */
case 0x0e: /* Yonah */
abort (); /* 32-bit processors */
+#endif
case 0x0f: /* Conroe Merom Kentsfield Allendale */
case 0x10:

View File

@ -3640,7 +3640,7 @@ let
# GMP 4.3.2 is broken on Darwin, so use 4.3.1.
callPackage ../development/libraries/gmp/4.3.1.nix { }
else
callPackage ../development/libraries/gmp/5.0.3.nix { };
callPackage ../development/libraries/gmp/5.0.4.nix { };
gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; });