[numpy] Fixing FTBFS on ppc64le (#1078354)

Jaromír Cápík jcapik at fedoraproject.org
Wed May 7 14:32:06 UTC 2014


commit 76d41f73a224bb51a6635fa056347f9de94bca8e
Author: Jaromir Capik <jcapik at redhat.com>
Date:   Wed May 7 16:32:19 2014 +0200

    Fixing FTBFS on ppc64le (#1078354)

 numpy-1.8.1.ppc64le.patch |  131 +++++++++++++++++++++++++++++++++++++++++++++
 numpy.spec                |   10 +++-
 2 files changed, 140 insertions(+), 1 deletions(-)
---
diff --git a/numpy-1.8.1.ppc64le.patch b/numpy-1.8.1.ppc64le.patch
new file mode 100644
index 0000000..d0f5466
--- /dev/null
+++ b/numpy-1.8.1.ppc64le.patch
@@ -0,0 +1,131 @@
+@@ -, +, @@ 
+---
+ doc/release/1.8.1-notes.rst               |    4 ++++
+ numpy/core/include/numpy/npy_cpu.h        |    3 +++
+ numpy/core/include/numpy/npy_endian.h     |    3 ++-
+ numpy/core/setup.py                       |    2 +-
+ numpy/core/setup_common.py                |    4 ++++
+ numpy/core/src/npymath/ieee754.c.src      |    3 ++-
+ numpy/core/src/npymath/npy_math_private.h |    3 ++-
+ numpy/core/src/private/npy_fpmath.h       |    5 ++++-
+ 8 files changed, 22 insertions(+), 5 deletions(-)
+--- numpy-1.8.1/numpy/core/setup_common.py	
++++ numpy-1.8.1/numpy/core/setup_common.py	
+@@ -256,6 +256,8 @@ _IEEE_QUAD_PREC_BE = ['300', '031', '326
+ _IEEE_QUAD_PREC_LE = _IEEE_QUAD_PREC_BE[::-1]
+ _DOUBLE_DOUBLE_BE = ['301', '235', '157', '064', '124', '000', '000', '000'] + \
+                     ['000'] * 8
++_DOUBLE_DOUBLE_LE = ['000', '000', '000', '124', '064', '157', '235', '301'] + \
++                    ['000'] * 8
+ 
+ def long_double_representation(lines):
+     """Given a binary dump as given by GNU od -b, look for long double
+@@ -295,6 +297,8 @@ def long_double_representation(lines):
+                         return 'IEEE_QUAD_LE'
+                     elif read[8:-8] == _DOUBLE_DOUBLE_BE:
+                         return 'DOUBLE_DOUBLE_BE'
++                    elif read[8:-8] == _DOUBLE_DOUBLE_LE:
++                        return 'DOUBLE_DOUBLE_LE'
+                 elif read[:16] == _BEFORE_SEQ:
+                     if read[16:-8] == _IEEE_DOUBLE_LE:
+                         return 'IEEE_DOUBLE_LE'
+--- numpy-1.8.1/numpy/core/include/numpy/npy_cpu.h	
++++ numpy-1.8.1/numpy/core/include/numpy/npy_cpu.h	
+@@ -5,6 +5,7 @@ 
+  *              NPY_CPU_AMD64
+  *              NPY_CPU_PPC
+  *              NPY_CPU_PPC64
++ *              NPY_CPU_PPC64LE
+  *              NPY_CPU_SPARC
+  *              NPY_CPU_S390
+  *              NPY_CPU_IA64
+@@ -41,6 +42,8 @@ 
+      * _ARCH_PPC is used by at least gcc on AIX
+      */
+     #define NPY_CPU_PPC
++#elif defined(__ppc64le__)
++    #define NPY_CPU_PPC64LE
+ #elif defined(__ppc64__)
+     #define NPY_CPU_PPC64
+ #elif defined(__sparc__) || defined(__sparc)
+--- numpy-1.8.1/numpy/core/include/numpy/npy_endian.h	
++++ numpy-1.8.1/numpy/core/include/numpy/npy_endian.h	
+@@ -27,7 +27,8 @@ 
+             || defined(NPY_CPU_ARMEL)   \
+             || defined(NPY_CPU_AARCH64) \
+             || defined(NPY_CPU_SH_LE)   \
+-            || defined(NPY_CPU_MIPSEL)
++            || defined(NPY_CPU_MIPSEL)  \
++            || defined(NPY_CPU_PPC64LE)
+         #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
+     #elif defined(NPY_CPU_PPC)          \
+             || defined(NPY_CPU_SPARC)   \
+--- numpy-1.8.1/numpy/core/setup.py	
++++ numpy-1.8.1/numpy/core/setup.py	
+@@ -466,7 +466,7 @@ def configuration(parent_package='',top_
+                            'MOTOROLA_EXTENDED_12_BYTES_BE',
+                            'IEEE_QUAD_LE', 'IEEE_QUAD_BE',
+                            'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE',
+-                           'DOUBLE_DOUBLE_BE']:
++                           'DOUBLE_DOUBLE_BE', 'DOUBLE_DOUBLE_LE']:
+                     moredefs.append(('HAVE_LDOUBLE_%s' % rep, 1))
+                 else:
+                     raise ValueError("Unrecognized long double format: %s" % rep)
+--- numpy-1.8.1/numpy/core/src/npymath/ieee754.c.src	
++++ numpy-1.8.1/numpy/core/src/npymath/ieee754.c.src	
+@@ -133,7 +133,8 @@ float _nextf(float x, int p)
+     return x;
+ }
+ 
+-#ifdef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
++#if defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \
++    defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
+ 
+ /*
+  * FIXME: this is ugly and untested. The asm part only works with gcc, and we
+--- numpy-1.8.1/numpy/core/src/npymath/npy_math_private.h	
++++ numpy-1.8.1/numpy/core/src/npymath/npy_math_private.h	
+@@ -435,7 +435,8 @@ do {
+     typedef npy_uint32 ldouble_sign_t;
+ #endif
+ 
+-#ifndef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
++#if !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) && \
++    !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
+ /* Get the sign bit of x. x should be of type IEEEl2bitsrep */
+ #define GET_LDOUBLE_SIGN(x) \
+     (((x).a[LDBL_SIGN_INDEX] & LDBL_SIGN_MASK) >> LDBL_SIGN_SHIFT)
+--- numpy-1.8.1/numpy/core/src/private/npy_fpmath.h	
++++ numpy-1.8.1/numpy/core/src/private/npy_fpmath.h	
+@@ -29,6 +29,8 @@ 
+             #define HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE
+         #elif defined(NPY_CPU_PPC) || defined(NPY_CPU_PPC64)
+             #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE
++        #elif defined(NPY_CPU_PPC64LE)
++            #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_LE
+         #endif
+     #endif
+ #endif
+@@ -41,7 +43,8 @@ 
+       defined(HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE) || \
+       defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE) || \
+       defined(HAVE_LDOUBLE_MOTOROLA_EXTENDED_12_BYTES_BE) || \
+-      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE))
++      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \
++      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE))
+     #error No long double representation defined
+ #endif
+ 
+--- numpy-1.8.1/doc/release/1.8.1-notes.rst	
++++ numpy-1.8.1/doc/release/1.8.1-notes.rst	
+@@ -81,6 +81,10 @@ calls to ``numpy.distutils.system_info.g
+ print anything on the output. This is mostly for other packages using
+ numpy.distutils.
+ 
++Build system
++~~~~~~~~~~~~
++Added experimental support for the ppc64le architecture.
++
+ Deprecations
+ ============
+ 
diff --git a/numpy.spec b/numpy.spec
index d487192..28a9622 100644
--- a/numpy.spec
+++ b/numpy.spec
@@ -9,7 +9,7 @@
 
 Name:           numpy
 Version:        1.8.1
-Release:        1%{?dist}
+Release:        2%{?dist}
 Epoch:          1
 Summary:        A fast multidimensional array facility for Python
 
@@ -19,6 +19,8 @@ License:        BSD and Python
 URL:            http://www.numpy.org/
 Source0:        http://downloads.sourceforge.net/numpy/%{name}-%{version}%{?relc}.tar.gz
 
+Patch0:         numpy-1.8.1.ppc64le.patch
+
 BuildRequires:  python2-devel lapack-devel python-setuptools gcc-gfortran atlas-devel python-nose
 Requires:       python-nose
 %if 0%{?with_python3}
@@ -83,6 +85,9 @@ This package includes a version of f2py that works properly with NumPy.
 
 %prep
 %setup -q -n %{name}-%{version}%{?relc}
+
+%patch0 -p1
+
 # workaround for rhbz#849713
 # http://mail.scipy.org/pipermail/numpy-discussion/2012-July/063530.html
 rm numpy/distutils/command/__init__.py && touch numpy/distutils/command/__init__.py
@@ -232,6 +237,9 @@ popd &> /dev/null
 
 
 %changelog
+* Wed May 07 2014 Jaromir Capik <jcapik at redhat.com> - 1:1.8.1-2
+- Fixing FTBFS on ppc64le (#1078354)
+
 * Tue Mar 25 2014 Orion Poplawski <orion at nwra.com> - 1:1.8.1-1
 - Update to 1.8.1
 


More information about the scm-commits mailing list