diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8e2132 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/matplotlib-1.2.0-without-gpc.tar.gz diff --git a/.python-matplotlib.metadata b/.python-matplotlib.metadata new file mode 100644 index 0000000..c2c7923 --- /dev/null +++ b/.python-matplotlib.metadata @@ -0,0 +1 @@ +92ada4ef4e7374d67e46e30bfb08c3fed068d680 SOURCES/matplotlib-1.2.0-without-gpc.tar.gz diff --git a/SOURCES/FIX-catch-ValueError-as-well.patch b/SOURCES/FIX-catch-ValueError-as-well.patch new file mode 100644 index 0000000..a0812bf --- /dev/null +++ b/SOURCES/FIX-catch-ValueError-as-well.patch @@ -0,0 +1,30 @@ +From 0854a2eaa44b16e2261e9cb7c0f39a2fb82160ab Mon Sep 17 00:00:00 2001 +From: Thomas A Caswell +Date: Sat, 9 Jul 2016 14:46:39 -0400 +Subject: [PATCH 4/5] FIX: catch ValueError as well + +Closes #6702 + +Extension of #5233 + +Signed-off-by: John Kacur +--- + lib/matplotlib/font_manager.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py +index 8ee5cdc3fe80..168fa9f306e9 100644 +--- a/lib/matplotlib/font_manager.py ++++ b/lib/matplotlib/font_manager.py +@@ -581,7 +581,7 @@ def createFontList(fontfiles, fontext='ttf'): + continue + try: + prop = ttfFontProperty(font) +- except (KeyError, RuntimeError): ++ except (KeyError, RuntimeError, ValueError): + continue + + fontlist.append(prop) +-- +2.20.1 + diff --git a/SOURCES/Fix-for-Python-3.patch b/SOURCES/Fix-for-Python-3.patch new file mode 100644 index 0000000..cc8b324 --- /dev/null +++ b/SOURCES/Fix-for-Python-3.patch @@ -0,0 +1,26 @@ +From 49180b3f5bb2e823bfa927a4b46a4ff0ef3730f0 Mon Sep 17 00:00:00 2001 +From: Michael Droettboom +Date: Mon, 12 Oct 2015 20:03:57 -0400 +Subject: [PATCH 3/5] Fix for Python 3 + +Signed-off-by: John Kacur +--- + lib/matplotlib/font_manager.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py +index a57e211509bb..8ee5cdc3fe80 100644 +--- a/lib/matplotlib/font_manager.py ++++ b/lib/matplotlib/font_manager.py +@@ -581,7 +581,7 @@ def createFontList(fontfiles, fontext='ttf'): + continue + try: + prop = ttfFontProperty(font) +- except KeyError, RuntimeError: ++ except (KeyError, RuntimeError): + continue + + fontlist.append(prop) +-- +2.20.1 + diff --git a/SOURCES/Make-font_manager-ignore-KeyErrors-for-bad-fonts.patch b/SOURCES/Make-font_manager-ignore-KeyErrors-for-bad-fonts.patch new file mode 100644 index 0000000..cd3b6d1 --- /dev/null +++ b/SOURCES/Make-font_manager-ignore-KeyErrors-for-bad-fonts.patch @@ -0,0 +1,41 @@ +From faa88c94e36ae1c51ca75c1a8eee87d7148156e3 Mon Sep 17 00:00:00 2001 +From: Damon McDougall +Date: Mon, 17 Dec 2012 10:15:48 -0600 +Subject: [PATCH 1/5] Make font_manager ignore KeyErrors for bad fonts + +Signed-off-by: John Kacur +--- + lib/matplotlib/font_manager.py | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py +index 4ba6f80d0145..f9418dc5b4bd 100644 +--- a/lib/matplotlib/font_manager.py ++++ b/lib/matplotlib/font_manager.py +@@ -565,7 +565,10 @@ def createFontList(fontfiles, fontext='ttf'): + except RuntimeError: + verbose.report("Could not parse font file %s"%fpath) + continue +- prop = afmFontProperty(fpath, font) ++ try: ++ prop = afmFontProperty(fpath, font) ++ except KeyError: ++ continue + else: + try: + font = ft2font.FT2Font(str(fpath)) +@@ -576,7 +579,10 @@ def createFontList(fontfiles, fontext='ttf'): + verbose.report("Cannot handle unicode filenames") + #print >> sys.stderr, 'Bad file is', fpath + continue +- prop = ttfFontProperty(font) ++ try: ++ prop = ttfFontProperty(font) ++ except KeyError: ++ continue + + fontlist.append(prop) + return fontlist +-- +2.20.1 + diff --git a/SOURCES/Remove-call-to-nonexistent-FT2Font.get_fontsize.patch b/SOURCES/Remove-call-to-nonexistent-FT2Font.get_fontsize.patch new file mode 100644 index 0000000..ac7b7af --- /dev/null +++ b/SOURCES/Remove-call-to-nonexistent-FT2Font.get_fontsize.patch @@ -0,0 +1,62 @@ +From 22a27a7921d4c74fada02ed807253b178fcd8e06 Mon Sep 17 00:00:00 2001 +From: Antony Lee +Date: Thu, 16 Nov 2017 19:57:33 -0800 +Subject: [PATCH 5/5] Remove call to nonexistent FT2Font.get_fontsize. + +Signed-off-by: John Kacur +--- + lib/matplotlib/font_manager.py | 17 ++++------------- + 1 file changed, 4 insertions(+), 13 deletions(-) + +diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py +index 168fa9f306e9..2cabc31090bc 100644 +--- a/lib/matplotlib/font_manager.py ++++ b/lib/matplotlib/font_manager.py +@@ -28,7 +28,6 @@ KNOWN ISSUES + - font variant is untested + - font stretch is incomplete + - font size is incomplete +- - font size_adjust is incomplete + - default font algorithm needs improvement and testing + - setWeights function needs improvement + - 'light' is an invalid weight value, remove it. +@@ -457,14 +456,9 @@ def ttfFontProperty(font): + # Length value is an absolute font size, e.g. 12pt + # Percentage values are in 'em's. Most robust specification. + +- # !!!! Incomplete +- if font.scalable: +- size = 'scalable' +- else: +- size = str(float(font.get_fontsize())) +- +- # !!!! Incomplete +- size_adjust = None ++ if not font.scalable: ++ raise NotImplementedError("Non-scalable fonts are not supported") ++ size = 'scalable' + + return FontEntry(font.fname, name, style, variant, weight, stretch, size) + +@@ -530,9 +524,6 @@ def afmFontProperty(fontpath, font): + + size = 'scalable' + +- # !!!! Incomplete +- size_adjust = None +- + return FontEntry(fontpath, name, style, variant, weight, stretch, size) + + +@@ -581,7 +572,7 @@ def createFontList(fontfiles, fontext='ttf'): + continue + try: + prop = ttfFontProperty(font) +- except (KeyError, RuntimeError, ValueError): ++ except (KeyError, RuntimeError, ValueError, NotImplementedError): + continue + + fontlist.append(prop) +-- +2.20.1 + diff --git a/SOURCES/Skip-over-broken-TTF-font-when-creating-cache.patch b/SOURCES/Skip-over-broken-TTF-font-when-creating-cache.patch new file mode 100644 index 0000000..4f64231 --- /dev/null +++ b/SOURCES/Skip-over-broken-TTF-font-when-creating-cache.patch @@ -0,0 +1,26 @@ +From 484f95e01a836f39ab55daee2663788cb9813c3d Mon Sep 17 00:00:00 2001 +From: Michael Droettboom +Date: Mon, 12 Oct 2015 18:51:00 -0400 +Subject: [PATCH 2/5] Skip over broken TTF font when creating cache + +Signed-off-by: John Kacur +--- + lib/matplotlib/font_manager.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py +index f9418dc5b4bd..a57e211509bb 100644 +--- a/lib/matplotlib/font_manager.py ++++ b/lib/matplotlib/font_manager.py +@@ -581,7 +581,7 @@ def createFontList(fontfiles, fontext='ttf'): + continue + try: + prop = ttfFontProperty(font) +- except KeyError: ++ except KeyError, RuntimeError: + continue + + fontlist.append(prop) +-- +2.20.1 + diff --git a/SOURCES/disable-detection-of-gtk.patch b/SOURCES/disable-detection-of-gtk.patch new file mode 100644 index 0000000..72dcc24 --- /dev/null +++ b/SOURCES/disable-detection-of-gtk.patch @@ -0,0 +1,57 @@ +diff -up matplotlib-1.2.0/setupext.py.remove-need-for-xvfb matplotlib-1.2.0/setupext.py +--- matplotlib-1.2.0/setupext.py.remove-need-for-xvfb 2013-03-05 16:48:16.785361527 -0500 ++++ matplotlib-1.2.0/setupext.py 2013-03-05 16:50:57.535350535 -0500 +@@ -656,20 +656,10 @@ def check_for_gtk(): + 'check for the presence of pygtk' + gotit = False + explanation = None +- try: +- import gtk +- except ImportError: +- explanation = 'Building for Gtk+ requires pygtk; you must be able to "import gtk" in your build/install environment' +- except RuntimeError: +- explanation = 'pygtk present but import failed' +- else: +- version = (2,2,0) +- if gtk.pygtk_version < version: +- explanation = "Error: GTK backend requires PyGTK %d.%d.%d (or later), " \ +- "%d.%d.%d was detected." % ( +- version + gtk.pygtk_version) +- else: +- gotit = True ++ ++ # Don't try to detect if "import gtk" succeeds, as this requires a ++ # working X server, and $DISPLAY is unset in an rpm build. ++ gotit = True + + if gotit: + module = make_extension('test', []) +@@ -684,27 +674,13 @@ def check_for_gtk(): + return ".".join([str(x) for x in tup]) + + if gotit: +- import gobject +- if hasattr(gobject, 'pygobject_version'): +- pygobject_version = ver2str(gobject.pygobject_version) +- else: +- pygobject_version = '[pre-pygobject]' +- print_status("Gtk+", "gtk+: %s, glib: %s, pygtk: %s, pygobject: %s" % +- (ver2str(gtk.gtk_version), ver2str(gobject.glib_version), +- ver2str(gtk.pygtk_version), pygobject_version)) ++ print_status("Gtk+", "(assuming it it present)") + else: + print_status("Gtk+", "no") + + if explanation is not None: + print_message(explanation) + +- # Switch off the event loop for PyGTK >= 2.15.0 +- if gotit: +- try: +- gtk.set_interactive(False) +- except AttributeError: # PyGTK < 2.15.0 +- pass +- + return gotit + + def add_pygtk_flags(module): diff --git a/SOURCES/python-matplotlib-fontconfig.patch b/SOURCES/python-matplotlib-fontconfig.patch new file mode 100644 index 0000000..d9318e5 --- /dev/null +++ b/SOURCES/python-matplotlib-fontconfig.patch @@ -0,0 +1,64 @@ +diff -ur matplotlib-1.2.0.orig/lib/matplotlib/font_manager.py matplotlib-1.2.0/lib/matplotlib/font_manager.py +--- matplotlib-1.2.0.orig/lib/matplotlib/font_manager.py 2012-10-31 01:11:14.000000000 +0100 ++++ matplotlib-1.2.0/lib/matplotlib/font_manager.py 2013-04-03 01:50:34.433802284 +0200 +@@ -62,7 +62,7 @@ + except ImportError: + import pickle + +-USE_FONTCONFIG = False ++USE_FONTCONFIG = True + + verbose = matplotlib.verbose + +@@ -771,7 +771,7 @@ + return float(self._size) + except ValueError: + pass +- default_size = fontManager.get_default_size() ++ default_size = FontManager.get_default_size() + return default_size * font_scalings.get(self._size) + + def get_file(self): +@@ -991,7 +991,10 @@ + self.afmfiles = findSystemFonts(paths, fontext='afm') + \ + findSystemFonts(fontext='afm') + self.afmlist = createFontList(self.afmfiles, fontext='afm') +- self.defaultFont['afm'] = self.afmfiles[0] ++ try: ++ self.defaultFont['afm'] = self.afmfiles[0] ++ except IndexError: ++ self.defaultFont['afm'] = None + + self.ttf_lookup_cache = {} + self.afm_lookup_cache = {} +@@ -1002,7 +1005,8 @@ + """ + return self.__default_weight + +- def get_default_size(self): ++ @staticmethod ++ def get_default_size(): + """ + Return the default font size. + """ +@@ -1276,7 +1280,7 @@ + except OSError: + return None + if pipe.returncode == 0: +- for match in _fc_match_regex.finditer(output): ++ for match in _fc_match_regex.finditer(output.decode("utf-8")): + file = match.group(1) + if os.path.splitext(file)[1][1:] in fontexts: + return file +diff -ur matplotlib-1.2.0.orig/lib/matplotlib/mpl-data/matplotlibrc matplotlib-1.2.0/lib/matplotlib/mpl-data/matplotlibrc +--- matplotlib-1.2.0.orig/lib/matplotlib/mpl-data/matplotlibrc 2012-11-08 17:39:20.000000000 +0100 ++++ matplotlib-1.2.0/lib/matplotlib/mpl-data/matplotlibrc 2013-04-03 01:50:03.693755542 +0200 +@@ -198,7 +198,7 @@ + #mathtext.it : serif:italic + #mathtext.bf : serif:bold + #mathtext.sf : sans +-#mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix', ++mathtext.fontset : stix # Should be 'cm' (Computer Modern), 'stix', + # 'stixsans' or 'custom' + #mathtext.fallback_to_cm : True # When True, use symbols from the Computer Modern + # fonts when a symbol can not be found in one of diff --git a/SOURCES/python-matplotlib-noagg.patch b/SOURCES/python-matplotlib-noagg.patch new file mode 100644 index 0000000..9ca49e8 --- /dev/null +++ b/SOURCES/python-matplotlib-noagg.patch @@ -0,0 +1,73 @@ +diff -up matplotlib-1.2.0/setupext.py.orig matplotlib-1.2.0/setupext.py +--- matplotlib-1.2.0/setupext.py.orig 2012-11-23 14:49:21.295712608 -0200 ++++ matplotlib-1.2.0/setupext.py 2012-11-23 14:49:31.508712999 -0200 +@@ -96,7 +96,6 @@ BUILT_GDK = False + BUILT_PATH = False + BUILT_TRI = False + +-AGG_VERSION = 'agg24' + TCL_TK_CACHE = None + + # for nonstandard installation/build with --prefix variable +@@ -621,7 +620,8 @@ def add_agg_flags(module): + # before adding the freetype flags since -z comes later + add_base_flags(module) + add_numpy_flags(module) +- module.include_dirs.extend(['src', '%s/include'%AGG_VERSION, '.']) ++ module.include_dirs.extend(['src', '/usr/include/agg2', '.']) ++ module.libraries.append('agg') + + # put these later for correct link order + module.libraries.extend(std_libs) +@@ -1220,17 +1220,7 @@ def build_agg(ext_modules, packages): + global BUILT_AGG + if BUILT_AGG: return # only build it if you you haven't already + +- agg = ( +- 'agg_trans_affine.cpp', +- 'agg_bezier_arc.cpp', +- 'agg_curves.cpp', +- 'agg_vcgen_dash.cpp', +- 'agg_vcgen_stroke.cpp', +- 'agg_image_filters.cpp', +- ) +- +- deps = ['%s/src/%s'%(AGG_VERSION, name) for name in agg] +- deps.extend(['src/mplutils.cpp', 'src/agg_py_transforms.cpp']) ++ deps = ['src/mplutils.cpp', 'src/agg_py_transforms.cpp'] + deps.extend(glob.glob('CXX/*.cxx')) + deps.extend(glob.glob('CXX/*.c')) + temp_copy('src/_backend_agg.cpp', 'src/backend_agg.cpp') +@@ -1253,16 +1243,7 @@ def build_path(ext_modules, packages): + global BUILT_PATH + if BUILT_PATH: return # only build it if you you haven't already + +- agg = ( +- 'agg_vcgen_contour.cpp', +- 'agg_curves.cpp', +- 'agg_bezier_arc.cpp', +- 'agg_trans_affine.cpp', +- 'agg_vcgen_stroke.cpp', +- ) +- +- deps = ['%s/src/%s'%(AGG_VERSION, name) for name in agg] +- deps.extend(glob.glob('CXX/*.cxx')) ++ deps = glob.glob('CXX/*.cxx') + deps.extend(glob.glob('CXX/*.c')) + + temp_copy('src/_path.cpp', 'src/path.cpp') +@@ -1287,14 +1268,8 @@ def build_image(ext_modules, packages): + global BUILT_IMAGE + if BUILT_IMAGE: return # only build it if you you haven't already + +- agg = ('agg_trans_affine.cpp', +- 'agg_image_filters.cpp', +- 'agg_bezier_arc.cpp', +- ) +- + temp_copy('src/_image.cpp', 'src/image.cpp') + deps = ['src/image.cpp', 'src/mplutils.cpp'] +- deps.extend(['%s/src/%s'%(AGG_VERSION,name) for name in agg]) + deps.extend(glob.glob('CXX/*.cxx')) + deps.extend(glob.glob('CXX/*.c')) + diff --git a/SOURCES/python-matplotlib-tk.patch b/SOURCES/python-matplotlib-tk.patch new file mode 100644 index 0000000..1a07f53 --- /dev/null +++ b/SOURCES/python-matplotlib-tk.patch @@ -0,0 +1,35 @@ +diff -up matplotlib-1.2.0/setupext.py.orig matplotlib-1.2.0/setupext.py +--- matplotlib-1.2.0/setupext.py.orig 2012-11-23 14:50:48.954715965 -0200 ++++ matplotlib-1.2.0/setupext.py 2012-11-23 14:55:53.731727636 -0200 +@@ -898,12 +898,12 @@ def parse_tcl_config(tcl_lib_dir, tk_lib + + tcl_poss = [tcl_lib_dir, + os.path.normpath(os.path.join(tcl_lib_dir, '..')), +- "/usr/lib/tcl"+str(Tkinter.TclVersion), +- "/usr/lib"] ++ "@@libdir@@/tcl"+str(Tkinter.TclVersion), ++ "@@libdir@@"] + tk_poss = [tk_lib_dir, + os.path.normpath(os.path.join(tk_lib_dir, '..')), +- "/usr/lib/tk"+str(Tkinter.TkVersion), +- "/usr/lib"] ++ "@@libdir@@/tk"+str(Tkinter.TkVersion), ++ "@@libdir@@"] + for ptcl, ptk in zip(tcl_poss, tk_poss): + tcl_config = os.path.join(ptcl, "tclConfig.sh") + tk_config = os.path.join(ptk, "tkConfig.sh") +@@ -974,10 +974,10 @@ def guess_tcl_config(tcl_lib_dir, tk_lib + return tcl_lib, tcl_inc, 'tcl' + tk_ver, tk_lib, tk_inc, 'tk' + tk_ver + + def hardcoded_tcl_config(): +- tcl_inc = "/usr/local/include" +- tk_inc = "/usr/local/include" +- tcl_lib = "/usr/local/lib" +- tk_lib = "/usr/local/lib" ++ tcl_inc = "/usr/include" ++ tk_inc = "/usr/include" ++ tcl_lib = "@@libdir@@" ++ tk_lib = "@@libdir@@" + return tcl_lib, tcl_inc, 'tcl', tk_lib, tk_inc, 'tk' + + def add_tk_flags(module): diff --git a/SPECS/python-matplotlib.spec b/SPECS/python-matplotlib.spec new file mode 100644 index 0000000..bcfb04a --- /dev/null +++ b/SPECS/python-matplotlib.spec @@ -0,0 +1,675 @@ +%if 0%{?fedora} >= 18 +%global with_python3 1 +%global basepy3dir %(echo ../`basename %{py3dir}`) +%else +%global with_python3 0 +%endif +%global __provides_exclude_from .*/site-packages/.*\\.so$ +%global with_html 0 + +# On RHEL 7 onwards, don't build with wx: +%if 0%{?rhel} >= 7 +%global with_wx 0 +%else +%global with_wx 1 +%endif + + +Name: python-matplotlib +Version: 1.2.0 +Release: 16%{?dist} +Summary: Python 2D plotting library +Group: Development/Libraries +License: Python +URL: http://matplotlib.org +#Modified Sources to remove the one undistributable file +#See generate-tarball.sh in fedora cvs repository for logic +#sha1sum matplotlib-1.2.0-without-gpc.tar.gz +#92ada4ef4e7374d67e46e30bfb08c3fed068d680 matplotlib-1.2.0-without-gpc.tar.gz +Source0: matplotlib-%{version}-without-gpc.tar.gz + +Patch0: %{name}-noagg.patch +Patch1: %{name}-tk.patch +# http://sourceforge.net/mailarchive/message.php?msg_id=30202451 +# https://github.com/matplotlib/matplotlib/pull/1666 +# https://bugzilla.redhat.com/show_bug.cgi?id=896182 +Patch2: %{name}-fontconfig.patch + +# Upstream setup.py tries to detect if gtk is installed, but this +# requires an X server, and running the build under xvfb-run is +# fragile. +# +# Patch out these tests, and assume that the BuildRequires: gtk2-devel +# gives us what we need: +Patch3: disable-detection-of-gtk.patch + +BuildRequires: agg-devel +BuildRequires: freetype-devel +BuildRequires: gtk2-devel +BuildRequires: libpng-devel +BuildRequires: numpy +BuildRequires: pycairo-devel +BuildRequires: pygtk2-devel +BuildRequires: pyparsing +BuildRequires: python-dateutil +BuildRequires: python2-devel +BuildRequires: pytz +BuildRequires: zlib-devel +Requires: dejavu-sans-fonts +Requires: dvipng +Requires: numpy +Requires: pycairo +Requires: pygtk2 +Requires: pyparsing +Requires: python-dateutil +Requires: pytz +Requires: stix-fonts +Requires: stix-math-fonts + +%if 0%{?fedora} >= 18 +Requires: stix-math-fonts +%else +Requires: stix-fonts +%endif + +%if 0%{?rhel} >= 7 +Requires: stix-math-fonts +%endif + +# PATCHES +Patch4: Make-font_manager-ignore-KeyErrors-for-bad-fonts.patch +Patch5: Skip-over-broken-TTF-font-when-creating-cache.patch +Patch6: Fix-for-Python-3.patch +Patch7: FIX-catch-ValueError-as-well.patch +Patch8: Remove-call-to-nonexistent-FT2Font.get_fontsize.patch + +%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, web application servers, and +six graphical user interface toolkits. + +Matplotlib tries to make easy things easy and hard things possible. +You can generate plots, histograms, power spectra, bar charts, +errorcharts, scatterplots, etc, with just a few lines of code. + +%package qt4 +Summary: Qt4 backend for python-matplotlib +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: PyQt4-devel +Requires: PyQt4 + +%description qt4 +%{summary} + +%package tk +Summary: Tk backend for python-matplotlib +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: tcl-devel +BuildRequires: tkinter +BuildRequires: tk-devel +Requires: tkinter + +%description tk +%{summary} + +%if %{with_wx} +%package wx +Summary: wxPython backend for python-matplotlib +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: wxPython-devel +Requires: wxPython + +%description wx +%{summary} +%endif # with_wx + +%package doc +Summary: Documentation files for python-matplotlib +Group: Documentation +Requires: %{name}%{?_isa} = %{version}-%{release} +%if %{with_html} +BuildRequires: python-sphinx +BuildRequires: tex(latex) +BuildRequires: dvipng +%endif + +%description doc +%{summary} + +%if %{with_python3} +%package -n python3-matplotlib +Summary: Python 2D plotting library +Group: Development/Libraries +BuildRequires: python3-cairo +BuildRequires: python3-dateutil +BuildRequires: python3-devel +BuildRequires: python3-gobject +BuildRequires: python3-numpy +BuildRequires: python3-pyparsing +BuildRequires: python3-pytz +BuildRequires: python3-six +Requires: python3-numpy +Requires: python3-cairo +Requires: python3-pyparsing +Requires: python3-dateutil +Requires: python3-pytz +%if 0%{?fedora} >= 18 +Requires: stix-math-fonts +%else +Requires: stix-fonts +%endif + +%description -n python3-matplotlib +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, web application servers, and +six graphical user interface toolkits. + +Matplotlib tries to make easy things easy and hard things possible. +You can generate plots, histograms, power spectra, bar charts, +errorcharts, scatterplots, etc, with just a few lines of code. + +%package -n python3-matplotlib-qt4 +Summary: Qt4 backend for python3-matplotlib +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: python3-PyQt4-devel +Requires: python3-PyQt4 + +%description -n python3-matplotlib-qt4 +%{summary} + +%package -n python3-matplotlib-tk +Summary: Tk backend for python3-matplotlib +Group: Development/Libraries +Requires: python3-matplotlib%{?_isa} = %{version}-%{release} +BuildRequires: python3-tkinter +Requires: python3-tkinter + +%description -n python3-matplotlib-tk +%{summary} +%endif + +%prep +%setup -q -n matplotlib-%{version} +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 + +# Remove bundled libraries +rm -r agg24 lib/matplotlib/pyparsing_py?.py + +# Remove references to bundled libraries +%patch0 -p1 -b .noagg +sed -i -e s/matplotlib\.pyparsing_py./pyparsing/g lib/matplotlib/*.py + +# Correct tcl/tk detection +%patch1 -p1 -b .tk +sed -i -e 's|@@libdir@@|%{_libdir}|' setupext.py + +# Use fontconfig by default +%patch2 -p1 -b .fontconfig + +# Avoid the need for an X server during the build: +%patch3 -p1 + +chmod -x lib/matplotlib/mpl-data/images/*.svg + +%if %{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +%endif + +%build +%{__python2} setup.py build +%if %{with_html} +# Need to make built matplotlib libs available for the sphinx extensions: +pushd doc + export PYTHONPATH=`realpath ../build/lib.linux*` + %{__python2} make.py html +popd +%endif +# Ensure all example files are non-executable so that the -doc +# package doesn't drag in dependencies +find examples -name '*.py' -exec chmod a-x '{}' \; + +%if %{with_python3} +pushd %{py3dir} + %{__python3} setup.py build + # documentation cannot be built with python3 due to syntax errors + # and building with python 2 exits with cryptic error messages +popd +%endif + +%install +%{__python} setup.py install -O1 --skip-build --root=$RPM_BUILD_ROOT +chmod +x $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/dates.py +rm -rf $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/mpl-data/fonts + +%if %{with_python3} +pushd %{py3dir} + %{__python3} setup.py install -O1 --skip-build --root=$RPM_BUILD_ROOT + chmod +x $RPM_BUILD_ROOT%{python3_sitearch}/matplotlib/dates.py + rm -rf $RPM_BUILD_ROOT%{python3_sitearch}/matplotlib/mpl-data/fonts + rm -f $RPM_BUILD_ROOT%{python3_sitearch}/six.py +popd +%endif + +%files +%doc README.txt +%doc lib/dateutil_py2/LICENSE +%doc lib/matplotlib/mpl-data/fonts/ttf/LICENSE_STIX +%doc lib/pytz/LICENSE.txt +%doc CHANGELOG +%doc CXX +%doc INSTALL +%doc PKG-INFO +%doc TODO +%{python_sitearch}/*egg-info +%{python_sitearch}/matplotlib/ +%{python_sitearch}/mpl_toolkits/ +%{python_sitearch}/pylab.py* +%exclude %{python_sitearch}/matplotlib/backends/backend_qt4.* +%exclude %{python_sitearch}/matplotlib/backends/backend_qt4agg.* +%exclude %{python_sitearch}/matplotlib/backends/backend_tkagg.* +%exclude %{python_sitearch}/matplotlib/backends/tkagg.* +%exclude %{python_sitearch}/matplotlib/backends/_tkagg.so +%exclude %{python_sitearch}/matplotlib/backends/backend_wx.* +%exclude %{python_sitearch}/matplotlib/backends/backend_wxagg.* + +%files qt4 +%{python_sitearch}/matplotlib/backends/backend_qt4.* +%{python_sitearch}/matplotlib/backends/backend_qt4agg.* + +%files tk +%{python_sitearch}/matplotlib/backends/backend_tkagg.py* +%{python_sitearch}/matplotlib/backends/tkagg.py* +%{python_sitearch}/matplotlib/backends/_tkagg.so + +%if %{with_wx} +%files wx +%{python_sitearch}/matplotlib/backends/backend_wx.* +%{python_sitearch}/matplotlib/backends/backend_wxagg.* +%endif # with_wx + +%files doc +%doc examples +%if %{with_html} +%doc doc/build/html/* +%endif + +%if %{with_python3} +%files -n python3-matplotlib +%doc %{basepy3dir}/README.txt +%doc %{basepy3dir}/lib/dateutil_py3/LICENSE +%doc %{basepy3dir}/lib/matplotlib/mpl-data/fonts/ttf/LICENSE_STIX +%doc %{basepy3dir}/lib/pytz/LICENSE.txt +%doc %{basepy3dir}/CHANGELOG +%doc %{basepy3dir}/CXX +%doc %{basepy3dir}/INSTALL +%doc %{basepy3dir}/PKG-INFO +%doc %{basepy3dir}/TODO +%{python3_sitearch}/*egg-info +%{python3_sitearch}/matplotlib/ +%{python3_sitearch}/mpl_toolkits/ +%{python3_sitearch}/pylab.py* +%{python3_sitearch}/__pycache__/* +%exclude %{python3_sitearch}/matplotlib/backends/backend_qt4.* +%exclude %{python3_sitearch}/matplotlib/backends/backend_qt4agg.* +%exclude %{python3_sitearch}/matplotlib/backends/backend_tkagg.* +%exclude %{python3_sitearch}/matplotlib/backends/backend_tkagg.* +%exclude %{python3_sitearch}/matplotlib/backends/tkagg.* +%exclude %{python3_sitearch}/matplotlib/backends/_tkagg.* + +%files -n python3-matplotlib-qt4 +%{python_sitearch}/matplotlib/backends/backend_qt4.* +%{python_sitearch}/matplotlib/backends/backend_qt4agg.* + +%files -n python3-matplotlib-tk +%{python3_sitearch}/matplotlib/backends/backend_tkagg.py* +%{python3_sitearch}/matplotlib/backends/tkagg.* +%{python3_sitearch}/matplotlib/backends/_tkagg.* +%endif + +%changelog +* Mon Jan 21 2019 John Kacur - 1.2.0-16 +- Fix "unable to parse the pattern" message in stderr +Resolves: rhbz#1653300 + +* Fri Jan 24 2014 Daniel Mach - 1.2.0-15 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 1.2.0-14 +- Mass rebuild 2013-12-27 + +* Thu Apr 11 2013 Bohuslav Kabrda - 1.2.0-13 +- Disable building under xvfb-run (#891533). + +* Wed Apr 3 2013 Thomas Spura - 1.2.0-12 +- Decode output of subprocess to utf-8 or regex will fail (#928326) + +* Tue Apr 2 2013 pcpa - 1.2.0-11 +- Make stix-fonts a requires of matplotlib (#928326) + +* Thu Mar 28 2013 pcpa - 1.2.0-10 +- Use stix fonts avoid problems with missing cm fonts (#908717) +- Correct type mismatch in python3 font_manager (#912843, #928326) + +* Thu Feb 14 2013 Fedora Release Engineering - 1.2.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jan 16 2013 pcpa - 1.2.0-8 +- Update fontconfig patch to apply issue found by upstream +- Update fontconfig patch to apply issue with missing afm fonts (#896182) + +* Wed Jan 16 2013 pcpa - 1.2.0-7 +- Use fontconfig by default (#885307) + +* Thu Jan 3 2013 David Malcolm - 1.2.0-6 +- remove wx support for rhel >= 7 + +* Tue Dec 04 2012 pcpa - 1.2.0-5 +- Reinstantiate wx backend for python2.x. +- Run setup.py under xvfb-run to detect and default to gtk backend (#883502) +- Split qt4 backend subpackage and add proper requires for it. +- Correct wrong regex in tcl libdir patch. + +* Tue Nov 27 2012 pcpa - 1.2.0-4 +- Obsolete python-matplotlib-wx for clean updates. + +* Tue Nov 27 2012 pcpa - 1.2.0-3 +- Enable python 3 in fc18 as build requires are now available (#879731) + +* Thu Nov 22 2012 pcpa - 1.2.0-2 +- Build python3 only on f19 or newer (#837156) +- Build requires python3-six if building python3 support (#837156) + +* Thu Nov 22 2012 pcpa - 1.2.0-1 +- Update to version 1.2.0 +- Revert to regenerate tarball with generate-tarball.sh (#837156) +- Assume update to 1.2.0 is for recent releases +- Remove %%defattr +- Remove %%clean +- Use simpler approach to build html documentation +- Do not use custom/outdated setup.cfg +- Put one BuildRequires per line +- Enable python3 support +- Cleanup spec as wx backend is no longer supported +- Use default agg backend +- Fix bogus dates in changelog by assuming only week day was wrong + +* Fri Aug 17 2012 Jerry James - 1.1.1-1 +- Update to version 1.1.1. +- Remove obsolete spec file elements +- Fix sourceforge URLs +- Allow sample data to have a different version number than the sources +- Don't bother removing problematic file since we remove entire agg24 directory +- Fix building with pygtk in the absence of an X server +- Don't install license text for bundled software that we don't bundle + +* Sat Jul 21 2012 Fedora Release Engineering - 1.0.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 3 2012 pcpa - 1.1.0-1 +- Update to version 1.1.0. +- Do not regenerate upstream tarball but remove problematic file in %%prep. +- Remove non longer applicable/required patch0. +- Rediff/rename -noagg patch. +- Remove propagate-timezone-info-in-plot_date-xaxis_da patch already applied. +- Remove tkinter patch now with critical code in a try block. +- Remove png 1.5 patch as upstream is now png 1.5 aware. +- Update file list. + +* Wed Apr 18 2012 David Malcolm - 1.0.1-20 +- remove wx support for rhel >= 7 + +* Tue Feb 28 2012 Fedora Release Engineering - 1.0.1-19 +- Rebuilt for c++ ABI breakage + +* Sat Jan 14 2012 Fedora Release Engineering - 1.0.1-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 6 2011 David Malcolm - 1.0.1-17 +- fix the build against libpng 1.5 + +* Tue Dec 6 2011 David Malcolm - 1.0.1-16 +- fix egg-info conditional for RHEL + +* Tue Dec 06 2011 Adam Jackson - 1.0.1-15 +- Rebuild for new libpng + +* Mon Oct 31 2011 Dan HorĂ¡k - 1.0.1-14 +- fix build with new Tkinter which doesn't return an expected value in __version__ + +* Thu Sep 15 2011 Jef Spaleta - 1.0.1-13 +- apply upstream bugfix for timezone formatting (Bug 735677) + +* Fri May 20 2011 Orion Poplawski - 1.0.1-12 +- Add Requires dvipng (Bug 684836) +- Build against system agg (Bug 612807) +- Use system pyparsing (Bug 702160) + +* Sat Feb 26 2011 Jonathan G. Underwood - 1.0.1-11 +- Set PYTHONPATH during html doc building using find to prevent broken builds + +* Sat Feb 26 2011 Jonathan G. Underwood - 1.0.1-10 +- Spec file cleanups for readability + +* Sat Feb 26 2011 Jonathan G. Underwood - 1.0.1-9 +- Bump and rebuild + +* Sat Feb 26 2011 Jonathan G. Underwood - 1.0.1-8 +- Fix spec file typos so package builds + +* Fri Feb 25 2011 Jonathan G. Underwood - 1.0.1-7 +- Remove a debugging echo statement from the spec file +- Fix some line endings and permissions in -doc sub-package + +* Fri Feb 25 2011 Jonathan G. Underwood - 1.0.1-6 +- Spec file cleanups to silence some rpmlint warnings + +* Mon Feb 21 2011 Jonathan G. Underwood - 1.0.1-5 +- Add default attr to doc sub-package file list +- No longer designate -doc subpackage as noarch +- Add arch specific Requires for tk, wx and doc sub-packages + +* Mon Feb 21 2011 Jonathan G. Underwood - 1.0.1-4 +- Enable wxPython backend +- Make -doc sub-package noarch + +* Mon Feb 21 2011 Jonathan G. Underwood - 1.0.1-3 +- Add conditional for optionally building doc sub-package +- Add flag to build low res images for documentation +- Add matplotlib-1.0.1-plot_directive.patch to fix build of low res images +- Remove unused patches + +* Sat Feb 19 2011 Jonathan G. Underwood - 1.0.1-2 +- Build and package HTML documentation in -doc sub-package +- Move examples to -doc sub-package +- Make examples non-executable + +* Fri Feb 18 2011 Thomas Spura - 1.0.1-1 +- update to new bugfix version (#678489) +- set file attributes in tk subpackage +- filter private *.so + +* Tue Feb 08 2011 Fedora Release Engineering - 1.0.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jul 22 2010 David Malcolm - 1.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Thu Jul 8 2010 Jef Spaleta - 1.0.0-1 +- New upstream release +- Remove undistributable file from bundled agg library + +* Thu Jul 1 2010 Jef Spaleta - 0.99.3-1 +- New upstream release + +* Thu May 27 2010 Jef Spaleta - 0.99.1.2-4 +- Upstream patch to fix deprecated gtk tooltip warning. + +* Mon Apr 12 2010 Jef Spaleta - 0.99.1.2-2 +- Bump to rebuild against numpy 1.3 + +* Thu Apr 1 2010 Jef Spaleta - 0.99.1.2-1 +- Bump to rebuild against numpy 1.4.0 + +* Fri Dec 11 2009 Jon Ciesla - 0.99.1.2 +- Update to 0.99.1.2 + +* Sun Jul 26 2009 Fedora Release Engineering - 0.98.5.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Mar 06 2009 Jef Spaleta - 0.98.5-4 +- Fixed font dep after font guideline change + +* Thu Feb 26 2009 Fedora Release Engineering - 0.98.5.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Dec 23 2008 Jef Spaleta - 0.98.5-2 +- Add dep on DejaVu Sans font for default font support + +* Mon Dec 22 2008 Jef Spaleta - 0.98.5-1 +- Latest upstream release +- Strip out included fonts + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.98.3-2 +- Rebuild for Python 2.6 + +* Wed Aug 6 2008 Jef Spaleta - 0.98.3-1 +- Latest upstream release + +* Tue Jul 1 2008 Jef Spaleta - 0.98.1-1 +- Latest upstream release + +* Fri Mar 21 2008 Jef Spaleta - 0.91.2-2 +- gcc43 cleanups + +* Fri Mar 21 2008 Jef Spaleta - 0.91.2-1 +- New upstream version +- Adding Fedora specific setup.cfg from included template +- removed numarry and numerics build requirements + +* Tue Feb 19 2008 Fedora Release Engineering - 0.90.1-6 +- Autorebuild for GCC 4.3 + +* Fri Jan 4 2008 Alex Lancaster - 0.90.1-5 +- Fixed typo in spec. + +* Fri Jan 4 2008 Alex Lancaster - 0.90.1-4 +- Support for Python Eggs for F9+ + +* Thu Jan 3 2008 Alex Lancaster - 0.90.1-3 +- Rebuild for new Tcl 8.5 + +* Thu Aug 23 2007 Orion Poplawski 0.90.1-2 +- Update license tag to Python +- Rebuild for BuildID + +* Mon Jun 04 2007 Orion Poplawski 0.90.1-1 +- Update to 0.90.1 + +* Wed Feb 14 2007 Orion Poplawski 0.90.0-2 +- Rebuild for Tcl/Tk downgrade + +* Sat Feb 10 2007 Jef Spaleta 0.90.0-2 +- Release bump for rebuild against new tk + +* Fri Feb 09 2007 Orion Poplawski 0.90.0-1 +- Update to 0.90.0 + +* Fri Jan 5 2007 Orion Poplawski 0.87.7-4 +- Add examples to %%docs + +* Mon Dec 11 2006 Jef Spaleta 0.87.7-3 +- Release bump for rebuild against python 2.5 in devel tree + +* Tue Dec 5 2006 Orion Poplawski 0.87.7-2 +- Force build of gtk/gtkagg backends in mock (bug #218153) +- Change Requires from python-numeric to numpy (bug #218154) + +* Tue Nov 21 2006 Orion Poplawski 0.87.7-1 +- Update to 0.87.7 and fix up the defaults to use numpy +- Force build of tkagg backend without X server +- Use src.rpm from Jef Spaleta, closes bug 216578 + +* Fri Oct 6 2006 Orion Poplawski 0.87.6-1 +- Update to 0.87.6 + +* Thu Sep 7 2006 Orion Poplawski 0.87.5-1 +- Update to 0.87.5 + +* Thu Jul 27 2006 Orion Poplawski 0.87.4-1 +- Update to 0.87.4 + +* Wed Jun 7 2006 Orion Poplawski 0.87.3-1 +- Update to 0.87.3 + +* Mon May 15 2006 Orion Poplawski 0.87.2-2 +- Rebuild for new numpy + +* Tue Mar 7 2006 Orion Poplawski 0.87.2-1 +- Update to 0.87.2 + +* Tue Mar 7 2006 Orion Poplawski 0.87.1-1 +- Update to 0.87.1 +- Add pycairo >= 1.0.2 requires (FC5+ only) + +* Fri Feb 24 2006 Orion Poplawski 0.87-1 +- Update to 0.87 +- Add BR numpy and python-numarray +- Add patch to keep Numeric as the default numerix package +- Add BR tkinter and tk-devel for TkInter backend +- Make separate package for Tk backend + +* Tue Jan 10 2006 Orion Poplawski 0.86-1 +- Update to 0.86 + +* Thu Dec 22 2005 Orion Poplawski 0.85-2 +- Rebuild + +* Sun Nov 20 2005 Orion Poplawski 0.85-1 +- New upstream version 0.85 + +* Mon Sep 19 2005 Orion Poplawski 0.84-1 +- New upstream version 0.84 + +* Tue Aug 02 2005 Orion Poplawski 0.83.2-3 +- bump release + +* Tue Aug 02 2005 Orion Poplawski 0.83.2-2 +- Add Requires: python-numeric, pytz, python-dateutil + +* Fri Jul 29 2005 Orion Poplawski 0.83.2-1 +- New upstream version matplotlib 0.83.2 + +* Thu Jul 28 2005 Orion Poplawski 0.83.1-2 +- Bump rel to fix botched tag + +* Thu Jul 28 2005 Orion Poplawski 0.83.1-1 +- New upstream version matplotlib 0.83.1 + +* Tue Jul 05 2005 Orion Poplawski 0.82-4 +- BuildRequires: pytz, python-dateutil - use upstream +- Don't use INSTALLED_FILES, list dirs +- Fix execute permissions + +* Fri Jul 01 2005 Orion Poplawski 0.82-3 +- Use %%{python_sitearch} + +* Thu Jun 30 2005 Orion Poplawski 0.82-2 +- Rename to python-matplotlib +- Remove unneeded Requires: python +- Add private directories to %%files + +* Tue Jun 28 2005 Orion Poplawski 0.82-1 +- Initial package for Fedora Extras