[Python-modules-commits] r14034 - in packages/numpy/trunk/debian (4 files)

morph at users.alioth.debian.org morph at users.alioth.debian.org
Fri Jul 23 17:05:57 UTC 2010


    Date: Friday, July 23, 2010 @ 17:05:54
  Author: morph
Revision: 14034

* debian/patches/changeset_r851{0,1}.diff
  - cherry-picked from upstream SVN patches to correctly detect double long on
    powerppc, fixing the FTBFS on that arch

Added:
  packages/numpy/trunk/debian/patches/changeset_r8510.diff
  packages/numpy/trunk/debian/patches/changeset_r8511.diff
Modified:
  packages/numpy/trunk/debian/changelog
  packages/numpy/trunk/debian/patches/series

Modified: packages/numpy/trunk/debian/changelog
===================================================================
--- packages/numpy/trunk/debian/changelog	2010-07-23 00:28:56 UTC (rev 14033)
+++ packages/numpy/trunk/debian/changelog	2010-07-23 17:05:54 UTC (rev 14034)
@@ -6,8 +6,11 @@
       files (mainly _numpyconfig.h) used by depending packages; Closes: #589592
   * debian/control
     - removed José Fonseca from Uploaders: thanks for your previous work!
+  * debian/patches/changeset_r851{0,1}.diff
+    - cherry-picked from upstream SVN patches to correctly detect double long on
+      powerppc, fixing the FTBFS on that arch
 
- -- Sandro Tosi <morph at debian.org>  Wed, 21 Jul 2010 19:51:14 +0200
+ -- Sandro Tosi <morph at debian.org>  Fri, 23 Jul 2010 18:52:29 +0200
 
 python-numpy (1:1.4.1-2) unstable; urgency=low
 

Added: packages/numpy/trunk/debian/patches/changeset_r8510.diff
===================================================================
--- packages/numpy/trunk/debian/patches/changeset_r8510.diff	                        (rev 0)
+++ packages/numpy/trunk/debian/patches/changeset_r8510.diff	2010-07-23 17:05:54 UTC (rev 14034)
@@ -0,0 +1,47 @@
+Index: numpy/core/setup.py
+===================================================================
+--- python-numpy-1.4.1.orig/numpy/core/setup.py (revision 8455)
++++ python-numpy-1.4.1/numpy/core/setup.py (revision 8510)
+@@ -429,5 +429,6 @@
+                            'INTEL_EXTENDED_16_BYTES_LE',
+                            'IEEE_QUAD_LE', 'IEEE_QUAD_BE',
+-                           'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE']:
++                           'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE',
++                           'DOUBLE_DOUBLE_BE']:
+                     moredefs.append(('HAVE_LDOUBLE_%s' % rep, 1))
+                 else:
+Index: numpy/core/src/npymath/npy_math_private.h
+===================================================================
+--- python-numpy-1.4.1.orig/numpy/core/src/npymath/npy_math_private.h (revision 8008)
++++ python-numpy-1.4.1/numpy/core/src/npymath/npy_math_private.h (revision 8510)
+@@ -364,4 +364,5 @@
+ #endif
+ 
++#ifndef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
+ /* Get the sign bit of x. x should be of type IEEEl2bitsrep */
+ #define GET_LDOUBLE_SIGN(x) \
+@@ -404,4 +405,6 @@
+      (((IEEEl2bitsrep_part)(v) << LDBL_MANH_SHIFT) & LDBL_MANH_MASK))
+ 
++#endif /* #ifndef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE */
++
+ /*
+  * Those unions are used to convert a pointer of npy_cdouble to native C99
+Index: numpy/core/setup_common.py
+===================================================================
+--- python-numpy-1.4.1.orig/numpy/core/setup_common.py (revision 8113)
++++ python-numpy-1.4.1/numpy/core/setup_common.py (revision 8510)
+@@ -220,4 +220,6 @@
+                       '000', '000', '000', '000', '000', '000', '000', '000']
+ _IEEE_QUAD_PREC_LE = _IEEE_QUAD_PREC_BE[::-1]
++_DOUBLE_DOUBLE_BE = ['301', '235', '157', '064', '124', '000', '000', '000'] + \
++                    ['000'] * 8
+ 
+ def long_double_representation(lines):
+@@ -255,4 +257,6 @@
+                     elif read[8:-8] == _IEEE_QUAD_PREC_LE:
+                         return 'IEEE_QUAD_LE'
++                    elif read[8:-8] == _DOUBLE_DOUBLE_BE:
++                        return 'DOUBLE_DOUBLE_BE'
+                 elif read[:16] == _BEFORE_SEQ:
+                     if read[16:-8] == _IEEE_DOUBLE_LE:

Added: packages/numpy/trunk/debian/patches/changeset_r8511.diff
===================================================================
--- packages/numpy/trunk/debian/patches/changeset_r8511.diff	                        (rev 0)
+++ packages/numpy/trunk/debian/patches/changeset_r8511.diff	2010-07-23 17:05:54 UTC (rev 14034)
@@ -0,0 +1,150 @@
+Index: numpy/core/src/npymath/ieee754.c.src
+===================================================================
+--- python-numpy-1.4.1.orig/numpy/core/src/npymath/ieee754.c.src (revision 8009)
++++ python-numpy-1.4.1/numpy/core/src/npymath/ieee754.c.src (revision 8511)
+@@ -127,4 +127,127 @@
+ }
+ 
++#ifdef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
++
++/* 
++ * FIXME: this is ugly and untested. The asm part only works with gcc, and we
++ * should consolidate the GET_LDOUBLE* / SET_LDOUBLE macros
++ */
++#define math_opt_barrier(x) \
++        ({ __typeof (x) __x = x; __asm ("" : "+m" (__x)); __x; })
++#define math_force_eval(x) __asm __volatile ("" : : "m" (x))
++
++/* only works for big endian */
++typedef union
++{
++    npy_longdouble value;
++    struct
++    {
++        npy_uint64 msw;
++        npy_uint64 lsw;
++    } parts64;
++    struct
++    {
++        npy_uint32 w0, w1, w2, w3;
++    } parts32;
++} ieee854_long_double_shape_type;
++
++/* Get two 64 bit ints from a long double.  */
++
++#define GET_LDOUBLE_WORDS64(ix0,ix1,d)				\
++do {								\
++  ieee854_long_double_shape_type qw_u;				\
++  qw_u.value = (d);						\
++  (ix0) = qw_u.parts64.msw;					\
++  (ix1) = qw_u.parts64.lsw;					\
++} while (0)
++
++/* Set a long double from two 64 bit ints.  */
++
++#define SET_LDOUBLE_WORDS64(d,ix0,ix1)				\
++do {								\
++  ieee854_long_double_shape_type qw_u;				\
++  qw_u.parts64.msw = (ix0);					\
++  qw_u.parts64.lsw = (ix1);					\
++  (d) = qw_u.value;						\
++} while (0)
++
++npy_longdouble _nextl(npy_longdouble x, int p)
++{
++    npy_int64 hx,ihx,ilx;
++    npy_uint64 lx;
++
++    GET_LDOUBLE_WORDS64(hx, lx, x);
++    ihx = hx & 0x7fffffffffffffffLL;      /* |hx| */
++    ilx = lx & 0x7fffffffffffffffLL;      /* |lx| */
++
++    if(((ihx & 0x7ff0000000000000LL)==0x7ff0000000000000LL)&&
++       ((ihx & 0x000fffffffffffffLL)!=0)) {
++        return x; /* signal the nan */
++    }
++    if(ihx == 0 && ilx == 0) {          /* x == 0 */
++        npy_longdouble u;
++        SET_LDOUBLE_WORDS64(x, p, 0ULL);/* return +-minsubnormal */
++        u = x * x;
++        if (u == x) {
++            return u;
++        } else {
++            return x;           /* raise underflow flag */
++        }
++    }
++
++    npy_longdouble u;
++    if(p < 0) { /* p < 0, x -= ulp */
++        if((hx==0xffefffffffffffffLL)&&(lx==0xfc8ffffffffffffeLL))
++            return x+x; /* overflow, return -inf */
++        if (hx >= 0x7ff0000000000000LL) {
++            SET_LDOUBLE_WORDS64(u,0x7fefffffffffffffLL,0x7c8ffffffffffffeLL);
++            return u;
++        }
++        if(ihx <= 0x0360000000000000LL) {  /* x <= LDBL_MIN */
++            u = math_opt_barrier (x);
++            x -= __LDBL_DENORM_MIN__;
++            if (ihx < 0x0360000000000000LL
++                    || (hx > 0 && (npy_int64) lx <= 0)
++                    || (hx < 0 && (npy_int64) lx > 1)) {
++                u = u * u;
++                math_force_eval (u);        /* raise underflow flag */
++            }
++            return x;
++        }
++        if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */
++            SET_LDOUBLE_WORDS64(u,(hx&0x7ff0000000000000LL),0ULL);
++            u *= 0x1.0000000000000p-105L;
++        } else
++            SET_LDOUBLE_WORDS64(u,(hx&0x7ff0000000000000LL)-0x0690000000000000LL,0ULL);
++        return x - u;
++    } else {                /* p >= 0, x += ulp */
++        if((hx==0x7fefffffffffffffLL)&&(lx==0x7c8ffffffffffffeLL))
++            return x+x; /* overflow, return +inf */
++        if ((npy_uint64) hx >= 0xfff0000000000000ULL) {
++            SET_LDOUBLE_WORDS64(u,0xffefffffffffffffLL,0xfc8ffffffffffffeLL);
++            return u;
++        }
++        if(ihx <= 0x0360000000000000LL) {  /* x <= LDBL_MIN */
++            u = math_opt_barrier (x);
++            x += __LDBL_DENORM_MIN__;
++            if (ihx < 0x0360000000000000LL
++                    || (hx > 0 && (npy_int64) lx < 0 && lx != 0x8000000000000001LL)
++                    || (hx < 0 && (npy_int64) lx >= 0)) {
++                u = u * u;
++                math_force_eval (u);        /* raise underflow flag */
++            }
++            if (x == 0.0L)  /* handle negative __LDBL_DENORM_MIN__ case */
++                x = -0.0L;
++            return x;
++        }
++        if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */
++            SET_LDOUBLE_WORDS64(u,(hx&0x7ff0000000000000LL),0ULL);
++            u *= 0x1.0000000000000p-105L;
++        } else
++            SET_LDOUBLE_WORDS64(u,(hx&0x7ff0000000000000LL)-0x0690000000000000LL,0ULL);
++        return x + u;
++    }
++}
++#else
+ npy_longdouble _nextl(npy_longdouble x, int p)
+ {
+@@ -189,4 +312,5 @@
+     return ux.e;
+ }
++#endif
+ 
+ /*
+Index: numpy/core/src/private/npy_fpmath.h
+===================================================================
+--- python-numpy-1.4.1.orig/numpy/core/src/private/npy_fpmath.h (revision 7711)
++++ python-numpy-1.4.1/numpy/core/src/private/npy_fpmath.h (revision 8511)
+@@ -40,5 +40,6 @@
+       defined(HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE) || \
+       defined(HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE) || \
+-      defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE))
++      defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE) || \
++      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE))
+     #error No long double representation defined
+ #endif

Modified: packages/numpy/trunk/debian/patches/series
===================================================================
--- packages/numpy/trunk/debian/patches/series	2010-07-23 00:28:56 UTC (rev 14033)
+++ packages/numpy/trunk/debian/patches/series	2010-07-23 17:05:54 UTC (rev 14034)
@@ -4,3 +4,5 @@
 #05_fix_endianness_detection.patch
 07_bts585309_string_exceptions.diff
 10_use_local_python.org_object.inv_sphinx.diff
+changeset_r8510.diff
+changeset_r8511.diff




More information about the Python-modules-commits mailing list