tuibuilder_pel7x64builder0
5 years ago
5 changed files with 1149 additions and 0 deletions
@ -0,0 +1,156 @@ |
|||||||
|
diff --git a/numpy/core/tests/test_memmap.py b/numpy/core/tests/test_memmap.py |
||||||
|
index ea9d061..a1fba95 100644 |
||||||
|
--- a/numpy/core/tests/test_memmap.py |
||||||
|
+++ b/numpy/core/tests/test_memmap.py |
||||||
|
@@ -1,5 +1,5 @@ |
||||||
|
import sys |
||||||
|
-from tempfile import NamedTemporaryFile, mktemp |
||||||
|
+from tempfile import NamedTemporaryFile |
||||||
|
import os |
||||||
|
|
||||||
|
from numpy import memmap |
||||||
|
@@ -31,12 +31,11 @@ class TestMemmap(TestCase): |
||||||
|
assert_array_equal(self.data, newfp) |
||||||
|
|
||||||
|
def test_open_with_filename(self): |
||||||
|
- tmpname = mktemp('','mmap') |
||||||
|
- fp = memmap(tmpname, dtype=self.dtype, mode='w+', |
||||||
|
- shape=self.shape) |
||||||
|
- fp[:] = self.data[:] |
||||||
|
- del fp |
||||||
|
- os.unlink(tmpname) |
||||||
|
+ with NamedTemporaryFile() as tmp: |
||||||
|
+ fp = memmap(tmp.name, dtype=self.dtype, mode='w+', |
||||||
|
+ shape=self.shape) |
||||||
|
+ fp[:] = self.data[:] |
||||||
|
+ del fp |
||||||
|
|
||||||
|
def test_attributes(self): |
||||||
|
offset = 1 |
||||||
|
@@ -48,17 +47,16 @@ class TestMemmap(TestCase): |
||||||
|
del fp |
||||||
|
|
||||||
|
def test_filename(self): |
||||||
|
- tmpname = mktemp('','mmap') |
||||||
|
- fp = memmap(tmpname, dtype=self.dtype, mode='w+', |
||||||
|
- shape=self.shape) |
||||||
|
- abspath = os.path.abspath(tmpname) |
||||||
|
- fp[:] = self.data[:] |
||||||
|
- self.assertEqual(abspath, fp.filename) |
||||||
|
- b = fp[:1] |
||||||
|
- self.assertEqual(abspath, b.filename) |
||||||
|
- del b |
||||||
|
- del fp |
||||||
|
- os.unlink(tmpname) |
||||||
|
+ with NamedTemporaryFile() as tmp: |
||||||
|
+ fp = memmap(tmp.name, dtype=self.dtype, mode='w+', |
||||||
|
+ shape=self.shape) |
||||||
|
+ abspath = os.path.abspath(tmp.name) |
||||||
|
+ fp[:] = self.data[:] |
||||||
|
+ self.assertEqual(abspath, fp.filename) |
||||||
|
+ b = fp[:1] |
||||||
|
+ self.assertEqual(abspath, b.filename) |
||||||
|
+ del b |
||||||
|
+ del fp |
||||||
|
|
||||||
|
def test_filename_fileobj(self): |
||||||
|
fp = memmap(self.tmpfp, dtype=self.dtype, mode="w+", |
||||||
|
diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py |
||||||
|
index db220ec..e845c07 100644 |
||||||
|
--- a/numpy/core/tests/test_multiarray.py |
||||||
|
+++ b/numpy/core/tests/test_multiarray.py |
||||||
|
@@ -1587,12 +1587,11 @@ class TestIO(object): |
||||||
|
self.x = rand(shape) + rand(shape).astype(np.complex)*1j |
||||||
|
self.x[0,:,1] = [nan, inf, -inf, nan] |
||||||
|
self.dtype = self.x.dtype |
||||||
|
- self.filename = tempfile.mktemp() |
||||||
|
+ self.file = tempfile.NamedTemporaryFile() |
||||||
|
+ self.filename = self.file.name |
||||||
|
|
||||||
|
def tearDown(self): |
||||||
|
- if os.path.isfile(self.filename): |
||||||
|
- os.unlink(self.filename) |
||||||
|
- #tmp_file.close() |
||||||
|
+ self.file.close() |
||||||
|
|
||||||
|
def test_bool_fromstring(self): |
||||||
|
v = np.array([True,False,True,False], dtype=np.bool_) |
||||||
|
@@ -1620,7 +1619,6 @@ class TestIO(object): |
||||||
|
y = np.fromfile(f, dtype=self.dtype) |
||||||
|
f.close() |
||||||
|
assert_array_equal(y, self.x.flat) |
||||||
|
- os.unlink(self.filename) |
||||||
|
|
||||||
|
def test_roundtrip_filename(self): |
||||||
|
self.x.tofile(self.filename) |
||||||
|
@@ -1753,7 +1751,6 @@ class TestIO(object): |
||||||
|
s = f.read() |
||||||
|
f.close() |
||||||
|
assert_equal(s, '1.51,2.0,3.51,4.0') |
||||||
|
- os.unlink(self.filename) |
||||||
|
|
||||||
|
def test_tofile_format(self): |
||||||
|
x = np.array([1.51, 2, 3.51, 4], dtype=float) |
||||||
|
diff --git a/numpy/f2py/__init__.py b/numpy/f2py/__init__.py |
||||||
|
index 220cb3d..d580332 100644 |
||||||
|
--- a/numpy/f2py/__init__.py |
||||||
|
+++ b/numpy/f2py/__init__.py |
||||||
|
@@ -27,20 +27,20 @@ def compile(source, |
||||||
|
from numpy.distutils.exec_command import exec_command |
||||||
|
import tempfile |
||||||
|
if source_fn is None: |
||||||
|
- fname = os.path.join(tempfile.mktemp()+'.f') |
||||||
|
+ f = tempfile.NamedTemporaryFile(suffix='.f') |
||||||
|
else: |
||||||
|
- fname = source_fn |
||||||
|
- |
||||||
|
- f = open(fname,'w') |
||||||
|
- f.write(source) |
||||||
|
- f.close() |
||||||
|
- |
||||||
|
- args = ' -c -m %s %s %s'%(modulename,fname,extra_args) |
||||||
|
- c = '%s -c "import numpy.f2py as f2py2e;f2py2e.main()" %s' %(sys.executable,args) |
||||||
|
- s,o = exec_command(c) |
||||||
|
- if source_fn is None: |
||||||
|
- try: os.remove(fname) |
||||||
|
- except OSError: pass |
||||||
|
+ f = open(source_fn, 'w') |
||||||
|
+ |
||||||
|
+ try: |
||||||
|
+ f.write(source) |
||||||
|
+ f.flush() |
||||||
|
+ |
||||||
|
+ args = ' -c -m %s %s %s'%(modulename, f.name, extra_args) |
||||||
|
+ c = '%s -c "import numpy.f2py as f2py2e;f2py2e.main()" %s' % \ |
||||||
|
+ (sys.executable, args) |
||||||
|
+ s, o = exec_command(c) |
||||||
|
+ finally: |
||||||
|
+ f.close() |
||||||
|
return s |
||||||
|
|
||||||
|
from numpy.testing import Tester |
||||||
|
diff --git a/numpy/f2py/f2py2e.py b/numpy/f2py/f2py2e.py |
||||||
|
index 4e6d258..b9b955a 100755 |
||||||
|
--- a/numpy/f2py/f2py2e.py |
||||||
|
+++ b/numpy/f2py/f2py2e.py |
||||||
|
@@ -91,7 +91,7 @@ Options: |
||||||
|
--lower is assumed with -h key, and --no-lower without -h key. |
||||||
|
|
||||||
|
--build-dir <dirname> All f2py generated files are created in <dirname>. |
||||||
|
- Default is tempfile.mktemp(). |
||||||
|
+ Default is tempfile.mkstemp(). |
||||||
|
|
||||||
|
--overwrite-signature Overwrite existing signature file. |
||||||
|
|
||||||
|
@@ -428,7 +428,7 @@ def run_compile(): |
||||||
|
del sys.argv[i] |
||||||
|
else: |
||||||
|
remove_build_dir = 1 |
||||||
|
- build_dir = os.path.join(tempfile.mktemp()) |
||||||
|
+ build_dir = tempfile.mkdtemp() |
||||||
|
|
||||||
|
sysinfo_flags = filter(re.compile(r'[-][-]link[-]').match,sys.argv[1:]) |
||||||
|
sys.argv = filter(lambda a,flags=sysinfo_flags:a not in flags,sys.argv) |
||||||
|
-- |
||||||
|
1.8.5.3 |
||||||
|
|
@ -0,0 +1,278 @@ |
|||||||
|
From 34d4897596edd2c517ab57c68d55a55fde1bbcd8 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com> |
||||||
|
Date: Wed, 4 Jan 2017 16:59:54 +0100 |
||||||
|
Subject: [PATCH] Override LAPACK XERBLA |
||||||
|
|
||||||
|
Backported upstream commits: |
||||||
|
374e0b4d2c6f44fdccccfefe0546b607e5291e64 |
||||||
|
f0b2dd7d5151878f2b4b3ea20ff551b27243f27d |
||||||
|
--- |
||||||
|
numpy/core/blasdot/python_xerbla.c | 51 +++++++++++++++++++++++++++++++++++ |
||||||
|
numpy/core/setup.py | 3 ++- |
||||||
|
numpy/linalg/lapack_litemodule.c | 54 ++++++++++++++++++++++++++++++++++++++ |
||||||
|
3 files changed, 107 insertions(+), 1 deletion(-) |
||||||
|
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 a1000ae..495e163 100644 |
||||||
|
--- a/numpy/core/setup.py |
||||||
|
+++ b/numpy/core/setup.py |
||||||
|
@@ -899,12 +899,13 @@ def configuration(parent_package='',top_path=None): |
||||||
|
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[:1] |
||||||
|
+ return ext.depends[:2] |
||||||
|
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','cblas.h'), |
||||||
|
], |
||||||
|
include_dirs = ['blasdot'], |
||||||
|
diff --git a/numpy/linalg/lapack_litemodule.c b/numpy/linalg/lapack_litemodule.c |
||||||
|
index cc62382..4f8cab9 100644 |
||||||
|
--- a/numpy/linalg/lapack_litemodule.c |
||||||
|
+++ b/numpy/linalg/lapack_litemodule.c |
||||||
|
@@ -171,6 +171,9 @@ lapack_lite_dgeev(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
FNAME(dgeev)(&jobvl,&jobvr,&n,DDATA(a),&lda,DDATA(wr),DDATA(wi), |
||||||
|
DDATA(vl),&ldvl,DDATA(vr),&ldvr,DDATA(work),&lwork, |
||||||
|
&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","dgeev_", |
||||||
|
lapack_lite_status__,"jobvl",jobvl,"jobvr",jobvr, |
||||||
|
@@ -254,6 +257,9 @@ lapack_lite_dsyevd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dsyevd)(&jobz,&uplo,&n,DDATA(a),&lda,DDATA(w),DDATA(work), |
||||||
|
&lwork,IDATA(iwork),&liwork,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i}","dsyevd_", |
||||||
|
lapack_lite_status__,"jobz",jobz,"uplo",uplo, |
||||||
|
@@ -341,6 +347,9 @@ lapack_lite_zheevd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zheevd)(&jobz,&uplo,&n,ZDATA(a),&lda,DDATA(w),ZDATA(work), |
||||||
|
&lwork,DDATA(rwork),&lrwork,IDATA(iwork),&liwork,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","zheevd_", |
||||||
|
lapack_lite_status__,"jobz",jobz,"uplo",uplo,"n",n, |
||||||
|
@@ -380,6 +389,9 @@ lapack_lite_dgelsd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
FNAME(dgelsd)(&m,&n,&nrhs,DDATA(a),&lda,DDATA(b),&ldb, |
||||||
|
DDATA(s),&rcond,&rank,DDATA(work),&lwork, |
||||||
|
IDATA(iwork),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i,s:d,s:i,s:i,s:i}","dgelsd_", |
||||||
|
lapack_lite_status__,"m",m,"n",n,"nrhs",nrhs, |
||||||
|
@@ -407,6 +419,9 @@ lapack_lite_dgesv(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dgesv)(&n,&nrhs,DDATA(a),&lda,IDATA(ipiv),DDATA(b),&ldb,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","dgesv_", |
||||||
|
lapack_lite_status__,"n",n,"nrhs",nrhs,"lda",lda, |
||||||
|
@@ -446,6 +461,9 @@ lapack_lite_dgesdd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
FNAME(dgesdd)(&jobz,&m,&n,DDATA(a),&lda,DDATA(s),DDATA(u),&ldu, |
||||||
|
DDATA(vt),&ldvt,DDATA(work),&lwork,IDATA(iwork), |
||||||
|
&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
if (info == 0 && lwork == -1) { |
||||||
|
/* We need to check the result because |
||||||
|
@@ -496,6 +514,9 @@ lapack_lite_dgetrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dgetrf)(&m,&n,DDATA(a),&lda,IDATA(ipiv),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i}","dgetrf_",lapack_lite_status__, |
||||||
|
"m",m,"n",n,"lda",lda,"info",info); |
||||||
|
@@ -516,6 +537,9 @@ lapack_lite_dpotrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dpotrf)(&uplo,&n,DDATA(a),&lda,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i}","dpotrf_",lapack_lite_status__, |
||||||
|
"n",n,"lda",lda,"info",info); |
||||||
|
@@ -540,6 +564,9 @@ lapack_lite_dgeqrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dgeqrf)(&m, &n, DDATA(a), &lda, DDATA(tau), |
||||||
|
DDATA(work), &lwork, &info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","dgeqrf_", |
||||||
|
lapack_lite_status__,"m",m,"n",n,"lda",lda, |
||||||
|
@@ -562,6 +589,9 @@ lapack_lite_dorgqr(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
TRY(check_object(work,NPY_DOUBLE,"work","NPY_DOUBLE","dorgqr")); |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(dorgqr)(&m, &n, &k, DDATA(a), &lda, DDATA(tau), DDATA(work), &lwork, &info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i}","dorgqr_",lapack_lite_status__, |
||||||
|
"info",info); |
||||||
|
@@ -601,6 +631,9 @@ lapack_lite_zgeev(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
FNAME(zgeev)(&jobvl,&jobvr,&n,ZDATA(a),&lda,ZDATA(w),ZDATA(vl), |
||||||
|
&ldvl,ZDATA(vr),&ldvr,ZDATA(work),&lwork, |
||||||
|
DDATA(rwork),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:c,s:c,s:i,s:i,s:i,s:i,s:i,s:i}","zgeev_", |
||||||
|
lapack_lite_status__,"jobvl",jobvl,"jobvr",jobvr, |
||||||
|
@@ -641,6 +674,9 @@ lapack_lite_zgelsd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zgelsd)(&m,&n,&nrhs,ZDATA(a),&lda,ZDATA(b),&ldb,DDATA(s),&rcond, |
||||||
|
&rank,ZDATA(work),&lwork,DDATA(rwork),IDATA(iwork),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i}","zgelsd_", |
||||||
|
lapack_lite_status__,"m",m,"n",n,"nrhs",nrhs,"lda",lda, |
||||||
|
@@ -667,6 +703,9 @@ lapack_lite_zgesv(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zgesv)(&n,&nrhs,ZDATA(a),&lda,IDATA(ipiv),ZDATA(b),&ldb,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","zgesv_", |
||||||
|
lapack_lite_status__,"n",n,"nrhs",nrhs,"lda",lda, |
||||||
|
@@ -708,6 +747,9 @@ lapack_lite_zgesdd(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
FNAME(zgesdd)(&jobz,&m,&n,ZDATA(a),&lda,DDATA(s),ZDATA(u),&ldu, |
||||||
|
ZDATA(vt),&ldvt,ZDATA(work),&lwork,DDATA(rwork), |
||||||
|
IDATA(iwork),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:c,s:i,s:i,s:i,s:i,s:i,s:i,s:i}","zgesdd_", |
||||||
|
lapack_lite_status__,"jobz",jobz,"m",m,"n",n, |
||||||
|
@@ -732,6 +774,9 @@ lapack_lite_zgetrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zgetrf)(&m,&n,ZDATA(a),&lda,IDATA(ipiv),&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i}","zgetrf_", |
||||||
|
lapack_lite_status__,"m",m,"n",n,"lda",lda,"info",info); |
||||||
|
@@ -751,6 +796,9 @@ lapack_lite_zpotrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
TRY(check_object(a,NPY_CDOUBLE,"a","NPY_CDOUBLE","zpotrf")); |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zpotrf)(&uplo,&n,ZDATA(a),&lda,&info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i}","zpotrf_", |
||||||
|
lapack_lite_status__,"n",n,"lda",lda,"info",info); |
||||||
|
@@ -774,6 +822,9 @@ lapack_lite_zgeqrf(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
|
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zgeqrf)(&m, &n, ZDATA(a), &lda, ZDATA(tau), ZDATA(work), &lwork, &info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i}","zgeqrf_",lapack_lite_status__,"m",m,"n",n,"lda",lda,"lwork",lwork,"info",info); |
||||||
|
} |
||||||
|
@@ -797,6 +848,9 @@ lapack_lite_zungqr(PyObject *NPY_UNUSED(self), PyObject *args) |
||||||
|
lapack_lite_status__ = \ |
||||||
|
FNAME(zungqr)(&m, &n, &k, ZDATA(a), &lda, ZDATA(tau), ZDATA(work), |
||||||
|
&lwork, &info); |
||||||
|
+ if (PyErr_Occurred()) { |
||||||
|
+ return NULL; |
||||||
|
+ } |
||||||
|
|
||||||
|
return Py_BuildValue("{s:i,s:i}","zungqr_",lapack_lite_status__, |
||||||
|
"info",info); |
||||||
|
-- |
||||||
|
2.7.4 |
||||||
|
|
@ -0,0 +1,35 @@ |
|||||||
|
From 64f64b517153a6b3de48c5b911920239b3eb1e18 Mon Sep 17 00:00:00 2001 |
||||||
|
From: "Bradley M. Froehle" <brad.froehle@gmail.com> |
||||||
|
Date: Sun, 24 Feb 2013 21:31:28 -0800 |
||||||
|
Subject: [PATCH] BUG: Choose a more unique PY_ARRAY_UNIQUE_SYMBOL in f2py. |
||||||
|
|
||||||
|
In a few exceptional cases where symbols are shared between different |
||||||
|
Python modules the use of `PyArray_API` in f2py (fortranobject.h) |
||||||
|
conflicts with the regular use of the same symbol in the multiarray |
||||||
|
module. Generally the symptom of this conflicting use is a segfault |
||||||
|
when importing a f2py'ed module. This occurs because the module init |
||||||
|
code somehow overwrites the first element of `PyArray_API` with the |
||||||
|
location of `PyArray_API`, causing a crash when |
||||||
|
`PyArray_GetNDArrayCVersion` is called. |
||||||
|
|
||||||
|
Closes gh-2521. |
||||||
|
--- |
||||||
|
numpy/f2py/src/fortranobject.h | 2 +- |
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/numpy/f2py/src/fortranobject.h b/numpy/f2py/src/fortranobject.h |
||||||
|
index 283021a..07e810f 100644 |
||||||
|
--- a/numpy/f2py/src/fortranobject.h |
||||||
|
+++ b/numpy/f2py/src/fortranobject.h |
||||||
|
@@ -9,7 +9,7 @@ extern "C" { |
||||||
|
#ifdef FORTRANOBJECT_C |
||||||
|
#define NO_IMPORT_ARRAY |
||||||
|
#endif |
||||||
|
-#define PY_ARRAY_UNIQUE_SYMBOL PyArray_API |
||||||
|
+#define PY_ARRAY_UNIQUE_SYMBOL _npy_f2py_ARRAY_API |
||||||
|
#include "numpy/arrayobject.h" |
||||||
|
|
||||||
|
/* |
||||||
|
-- |
||||||
|
2.7.4 |
||||||
|
|
@ -0,0 +1,134 @@ |
|||||||
|
--- |
||||||
|
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 ++++- |
||||||
|
7 files changed, 18 insertions(+), 5 deletions(-) |
||||||
|
|
||||||
|
diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h |
||||||
|
index 9707a7a..321cc04 100644 |
||||||
|
--- a/numpy/core/include/numpy/npy_cpu.h |
||||||
|
+++ b/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) |
||||||
|
diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h |
||||||
|
index 4e3349f..d8af8b3 100644 |
||||||
|
--- a/numpy/core/include/numpy/npy_endian.h |
||||||
|
+++ b/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) \ |
||||||
|
diff --git a/numpy/core/setup.py b/numpy/core/setup.py |
||||||
|
index a1000ae..36cec26 100644 |
||||||
|
--- a/numpy/core/setup.py |
||||||
|
+++ b/numpy/core/setup.py |
||||||
|
@@ -444,7 +444,7 @@ def configuration(parent_package='',top_path=None): |
||||||
|
'INTEL_EXTENDED_16_BYTES_LE', |
||||||
|
'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) |
||||||
|
diff --git a/numpy/core/setup_common.py b/numpy/core/setup_common.py |
||||||
|
index 58876a8..3289afe 100644 |
||||||
|
--- a/numpy/core/setup_common.py |
||||||
|
+++ b/numpy/core/setup_common.py |
||||||
|
@@ -221,6 +221,8 @@ _IEEE_QUAD_PREC_BE = ['300', '031', '326', '363', '105', '100', '000', '000', |
||||||
|
_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 |
||||||
|
@@ -258,6 +260,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' |
||||||
|
diff --git a/numpy/core/src/npymath/ieee754.c.src b/numpy/core/src/npymath/ieee754.c.src |
||||||
|
index 90bbf5f..bccb3c8 100644 |
||||||
|
--- a/numpy/core/src/npymath/ieee754.c.src |
||||||
|
+++ b/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 |
||||||
|
diff --git a/numpy/core/src/npymath/npy_math_private.h b/numpy/core/src/npymath/npy_math_private.h |
||||||
|
index 722d03f..b0ede48 100644 |
||||||
|
--- a/numpy/core/src/npymath/npy_math_private.h |
||||||
|
+++ b/numpy/core/src/npymath/npy_math_private.h |
||||||
|
@@ -398,7 +398,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) |
||||||
|
diff --git a/numpy/core/src/private/npy_fpmath.h b/numpy/core/src/private/npy_fpmath.h |
||||||
|
index 92338e4..f709d39 100644 |
||||||
|
--- a/numpy/core/src/private/npy_fpmath.h |
||||||
|
+++ b/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 |
||||||
|
@@ -40,7 +42,8 @@ |
||||||
|
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_DOUBLE_DOUBLE_BE)) |
||||||
|
+ defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \ |
||||||
|
+ defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)) |
||||||
|
#error No long double representation defined |
||||||
|
#endif |
||||||
|
|
||||||
|
-- |
||||||
|
1.9.3 |
||||||
|
|
@ -0,0 +1,546 @@ |
|||||||
|
%global with_python3 1 |
||||||
|
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} |
||||||
|
|
||||||
|
#uncomment next line for a release candidate or a beta |
||||||
|
#global relc rc1 |
||||||
|
|
||||||
|
Name: numpy |
||||||
|
Version: 1.7.1 |
||||||
|
Release: 13%{?dist} |
||||||
|
Epoch: 1 |
||||||
|
Summary: A fast multidimensional array facility for Python |
||||||
|
|
||||||
|
Group: Development/Languages |
||||||
|
# Everything is BSD except for class SafeEval in numpy/lib/utils.py which is Python |
||||||
|
License: BSD and Python |
||||||
|
URL: http://www.numpy.org/ |
||||||
|
Source0: http://downloads.sourceforge.net/numpy/%{name}-%{version}%{?relc}.tar.gz |
||||||
|
|
||||||
|
# Fix of CVE-2014-1858, CVE-2014-1859: #1062009 |
||||||
|
# Modified version of 3 upstream commits, so they apply to current version: |
||||||
|
# - 8296aa0b911c036c984e23665ee0f7ddca579b91 |
||||||
|
# - 524b9eaa33ec67e34eb31a208e02bb934f778096 |
||||||
|
# - 0bb46c1448b0d3f5453d5182a17ea7ac5854ee15 |
||||||
|
Patch0: CVE-2014-1858-CVE-2014-1859.patch |
||||||
|
# bz1125621 |
||||||
|
Patch1: numpy-1.8.1.ppc64le.patch |
||||||
|
# bz1167156 |
||||||
|
Patch2: numpy-1.7.1.f2py.patch |
||||||
|
# bz1179055 |
||||||
|
Patch3: numpy-1.7.1-override-LAPACK-XERBLA.patch |
||||||
|
|
||||||
|
BuildRequires: python2-devel lapack-devel python-setuptools gcc-gfortran atlas-devel python-nose |
||||||
|
Requires: python-nose |
||||||
|
%if 0%{?with_python3} |
||||||
|
BuildRequires: python3-devel |
||||||
|
BuildRequires: python3-setuptools |
||||||
|
BuildRequires: python3-nose |
||||||
|
%endif |
||||||
|
BuildRequires: Cython |
||||||
|
|
||||||
|
%description |
||||||
|
NumPy is a general-purpose array-processing package designed to |
||||||
|
efficiently manipulate large multi-dimensional arrays of arbitrary |
||||||
|
records without sacrificing too much speed for small multi-dimensional |
||||||
|
arrays. NumPy is built on the Numeric code base and adds features |
||||||
|
introduced by numarray as well as an extended C-API and the ability to |
||||||
|
create arrays of arbitrary type. |
||||||
|
|
||||||
|
There are also basic facilities for discrete fourier transform, |
||||||
|
basic linear algebra and random number generation. Also included in |
||||||
|
this package is a version of f2py that works properly with NumPy. |
||||||
|
|
||||||
|
%package f2py |
||||||
|
Summary: f2py for numpy |
||||||
|
Group: Development/Libraries |
||||||
|
Requires: %{name} = %{epoch}:%{version}-%{release} |
||||||
|
Requires: python-devel |
||||||
|
Provides: f2py = %{version}-%{release} |
||||||
|
Obsoletes: f2py <= 2.45.241_1927 |
||||||
|
|
||||||
|
%description f2py |
||||||
|
This package includes a version of f2py that works properly with NumPy. |
||||||
|
|
||||||
|
%if 0%{?with_python3} |
||||||
|
%package -n python3-numpy |
||||||
|
Summary: A fast multidimensional array facility for Python |
||||||
|
|
||||||
|
Group: Development/Languages |
||||||
|
License: BSD |
||||||
|
%description -n python3-numpy |
||||||
|
NumPy is a general-purpose array-processing package designed to |
||||||
|
efficiently manipulate large multi-dimensional arrays of arbitrary |
||||||
|
records without sacrificing too much speed for small multi-dimensional |
||||||
|
arrays. NumPy is built on the Numeric code base and adds features |
||||||
|
introduced by numarray as well as an extended C-API and the ability to |
||||||
|
create arrays of arbitrary type. |
||||||
|
|
||||||
|
There are also basic facilities for discrete fourier transform, |
||||||
|
basic linear algebra and random number generation. Also included in |
||||||
|
this package is a version of f2py that works properly with NumPy. |
||||||
|
|
||||||
|
%package -n python3-numpy-f2py |
||||||
|
Summary: f2py for numpy |
||||||
|
Group: Development/Libraries |
||||||
|
Requires: python3-numpy = %{epoch}:%{version}-%{release} |
||||||
|
Requires: python3-devel |
||||||
|
Provides: python3-f2py = %{version}-%{release} |
||||||
|
Obsoletes: python3-f2py <= 2.45.241_1927 |
||||||
|
|
||||||
|
%description -n python3-numpy-f2py |
||||||
|
This package includes a version of f2py that works properly with NumPy. |
||||||
|
%endif # with_python3 |
||||||
|
|
||||||
|
%prep |
||||||
|
%setup -q -n %{name}-%{version}%{?relc} |
||||||
|
%patch0 -p1 |
||||||
|
|
||||||
|
%ifarch ppc64le |
||||||
|
%patch1 -p1 |
||||||
|
%endif |
||||||
|
|
||||||
|
%patch2 -p1 |
||||||
|
%patch3 -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 |
||||||
|
|
||||||
|
%if 0%{?with_python3} |
||||||
|
rm -rf %{py3dir} |
||||||
|
cp -a . %{py3dir} |
||||||
|
%endif |
||||||
|
|
||||||
|
cat >> site.cfg <<EOF |
||||||
|
[DEFAULT] |
||||||
|
library_dirs = %{_libdir} |
||||||
|
include_dirs = /usr/include |
||||||
|
[atlas] |
||||||
|
library_dirs = %{_libdir}/atlas |
||||||
|
atlas_libs = tatlas |
||||||
|
EOF |
||||||
|
|
||||||
|
|
||||||
|
%build |
||||||
|
%if 0%{?with_python3} |
||||||
|
pushd %{py3dir} |
||||||
|
env ATLAS=%{_libdir} FFTW=%{_libdir} BLAS=%{_libdir} \ |
||||||
|
LAPACK=%{_libdir} CFLAGS="%{optflags}" \ |
||||||
|
%{__python3} setup.py build |
||||||
|
popd |
||||||
|
%endif # with _python3 |
||||||
|
|
||||||
|
env ATLAS=%{_libdir} FFTW=%{_libdir} BLAS=%{_libdir} \ |
||||||
|
LAPACK=%{_libdir} CFLAGS="%{optflags}" \ |
||||||
|
%{__python} setup.py build |
||||||
|
|
||||||
|
%install |
||||||
|
# first install python3 so the binaries are overwritten by the python2 ones |
||||||
|
%if 0%{?with_python3} |
||||||
|
pushd %{py3dir} |
||||||
|
#%%{__python} setup.py install -O1 --skip-build --root %%{buildroot} |
||||||
|
# skip-build currently broken, this works around it for now |
||||||
|
env ATLAS=%{_libdir} FFTW=%{_libdir} BLAS=%{_libdir} \ |
||||||
|
LAPACK=%{_libdir} CFLAGS="%{optflags}" \ |
||||||
|
%{__python3} setup.py install --root %{buildroot} |
||||||
|
rm -rf docs-f2py ; mv %{buildroot}%{python3_sitearch}/%{name}/f2py/docs docs-f2py |
||||||
|
mv -f %{buildroot}%{python3_sitearch}/%{name}/f2py/f2py.1 f2py.1 |
||||||
|
rm -rf doc ; mv -f %{buildroot}%{python3_sitearch}/%{name}/doc . |
||||||
|
install -D -p -m 0644 f2py.1 %{buildroot}%{_mandir}/man1/f2py.1 |
||||||
|
pushd %{buildroot}%{_bindir} &> /dev/null |
||||||
|
popd &> /dev/null |
||||||
|
|
||||||
|
# Remove doc files. They should in in %%doc |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/COMPATIBILITY |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/DEV_README.txt |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/INSTALL.txt |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/LICENSE.txt |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/README.txt |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/THANKS.txt |
||||||
|
rm -f %{buildroot}%{python3_sitearch}/%{name}/site.cfg.example |
||||||
|
|
||||||
|
popd |
||||||
|
%endif # with_python3 |
||||||
|
|
||||||
|
#%%{__python} setup.py install -O1 --skip-build --root %%{buildroot} |
||||||
|
# skip-build currently broken, this works around it for now |
||||||
|
env ATLAS=%{_libdir} FFTW=%{_libdir} BLAS=%{_libdir} \ |
||||||
|
LAPACK=%{_libdir} CFLAGS="%{optflags}" \ |
||||||
|
%{__python} setup.py install --root %{buildroot} |
||||||
|
rm -rf docs-f2py ; mv %{buildroot}%{python_sitearch}/%{name}/f2py/docs docs-f2py |
||||||
|
mv -f %{buildroot}%{python_sitearch}/%{name}/f2py/f2py.1 f2py.1 |
||||||
|
# remove sphinx docs, save dir for tests |
||||||
|
rm -rf doc/* |
||||||
|
install -D -p -m 0644 f2py.1 %{buildroot}%{_mandir}/man1/f2py.1 |
||||||
|
pushd %{buildroot}%{_bindir} &> /dev/null |
||||||
|
|
||||||
|
# resolves rhbz#987032 |
||||||
|
sed -i 's@#!/usr/bin/env python@#!/usr/bin/python@' f2py |
||||||
|
|
||||||
|
# symlink for anyone who was using f2py.numpy |
||||||
|
ln -s f2py f2py.numpy |
||||||
|
popd &> /dev/null |
||||||
|
|
||||||
|
#symlink for includes, BZ 185079 |
||||||
|
mkdir -p %{buildroot}/usr/include |
||||||
|
ln -s %{python_sitearch}/%{name}/core/include/numpy/ %{buildroot}/usr/include/numpy |
||||||
|
|
||||||
|
# Remove doc files. They should in in %%doc |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/COMPATIBILITY |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/DEV_README.txt |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/INSTALL.txt |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/LICENSE.txt |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/README.txt |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/THANKS.txt |
||||||
|
rm -f %{buildroot}%{python_sitearch}/%{name}/site.cfg.example |
||||||
|
|
||||||
|
%check |
||||||
|
pushd doc &> /dev/null |
||||||
|
PYTHONPATH="%{buildroot}%{python_sitearch}" %{__python} -c "import pkg_resources, numpy ; numpy.test(verbose=3)" \ |
||||||
|
%ifarch s390 s390x |
||||||
|
|| : |
||||||
|
%endif |
||||||
|
# don't remove this comment |
||||||
|
popd &> /dev/null |
||||||
|
|
||||||
|
%if 0%{?with_python3} |
||||||
|
pushd doc &> /dev/null |
||||||
|
# there is no python3-nose yet |
||||||
|
PYTHONPATH="%{buildroot}%{python3_sitearch}" %{__python3} -c "import pkg_resources, numpy ; numpy.test()" \ |
||||||
|
%ifarch s390 s390x |
||||||
|
|| : |
||||||
|
%endif |
||||||
|
# don't remove this comment |
||||||
|
popd &> /dev/null |
||||||
|
|
||||||
|
%endif # with_python3 |
||||||
|
|
||||||
|
|
||||||
|
%files |
||||||
|
%doc docs-f2py LICENSE.txt README.txt THANKS.txt DEV_README.txt COMPATIBILITY site.cfg.example |
||||||
|
%dir %{python_sitearch}/%{name} |
||||||
|
%{python_sitearch}/%{name}/*.py* |
||||||
|
%{python_sitearch}/%{name}/core |
||||||
|
%{python_sitearch}/%{name}/distutils |
||||||
|
%{python_sitearch}/%{name}/doc |
||||||
|
%{python_sitearch}/%{name}/fft |
||||||
|
%{python_sitearch}/%{name}/lib |
||||||
|
%{python_sitearch}/%{name}/linalg |
||||||
|
%{python_sitearch}/%{name}/ma |
||||||
|
%{python_sitearch}/%{name}/numarray |
||||||
|
%{python_sitearch}/%{name}/oldnumeric |
||||||
|
%{python_sitearch}/%{name}/random |
||||||
|
%{python_sitearch}/%{name}/testing |
||||||
|
%{python_sitearch}/%{name}/tests |
||||||
|
%{python_sitearch}/%{name}/compat |
||||||
|
%{python_sitearch}/%{name}/matrixlib |
||||||
|
%{python_sitearch}/%{name}/polynomial |
||||||
|
%{python_sitearch}/%{name}-*.egg-info |
||||||
|
%{_includedir}/numpy |
||||||
|
|
||||||
|
%files f2py |
||||||
|
%{_mandir}/man*/* |
||||||
|
%{_bindir}/f2py |
||||||
|
%{_bindir}/f2py.numpy |
||||||
|
%{python_sitearch}/%{name}/f2py |
||||||
|
|
||||||
|
%if 0%{?with_python3} |
||||||
|
%files -n python3-numpy |
||||||
|
%doc docs-f2py doc/* LICENSE.txt README.txt THANKS.txt DEV_README.txt COMPATIBILITY site.cfg.example |
||||||
|
%{python3_sitearch}/%{name}/__pycache__/* |
||||||
|
%dir %{python3_sitearch}/%{name} |
||||||
|
%{python3_sitearch}/%{name}/*.py* |
||||||
|
%{python3_sitearch}/%{name}/core |
||||||
|
%{python3_sitearch}/%{name}/distutils |
||||||
|
%{python3_sitearch}/%{name}/fft |
||||||
|
%{python3_sitearch}/%{name}/lib |
||||||
|
%{python3_sitearch}/%{name}/linalg |
||||||
|
%{python3_sitearch}/%{name}/ma |
||||||
|
%{python3_sitearch}/%{name}/numarray |
||||||
|
%{python3_sitearch}/%{name}/oldnumeric |
||||||
|
%{python3_sitearch}/%{name}/random |
||||||
|
%{python3_sitearch}/%{name}/testing |
||||||
|
%{python3_sitearch}/%{name}/tests |
||||||
|
%{python3_sitearch}/%{name}/compat |
||||||
|
%{python3_sitearch}/%{name}/matrixlib |
||||||
|
%{python3_sitearch}/%{name}/polynomial |
||||||
|
%{python3_sitearch}/%{name}-*.egg-info |
||||||
|
|
||||||
|
%files -n python3-numpy-f2py |
||||||
|
%{_bindir}/f2py3 |
||||||
|
%{python3_sitearch}/%{name}/f2py |
||||||
|
%endif # with_python3 |
||||||
|
|
||||||
|
|
||||||
|
%changelog |
||||||
|
* Tue Jan 03 2017 nforro@redhat.com - 1:1.7.1-13 |
||||||
|
- resolves: #1179055 |
||||||
|
override LAPACK XERBLA |
||||||
|
|
||||||
|
* Thu Dec 22 2016 nforro@redhat.com - 1:1.7.1-12 |
||||||
|
- resolves: #1167156 |
||||||
|
fix bug in f2py leading to segfault in modules with shared symbols |
||||||
|
|
||||||
|
* Thu Aug 07 2014 jchaloup <jchaloup@redhat.com> - 1:1.7.1-11 |
||||||
|
- resolves: #1125621 |
||||||
|
support for ppc64le, taken from private-rhel-7.0-ppc64le branch |
||||||
|
|
||||||
|
* Tue Mar 18 2014 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-10 |
||||||
|
- fix changelog entry below |
||||||
|
|
||||||
|
* Mon Feb 10 2014 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-9 |
||||||
|
- Fix CVE-2014-1858, CVE-2014-1859: #1062009 |
||||||
|
|
||||||
|
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1:1.7.1-8 |
||||||
|
- Mass rebuild 2014-01-24 |
||||||
|
|
||||||
|
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1:1.7.1-7 |
||||||
|
- Mass rebuild 2013-12-27 |
||||||
|
|
||||||
|
* Mon Nov 25 2013 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-6 |
||||||
|
- keep numpy.doc in site_arch |
||||||
|
|
||||||
|
* Wed Sep 25 2013 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-5 |
||||||
|
- rebuilt with atlas 3.10, rhbz#1009069 |
||||||
|
|
||||||
|
* Wed Aug 28 2013 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-4 |
||||||
|
- URL Fix, rhbz#1001337 |
||||||
|
|
||||||
|
* Tue Jul 23 2013 Tomas Tomecek <ttomecek@redhat.com> - 1:1.7.1-3 |
||||||
|
- Update License |
||||||
|
- Fix rpmlint warnings |
||||||
|
- Increase verbosity level of tests |
||||||
|
- Disable python 3 build |
||||||
|
- Fix rhbz#987032 (SCL related: wrong shebang) |
||||||
|
|
||||||
|
* Sun Jun 2 2013 Orion Poplawski <orion@nwra.com> - 1:1.7.1-2 |
||||||
|
- Specfile cleanup (bug #969854) |
||||||
|
|
||||||
|
* Wed Apr 10 2013 Orion Poplawski <orion@nwra.com> - 1:1.7.1-1 |
||||||
|
- Update to 1.7.1 |
||||||
|
|
||||||
|
* Sat Feb 9 2013 Orion Poplawski <orion@nwra.com> - 1:1.7.0-1 |
||||||
|
- Update to 1.7.0 final |
||||||
|
|
||||||
|
* Sun Dec 30 2012 Orion Poplawski <orion@nwra.com> - 1:1.7.0-0.5.rc1 |
||||||
|
- Update to 1.7.0rc1 |
||||||
|
|
||||||
|
* Thu Sep 20 2012 Orion Poplawski <orion@nwra.com> - 1:1.7.0-0.4.b2 |
||||||
|
- Update to 1.7.0b2 |
||||||
|
- Drop patches applied upstream |
||||||
|
|
||||||
|
* Wed Aug 22 2012 Orion Poplawski <orion@nwra.com> - 1:1.7.0-0.3.b1 |
||||||
|
- Add patch from github pull 371 to fix python 3.3 pickle issue |
||||||
|
- Remove cython .c source regeneration - fails now |
||||||
|
|
||||||
|
* Wed Aug 22 2012 Orion Poplawski <orion@nwra.com> - 1:1.7.0-0.2.b1 |
||||||
|
- add workaround for rhbz#849713 (fixes FTBFS) |
||||||
|
|
||||||
|
* Tue Aug 21 2012 Orion Poplawski <orion@cora.nwra.com> - 1:1.7.0-0.1.b1 |
||||||
|
- Update to 1.7.0b1 |
||||||
|
- Rebase python 3.3 patchs to current git master |
||||||
|
- Drop patches applied upstream |
||||||
|
|
||||||
|
* Sun Aug 5 2012 David Malcolm <dmalcolm@redhat.com> - 1:1.6.2-5 |
||||||
|
- rework patches for 3.3 to more directly reflect upstream's commits |
||||||
|
- re-enable test suite on python 3 |
||||||
|
- forcibly regenerate Cython .c source to avoid import issues on Python 3.3 |
||||||
|
|
||||||
|
* Sun Aug 5 2012 Thomas Spura <tomspur@fedoraproject.org> - 1:1.6.2-4 |
||||||
|
- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 |
||||||
|
- needs unicode patch |
||||||
|
|
||||||
|
* Fri Aug 3 2012 David Malcolm <dmalcolm@redhat.com> - 1:1.6.2-3 |
||||||
|
- remove rhel logic from with_python3 conditional |
||||||
|
|
||||||
|
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.6.2-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||||
|
|
||||||
|
* Sun May 20 2012 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.2-1 |
||||||
|
- Update to 1.6.2 final |
||||||
|
|
||||||
|
* Sat May 12 2012 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.2rc1-0.1 |
||||||
|
- Update to 1.6.2rc1 |
||||||
|
|
||||||
|
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.6.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon Nov 7 2011 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.1-1 |
||||||
|
- Update to 1.6.1 |
||||||
|
|
||||||
|
* Fri Jun 17 2011 Jon Ciesla <limb@jcomserv.net> - 1:1.6.0-2 |
||||||
|
- Bump and rebuild for BZ 712251. |
||||||
|
|
||||||
|
* Mon May 16 2011 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.0-1 |
||||||
|
- Update to 1.6.0 final |
||||||
|
|
||||||
|
* Mon Apr 4 2011 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.0-0.2.b2 |
||||||
|
- Update to 1.6.0b2 |
||||||
|
- Drop import patch fixed upstream |
||||||
|
|
||||||
|
* Thu Mar 31 2011 Orion Poplawski <orion@cora.nwra.com> - 1:1.6.0-0.1.b1 |
||||||
|
- Update to 1.6.0b1 |
||||||
|
- Build python3 module with python3 |
||||||
|
- Add patch from upstream to fix build time import error |
||||||
|
|
||||||
|
* Wed Mar 30 2011 Orion Poplawski <orion@cora.nwra.com> - 1:1.5.1-1 |
||||||
|
- Update to 1.5.1 final |
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.5.1-0.4 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||||
|
|
||||||
|
* Thu Jan 13 2011 Dan Horák <dan[at]danny.cz> - 1:1.5.1-0.3 |
||||||
|
- fix the AttributeError during tests |
||||||
|
- fix build on s390(x) |
||||||
|
|
||||||
|
* Wed Dec 29 2010 David Malcolm <dmalcolm@redhat.com> - 1:1.5.1-0.2 |
||||||
|
- rebuild for newer python3 |
||||||
|
|
||||||
|
* Wed Oct 27 2010 Thomas Spura <tomspur@fedoraproject.org> - 1:1.5.1-0.1 |
||||||
|
- update to 1.5.1rc1 |
||||||
|
- add python3 subpackage |
||||||
|
- some spec-cleanups |
||||||
|
|
||||||
|
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 1:1.4.1-6 |
||||||
|
- actually add the patch this time |
||||||
|
|
||||||
|
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 1:1.4.1-5 |
||||||
|
- fix segfault within %%check on 2.7 (patch 2) |
||||||
|
|
||||||
|
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 1:1.4.1-4 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild |
||||||
|
|
||||||
|
* Sun Jul 18 2010 Dan Horák <dan[at]danny.cz> 1.4.1-3 |
||||||
|
- ignore the "Ticket #1299 second test" failure on s390(x) |
||||||
|
|
||||||
|
* Thu Jun 24 2010 Jef Spaleta <jspaleta@fedoraprject.org> 1.4.1-2 |
||||||
|
- source commit fix |
||||||
|
|
||||||
|
* Thu Jun 24 2010 Jef Spaleta <jspaleta@fedoraprject.org> 1.4.1-1 |
||||||
|
- New upstream release. Include backported doublefree patch |
||||||
|
|
||||||
|
* Mon Apr 26 2010 Jon Ciesla <limb@jcomserv.net> 1.3.0-8 |
||||||
|
- Moved distutils back to the main package, BZ 572820. |
||||||
|
|
||||||
|
* Thu Apr 08 2010 Jon Ciesla <limb@jcomserv.net> 1.3.0-7 |
||||||
|
- Reverted to 1.3.0 after upstream pulled 1.4.0, BZ 579065. |
||||||
|
|
||||||
|
* Tue Mar 02 2010 Jon Ciesla <limb@jcomserv.net> 1.4.0-5 |
||||||
|
- Linking /usr/include/numpy to .h files, BZ 185079. |
||||||
|
|
||||||
|
* Tue Feb 16 2010 Jon Ciesla <limb@jcomserv.net> 1.4.0-4 |
||||||
|
- Re-enabling atlas BR, dropping lapack Requires. |
||||||
|
|
||||||
|
* Wed Feb 10 2010 Jon Ciesla <limb@jcomserv.net> 1.4.0-3 |
||||||
|
- Since the previous didn't work, Requiring lapack. |
||||||
|
|
||||||
|
* Tue Feb 09 2010 Jon Ciesla <limb@jcomserv.net> 1.4.0-2 |
||||||
|
- Temporarily dropping atlas BR to work around 562577. |
||||||
|
|
||||||
|
* Fri Jan 22 2010 Jon Ciesla <limb@jcomserv.net> 1.4.0-1 |
||||||
|
- 1.4.0. |
||||||
|
- Dropped ARM patch, ARM support added upstream. |
||||||
|
|
||||||
|
* Tue Nov 17 2009 Jitesh Shah <jiteshs@marvell.com> - 1.3.0-6.fa1 |
||||||
|
- Add ARM support |
||||||
|
|
||||||
|
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.0-6 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||||
|
|
||||||
|
* Thu Jun 11 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-5 |
||||||
|
- Fixed atlas BR, BZ 505376. |
||||||
|
|
||||||
|
* Fri Apr 17 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-4 |
||||||
|
- EVR bump for pygame chainbuild. |
||||||
|
|
||||||
|
* Fri Apr 17 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-3 |
||||||
|
- Moved linalg, fft back to main package. |
||||||
|
|
||||||
|
* Tue Apr 14 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-2 |
||||||
|
- Split out f2py into subpackage, thanks Peter Robinson pbrobinson@gmail.com. |
||||||
|
|
||||||
|
* Tue Apr 07 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-1 |
||||||
|
- Update to latest upstream. |
||||||
|
- Fixed Source0 URL. |
||||||
|
|
||||||
|
* Thu Apr 02 2009 Jon Ciesla <limb@jcomserv.net> 1.3.0-0.rc1 |
||||||
|
- Update to latest upstream. |
||||||
|
|
||||||
|
* Thu Mar 05 2009 Jon Ciesla <limb@jcomserv.net> 1.2.1-3 |
||||||
|
- Require python-devel, BZ 488464. |
||||||
|
|
||||||
|
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri Dec 19 2008 Jon Ciesla <limb@jcomserv.net> 1.2.1-1 |
||||||
|
- Update to 1.2.1. |
||||||
|
|
||||||
|
* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 1.2.0-2 |
||||||
|
- Rebuild for Python 2.6 |
||||||
|
|
||||||
|
* Tue Oct 07 2008 Jon Ciesla <limb@jcomserv.net> 1.2.0-1 |
||||||
|
- New upstream release, added python-nose BR. BZ 465999. |
||||||
|
- Using atlas blas, not blas-devel. BZ 461472. |
||||||
|
|
||||||
|
* Wed Aug 06 2008 Jon Ciesla <limb@jcomserv.net> 1.1.1-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Thu May 29 2008 Jarod Wilson <jwilson@redhat.com> 1.1.0-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Tue May 06 2008 Jarod Wilson <jwilson@redhat.com> 1.0.4-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Mon Feb 11 2008 Jarod Wilson <jwilson@redhat.com> 1.0.3.1-2 |
||||||
|
- Add python egg to %%files on f9+ |
||||||
|
|
||||||
|
* Wed Aug 22 2007 Jarod Wilson <jwilson@redhat.com> 1.0.3.1-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Wed Jun 06 2007 Jarod Wilson <jwilson@redhat.com> 1.0.3-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Mon May 14 2007 Jarod Wilson <jwilson@redhat.com> 1.0.2-2 |
||||||
|
- Drop BR: atlas-devel, since it just provides binary-compat |
||||||
|
blas and lapack libs. Atlas can still be optionally used |
||||||
|
at runtime. (Note: this is all per the atlas maintainer). |
||||||
|
|
||||||
|
* Mon May 14 2007 Jarod Wilson <jwilson@redhat.com> 1.0.2-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Tue Apr 17 2007 Jarod Wilson <jwilson@redhat.com> 1.0.1-4 |
||||||
|
- Update gfortran patch to recognize latest gfortran f95 support |
||||||
|
- Resolves rhbz#236444 |
||||||
|
|
||||||
|
* Fri Feb 23 2007 Jarod Wilson <jwilson@redhat.com> 1.0.1-3 |
||||||
|
- Fix up cpuinfo bug (#229753). Upstream bug/change: |
||||||
|
http://projects.scipy.org/scipy/scipy/ticket/349 |
||||||
|
|
||||||
|
* Thu Jan 04 2007 Jarod Wilson <jwilson@redhat.com> 1.0.1-2 |
||||||
|
- Per discussion w/Jose Matos, Obsolete/Provide f2py, as the |
||||||
|
stand-alone one is no longer supported/maintained upstream |
||||||
|
|
||||||
|
* Wed Dec 13 2006 Jarod Wilson <jwilson@redhat.com> 1.0.1-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Tue Dec 12 2006 Jarod Wilson <jwilson@redhat.com> 1.0-2 |
||||||
|
- Rebuild for python 2.5 |
||||||
|
|
||||||
|
* Wed Oct 25 2006 Jarod Wilson <jwilson@redhat.com> 1.0-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Wed Sep 06 2006 Jarod Wilson <jwilson@redhat.com> 0.9.8-1 |
||||||
|
- New upstream release |
||||||
|
|
||||||
|
* Wed Apr 26 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 0.9.6-1 |
||||||
|
- Upstream update |
||||||
|
|
||||||
|
* Thu Feb 16 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 0.9.5-1 |
||||||
|
- Upstream update |
||||||
|
|
||||||
|
* Mon Feb 13 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 0.9.4-2 |
||||||
|
- Rebuild for Fedora Extras 5 |
||||||
|
|
||||||
|
* Thu Feb 2 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 0.9.4-1 |
||||||
|
- Initial RPM release |
||||||
|
- Added gfortran patch from Neal Becker |
Loading…
Reference in new issue