diff --git a/pkgs/development/libraries/gmp/5.0.3.nix b/pkgs/development/libraries/gmp/5.0.3.nix index 97955297941..962c2c5b74b 100644 --- a/pkgs/development/libraries/gmp/5.0.3.nix +++ b/pkgs/development/libraries/gmp/5.0.3.nix @@ -56,16 +56,8 @@ stdenv.mkDerivation (rec { (if stdenv.isFreeBSD then { - # On FreeBSD, GMP's `config.guess' detects the sub-architecture (e.g., - # "k8") and generates code specific to that sub-architecture, in spite of - # `--enable-fat', leading to illegal instructions and similar errors on - # machines with a different sub-architecture. - # See , for an example. - # Thus, use GNU's standard `config.guess' so that it assumes the generic - # architecture (e.g., "x86_64"). - preConfigure = - '' rm config.guess && ln -s configfsf.guess config.guess - chmod +x configfsf.guess - ''; + # The FreeBSD boxes at hydra.nixos.org are VMs run in QEMU. This patch + # allows GMP to work correctly in that environment. + patches = [ ./ignore-bad-cpuid.patch ]; } else { })) diff --git a/pkgs/development/libraries/gmp/ignore-bad-cpuid.patch b/pkgs/development/libraries/gmp/ignore-bad-cpuid.patch new file mode 100644 index 00000000000..840d530a450 --- /dev/null +++ b/pkgs/development/libraries/gmp/ignore-bad-cpuid.patch @@ -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: