forked from pool/python-matplotlib
69222c7291
OBS-URL: https://build.opensuse.org/request/show/613765 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-matplotlib?expand=0&rev=64
405 lines
15 KiB
RPMSpec
405 lines
15 KiB
RPMSpec
#
|
|
# spec file for package python-matplotlib
|
|
#
|
|
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
# Not doing tests because they take too long
|
|
# The tests also pull in dependencies of all backends done in pure python
|
|
%bcond_with tests
|
|
|
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
|
%define oldpython python
|
|
Name: python-matplotlib
|
|
Version: 2.2.2
|
|
Release: 0
|
|
Summary: Plotting Library for Python
|
|
License: SUSE-Matplotlib
|
|
Group: Development/Libraries/Python
|
|
Url: http://matplotlib.org
|
|
Source: https://files.pythonhosted.org/packages/source/m/matplotlib/matplotlib-%{version}.tar.gz
|
|
Source1: matplotlib-setup.cfg
|
|
BuildRequires: c++_compiler
|
|
BuildRequires: fdupes
|
|
BuildRequires: pkg-config
|
|
BuildRequires: python-rpm-macros
|
|
BuildRequires: pkgconfig(freetype2) >= 2.3
|
|
BuildRequires: pkgconfig(libpng) >= 1.2
|
|
# Python 2 only
|
|
BuildRequires: python-functools32
|
|
BuildRequires: python-subprocess32
|
|
# Needed for all versions of python
|
|
BuildRequires: %{python_module Cycler >= 0.10}
|
|
BuildRequires: %{python_module devel}
|
|
BuildRequires: %{python_module kiwisolver}
|
|
BuildRequires: %{python_module numpy >= 1.7.1}
|
|
BuildRequires: %{python_module numpy-devel >= 1.7.1}
|
|
BuildRequires: %{python_module pyparsing > 2.1.6}
|
|
BuildRequires: %{python_module pytz}
|
|
BuildRequires: %{python_module setuptools}
|
|
BuildRequires: %{python_module six >= 1.10}
|
|
# needed for testing
|
|
%if %{with tests}
|
|
BuildRequires: %{python_module mock}
|
|
BuildRequires: %{python_module nose}
|
|
BuildRequires: %{python_module python-dateutil >= 2.1}
|
|
BuildRequires: inkscape
|
|
# latex dependencies
|
|
BuildRequires: ghostscript
|
|
BuildRequires: poppler-tools
|
|
BuildRequires: texlive-dvipng
|
|
BuildRequires: texlive-latex
|
|
BuildRequires: texlive-tex
|
|
%if 0%{?is_opensuse}
|
|
BuildRequires: qhull-devel >= 2003.1
|
|
BuildRequires: texlive-sfmath
|
|
BuildRequires: tex(8a.enc)
|
|
BuildRequires: tex(helvet.sty)
|
|
BuildRequires: tex(phvr7t.tfm)
|
|
BuildRequires: tex(pncr7t.tfm)
|
|
BuildRequires: tex(psfrag.sty)
|
|
BuildRequires: tex(type1cm.sty)
|
|
BuildRequires: tex(ucs.sty)
|
|
%endif
|
|
# cairo dependencies
|
|
BuildRequires: %{python_module cairocffi}
|
|
# GTK3 dependencies
|
|
BuildRequires: %{python_module gobject}
|
|
BuildRequires: pkgconfig(gtk+-3.0)
|
|
# Qt4 dependencies
|
|
BuildRequires: %{python_module qt4}
|
|
# Qt5 dependencies
|
|
BuildRequires: %{python_module qt5}
|
|
# Wx dependencies (currently Python 2 only)
|
|
BuildRequires: python-wxWidgets >= 3
|
|
# tk dependencies
|
|
BuildRequires: %{python_module tk}
|
|
# X server needed for Qt4/Qt5 tests
|
|
BuildRequires: xorg-x11-Xvfb
|
|
%endif
|
|
# tk dependencies via tcl
|
|
BuildRequires: tcl
|
|
BuildRequires: pkgconfig(tcl)
|
|
# WebAgg dependencies
|
|
BuildRequires: %{python_module tornado}
|
|
# End of backend dependencies
|
|
Requires: python-Cycler >= 0.10
|
|
Requires: python-kiwisolver >= 1.0.1
|
|
Requires: python-numpy >= 1.7.1
|
|
Requires: python-pyparsing > 2.1.6
|
|
Requires: python-python-dateutil >= 2.1
|
|
Requires: python-pytz
|
|
Requires: python-six >= 1.10
|
|
%ifpython2
|
|
Requires: python-backports.functools_lru_cache
|
|
Requires: python-functools32
|
|
Requires: python-subprocess32
|
|
%endif
|
|
Recommends: ghostscript
|
|
Recommends: libxml2-tools
|
|
Recommends: python-Pillow
|
|
Recommends: poppler-tools
|
|
%if 0%{?suse_version} >= 1500
|
|
Recommends: (python-matplotlib-tk if tk)
|
|
%else
|
|
Recommends: python-matplotlib-tk
|
|
%endif
|
|
Provides: python-matplotlib-gtk = %{version}
|
|
Obsoletes: python-matplotlib-gtk < %{version}
|
|
%ifpython2
|
|
Provides: %{oldpython}-matplotlib-gtk = %{version}
|
|
Obsoletes: %{oldpython}-matplotlib-gtk < %{version}
|
|
%endif
|
|
|
|
%python_subpackages
|
|
|
|
%description
|
|
matplotlib is a python 2D plotting library which produces publication
|
|
quality figures in a variety of hardcopy formats and interactive
|
|
environments across platforms. matplotlib can be used in python
|
|
scripts, the python and ipython shell (ala matlab or mathematica), web
|
|
application servers, and six graphical user interface toolkits.
|
|
|
|
%package cairo
|
|
Summary: Cairo backend for %{name}
|
|
License: SUSE-Matplotlib
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: python-cairocffi
|
|
|
|
%description cairo
|
|
This package includes the non-interactive Cairo-based backend
|
|
for the %{name} plotting package
|
|
|
|
%package gtk3
|
|
Summary: GTK3 backends for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: %{name}-cairo = %{version}
|
|
Requires: python-gobject
|
|
|
|
%description gtk3
|
|
This package includes the GTK3-based gtk3, gtk3agg, and
|
|
gtk3cairo backends for the %{name} plotting package
|
|
|
|
%package latex
|
|
Summary: Allow rendering latex in %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: texlive-dvipng
|
|
Requires: texlive-latex
|
|
Requires: texlive-tex
|
|
%if 0%{?is_opensuse}
|
|
Requires: texlive-sfmath
|
|
%endif
|
|
|
|
%description latex
|
|
This package allows %{name} to display latex in plots
|
|
and figures.
|
|
|
|
%package qt-shared
|
|
Summary: Shared files for the Qt backends for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
|
|
%description qt-shared
|
|
This package includes files needed by both the Qt4-based pyqt4 and
|
|
pyside backends and the Qt5-based pyqt5 backend for the %{name}
|
|
plotting package
|
|
|
|
%package qt4
|
|
Summary: Qt4 backends for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: %{name}-qt-shared = %{version}
|
|
Requires: python-qt4 >= 4.0
|
|
|
|
%description qt4
|
|
This package includes the Qt4-based pyqt4 and pyside backends
|
|
for the %{name} plotting package
|
|
|
|
%package qt5
|
|
Summary: Qt5 backend for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: %{name}-qt-shared = %{version}
|
|
Requires: python-qt5
|
|
|
|
%description qt5
|
|
This package includes the Qt5-based pyqt5 backend
|
|
for the %{name} plotting package
|
|
|
|
%package tk
|
|
Summary: Tk backend for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: python-tk
|
|
Requires: tcl >= 8.3
|
|
|
|
%description tk
|
|
This package includes the Tk-based tkagg backend
|
|
for the %{name} plotting package
|
|
|
|
%package web
|
|
Summary: Web backend for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: python-tornado
|
|
|
|
%description web
|
|
This package includes the browser-based webagg backend
|
|
for the %{name} plotting package
|
|
|
|
%package -n %{python2_prefix}-matplotlib-wx
|
|
Summary: WxWidgets backend for %{name}
|
|
License: BSD-2-Clause
|
|
Group: Development/Libraries/Python
|
|
Requires: %{name} = %{version}
|
|
Requires: python-wxWidgets >= 2.8
|
|
|
|
%description -n %{python2_prefix}-matplotlib-wx
|
|
This package includes the wxWidgets-based wxagg backend
|
|
for %{name} plotting package
|
|
|
|
%prep
|
|
%setup -q -n matplotlib-%{version}
|
|
chmod -x lib/matplotlib/mpl-data/images/*.svg
|
|
find examples lib/matplotlib lib/mpl_toolkits/mplot3d -type f -name "*.py" -exec sed -i "s|#!\/usr\/bin\/env python||" {} \;
|
|
find examples lib/matplotlib lib/mpl_toolkits/mplot3d -type f -name "*.py" -exec sed -i "s|#!\/usr\/bin\/python||" {} \;
|
|
cp %{SOURCE1} ./setup.cfg
|
|
|
|
%if %{without tests}
|
|
sed -i -e 's/tests = .*/tests = False/' ./setup.cfg
|
|
%else
|
|
# raise tolerance for changes due to freetype 2.6/2.7 rendering differences
|
|
sed -i -e 's/\(image_comparison.*\)tol=0/\1tol=0.310/' lib/matplotlib/testing/decorators.py # default
|
|
sed -i -e 's/tol=0.002/tol=0.009/' lib/matplotlib/tests/test_streamplot.py
|
|
sed -i -e 's/tol=0.*)/tol=0.012)/' lib/matplotlib/tests/test_png.py
|
|
# image rotation is broken, investigate
|
|
sed -i -e 's/\(image_comparison.*rotate_image.*\)/\1 tol=150,/' lib/matplotlib/tests/test_image.py
|
|
%endif
|
|
|
|
%build
|
|
export XDG_RUNTIME_DIR=/tmp
|
|
%python_build
|
|
|
|
%install
|
|
export XDG_RUNTIME_DIR=/tmp
|
|
%python_install
|
|
%{python_expand %fdupes %{buildroot}%{$python_sitearch}
|
|
$python -m compileall -d %{$python_sitearch} %{buildroot}%{$python_sitearch}/matplotlib/backends/qt_editor/
|
|
$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitearch}/matplotlib/backends/qt_editor/
|
|
%fdupes %{buildroot}%{$python_sitearch}/matplotlib/backends/qt_editor/
|
|
}
|
|
|
|
%if %{with tests}
|
|
%check
|
|
export DISPLAY=:42
|
|
/usr/bin/Xvfb :42 -screen 0 1024x768x24 >& /tmp/Xvfb.log &
|
|
trap "kill $! || true" EXIT
|
|
%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python ./tests.py --no-network --recursionlimit=5000
|
|
%endif
|
|
|
|
%files %{python_files}
|
|
%defattr(-,root,root,-)
|
|
%doc README.rst PKG-INFO doc/users/license.rst
|
|
%doc examples/
|
|
%doc LICENSE/
|
|
%{python_sitearch}/matplotlib/
|
|
%{python_sitearch}/matplotlib-%{version}-py*.egg-info
|
|
%{python_sitearch}/matplotlib-%{version}-py*-nspkg.pth
|
|
%{python_sitearch}/mpl_toolkits
|
|
%{python_sitearch}/pylab.py*
|
|
%pycache_only %{python_sitearch}/__pycache__/pylab.*
|
|
%if 0%{?is_opensuse}
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_cairo.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_gtk3.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_gtk3agg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_gtk3cairo.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_qt4.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_qt4agg.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_qt5.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_qt5agg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_tkagg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_webagg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_webagg_core.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/qt_compat.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/qt_editor/
|
|
%exclude %{python_sitearch}/matplotlib/backends/tkagg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/web_backend/
|
|
%endif
|
|
%ifpycache
|
|
%if 0%{?is_opensuse}
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_cairo.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3agg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3cairo.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt4.*.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt4agg.*.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt5.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt5agg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_tkagg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_webagg.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/backend_webagg_core.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/qt_compat.*
|
|
%exclude %{python_sitearch}/matplotlib/backends/__pycache__/tkagg.*
|
|
%endif
|
|
%endif
|
|
%ifpython2
|
|
%if 0%{?is_opensuse}
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_wx.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/backend_wxagg.py*
|
|
%exclude %{python_sitearch}/matplotlib/backends/wx_compat.py*
|
|
%endif
|
|
%endif
|
|
|
|
# Dummy package to pull in latex dependencies.
|
|
%files %{python_files latex}
|
|
%defattr(-,root,root,-)
|
|
%doc README.rst
|
|
|
|
%if 0%{?is_opensuse}
|
|
|
|
%files %{python_files cairo}
|
|
%defattr(-,root,root,-)
|
|
%{python_sitearch}/matplotlib/backends/backend_cairo.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_cairo.*.py*
|
|
|
|
%files %{python_files gtk3}
|
|
%defattr(-,root,root,-)
|
|
%{python_sitearch}/matplotlib/backends/backend_gtk3.py*
|
|
%{python_sitearch}/matplotlib/backends/backend_gtk3agg.py*
|
|
%{python_sitearch}/matplotlib/backends/backend_gtk3cairo.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3agg.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_gtk3cairo.*.py*
|
|
|
|
# IMPORTANT: the qt4 backend makes use of the qt5 backend,
|
|
# which is actually a generic qt backend.
|
|
# So we need to package all the qt5 stuff in a generic
|
|
# package, and provide the -qt5 stub package which pulls in
|
|
# the python-qt5 dependency.
|
|
%files %{python_files qt-shared}
|
|
%defattr(-,root,root,-)
|
|
%{python_sitearch}/matplotlib/backends/backend_qt5.py*
|
|
%{python_sitearch}/matplotlib/backends/backend_qt5agg.py*
|
|
%{python_sitearch}/matplotlib/backends/qt_compat.py*
|
|
%{python_sitearch}/matplotlib/backends/qt_editor/
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt5.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt5agg.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/qt_compat.*.py*
|
|
|
|
%files %{python_files qt4}
|
|
%{python_sitearch}/matplotlib/backends/backend_qt4.py*
|
|
%{python_sitearch}/matplotlib/backends/backend_qt4agg.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt4.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_qt4agg.*.py*
|
|
|
|
%files %{python_files qt5}
|
|
%defattr(-,root,root,-)
|
|
%doc README.rst
|
|
|
|
%files %{python_files tk}
|
|
%defattr(-,root,root,-)
|
|
%{python_sitearch}/matplotlib/backends/backend_tkagg.py*
|
|
%{python_sitearch}/matplotlib/backends/tkagg.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_tkagg.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/tkagg.*.py*
|
|
|
|
%files %{python_files web}
|
|
%defattr(-,root,root,-)
|
|
%{python_sitearch}/matplotlib/backends/backend_webagg.py*
|
|
%{python_sitearch}/matplotlib/backends/backend_webagg_core.py*
|
|
%{python_sitearch}/matplotlib/backends/web_backend/
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_webagg.*.py*
|
|
%pycache_only %{python_sitearch}/matplotlib/backends/__pycache__/backend_webagg_core.*.py*
|
|
|
|
%files -n %{python2_prefix}-matplotlib-wx
|
|
%defattr(-,root,root,-)
|
|
%{python2_sitearch}/matplotlib/backends/wx_compat.py*
|
|
%{python2_sitearch}/matplotlib/backends/backend_wx.py*
|
|
%{python2_sitearch}/matplotlib/backends/backend_wxagg.py*
|
|
|
|
%endif
|
|
|
|
%changelog
|