[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