Accepting request 745249 from home:bnavigator:branches:devel:languages:python:numeric
- fix segfault: run only those tests that require xvfb with xvfb-run - fix i586 build fail: add upstream PR#317 to replace float128 OBS-URL: https://build.opensuse.org/request/show/745249 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-control?expand=0&rev=4
This commit is contained in:
committed by
Git OBS Bridge
parent
f8bbeee8db
commit
bc9074d515
143
python-control-pr317.patch
Normal file
143
python-control-pr317.patch
Normal file
@@ -0,0 +1,143 @@
|
||||
From e1e319f844edb2e6a22aa815ca42806d47c6cf5f Mon Sep 17 00:00:00 2001
|
||||
From: Rory Yorke <rory.yorke@gmail.com>
|
||||
Date: Sun, 23 Jun 2019 14:46:23 +0200
|
||||
Subject: [PATCH] Use numpy.longdouble instead of numpy.float128 in testing
|
||||
|
||||
numpy.float128 doesn't exist on all platforms, e.g., Windows 64-bit.
|
||||
|
||||
When numpy.float128 does exist (e.g., Linux 64-bit), it's typically an
|
||||
alias for numpy.longdouble.
|
||||
---
|
||||
control/tests/xferfcn_input_test.py | 28 ++++++++++++++--------------
|
||||
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/control/tests/xferfcn_input_test.py b/control/tests/xferfcn_input_test.py
|
||||
index 0471e885..0d6ca56f 100644
|
||||
--- a/control/tests/xferfcn_input_test.py
|
||||
+++ b/control/tests/xferfcn_input_test.py
|
||||
@@ -7,7 +7,7 @@
|
||||
import numpy as np
|
||||
|
||||
from numpy import int, int8, int16, int32, int64
|
||||
-from numpy import float, float16, float32, float64, float128
|
||||
+from numpy import float, float16, float32, float64, longdouble
|
||||
from numpy import all, ndarray, array
|
||||
|
||||
from control.xferfcn import _clean_part
|
||||
@@ -73,7 +73,7 @@ def test_clean_part_tuple(self):
|
||||
|
||||
def test_clean_part_all_scalar_types(self):
|
||||
"""Test single scalar value for all valid data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = dtype(1)
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -92,7 +92,7 @@ def test_clean_part_np_array(self):
|
||||
|
||||
def test_clean_part_all_np_array_types(self):
|
||||
"""Test scalar value in numpy array of ndim=0 for all data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = np.array(1, dtype=dtype)
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -102,7 +102,7 @@ def test_clean_part_all_np_array_types(self):
|
||||
|
||||
def test_clean_part_all_np_array_types2(self):
|
||||
"""Test numpy array for all types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = np.array([1, 2], dtype=dtype)
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -112,7 +112,7 @@ def test_clean_part_all_np_array_types2(self):
|
||||
|
||||
def test_clean_part_list_all_types(self):
|
||||
"""Test list of a single value for all data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = [dtype(1)]
|
||||
num_ = _clean_part(num)
|
||||
assert isinstance(num_, list)
|
||||
@@ -121,7 +121,7 @@ def test_clean_part_list_all_types(self):
|
||||
|
||||
def test_clean_part_list_all_types2(self):
|
||||
"""List of list of numbers of all data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = [dtype(1), dtype(2)]
|
||||
num_ = _clean_part(num)
|
||||
assert isinstance(num_, list)
|
||||
@@ -130,7 +130,7 @@ def test_clean_part_list_all_types2(self):
|
||||
|
||||
def test_clean_part_tuple_all_types(self):
|
||||
"""Test tuple of a single value for all data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = (dtype(1),)
|
||||
num_ = _clean_part(num)
|
||||
assert isinstance(num_, list)
|
||||
@@ -139,7 +139,7 @@ def test_clean_part_tuple_all_types(self):
|
||||
|
||||
def test_clean_part_tuple_all_types2(self):
|
||||
"""Test tuple of a single value for all data types."""
|
||||
- for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, float128]:
|
||||
+ for dtype in [int, int8, int16, int32, int64, float, float16, float32, float64, longdouble]:
|
||||
num = (dtype(1), dtype(2))
|
||||
num_ = _clean_part(num)
|
||||
assert isinstance(num_, list)
|
||||
@@ -184,7 +184,7 @@ def test_clean_part_list_list_list_floats(self):
|
||||
|
||||
def test_clean_part_list_list_array(self):
|
||||
"""List of list of numpy arrays for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = [[array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)]]
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -195,7 +195,7 @@ def test_clean_part_list_list_array(self):
|
||||
|
||||
def test_clean_part_tuple_list_array(self):
|
||||
"""Tuple of list of numpy arrays for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = ([array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)],)
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -206,7 +206,7 @@ def test_clean_part_tuple_list_array(self):
|
||||
|
||||
def test_clean_part_list_tuple_array(self):
|
||||
"""List of tuple of numpy array for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = [(array([1, 1], dtype=dtype), array([2, 2], dtype=dtype))]
|
||||
num_ = _clean_part(num)
|
||||
|
||||
@@ -217,7 +217,7 @@ def test_clean_part_list_tuple_array(self):
|
||||
|
||||
def test_clean_part_tuple_tuples_arrays(self):
|
||||
"""Tuple of tuples of numpy arrays for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = ((array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)),
|
||||
(array([3, 4], dtype=dtype), array([4, 4], dtype=dtype)))
|
||||
num_ = _clean_part(num)
|
||||
@@ -229,7 +229,7 @@ def test_clean_part_tuple_tuples_arrays(self):
|
||||
|
||||
def test_clean_part_list_tuples_arrays(self):
|
||||
"""List of tuples of numpy arrays for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = [(array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)),
|
||||
(array([3, 4], dtype=dtype), array([4, 4], dtype=dtype))]
|
||||
num_ = _clean_part(num)
|
||||
@@ -241,7 +241,7 @@ def test_clean_part_list_tuples_arrays(self):
|
||||
|
||||
def test_clean_part_list_list_arrays(self):
|
||||
"""List of list of numpy arrays for all valid types."""
|
||||
- for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, float128:
|
||||
+ for dtype in int, int8, int16, int32, int64, float, float16, float32, float64, longdouble:
|
||||
num = [[array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)],
|
||||
[array([3, 3], dtype=dtype), array([4, 4], dtype=dtype)]]
|
||||
num_ = _clean_part(num)
|
||||
@@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 4 13:25:48 UTC 2019 - Benjamin Greiner <code@bnavigator.de>
|
||||
|
||||
- fix segfault: run only those tests that require xvfb with xvfb-run
|
||||
- fix i586 build fail: add upstream PR#317 to replace float128
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 27 13:12:31 UTC 2019 - Benjamin Greiner <code@bnavigator.de>
|
||||
|
||||
|
||||
@@ -22,14 +22,13 @@ Version: 0.8.2
|
||||
Release: 0
|
||||
Summary: Python control systems library
|
||||
License: BSD-3-Clause
|
||||
Group: Development/Languages/Python
|
||||
URL: http://python-control.sourceforge.net
|
||||
Source: https://files.pythonhosted.org/packages/source/c/control/control-%{version}.tar.gz
|
||||
Patch0: python-control-fixtestaugw.patch
|
||||
Patch1: python-control-pr317.patch
|
||||
BuildRequires: %{python_module setuptools}
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: python-rpm-macros
|
||||
Requires: python-matplotlib
|
||||
Requires: python-numpy
|
||||
Requires: python-scipy
|
||||
Recommends: python-slycot
|
||||
@@ -37,6 +36,7 @@ BuildArch: noarch
|
||||
# SECTION test requirements
|
||||
BuildRequires: %{python_module matplotlib-qt5}
|
||||
BuildRequires: %{python_module matplotlib}
|
||||
BuildRequires: %{python_module nose-exclude}
|
||||
BuildRequires: %{python_module nose}
|
||||
BuildRequires: %{python_module numpy}
|
||||
BuildRequires: %{python_module scipy}
|
||||
@@ -53,6 +53,7 @@ operations for analysis and design of feedback control systems.
|
||||
%prep
|
||||
%setup -q -n control-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
|
||||
%build
|
||||
%python_build
|
||||
@@ -63,12 +64,21 @@ operations for analysis and design of feedback control systems.
|
||||
|
||||
%check
|
||||
# The default Agg backend does not define the toolbar attribute in the Figure
|
||||
# Manager used by some tests, so we run the Qt5 backend in a virtual X server
|
||||
# environment
|
||||
export MPLBACKEND="Qt5Agg"
|
||||
# Manager used by some tests, so we run those tests with the Qt5 backend in a
|
||||
# virtual X server environment
|
||||
%if %{_arch} == i386
|
||||
export LD_PRELOAD="%{_libdir}/libtcmalloc_minimal.so.4"
|
||||
%endif
|
||||
%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib}
|
||||
export MPLBACKEND="Agg"
|
||||
nosetests-%$python_bin_suffix \
|
||||
--exclude-test control.tests.sisotool_test \
|
||||
--exclude-test control.tests.rlocus_test
|
||||
export MPLBACKEND="Qt5Agg"
|
||||
export LD_PRELOAD="%{_libdir}/libtcmalloc_minimal.so.4"
|
||||
xvfb-run -a $python setup.py test
|
||||
xvfb-run -a nosetests-%$python_bin_suffix \
|
||||
control.tests.sisotool_test \
|
||||
control.tests.rlocus_test
|
||||
}
|
||||
|
||||
%files %{python_files}
|
||||
|
||||
Reference in New Issue
Block a user