Accepting request 1046630 from devel:languages:python:numeric

OBS-URL: https://build.opensuse.org/request/show/1046630
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-numba?expand=0&rev=36
This commit is contained in:
Dominique Leuenberger 2023-01-04 16:51:09 +00:00 committed by Git OBS Bridge
commit d90b9e78dd
9 changed files with 521 additions and 46 deletions

View File

@ -1,3 +1,5 @@
<multibuild>
<package>test</package>
<package>test-py38</package>
<package>test-py39</package>
<package>test-py310</package>
</multibuild>

View File

@ -1,12 +0,0 @@
Index: numba-0.56.2/numba/tests/test_cli.py
===================================================================
--- numba-0.56.2.orig/numba/tests/test_cli.py
+++ numba-0.56.2/numba/tests/test_cli.py
@@ -264,6 +264,7 @@ class TestGDBCLIInfoBrokenGdbs(TestCase)
self.assertIn("No such file or directory", stdout)
self.assertIn(path, stdout)
+ @unittest.skip("Fails on type check in OBS")
def test_nonsense_gdb_binary(self):
# Tests that a nonsense binary specified as gdb it picked up ok
env = os.environ.copy()

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3492f0a5d09e257fc521f5377a6c6b907eec1920d14739f0b2458b9d29946a5a
size 2417234

3
numba-0.56.4.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:32d9fef412c81483d7efe0ceb6cf4d3310fde8b624a9cecca00f790573ac96ee
size 2418748

415
numba-pr8620-np1.24.patch Normal file
View File

@ -0,0 +1,415 @@
Index: numba-0.56.4/numba/cuda/tests/cudapy/test_intrinsics.py
===================================================================
--- numba-0.56.4.orig/numba/cuda/tests/cudapy/test_intrinsics.py
+++ numba-0.56.4/numba/cuda/tests/cudapy/test_intrinsics.py
@@ -619,7 +619,7 @@ class TestCudaIntrinsic(CUDATestCase):
arg2 = np.float16(4.)
compiled[1, 1](ary, arg1, arg2)
np.testing.assert_allclose(ary[0], arg2)
- arg1 = np.float(5.)
+ arg1 = np.float16(5.)
compiled[1, 1](ary, arg1, arg2)
np.testing.assert_allclose(ary[0], arg1)
@@ -631,7 +631,7 @@ class TestCudaIntrinsic(CUDATestCase):
arg2 = np.float16(4.)
compiled[1, 1](ary, arg1, arg2)
np.testing.assert_allclose(ary[0], arg1)
- arg1 = np.float(5.)
+ arg1 = np.float16(5.)
compiled[1, 1](ary, arg1, arg2)
np.testing.assert_allclose(ary[0], arg2)
Index: numba-0.56.4/numba/np/arraymath.py
===================================================================
--- numba-0.56.4.orig/numba/np/arraymath.py
+++ numba-0.56.4/numba/np/arraymath.py
@@ -4177,6 +4177,10 @@ iinfo = namedtuple('iinfo', _iinfo_suppo
# This module is imported under the compiler lock which should deal with the
# lack of thread safety in the warning filter.
def _gen_np_machar():
+ # NumPy 1.24 removed np.MachAr
+ if numpy_version >= (1, 24):
+ return
+
np122plus = numpy_version >= (1, 22)
w = None
with warnings.catch_warnings(record=True) as w:
Index: numba-0.56.4/numba/np/ufunc/_internal.c
===================================================================
--- numba-0.56.4.orig/numba/np/ufunc/_internal.c
+++ numba-0.56.4/numba/np/ufunc/_internal.c
@@ -285,9 +285,7 @@ static struct _ufunc_dispatch {
PyCFunctionWithKeywords ufunc_accumulate;
PyCFunctionWithKeywords ufunc_reduceat;
PyCFunctionWithKeywords ufunc_outer;
-#if NPY_API_VERSION >= 0x00000008
PyCFunction ufunc_at;
-#endif
} ufunc_dispatch;
static int
@@ -303,10 +301,8 @@ init_ufunc_dispatch(int *numpy_uses_fast
if (strncmp(crnt_name, "accumulate", 11) == 0) {
ufunc_dispatch.ufunc_accumulate =
(PyCFunctionWithKeywords)crnt->ml_meth;
-#if NPY_API_VERSION >= 0x00000008
} else if (strncmp(crnt_name, "at", 3) == 0) {
ufunc_dispatch.ufunc_at = crnt->ml_meth;
-#endif
} else {
result = -1;
}
@@ -326,10 +322,15 @@ init_ufunc_dispatch(int *numpy_uses_fast
} else if (strncmp(crnt_name, "reduceat", 9) == 0) {
ufunc_dispatch.ufunc_reduceat =
(PyCFunctionWithKeywords)crnt->ml_meth;
+ } else if (strncmp(crnt_name, "resolve_dtypes", 15) == 0) {
+ /* Ignored */
} else {
result = -1;
}
break;
+ case '_':
+ // We ignore private methods
+ break;
default:
result = -1; /* Unknown method */
}
@@ -341,6 +342,8 @@ init_ufunc_dispatch(int *numpy_uses_fast
*numpy_uses_fastcall = crnt->ml_flags & METH_FASTCALL;
}
else if (*numpy_uses_fastcall != (crnt->ml_flags & METH_FASTCALL)) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "ufunc.at() flags do not match numpy_uses_fastcall");
return -1;
}
}
@@ -351,11 +354,13 @@ init_ufunc_dispatch(int *numpy_uses_fast
&& (ufunc_dispatch.ufunc_accumulate != NULL)
&& (ufunc_dispatch.ufunc_reduceat != NULL)
&& (ufunc_dispatch.ufunc_outer != NULL)
-#if NPY_API_VERSION >= 0x00000008
&& (ufunc_dispatch.ufunc_at != NULL)
-#endif
);
+ } else {
+ char const * const fmt = "Unexpected ufunc method %s()";
+ PyErr_Format(PyExc_RuntimeError, fmt, crnt_name);
}
+
return result;
}
@@ -425,13 +430,11 @@ dufunc_outer_fast(PyDUFuncObject * self,
}
-#if NPY_API_VERSION >= 0x00000008
static PyObject *
dufunc_at(PyDUFuncObject * self, PyObject * args)
{
return ufunc_dispatch.ufunc_at((PyObject*)self->ufunc, args);
}
-#endif
static PyObject *
dufunc__compile_for_args(PyDUFuncObject * self, PyObject * args,
@@ -609,11 +612,9 @@ static struct PyMethodDef dufunc_methods
{"outer",
(PyCFunction)dufunc_outer,
METH_VARARGS | METH_KEYWORDS, NULL},
-#if NPY_API_VERSION >= 0x00000008
{"at",
(PyCFunction)dufunc_at,
METH_VARARGS, NULL},
-#endif
{"_compile_for_args",
(PyCFunction)dufunc__compile_for_args,
METH_VARARGS | METH_KEYWORDS,
@@ -643,11 +644,9 @@ static struct PyMethodDef dufunc_methods
{"outer",
(PyCFunction)dufunc_outer_fast,
METH_FASTCALL | METH_KEYWORDS, NULL},
-#if NPY_API_VERSION >= 0x00000008
{"at",
(PyCFunction)dufunc_at,
METH_VARARGS, NULL},
-#endif
{"_compile_for_args",
(PyCFunction)dufunc__compile_for_args,
METH_VARARGS | METH_KEYWORDS,
@@ -791,9 +790,7 @@ MOD_INIT(_internal)
if (PyModule_AddIntMacro(m, PyUFunc_One)
|| PyModule_AddIntMacro(m, PyUFunc_Zero)
|| PyModule_AddIntMacro(m, PyUFunc_None)
-#if NPY_API_VERSION >= 0x00000007
|| PyModule_AddIntMacro(m, PyUFunc_ReorderableNone)
-#endif
)
return MOD_ERROR_VAL;
Index: numba-0.56.4/numba/stencils/stencilparfor.py
===================================================================
--- numba-0.56.4.orig/numba/stencils/stencilparfor.py
+++ numba-0.56.4/numba/stencils/stencilparfor.py
@@ -21,6 +21,7 @@ from numba.core.ir_utils import (get_cal
find_callname, require, find_const, GuardException)
from numba.core.errors import NumbaValueError
from numba.core.utils import OPERATORS_TO_BUILTINS
+from numba.np import numpy_support
def _compute_last_ind(dim_size, index_const):
@@ -264,7 +265,11 @@ class StencilPass(object):
dtype_g_np_assign = ir.Assign(dtype_g_np, dtype_g_np_var, loc)
init_block.body.append(dtype_g_np_assign)
- dtype_np_attr_call = ir.Expr.getattr(dtype_g_np_var, return_type.dtype.name, loc)
+ return_type_name = numpy_support.as_dtype(
+ return_type.dtype).type.__name__
+ if return_type_name == 'bool':
+ return_type_name = 'bool_'
+ dtype_np_attr_call = ir.Expr.getattr(dtype_g_np_var, return_type_name, loc)
dtype_attr_var = ir.Var(scope, mk_unique_var("$np_attr_attr"), loc)
self.typemap[dtype_attr_var.name] = types.functions.NumberClass(return_type.dtype)
dtype_attr_assign = ir.Assign(dtype_np_attr_call, dtype_attr_var, loc)
Index: numba-0.56.4/numba/tests/test_array_methods.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_array_methods.py
+++ numba-0.56.4/numba/tests/test_array_methods.py
@@ -1193,7 +1193,7 @@ class TestArrayMethods(MemoryLeakMixin,
pyfunc = array_sum_dtype_kws
cfunc = jit(nopython=True)(pyfunc)
all_dtypes = [np.float64, np.float32, np.int64, np.int32, np.uint32,
- np.uint64, np.complex64, np.complex128, TIMEDELTA_M]
+ np.uint64, np.complex64, np.complex128]
all_test_arrays = [
[np.ones((7, 6, 5, 4, 3), arr_dtype),
np.ones(1, arr_dtype),
@@ -1207,8 +1207,7 @@ class TestArrayMethods(MemoryLeakMixin,
np.dtype('uint32'): [np.float64, np.int64, np.float32],
np.dtype('uint64'): [np.float64, np.int64],
np.dtype('complex64'): [np.complex64, np.complex128],
- np.dtype('complex128'): [np.complex128],
- np.dtype(TIMEDELTA_M): [np.dtype(TIMEDELTA_M)]}
+ np.dtype('complex128'): [np.complex128]}
for arr_list in all_test_arrays:
for arr in arr_list:
@@ -1216,15 +1215,15 @@ class TestArrayMethods(MemoryLeakMixin,
subtest_str = ("Testing np.sum with {} input and {} output"
.format(arr.dtype, out_dtype))
with self.subTest(subtest_str):
- self.assertPreciseEqual(pyfunc(arr, dtype=out_dtype),
- cfunc(arr, dtype=out_dtype))
+ self.assertPreciseEqual(pyfunc(arr, dtype=out_dtype),
+ cfunc(arr, dtype=out_dtype))
def test_sum_axis_dtype_kws(self):
""" test sum with axis and dtype parameters over a whole range of dtypes """
pyfunc = array_sum_axis_dtype_kws
cfunc = jit(nopython=True)(pyfunc)
all_dtypes = [np.float64, np.float32, np.int64, np.int32, np.uint32,
- np.uint64, np.complex64, np.complex128, TIMEDELTA_M]
+ np.uint64, np.complex64, np.complex128]
all_test_arrays = [
[np.ones((7, 6, 5, 4, 3), arr_dtype),
np.ones(1, arr_dtype),
@@ -1238,9 +1237,7 @@ class TestArrayMethods(MemoryLeakMixin,
np.dtype('uint32'): [np.float64, np.int64, np.float32],
np.dtype('uint64'): [np.float64, np.uint64],
np.dtype('complex64'): [np.complex64, np.complex128],
- np.dtype('complex128'): [np.complex128],
- np.dtype(TIMEDELTA_M): [np.dtype(TIMEDELTA_M)],
- np.dtype(TIMEDELTA_Y): [np.dtype(TIMEDELTA_Y)]}
+ np.dtype('complex128'): [np.complex128]}
for arr_list in all_test_arrays:
for arr in arr_list:
Index: numba-0.56.4/numba/tests/test_comprehension.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_comprehension.py
+++ numba-0.56.4/numba/tests/test_comprehension.py
@@ -11,6 +11,7 @@ from numba import jit, typed
from numba.core import types, utils
from numba.core.errors import TypingError, LoweringError
from numba.core.types.functions import _header_lead
+from numba.np.numpy_support import numpy_version
from numba.tests.support import tag, _32bit, captured_stdout
@@ -360,6 +361,7 @@ class TestArrayComprehension(unittest.Te
self.check(comp_nest_with_array_conditional, 5,
assert_allocate_list=True)
+ @unittest.skipUnless(numpy_version < (1, 24), 'Removed in NumPy 1.24')
def test_comp_nest_with_dependency(self):
def comp_nest_with_dependency(n):
l = np.array([[i * j for j in range(i+1)] for i in range(n)])
Index: numba-0.56.4/numba/tests/test_linalg.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_linalg.py
+++ numba-0.56.4/numba/tests/test_linalg.py
@@ -1122,6 +1122,32 @@ class TestLinalgSvd(TestLinalgBase):
Tests for np.linalg.svd.
"""
+ # This checks that A ~= U*S*V**H, i.e. SV decomposition ties out. This is
+ # required as NumPy uses only double precision LAPACK routines and
+ # computation of SVD is numerically sensitive. Numba uses type-specific
+ # routines and therefore sometimes comes out with a different answer to
+ # NumPy (orthonormal bases are not unique, etc.).
+
+ def check_reconstruction(self, a, got, expected):
+ u, sv, vt = got
+
+ # Check they are dimensionally correct
+ for k in range(len(expected)):
+ self.assertEqual(got[k].shape, expected[k].shape)
+
+ # Columns in u and rows in vt dictates the working size of s
+ s = np.zeros((u.shape[1], vt.shape[0]))
+ np.fill_diagonal(s, sv)
+
+ rec = np.dot(np.dot(u, s), vt)
+ resolution = np.finfo(a.dtype).resolution
+ np.testing.assert_allclose(
+ a,
+ rec,
+ rtol=10 * resolution,
+ atol=100 * resolution # zeros tend to be fuzzy
+ )
+
@needs_lapack
def test_linalg_svd(self):
"""
@@ -1150,34 +1176,8 @@ class TestLinalgSvd(TestLinalgBase):
# plain match failed, test by reconstruction
use_reconstruction = True
- # if plain match fails then reconstruction is used.
- # this checks that A ~= U*S*V**H
- # i.e. SV decomposition ties out
- # this is required as numpy uses only double precision lapack
- # routines and computation of svd is numerically
- # sensitive, numba using the type specific routines therefore
- # sometimes comes out with a different answer (orthonormal bases
- # are not unique etc.).
if use_reconstruction:
- u, sv, vt = got
-
- # check they are dimensionally correct
- for k in range(len(expected)):
- self.assertEqual(got[k].shape, expected[k].shape)
-
- # regardless of full_matrices cols in u and rows in vt
- # dictates the working size of s
- s = np.zeros((u.shape[1], vt.shape[0]))
- np.fill_diagonal(s, sv)
-
- rec = np.dot(np.dot(u, s), vt)
- resolution = np.finfo(a.dtype).resolution
- np.testing.assert_allclose(
- a,
- rec,
- rtol=10 * resolution,
- atol=100 * resolution # zeros tend to be fuzzy
- )
+ self.check_reconstruction(a, got, expected)
# Ensure proper resource management
with self.assertNoNRTLeak():
@@ -1238,8 +1238,11 @@ class TestLinalgSvd(TestLinalgBase):
got = func(X, False)
np.testing.assert_allclose(X, X_orig)
- for e_a, g_a in zip(expected, got):
- np.testing.assert_allclose(e_a, g_a)
+ try:
+ for e_a, g_a in zip(expected, got):
+ np.testing.assert_allclose(e_a, g_a)
+ except AssertionError:
+ self.check_reconstruction(X, got, expected)
class TestLinalgQr(TestLinalgBase):
Index: numba-0.56.4/numba/tests/test_mathlib.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_mathlib.py
+++ numba-0.56.4/numba/tests/test_mathlib.py
@@ -516,7 +516,7 @@ class TestMathLib(TestCase):
with warnings.catch_warnings():
warnings.simplefilter("error", RuntimeWarning)
self.assertRaisesRegexp(RuntimeWarning,
- 'overflow encountered in .*_scalars',
+ 'overflow encountered in .*scalar',
naive_hypot, val, val)
def test_hypot_npm(self):
Index: numba-0.56.4/numba/tests/test_np_functions.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_np_functions.py
+++ numba-0.56.4/numba/tests/test_np_functions.py
@@ -932,11 +932,11 @@ class TestNPFunctions(MemoryLeakMixin, T
yield np.inf, None
yield np.PINF, None
yield np.asarray([-np.inf, 0., np.inf]), None
- yield np.NINF, np.zeros(1, dtype=np.bool)
- yield np.inf, np.zeros(1, dtype=np.bool)
- yield np.PINF, np.zeros(1, dtype=np.bool)
+ yield np.NINF, np.zeros(1, dtype=np.bool_)
+ yield np.inf, np.zeros(1, dtype=np.bool_)
+ yield np.PINF, np.zeros(1, dtype=np.bool_)
yield np.NINF, np.empty(12)
- yield np.asarray([-np.inf, 0., np.inf]), np.zeros(3, dtype=np.bool)
+ yield np.asarray([-np.inf, 0., np.inf]), np.zeros(3, dtype=np.bool_)
pyfuncs = [isneginf, isposinf]
for pyfunc in pyfuncs:
@@ -4775,6 +4775,7 @@ def foo():
eval(compile(funcstr, '<string>', 'exec'))
return locals()['foo']
+ @unittest.skipIf(numpy_version >= (1, 24), "NumPy < 1.24 required")
def test_MachAr(self):
attrs = ('ibeta', 'it', 'machep', 'eps', 'negep', 'epsneg', 'iexp',
'minexp', 'xmin', 'maxexp', 'xmax', 'irnd', 'ngrd',
@@ -4817,7 +4818,8 @@ def foo():
cfunc = jit(nopython=True)(iinfo)
cfunc(np.float64(7))
- @unittest.skipUnless(numpy_version >= (1, 22), "Needs NumPy >= 1.22")
+ @unittest.skipUnless((1, 22) <= numpy_version < (1, 24),
+ "Needs NumPy >= 1.22, < 1.24")
@TestCase.run_test_in_subprocess
def test_np_MachAr_deprecation_np122(self):
# Tests that Numba is replaying the NumPy 1.22 deprecation warning
Index: numba-0.56.4/setup.py
===================================================================
--- numba-0.56.4.orig/setup.py
+++ numba-0.56.4/setup.py
@@ -23,7 +23,7 @@ min_python_version = "3.7"
max_python_version = "3.11" # exclusive
min_numpy_build_version = "1.11"
min_numpy_run_version = "1.18"
-max_numpy_run_version = "1.24"
+max_numpy_run_version = "1.25" # exclusive
min_llvmlite_version = "0.39.0dev0"
max_llvmlite_version = "0.40"
Index: numba-0.56.4/numba/__init__.py
===================================================================
--- numba-0.56.4.orig/numba/__init__.py
+++ numba-0.56.4/numba/__init__.py
@@ -142,8 +142,8 @@ def _ensure_critical_deps():
if numpy_version < (1, 18):
raise ImportError("Numba needs NumPy 1.18 or greater")
- elif numpy_version > (1, 23):
- raise ImportError("Numba needs NumPy 1.23 or less")
+ elif numpy_version > (1, 24):
+ raise ImportError("Numba needs NumPy 1.24 or less")
try:
import scipy

View File

@ -1,3 +1,35 @@
-------------------------------------------------------------------
Tue Jan 3 12:13:00 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Split out python flavors into testing multibuilds. Depending on
the obs worker, the test suite can take almost an hour per
flavor.
- Replace allow-numpy-1.24.patch with an updated
numba-pr8620-np1.24.patch to also work with still present numpy
1.23 in Factory (discussed upstream in gh#numba/numba#8620)
- Merge fix-cli-test.patch into skip-failing-tests.patch
-------------------------------------------------------------------
Mon Jan 2 21:27:24 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Clean up the specfile
* restore the multibuild
* Patch allow-numpy-1.24.patch is the WIP gh#numba/numba#8620
-------------------------------------------------------------------
Sun Jan 1 11:41:11 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Update to 0.56.4:
- This is a bugfix release to fix a regression in the CUDA
target in relation to the .view() method on CUDA device
arrays that is present when using NumPy version 1.23.0 or
later.
- This is a bugfix release to remove the version restriction
applied to the setuptools package and to fix a bug in the
CUDA target in relation to copying zero length device arrays
to zero length host arrays.
- Add allow-numpy-1.24.patch to allow work with numpy 1.24
-------------------------------------------------------------------
Mon Oct 10 10:07:52 UTC 2022 - John Vandenberg <jayvdb@gmail.com>

View File

@ -1,7 +1,7 @@
#
# spec file
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,35 +16,59 @@
#
%{?!python_module:%define python_module() python3-%{**}}
%define skip_python2 1
# Not compatible with Python 3.11 yet. If this changes, and the python311
# flavor is active, make sure to expand the multibuild test flavors
# https://github.com/numba/numba/issues/8304
%define skip_python311 1
%define plainpython python
# upper bound is exclusive: min-numpy_ver <= numpy < max_numpy_ver
%define min_numpy_ver 1.18
%define max_numpy_ver 1.24
%define max_numpy_ver 1.25
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%if "%{flavor}" == ""
%define psuffix %{nil}
%bcond_with test
%endif
Name: python-numba%{psuffix}
Version: 0.56.2
%if "%{flavor}" == "test-py38"
%define psuffix -test-py38
%define skip_python39 1
%define skip_python310 1
%bcond_without test
%endif
%if "%{flavor}" == "test-py39"
%define psuffix -test-py39
%define skip_python38 1
%define skip_python310 1
%bcond_without test
%endif
%if "%{flavor}" == "test-py310"
%define psuffix -test-py310
%define skip_python38 1
%define skip_python39 1
%bcond_without test
%endif
Name: python-numba%{?psuffix}
Version: 0.56.4
Release: 0
Summary: NumPy-aware optimizing compiler for Python using LLVM
License: BSD-2-Clause
URL: https://numba.pydata.org/
# SourceRepository: https://github.com/numba/numba
Source: https://files.pythonhosted.org/packages/source/n/numba/numba-%{version}.tar.gz
# PATCH-FIX-UPSTREAM numba-pr8620-np1.24.patch gh#numba/numba#8620 + raising upper bound in setup.py and numba/__init__.py
Patch1: numba-pr8620-np1.24.patch
# PATCH-FIX-OPENSUSE skip tests failing due to OBS specifics
Patch2: fix-cli-test.patch
Patch3: skip-failing-tests.patch
# PATCH-FIX-OPENSUSE update-tbb-backend-calls-2021.6.patch, based on gh#numba/numba#7608
Patch4: update-tbb-backend-calls-2021.6.patch
BuildRequires: %{python_module devel >= 3.7}
BuildRequires: %{python_module numpy-devel >= %{min_numpy_ver} with %python-numpy-devel < %{max_numpy_ver}}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: python-rpm-macros
@ -116,19 +140,18 @@ rm numba/tests/test_typedlist.py
%build
%if !%{with test}
export CFLAGS="%{optflags} -fPIC"
%python_build
%pyproject_wheel
%endif
%install
%if !%{with test}
%python_install
%pyproject_install
%{python_expand #
%fdupes %{buildroot}%{$python_sitearch}
find %{buildroot}%{$python_sitearch} -name '*.[ch]' > devel-files0-%{$python_bin_suffix}.files
sed 's|^%{buildroot}||' devel-files0-%{$python_bin_suffix}.files > devel-files-%{$python_bin_suffix}.files
sed 's|^%{buildroot}|%%exclude |' devel-files0-%{$python_bin_suffix}.files > devel-files-exclude-%{$python_bin_suffix}.files
}
%python_clone -a %{buildroot}%{_bindir}/numba
%python_clone -a %{buildroot}%{_bindir}/pycc
%endif
@ -139,7 +162,7 @@ sed 's|^%{buildroot}|%%exclude |' devel-files0-%{$python_bin_suffix}.files > dev
mkdir emptytestdir
pushd emptytestdir
%{python_expand # numbatests: check specific tests with `osc build -M test --define="numbatests <testnames>"`
%{_bindir}/numba-%{$python_bin_suffix} -s
%{_bindir}/numba-%%{$python_bin_suffix} -s
$python -m numba.runtests -v -b --exclude-tags='long_running' -m %{_smp_build_ncpus} -- %{?!numbatests:numba.tests}%{?numbatests}
}
popd
@ -158,7 +181,7 @@ popd
%python_alternative %{_bindir}/numba
%python_alternative %{_bindir}/pycc
%{python_sitearch}/numba/
%{python_sitearch}/numba-%{version}-py*.egg-info
%{python_sitearch}/numba-%{version}.dist-info
%files %{python_files devel} -f devel-files-%{python_bin_suffix}.files
%license LICENSE

View File

@ -1,8 +1,11 @@
Index: numba-0.54.0/numba/tests/test_parfors.py
===================================================================
--- numba-0.54.0.orig/numba/tests/test_parfors.py
+++ numba-0.54.0/numba/tests/test_parfors.py
@@ -1146,6 +1146,7 @@ class TestParforNumPy(TestParforsBase):
---
numba/tests/test_parfors.py | 5 +++--
numba/tests/test_parfors_passes.py | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
--- a/numba/tests/test_parfors.py
+++ b/numba/tests/test_parfors.py
@@ -1174,6 +1174,7 @@ class TestParforNumPy(TestParforsBase):
self.check_variants(test_impl2, data_gen)
self.count_parfors_variants(test_impl2, data_gen)
@ -10,7 +13,7 @@ Index: numba-0.54.0/numba/tests/test_parfors.py
def test_ndarray_fill(self):
def test_impl(x):
x.fill(7.0)
@@ -3890,7 +3891,7 @@ class TestParforsVectorizer(TestPrangeBa
@@ -4396,7 +4397,7 @@ class TestParforsVectorizer(TestPrangeBa
# to check vsqrtpd operates on zmm
match_vsqrtpd_on_zmm = re.compile('\n\s+vsqrtpd\s+.*zmm.*\n')
@ -19,7 +22,7 @@ Index: numba-0.54.0/numba/tests/test_parfors.py
def test_vectorizer_fastmath_asm(self):
""" This checks that if fastmath is set and the underlying hardware
is suitable, and the function supplied is amenable to fastmath based
@@ -3933,7 +3934,7 @@ class TestParforsVectorizer(TestPrangeBa
@@ -4439,7 +4440,7 @@ class TestParforsVectorizer(TestPrangeBa
# check no zmm addressing is present
self.assertTrue('zmm' not in v)
@ -28,10 +31,8 @@ Index: numba-0.54.0/numba/tests/test_parfors.py
def test_unsigned_refusal_to_vectorize(self):
""" This checks that if fastmath is set and the underlying hardware
is suitable, and the function supplied is amenable to fastmath based
Index: numba-0.54.0/numba/tests/test_parfors_passes.py
===================================================================
--- numba-0.54.0.orig/numba/tests/test_parfors_passes.py
+++ numba-0.54.0/numba/tests/test_parfors_passes.py
--- a/numba/tests/test_parfors_passes.py
+++ b/numba/tests/test_parfors_passes.py
@@ -516,6 +516,7 @@ class TestConvertLoopPass(BaseTest):
str(raises.exception),
)
@ -40,3 +41,15 @@ Index: numba-0.54.0/numba/tests/test_parfors_passes.py
def test_init_prange(self):
def test_impl():
n = 20
Index: numba-0.56.2/numba/tests/test_cli.py
===================================================================
--- numba-0.56.2.orig/numba/tests/test_cli.py
+++ numba-0.56.2/numba/tests/test_cli.py
@@ -264,6 +264,7 @@ class TestGDBCLIInfoBrokenGdbs(TestCase)
self.assertIn("No such file or directory", stdout)
self.assertIn(path, stdout)
+ @unittest.skip("Fails on type check in OBS")
def test_nonsense_gdb_binary(self):
# Tests that a nonsense binary specified as gdb it picked up ok
env = os.environ.copy()

View File

@ -1,7 +1,9 @@
Index: numba-0.56.2/numba/np/ufunc/tbbpool.cpp
===================================================================
--- numba-0.56.2.orig/numba/np/ufunc/tbbpool.cpp
+++ numba-0.56.2/numba/np/ufunc/tbbpool.cpp
---
numba/np/ufunc/tbbpool.cpp | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
--- a/numba/np/ufunc/tbbpool.cpp
+++ b/numba/np/ufunc/tbbpool.cpp
@@ -12,6 +12,7 @@ Implement parallel vectorize workqueue o
#undef _XOPEN_SOURCE
#endif