From f2cfdec32b0341aea405d3ecbde13d16160176f0b5f246d9383e533e00dc7b72 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Sat, 24 Apr 2021 20:33:16 +0000 Subject: [PATCH] Accepting request 888253 from home:bnavigator:branches:devel:languages:python:numeric - Fix python3 flavor multibuild: * Compile bundled libs for every flavor * Fix bundled lib location configuration * Use system fftw3 - Enable tests with matplotlib and astropy - Add sherpa-mpl-3.4.patch for Matplotlib 3.4 gh#sherpa/sherpa#1125 OBS-URL: https://build.opensuse.org/request/show/888253 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-sherpa?expand=0&rev=15 --- python-sherpa.changes | 10 +++ python-sherpa.spec | 53 ++++++++------- sherpa-mpl-3.4.patch | 150 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+), 23 deletions(-) create mode 100644 sherpa-mpl-3.4.patch diff --git a/python-sherpa.changes b/python-sherpa.changes index 94f8fbd..55c1642 100644 --- a/python-sherpa.changes +++ b/python-sherpa.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Sat Apr 24 18:40:06 UTC 2021 - Ben Greiner + +- Fix python3 flavor multibuild: + * Compile bundled libs for every flavor + * Fix bundled lib location configuration + * Use system fftw3 +- Enable tests with matplotlib and astropy +- Add sherpa-mpl-3.4.patch for Matplotlib 3.4 gh#sherpa/sherpa#1125 + ------------------------------------------------------------------- Wed Feb 17 00:07:40 UTC 2021 - Atri Bhattacharya diff --git a/python-sherpa.spec b/python-sherpa.spec index 9e75325..64ae6ab 100644 --- a/python-sherpa.spec +++ b/python-sherpa.spec @@ -31,27 +31,28 @@ Patch1: reproducible.patch Patch2: sherpa-fix-aarch64.patch # PATCH-FIX-UPSTREAM sherpa-numpy-1.20.patch badshah400@gmail.com - Fix test errors with numpy 1.20 [https://github.com/sherpa/sherpa/pull/1092] Patch3: sherpa-numpy-1.20.patch +# PATCH-FIX-UPSTREAM sherpa-mpl-3.4.patch -- https://github.com/sherpa/sherpa/pull/1125 +Patch4: sherpa-mpl-3.4.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module numpy-devel} BuildRequires: %{python_module setuptools} BuildRequires: bison BuildRequires: fdupes +BuildRequires: fftw3-devel BuildRequires: flex BuildRequires: gcc-c++ BuildRequires: gcc-fortran BuildRequires: python-rpm-macros Requires: python-numpy -Requires: python-six Requires(post): update-alternatives -Requires(postun): update-alternatives +Requires(postun):update-alternatives ExcludeArch: %{ix86} # SECTION test requirements -BuildRequires: %{python_module mock} BuildRequires: %{python_module pytest >= 3.3} BuildRequires: %{python_module pytest-xvfb} -BuildRequires: %{python_module six} -BuildRequires: xauth -BuildRequires: xorg-x11-server +# Highly recommended by upstream when building from source https://sherpa.readthedocs.io/en/latest/install.html#building-from-source +BuildRequires: %{python_module astropy} +BuildRequires: %{python_module matplotlib} # /SECTION %python_subpackages @@ -63,37 +64,40 @@ data, using a variety of statistics and optimization methods. %prep %setup -q -n sherpa-%{version} %autopatch -p1 -sed -i 's|#stk-location|stk-location|' setup.cfg -sed -i 's|#group-location|group-location|' setup.cfg +sed -i "s|#fftw=local|fftw=local|" setup.cfg +sed -i "s|#fftw-include[-_]dirs.*$|fftw-include-dirs=%{_includedir}|" setup.cfg +sed -i "s|#fftw-lib-dirs.*$|fftw-lib-dirs=%{_libdir}|" setup.cfg +sed -i "s|#fftw-libraries|fftw-libraries|" setup.cfg + +sed -i "s|/lib/|/%{_lib}/|" helpers/sherpa_config.py %build -%{python_expand sed -i 's|stk-location=.*|stk-location=build/%{_lib}/python%{$python_version}/site-packages/stk.so|' setup.cfg -sed -i 's|group-location=.*|group-location=build/%{_lib}/python%{$python_version}/site-packages/group.so|' setup.cfg -%{$python_build} +cp -r extern extern0 +%{python_expand %{$python_build} +rm -r extern +cp -r extern0 extern } %install -%{python_expand sed -i 's|stk-location=.*|stk-location=build/%{_lib}/python%{$python_version}/site-packages/stk.so|' setup.cfg -sed -i 's|group-location=.*|group-location=build/%{_lib}/python%{$python_version}/site-packages/group.so|' setup.cfg -%{$python_install} -} +%python_install + %python_clone -a %{buildroot}%{_bindir}/sherpa_test %python_clone -a %{buildroot}%{_bindir}/sherpa_smoke %python_expand %fdupes %{buildroot}%{$python_sitearch} -# REMOVE HASHBANGS FROM NON-EXEC FILES -%{python_expand sed -i "1{/\\/usr\\/bin\\/env python/d}" %{buildroot}%{$python_sitearch}/sherpa/optmethods/ncoresde.py +%{python_expand # REMOVE HASHBANGS FROM NON-EXEC FILES +sed -i "1{/\\/usr\\/bin\\/env python/d}" %{buildroot}%{$python_sitearch}/sherpa/optmethods/ncoresde.py sed -i "1{/\\/usr\\/bin\\/env python/d}" %{buildroot}%{$python_sitearch}/sherpa/optmethods/ncoresnm.py sed -i "1{/\\/usr\\/bin\\/env python/d}" %{buildroot}%{$python_sitearch}/sherpa/optmethods/opt.py +sed -i "1{/\\/usr\\/bin\\/env python/d}" %{buildroot}%{$python_sitearch}/sherpa/utils/akima.py } %check -export PYTHONDONTWRITEBYTECODE=x +# avoid conftest import mismatch mv sherpa sherpa_temp -%python_expand ls -l %{buildroot}%{$python_sitearch}/sherpa/utils/ -ls -l *build*/*/*/ -%pytest_arch %{buildroot}%{$python_sitearch}/sherpa/ -mv sherpa_temp sherpa +# astropy 4.2 fits header warning +donttest+="test_load_case_3" +%pytest_arch --pyargs sherpa -k "not ($donttest)" %post %python_install_alternative sherpa_smoke @@ -108,6 +112,9 @@ mv sherpa_temp sherpa %license LICENSE %python_alternative %{_bindir}/sherpa_test %python_alternative %{_bindir}/sherpa_smoke -%{python_sitearch}/* +%{python_sitearch}/sherpa +%{python_sitearch}/sherpa-%{version}*-info +%{python_sitearch}/stk.so +%{python_sitearch}/group.so %changelog diff --git a/sherpa-mpl-3.4.patch b/sherpa-mpl-3.4.patch new file mode 100644 index 0000000..17cbcd1 --- /dev/null +++ b/sherpa-mpl-3.4.patch @@ -0,0 +1,150 @@ +From 0187ded7223bbaded8022a28561182846b17ceb3 Mon Sep 17 00:00:00 2001 +From: Douglas Burke +Date: Tue, 13 Apr 2021 16:29:45 -0400 +Subject: [PATCH 1/2] matlpotlib 3.4 has removed drawstyle from axes.errorbar + +The drawstyle argument has now been removed from some commands - +this appears to just be the axes.errorbar function - in matplotlib +version 3.4. +--- + sherpa/plot/pylab_backend.py | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +Index: sherpa-4.13.0/sherpa/plot/pylab_backend.py +=================================================================== +--- sherpa-4.13.0.orig/sherpa/plot/pylab_backend.py ++++ sherpa-4.13.0/sherpa/plot/pylab_backend.py +@@ -1,6 +1,6 @@ + # +-# Copyright (C) 2010, 2015, 2017, 2019, 2020 +-# Smithsonian Astrophysical Observatory ++# Copyright (C) 2010, 2015, 2017, 2019, 2020, 2021 ++# Smithsonian Astrophysical Observatory + # + # + # This program is free software; you can redistribute it and/or modify +@@ -316,7 +316,6 @@ def histo(xlo, xhi, y, yerr=None, title= + color=color, + alpha=alpha, + linestyle='', +- drawstyle=drawstyle, + marker=marker, + markersize=markersize, + markerfacecolor=markerfacecolor, +@@ -446,7 +445,6 @@ def plot(x, y, yerr=None, xerr=None, tit + objs = axes.errorbar(x, y, yerr, xerr, + color=color, + linestyle=linestyle, +- drawstyle=drawstyle, + marker=marker, + markersize=markersize, + markerfacecolor=markerfacecolor, +Index: sherpa-4.13.0/sherpa/astro/ui/tests/test_astro_ui_plot.py +=================================================================== +--- sherpa-4.13.0.orig/sherpa/astro/ui/tests/test_astro_ui_plot.py ++++ sherpa-4.13.0/sherpa/astro/ui/tests/test_astro_ui_plot.py +@@ -1,5 +1,6 @@ + # +-# Copyright (C) 2019, 2020 Smithsonian Astrophysical Observatory ++# Copyright (C) 2019, 2020, 2021 ++# Smithsonian Astrophysical Observatory + # + # + # This program is free software; you can redistribute it and/or modify +@@ -1168,7 +1169,8 @@ def test_img_contour_function_kwarg(clea + + for i, ax in enumerate(axes, 1): + +- assert ax.get_geometry() == (2, 2, i) ++ w = i - 1 ++ assert ax.get_subplotspec().get_geometry() == (2, 2, w, w) + + assert ax.get_xscale() == 'linear' + assert ax.get_yscale() == 'linear' +Index: sherpa-4.13.0/sherpa/ui/tests/test_ui_plot.py +=================================================================== +--- sherpa-4.13.0.orig/sherpa/ui/tests/test_ui_plot.py ++++ sherpa-4.13.0/sherpa/ui/tests/test_ui_plot.py +@@ -1,5 +1,6 @@ + # +-# Copyright (C) 2019, 2020 Smithsonian Astrophysical Observatory ++# Copyright (C) 2019, 2020, 2021 ++# Smithsonian Astrophysical Observatory + # + # + # This program is free software; you can redistribute it and/or modify +@@ -1113,7 +1114,7 @@ def test_plot_single(session): + + ax = fig.axes[0] + +- assert ax.get_geometry() == (1, 1, 1) ++ assert ax.get_subplotspec().get_geometry() == (1, 1, 0, 0) + assert ax.get_title() == '' + assert ax.xaxis.get_label().get_text() == 'x' + assert ax.yaxis.get_label().get_text() == 'y' +@@ -1127,7 +1128,7 @@ def test_plot_single(session): + + ax = fig.axes[0] + +- assert ax.get_geometry() == (1, 1, 1) ++ assert ax.get_subplotspec().get_geometry() == (1, 1, 0, 0) + assert ax.get_title() == 'Model' + assert ax.xaxis.get_label().get_text() == 'x' + assert ax.yaxis.get_label().get_text() == 'y' +@@ -1179,7 +1180,8 @@ def test_plot_multiple(session): + 'Data / Model']), + 1): + +- assert ax.get_geometry() == (2, 3, i) ++ w = i - 1 ++ assert ax.get_subplotspec().get_geometry() == (2, 3, w, w) + assert ax.get_title() == title + assert ax.xaxis.get_label().get_text() == 'x' + assert ax.yaxis.get_label().get_text() == ylabel +@@ -1226,7 +1228,7 @@ def test_contour_single(session): + + ax = fig.axes[0] + +- assert ax.get_geometry() == (1, 1, 1) ++ assert ax.get_subplotspec().get_geometry() == (1, 1, 0, 0) + assert ax.get_title() == '' + assert ax.xaxis.get_label().get_text() == 'x0' + assert ax.yaxis.get_label().get_text() == 'x1' +@@ -1240,7 +1242,7 @@ def test_contour_single(session): + + ax = fig.axes[0] + +- assert ax.get_geometry() == (1, 1, 1) ++ assert ax.get_subplotspec().get_geometry() == (1, 1, 0, 0) + assert ax.get_title() == 'Model' + assert ax.xaxis.get_label().get_text() == 'x0' + assert ax.yaxis.get_label().get_text() == 'x1' +@@ -1287,7 +1289,8 @@ def test_contour_multiple(session): + 'Ratio of Data to Model']), + 1): + +- assert ax.get_geometry() == (2, 3, i) ++ w = i - 1 ++ assert ax.get_subplotspec().get_geometry() == (2, 3, w, w) + assert ax.get_title() == title + assert ax.xaxis.get_label().get_text() == 'x0' + assert ax.yaxis.get_label().get_text() == 'x1' +@@ -1343,7 +1346,8 @@ def test_contour_xxx(plotfunc, title, pc + ['', 'Residuals']), + 1): + +- assert ax.get_geometry() == (2, 1, i) ++ w = i - 1 ++ assert ax.get_subplotspec().get_geometry() == (2, 1, w, w) + assert ax.get_title() == title + assert ax.xaxis.get_label().get_text() == 'x0' + assert ax.yaxis.get_label().get_text() == 'x1' +@@ -1352,7 +1356,7 @@ def test_contour_xxx(plotfunc, title, pc + assert len(fig.axes) == 1 + + ax = fig.axes[0] +- assert ax.get_geometry() == (1, 1, 1) ++ assert ax.get_subplotspec().get_geometry() == (1, 1, 0, 0) + assert ax.get_title() == title + assert ax.xaxis.get_label().get_text() == 'x0' + assert ax.yaxis.get_label().get_text() == 'x1'