diff --git a/diffutils-ppc-float.patch b/diffutils-ppc-float.patch new file mode 100644 index 0000000..2a1256b --- /dev/null +++ b/diffutils-ppc-float.patch @@ -0,0 +1,49 @@ +diff -up diffutils-3.2/gnulib-tests/float.c.ppc-float diffutils-3.2/gnulib-tests/float.c +--- diffutils-3.2/gnulib-tests/float.c.ppc-float 2011-08-28 12:57:24.000000000 +0100 ++++ diffutils-3.2/gnulib-tests/float.c 2011-11-25 14:13:58.090442846 +0000 +@@ -22,7 +22,7 @@ + /* Specification. */ + #include + +-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ ++#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + const union gl_long_double_union gl_LDBL_MAX = + { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; + #elif defined __i386__ +diff -up diffutils-3.2/gnulib-tests/float.in.h.ppc-float diffutils-3.2/gnulib-tests/float.in.h +--- diffutils-3.2/gnulib-tests/float.in.h.ppc-float 2011-08-28 12:57:25.000000000 +0100 ++++ diffutils-3.2/gnulib-tests/float.in.h 2011-11-25 14:13:58.091442827 +0000 +@@ -111,7 +111,8 @@ extern const union gl_long_double_union + #endif + + /* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are +- wrong. */ ++ wrong. ++ On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ + #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP +@@ -119,6 +120,8 @@ extern const union gl_long_double_union + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ ++#endif ++#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MAX + /* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. + It is not easy to define: +diff -up diffutils-3.2/gnulib-tests/test-float.c.ppc-float diffutils-3.2/gnulib-tests/test-float.c +--- diffutils-3.2/gnulib-tests/test-float.c.ppc-float 2011-09-01 23:38:42.000000000 +0100 ++++ diffutils-3.2/gnulib-tests/test-float.c 2011-11-25 14:14:04.623319695 +0000 +@@ -325,7 +325,11 @@ test_long_double (void) + int n; + + ASSERT (m + m > m); ++#if (defined _ARCH_PPC || defined _POWER) ++ for (n = 0; n <= 2 * DBL_MANT_DIG; n++) ++#else + for (n = 0; n <= 2 * LDBL_MANT_DIG; n++) ++#endif + { + volatile long double pow2_n = pow2l (n); /* 2^n */ + volatile long double x = m + (m / pow2_n); diff --git a/diffutils.spec b/diffutils.spec index eb5ac91..7d63bb2 100644 --- a/diffutils.spec +++ b/diffutils.spec @@ -1,11 +1,12 @@ Summary: A GNU collection of diff utilities Name: diffutils Version: 3.2 -Release: 1%{?dist} +Release: 2%{?dist} Group: Applications/Text URL: http://www.gnu.org/software/diffutils/diffutils.html Source: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{version}.tar.xz -Patch4: diffutils-cmp-s-empty.patch +Patch1: diffutils-cmp-s-empty.patch +Patch2: diffutils-ppc-float.patch License: GPLv2+ Requires(post): /sbin/install-info Requires(preun): /sbin/install-info @@ -28,7 +29,10 @@ Install diffutils if you need to compare text files. %prep %setup -q # For 'cmp -s', compare file sizes only if both non-zero (bug #563618). -%patch4 -p1 -b .cmp-s-empty +%patch1 -p1 -b .cmp-s-empty + +# Applied upstream gnulib fix for float test on ppc (bug #733536). +%patch2 -p1 -b .ppc-float %build %configure @@ -67,6 +71,10 @@ rm -rf $RPM_BUILD_ROOT %{_infodir}/diffutils.info*gz %changelog +* Fri Nov 25 2011 Tim Waugh 3.2-2 +- Applied upstream gnulib fix for float test on ppc, as well as + correction for LDBL_MANT_DIG definition (bug #733536). + * Fri Sep 2 2011 Tim Waugh 3.2-1 - 3.2.