Update to 1.9.2

This commit is contained in:
Orion Poplawski 2015-03-01 14:58:33 -07:00
parent 162361b332
commit ad63033c9d
4 changed files with 7 additions and 134 deletions

1
.gitignore vendored
View File

@ -21,3 +21,4 @@ numpy-1.4.1.tar.gz
/numpy-1.9.0rc1.tar.gz
/numpy-1.9.0.tar.gz
/numpy-1.9.1.tar.gz
/numpy-1.9.2.tar.gz

View File

@ -1,127 +0,0 @@
From f0b2dd7d5151878f2b4b3ea20ff551b27243f27d Mon Sep 17 00:00:00 2001
From: Charles Harris <charlesr.harris@gmail.com>
Date: Wed, 24 Dec 2014 11:26:13 -0700
Subject: [PATCH] BUG: Xerbla doesn't get linked in 1.9 on Fedora 21.
Add our python_xerbla to the blasdot sources. That function is
needed for all modules that link to the ATLAS 3.10 libraries, which
in Fedora 21 are located in just two files: libsatlas and libtatlas.
Also make the test for xerbla linkage work better. If xerbla is not
linked the test will be skipped with a message.
---
numpy/core/blasdot/python_xerbla.c | 51 ++++++++++++++++++++++++++++++++++++++
numpy/core/setup.py | 3 ++-
numpy/linalg/tests/test_linalg.py | 9 ++++---
3 files changed, 59 insertions(+), 4 deletions(-)
create mode 100644 numpy/core/blasdot/python_xerbla.c
diff --git a/numpy/core/blasdot/python_xerbla.c b/numpy/core/blasdot/python_xerbla.c
new file mode 100644
index 0000000..bdf0b90
--- /dev/null
+++ b/numpy/core/blasdot/python_xerbla.c
@@ -0,0 +1,51 @@
+#include "Python.h"
+
+/*
+ * From f2c.h, this should be safe unless fortran is set to use 64
+ * bit integers. We don't seem to have any good way to detect that.
+ */
+typedef int integer;
+
+/*
+ From the original manpage:
+ --------------------------
+ XERBLA is an error handler for the LAPACK routines.
+ It is called by an LAPACK routine if an input parameter has an invalid value.
+ A message is printed and execution stops.
+
+ Instead of printing a message and stopping the execution, a
+ ValueError is raised with the message.
+
+ Parameters:
+ -----------
+ srname: Subroutine name to use in error message, maximum six characters.
+ Spaces at the end are skipped.
+ info: Number of the invalid parameter.
+*/
+
+int xerbla_(char *srname, integer *info)
+{
+ static const char format[] = "On entry to %.*s" \
+ " parameter number %d had an illegal value";
+ char buf[sizeof(format) + 6 + 4]; /* 6 for name, 4 for param. num. */
+
+ int len = 0; /* length of subroutine name*/
+#ifdef WITH_THREAD
+ PyGILState_STATE save;
+#endif
+
+ while( len<6 && srname[len]!='\0' )
+ len++;
+ while( len && srname[len-1]==' ' )
+ len--;
+#ifdef WITH_THREAD
+ save = PyGILState_Ensure();
+#endif
+ PyOS_snprintf(buf, sizeof(buf), format, len, srname, *info);
+ PyErr_SetString(PyExc_ValueError, buf);
+#ifdef WITH_THREAD
+ PyGILState_Release(save);
+#endif
+
+ return 0;
+}
diff --git a/numpy/core/setup.py b/numpy/core/setup.py
index 1cd1ee1..baaee20 100644
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -954,12 +954,13 @@ def get_dotblas_sources(ext, build_dir):
if blas_info:
if ('NO_ATLAS_INFO', 1) in blas_info.get('define_macros', []):
return None # dotblas needs ATLAS, Fortran compiled blas will not be sufficient.
- return ext.depends[:2]
+ return ext.depends[:3]
return None # no extension module will be built
config.add_extension('_dotblas',
sources = [get_dotblas_sources],
depends = [join('blasdot', '_dotblas.c'),
+ join('blasdot', 'python_xerbla.c'),
join('blasdot', 'apple_sgemv_patch.c'),
join('blasdot', 'cblas.h'),
],
diff --git a/numpy/linalg/tests/test_linalg.py b/numpy/linalg/tests/test_linalg.py
index 8edf36a..dec98db 100644
--- a/numpy/linalg/tests/test_linalg.py
+++ b/numpy/linalg/tests/test_linalg.py
@@ -1108,6 +1108,8 @@ def test_xerbla_override():
# and may, or may not, abort the process depending on the LAPACK package.
from nose import SkipTest
+ XERBLA_OK = 255
+
try:
pid = os.fork()
except (OSError, AttributeError):
@@ -1137,15 +1139,16 @@ def test_xerbla_override():
a, a, 0, 0)
except ValueError as e:
if "DORGQR parameter number 5" in str(e):
- # success
- os._exit(os.EX_OK)
+ # success, reuse error code to mark success as
+ # FORTRAN STOP returns as success.
+ os._exit(XERBLA_OK)
# Did not abort, but our xerbla was not linked in.
os._exit(os.EX_CONFIG)
else:
# parent
pid, status = os.wait()
- if os.WEXITSTATUS(status) != os.EX_OK or os.WIFSIGNALED(status):
+ if os.WEXITSTATUS(status) != XERBLA_OK:
raise SkipTest('Numpy xerbla not linked in.')

View File

@ -8,8 +8,8 @@
%global relc %{nil}
Name: numpy
Version: 1.9.1
Release: 2%{?dist}
Version: 1.9.2
Release: 1%{?dist}
Epoch: 1
Summary: A fast multidimensional array facility for Python
@ -18,9 +18,6 @@ Group: Development/Languages
License: BSD and Python
URL: http://www.numpy.org/
Source0: http://downloads.sourceforge.net/numpy/%{name}-%{version}%{?relc}.tar.gz
# Upstream patch to fix xerbla linkage
# https://bugzilla.redhat.com/show_bug.cgi?id=1172834
Patch0: https://github.com/numpy/numpy/pull/5392.patch
BuildRequires: python2-devel lapack-devel python-setuptools gcc-gfortran atlas-devel python-nose
Requires: python-nose
@ -86,7 +83,6 @@ This package includes a version of f2py that works properly with NumPy.
%prep
%setup -q -n %{name}-%{version}%{?relc}
%patch0 -p1 -b .xerbla
# workaround for rhbz#849713
# http://mail.scipy.org/pipermail/numpy-discussion/2012-July/063530.html
@ -227,6 +223,9 @@ popd &> /dev/null
%changelog
* Sun Mar 1 2015 Orion Poplawski <orion@nwra.com> - 1:1.9.2-1
- Update to 1.9.2
* Tue Jan 6 2015 Orion Poplawski <orion@nwra.com> - 1:1.9.1-2
- Add upstream patch to fix xerbla linkage (bug #1172834)

View File

@ -1 +1 @@
78842b73560ec378142665e712ae4ad9 numpy-1.9.1.tar.gz
a1ed53432dbcd256398898d35bc8e645 numpy-1.9.2.tar.gz