diff --git a/0001-Bugfix-propagate-timezone-info-in-plot_date-xaxis_da.patch b/0001-Bugfix-propagate-timezone-info-in-plot_date-xaxis_da.patch deleted file mode 100644 index 12f47cc..0000000 --- a/0001-Bugfix-propagate-timezone-info-in-plot_date-xaxis_da.patch +++ /dev/null @@ -1,188 +0,0 @@ ---- a/lib/matplotlib/axes.py -+++ b/lib/matplotlib/axes.py -@@ -2679,18 +2679,20 @@ class Axes(martist.Artist): - def xaxis_date(self, tz=None): - """Sets up x-axis ticks and labels that treat the x data as dates. - -- *tz* is the time zone to use in labeling dates. Defaults to rc value. -+ *tz* is a timezone string or :class:`tzinfo` instance. -+ Defaults to rc value. - """ - # should be enough to inform the unit conversion interface -- # dates are comng in -- self.xaxis.axis_date() -+ # dates are coming in -+ self.xaxis.axis_date(tz) - - def yaxis_date(self, tz=None): - """Sets up y-axis ticks and labels that treat the y data as dates. - -- *tz* is the time zone to use in labeling dates. Defaults to rc value. -+ *tz* is a timezone string or :class:`tzinfo` instance. -+ Defaults to rc value. - """ -- self.yaxis.axis_date() -+ self.yaxis.axis_date(tz) - - def format_xdata(self, x): - """ -@@ -3808,7 +3810,7 @@ class Axes(martist.Artist): - *fmt*: string - The plot format string. - -- *tz*: [ None | timezone string ] -+ *tz*: [ None | timezone string | :class:`tzinfo` instance] - The time zone to use in labeling dates. If *None*, defaults to rc - value. - -diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py -index 85e078c..a825d8e 100644 ---- a/lib/matplotlib/axis.py -+++ b/lib/matplotlib/axis.py -@@ -1249,21 +1249,21 @@ class Axis(artist.Artist): - def update_units(self, data): - """ - introspect *data* for units converter and update the -- axis.converter instance if necessary. Return *True* is *data* is -- registered for unit conversion -+ axis.converter instance if necessary. Return *True* -+ if *data* is registered for unit conversion. - """ - - converter = munits.registry.get_converter(data) -- if converter is None: return False -+ if converter is None: -+ return False - - neednew = self.converter!=converter - self.converter = converter - default = self.converter.default_units(data, self) -- #print 'update units: default="%s", units=%s"'%(default, self.units) -+ #print 'update units: default=%s, units=%s'%(default, self.units) - if default is not None and self.units is None: - self.set_units(default) - -- - if neednew: - self._update_axisinfo() - return True -@@ -1484,14 +1484,21 @@ class Axis(artist.Artist): - self.major.locator.zoom(direction) - - -- def axis_date(self): -+ def axis_date(self, tz=None): - """ - Sets up x-axis ticks and labels that treat the x data as dates. -+ *tz* is a :class:`tzinfo` instance or a timezone string. -+ This timezone is used to create date labels. - """ -+ # By providing a sample datetime instance with the desired -+ # timezone, the registered converter can be selected, -+ # and the "units" attribute, which is the timezone, can -+ # be set. - import datetime -- # should be enough to inform the unit conversion interface -- # dates are comng in -- self.update_units(datetime.date(2009,1,1)) -+ if isinstance(tz, (str, unicode)): -+ import pytz -+ tz = pytz.timezone(tz) -+ self.update_units(datetime.datetime(2009,1,1,0,0,0,0,tz)) - - - class XAxis(Axis): -diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py -index 7a2f9f3..9018315 100644 ---- a/lib/matplotlib/dates.py -+++ b/lib/matplotlib/dates.py -@@ -1104,15 +1104,26 @@ def weeks(w): - - - class DateConverter(units.ConversionInterface): -- """The units are equivalent to the timezone.""" -+ """ -+ Converter for datetime.date and datetime.datetime data, -+ or for date/time data represented as it would be converted -+ by :func:`date2num`. -+ -+ The 'unit' tag for such data is None or a tzinfo instance. -+ """ - - @staticmethod - def axisinfo(unit, axis): -- 'return the unit AxisInfo' -- # make sure that the axis does not start at 0 -+ """ -+ Return the :class:`~matplotlib.units.AxisInfo` for *unit*. -+ -+ *unit* is a tzinfo instance or None. -+ The *axis* argument is required but not used. -+ """ -+ tz = unit - -- majloc = AutoDateLocator(tz=unit) -- majfmt = AutoDateFormatter(majloc, tz=unit) -+ majloc = AutoDateLocator(tz=tz) -+ majfmt = AutoDateFormatter(majloc, tz=tz) - datemin = datetime.date(2000, 1, 1) - datemax = datetime.date(2010, 1, 1) - -@@ -1121,12 +1132,28 @@ class DateConverter(units.ConversionInterface): - - @staticmethod - def convert(value, unit, axis): -- if units.ConversionInterface.is_numlike(value): return value -+ """ -+ If *value* is not already a number or sequence of numbers, -+ convert it with :func:`date2num`. -+ -+ The *unit* and *axis* arguments are not used. -+ """ -+ if units.ConversionInterface.is_numlike(value): -+ return value - return date2num(value) - - @staticmethod - def default_units(x, axis): -- 'Return the default unit for *x* or None' -+ 'Return the tzinfo instance of *x* or of its first element, or None' -+ try: -+ x = x[0] -+ except (TypeError, IndexError): -+ pass -+ -+ try: -+ return x.tzinfo -+ except AttributeError: -+ pass - return None - - -diff --git a/lib/matplotlib/units.py b/lib/matplotlib/units.py -index 700363a..59b570e 100644 ---- a/lib/matplotlib/units.py -+++ b/lib/matplotlib/units.py -@@ -7,8 +7,8 @@ objects, eg a list of datetime objects, as well as for objects that - are unit aware. We don't assume any particular units implementation, - rather a units implementation must provide a ConversionInterface, and - the register with the Registry converter dictionary. For example, --here is a complete implementation which support plotting with native --datetime objects -+here is a complete implementation which supports plotting with native -+datetime objects:: - - - import matplotlib.units as units -@@ -48,7 +48,7 @@ from matplotlib.cbook import iterable, is_numlike, is_string_like - class AxisInfo: - 'information to support default axis labeling and tick labeling, and default limits' - def __init__(self, majloc=None, minloc=None, -- majfmt=None, minfmt=None, label=None, -+ majfmt=None, minfmt=None, label=None, - default_limits=None): - """ - majloc and minloc: TickLocators for the major and minor ticks --- -1.7.6.2 - diff --git a/disable-wx-in-setup.cfg.patch b/disable-wx-in-setup.cfg.patch deleted file mode 100644 index 46520bf..0000000 --- a/disable-wx-in-setup.cfg.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up matplotlib-1.0.1/setup.cfg.disable-wx-in-setup.cfg matplotlib-1.0.1/setup.cfg ---- matplotlib-1.0.1/setup.cfg.disable-wx-in-setup.cfg 2012-04-18 15:54:40.408040980 -0400 -+++ matplotlib-1.0.1/setup.cfg 2012-04-18 15:54:40.412040931 -0400 -@@ -57,7 +57,7 @@ configobj = False - gtk = True - gtkagg = True - tkagg = True --wxagg = True -+wxagg = False - - [rc_options] - # User-configurable options diff --git a/matplotlib-1.0.1-plot_directive.patch b/matplotlib-1.0.1-plot_directive.patch deleted file mode 100644 index a292292..0000000 --- a/matplotlib-1.0.1-plot_directive.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr matplotlib-1.0.1.orig/lib/matplotlib/sphinxext/plot_directive.py matplotlib-1.0.1/lib/matplotlib/sphinxext/plot_directive.py ---- matplotlib-1.0.1.orig/lib/matplotlib/sphinxext/plot_directive.py 2011-01-23 05:42:08.000000000 +0900 -+++ matplotlib-1.0.1/lib/matplotlib/sphinxext/plot_directive.py 2011-01-23 05:44:48.000000000 +0900 -@@ -346,7 +346,7 @@ - del options['nofigs'] - - formats = setup.config.plot_formats -- if type(formats) == str: -+ if type(formats) == str or type(formats) == unicode: - formats = eval(formats) - - fname = os.path.basename(plot_path) diff --git a/matplotlib-1.0.1-tkinter.patch b/matplotlib-1.0.1-tkinter.patch deleted file mode 100644 index 1b92e72..0000000 --- a/matplotlib-1.0.1-tkinter.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up matplotlib-1.0.1/setupext.py.tkinter matplotlib-1.0.1/setupext.py ---- matplotlib-1.0.1/setupext.py.tkinter 2011-10-31 14:58:44.000000000 +0100 -+++ matplotlib-1.0.1/setupext.py 2011-10-31 14:59:14.000000000 +0100 -@@ -829,7 +829,7 @@ def check_for_tk(): - - if gotit: - print_status("Tkinter", "Tkinter: %s, Tk: %s, Tcl: %s" % -- (Tkinter.__version__.split()[-2], Tkinter.TkVersion, Tkinter.TclVersion)) -+ (Tkinter.__version__, Tkinter.TkVersion, Tkinter.TclVersion)) - else: - print_status("Tkinter", "no") - if explanation is not None: diff --git a/matplotlib-1.0.1-noagg.patch b/python-matplotlib-noagg.patch similarity index 69% rename from matplotlib-1.0.1-noagg.patch rename to python-matplotlib-noagg.patch index 687f8b2..9ca49e8 100644 --- a/matplotlib-1.0.1-noagg.patch +++ b/python-matplotlib-noagg.patch @@ -1,17 +1,7 @@ -diff -up matplotlib-1.0.1/MANIFEST.in.noagg matplotlib-1.0.1/MANIFEST.in ---- matplotlib-1.0.1/MANIFEST.in.noagg 2010-07-06 19:41:55.000000000 -0600 -+++ matplotlib-1.0.1/MANIFEST.in 2011-05-20 15:45:38.337580769 -0600 -@@ -18,6 +18,5 @@ recursive-include examples * - recursive-include doc * - recursive-include src *.cpp *.c *.h *.m - recursive-include CXX *.cxx *.hxx *.c *.h --recursive-include agg24 * - recursive-include lib * - recursive-include ttconv *.cpp *.h -diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py ---- matplotlib-1.0.1/setupext.py.noagg 2010-07-06 19:41:55.000000000 -0600 -+++ matplotlib-1.0.1/setupext.py 2011-05-20 16:11:56.977764688 -0600 -@@ -104,7 +104,6 @@ BUILT_GDK = False +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 @@ -19,7 +9,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py TCL_TK_CACHE = None # for nonstandard installation/build with --prefix variable -@@ -551,7 +550,8 @@ def add_agg_flags(module): +@@ -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) @@ -29,7 +19,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py # put these later for correct link order module.libraries.extend(std_libs) -@@ -1251,17 +1251,7 @@ def build_agg(ext_modules, packages): +@@ -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 @@ -48,11 +38,12 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py deps.extend(glob.glob('CXX/*.cxx')) deps.extend(glob.glob('CXX/*.c')) temp_copy('src/_backend_agg.cpp', 'src/backend_agg.cpp') -@@ -1284,15 +1274,7 @@ def build_path(ext_modules, packages): +@@ -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', @@ -65,7 +56,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py deps.extend(glob.glob('CXX/*.c')) temp_copy('src/_path.cpp', 'src/path.cpp') -@@ -1317,14 +1299,8 @@ def build_image(ext_modules, packages): +@@ -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 diff --git a/python-matplotlib-tk.patch b/python-matplotlib-tk.patch new file mode 100644 index 0000000..1048019 --- /dev/null +++ b/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), ++ "@@lib@@"] + 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/python-matplotlib.spec b/python-matplotlib.spec index f028c06..bc43a83 100644 --- a/python-matplotlib.spec +++ b/python-matplotlib.spec @@ -1,196 +1,190 @@ -%if ! (0%{?rhel} > 5) -%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -%endif - -%{?filter_setup: -%filter_provides_in %{python_sitearch}/.*\.so$ -%filter_setup -} - -# We include capability for building a doc subpackage for -# documentation. However, building the html documentation requires -# python-basemap, and python-basemap requires python-matplotlib to build, so -# we have a circular dependence, and so we need to be able to turn off -# building of the html documents. Note that when building the html docs, -# python-basemap will pull in the existing python-matplotlib from the -# repos. So, it's important to set PYTHONPATH to use the newly built modules -# from this package. -%global withhtmldocs 1 - -# On RHEL 7 onwards, don't build the wx: -%if 0%{?rhel} >= 7 -%global with_wx 0 +%if 0%{?fedora} >= 18 +%global with_python3 1 +%global basepy3dir %(echo ../`basename %{py3dir}`) %else -%global with_wx 1 +%global with_python3 0 %endif +%global __provides_exclude_from .*/site-packages/.*\\.so$ +%global with_html 1 Name: python-matplotlib -Version: 1.0.1 -Release: 21%{?dist} -Summary: Python plotting library - +Version: 1.2.0 +Release: 3%{?dist} +Summary: Python 2D plotting library Group: Development/Libraries License: Python -URL: http://sourceforge.net/projects/matplotlib +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.0.1-without-gpc.tar.gz -#a8ccbf4c4b9b90c773380cac83e792673837d3de matplotlib-1.0.1-without-gpc.tar.gz +#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 -%if %{withhtmldocs} -Source1: http://downloads.sourceforge.net/matplotlib/mpl_sampledata-%{version}.tar.gz -%endif -Source2: setup.cfg -# This patch taken from upstream SVN and will not be needed for releases later than 1.0.1 -Patch0: matplotlib-1.0.1-plot_directive.patch -Patch1: matplotlib-1.0.1-noagg.patch -Patch2: 0001-Bugfix-propagate-timezone-info-in-plot_date-xaxis_da.patch -# fix build when Tkinter doesn't return an expected value in __version__ (FTBFS) -Patch3: matplotlib-1.0.1-tkinter.patch -# Fix building against libpng 1.5 -# https://github.com/matplotlib/matplotlib/issues/234 -# Based on: -# https://github.com/matplotlib/matplotlib/commit/45c46672648e3b4a277bf7ff42b3baf56a98bcec -Patch4: use-png-accessor-functions.patch +Patch0: %{name}-noagg.patch +Patch1: %{name}-tk.patch -# Conditionally applied, when disabling wx support: -Patch5: disable-wx-in-setup.cfg.patch - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: python-devel, freetype-devel, libpng-devel, zlib-devel -BuildRequires: pygtk2-devel, gtk2-devel -BuildRequires: pytz, python-dateutil, numpy BuildRequires: agg-devel +BuildRequires: freetype-devel +BuildRequires: gtk2-devel +BuildRequires: libpng-devel +BuildRequires: numpy +BuildRequires: pycairo-devel BuildRequires: pyparsing -Requires: numpy, pytz, python-dateutil -Requires: pycairo >= 1.2.0 +BuildRequires: python-dateutil +BuildRequires: python2-devel +BuildRequires: pytz +BuildRequires: zlib-devel Requires: dejavu-sans-fonts Requires: dvipng +Requires: numpy +Requires: pycairo Requires: pyparsing +Requires: python-dateutil +Requires: pytz %description -Matplotlib is a pure python plotting library with the goal of making -publication quality plots using a syntax familiar to Matlab users. The -library uses numpy for handling large data sets and supports a variety -of output back-ends. +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 tk Summary: Tk backend for python-matplotlib Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} -BuildRequires: tkinter, tk-devel +BuildRequires: tcl-devel +BuildRequires: tkinter +BuildRequires: tk-devel Requires: tkinter %description tk %{summary} -%if 0%{with_wx} -%package wx -Summary: wxPython backend for python-matplotlib -Group: Development/Libraries -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: wxPython -BuildRequires: wxPython-devel - -%description wx -%{summary} -%endif # if 0%{with_wx} - %package doc Summary: Documentation files for python-matplotlib Group: Documentation Requires: %{name}%{?_isa} = %{version}-%{release} -%if %{withhtmldocs} +%if %{with_html} BuildRequires: python-sphinx BuildRequires: tex(latex) BuildRequires: dvipng -BuildRequires: PyQt4 -BuildRequires: python-basemap -# Some of the docs don't build as python-xlwt is needed. However the review -# request isn't yet complete for this package. See: -# https://bugzilla.redhat.com/show_bug.cgi?id=613766 -# BuildRequires: python-xlwt %endif %description doc %{summary} -%prep -%if %{withhtmldocs} -%setup -q -n matplotlib-%{version} -b1 -%else -%setup -q -n matplotlib-%{version} +%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 + +%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-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 -%patch0 -p1 -%patch2 -p1 -%patch3 -p1 -b .tkinter -%patch4 -p1 + +%prep +%setup -q -n matplotlib-%{version} # Remove bundled libraries -rm -r agg24 lib/matplotlib//pyparsing.py +rm -r agg24 lib/matplotlib/pyparsing_py?.py # Remove references to bundled libraries -%patch1 -p1 -b .noagg -sed -i -e s/matplotlib\.pyparsing/pyparsing/g lib/matplotlib/*.py +%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 chmod -x lib/matplotlib/mpl-data/images/*.svg -cp %{SOURCE2} ./setup.cfg -%if !0%{with_wx} -# Patch the new copy of setup.cfg to remove wx support: -%patch5 -p1 -%endif - -%if %{withhtmldocs} -pushd doc -echo "examples.download : False" >> matplotlibrc -echo "examples.directory : %{_builddir}/mpl_sampledata-%{version}" >> matplotlibrc -popd +%if %{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} %endif %build -%{__python} setup.py build - -%if %{withhtmldocs} +%{__python2} setup.py build +%if %{with_html} +# Need to make built matplotlib libs available for the sphinx extensions: pushd doc -# Set PYTHONPATH in order to use the just built modules -export PYTHONPATH=`find %{_builddir} -name lib.linux*` -# This really does need to be ran twice -%{__python} make.py --small html && %{__python} make.py --small html -rm -f build/html/.buildinfo -chmod -x build/html/pyplots/make.py -sed -i 's/\r//' build/html/_sources/devel/add_new_projection.txt -sed -i 's/\r//' build/html/examples/api/font_family_rc.py + 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 -# 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 '{}' \; - -# Fix line ending in this example file -sed -i 's/\r//' examples/api/font_family_rc.py - %install -rm -rf $RPM_BUILD_ROOT %{__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 -%clean -rm -rf $RPM_BUILD_ROOT +%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 -%defattr(-,root,root,-) -%doc README.txt license/LICENSE license/LICENSE_enthought.txt -%doc license/LICENSE_PAINT license/LICENSE_PIL -%doc CHANGELOG CXX INSTALL INTERACTIVE KNOWN_BUGS -%doc PKG-INFO TODO -%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 +%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 -%endif %{python_sitearch}/matplotlib/ %{python_sitearch}/mpl_toolkits/ %{python_sitearch}/pylab.py* @@ -201,30 +195,86 @@ rm -rf $RPM_BUILD_ROOT %exclude %{python_sitearch}/matplotlib/backends/backend_wxagg.* %files tk -%defattr(-,root,root,-) %{python_sitearch}/matplotlib/backends/backend_tkagg.py* %{python_sitearch}/matplotlib/backends/tkagg.py* %{python_sitearch}/matplotlib/backends/_tkagg.so -%if 0%{with_wx} -%files wx -%defattr(-,root,root,-) -%{python_sitearch}/matplotlib/backends/backend_wx.py* -%{python_sitearch}/matplotlib/backends/backend_wxagg.py* -%endif # if 0%{with_wx} - - %files doc -%defattr(-,root,root,-) %doc examples -%if %{withhtmldocs} -%doc doc/build/html +%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_tkagg.* +%exclude %{python3_sitearch}/matplotlib/backends/tkagg.* +%exclude %{python3_sitearch}/matplotlib/backends/_tkagg.* + +%files -n python3-matplotlib-tk +%{python3_sitearch}/matplotlib/backends/backend_tkagg.py* +%{python3_sitearch}/matplotlib/backends/tkagg.* +%{python3_sitearch}/matplotlib/backends/_tkagg.* %endif %changelog +* 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 @@ -345,7 +395,7 @@ rm -rf $RPM_BUILD_ROOT * Wed Aug 6 2008 Jef Spaleta - 0.98.3-1 - Latest upstream release -* Fri Jul 1 2008 Jef Spaleta - 0.98.1-1 +* Tue Jul 1 2008 Jef Spaleta - 0.98.1-1 - Latest upstream release * Fri Mar 21 2008 Jef Spaleta - 0.91.2-2 @@ -384,7 +434,7 @@ rm -rf $RPM_BUILD_ROOT * Fri Feb 09 2007 Orion Poplawski 0.90.0-1 - Update to 0.90.0 -* Tue Jan 5 2007 Orion Poplawski 0.87.7-4 +* Fri Jan 5 2007 Orion Poplawski 0.87.7-4 - Add examples to %%docs * Mon Dec 11 2006 Jef Spaleta 0.87.7-3 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 76a43fb..0000000 --- a/setup.cfg +++ /dev/null @@ -1,81 +0,0 @@ -# Rename this file to setup.cfg to modify matplotlib's -# build options. - -[egg_info] -tag_svn_revision = 1 - -[status] -# To suppress display of the dependencies and their versions -# at the top of the build log, uncomment the following line: -#suppress = True -# -# Uncomment to insert lots of diagnostic prints in extension code -#verbose = True - -[provide_packages] -# By default, matplotlib checks for a few dependencies and -# installs them if missing. This feature can be turned off -# by uncommenting the following lines. Acceptible values are: -# True: install, overwrite an existing installation -# False: do not install -# auto: install only if the package is unavailable. This -# is the default behavior -# -## Date/timezone support: -#pytz = False -#dateutil = False -# -## Experimental config package support: -enthought.traits = False -configobj = False - -[gui_support] -# Matplotlib supports multiple GUI toolkits, including Cocoa, -# GTK, Fltk, Qt, Qt4, Tk, and WX. Support for many of these -# toolkits requires AGG, the Anti-Grain Geometry library, which -# is provided by matplotlib and built by default. -# -# Some backends are written in pure Python, and others require -# extension code to be compiled. By default, matplotlib checks -# for these GUI toolkits during installation and, if present, -# compiles the required extensions to support the toolkit. GTK -# support requires the GTK runtime environment and PyGTK. Wx -# support requires wxWidgets and wxPython. Tk support requires -# Tk and Tkinter. The other GUI toolkits do not require any -# extension code, and can be used as long as the libraries are -# installed on your system. -# -# You can uncomment any the following lines if you know you do -# not want to use the GUI toolkit. Acceptible values are: -# True: build the extension. Exits with a warning if the -# required dependencies are not available -# False: do not build the extension -# auto: build if the required dependencies are available, -# otherwise skip silently. This is the default -# behavior -# -gtk = True -gtkagg = True -tkagg = True -wxagg = True - -[rc_options] -# User-configurable options -# -# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg, -# GTKCairo, FltkAgg, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg. -# -# The Agg, Ps, Pdf and SVG backends do not require external -# dependencies. Do not choose GTK, GTKAgg, GTKCairo, TkAgg or WXAgg if -# you have disabled the relevent extension modules. Agg will be used -# by default. -# -backend = GTKAgg -# -# The numerix module was historically used to provide -# compatibility between the Numeric, numarray, and NumPy array -# packages. Now that NumPy has emerge as the universal array -# package for python, numerix is not really necessary and is -# maintained to provide backward compatibility. Do not change -# this unless you have a compelling reason to do so. -numerix = numpy diff --git a/use-png-accessor-functions.patch b/use-png-accessor-functions.patch deleted file mode 100644 index 60d5b0c..0000000 --- a/use-png-accessor-functions.patch +++ /dev/null @@ -1,79 +0,0 @@ -diff -up matplotlib-1.0.1/CHANGELOG.png15 matplotlib-1.0.1/CHANGELOG -diff -up matplotlib-1.0.1/doc/users/installing.rst.png15 matplotlib-1.0.1/doc/users/installing.rst ---- matplotlib-1.0.1/doc/users/installing.rst.png15 2010-07-06 21:41:46.000000000 -0400 -+++ matplotlib-1.0.1/doc/users/installing.rst 2011-12-06 16:29:05.824621532 -0500 -@@ -138,7 +138,7 @@ libraries themselves. - array support for python (`download - `__) - --libpng 1.1 (or later) -+libpng 1.2 (or later) - library for loading and saving :term:`PNG` files (`download - `__). libpng requires - zlib. If you are a windows user, you can ignore this since we -diff -up matplotlib-1.0.1/src/_png.cpp.png15 matplotlib-1.0.1/src/_png.cpp ---- matplotlib-1.0.1/src/_png.cpp.png15 2010-10-12 12:14:42.000000000 -0400 -+++ matplotlib-1.0.1/src/_png.cpp 2011-12-06 16:29:05.825621532 -0500 -@@ -350,10 +350,10 @@ _png_module::read_png(const Py::Tuple& a - png_set_sig_bytes(png_ptr, 8); - png_read_info(png_ptr, info_ptr); - -- png_uint_32 width = info_ptr->width; -- png_uint_32 height = info_ptr->height; -+ png_uint_32 width = png_get_image_width(png_ptr, info_ptr); -+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr); - -- int bit_depth = info_ptr->bit_depth; -+ int bit_depth = png_get_bit_depth(png_ptr, info_ptr); - - // Unpack 1, 2, and 4-bit images - if (bit_depth < 8) -@@ -361,7 +361,7 @@ _png_module::read_png(const Py::Tuple& a - - // If sig bits are set, shift data - png_color_8p sig_bit; -- if ((info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) && -+ if ((png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE) && - png_get_sBIT(png_ptr, info_ptr, &sig_bit)) - { - png_set_shift(png_ptr, sig_bit); -@@ -374,13 +374,13 @@ _png_module::read_png(const Py::Tuple& a - } - - // Convert palletes to full RGB -- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) - { - png_set_palette_to_rgb(png_ptr); - } - - // If there's an alpha channel convert gray to RGB -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA) - { - png_set_gray_to_rgb(png_ptr); - } -@@ -408,11 +408,11 @@ _png_module::read_png(const Py::Tuple& a - npy_intp dimensions[3]; - dimensions[0] = height; //numrows - dimensions[1] = width; //numcols -- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) -+ if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA) - { - dimensions[2] = 4; //RGBA images - } -- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) -+ else if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_COLOR) - { - dimensions[2] = 3; //RGB images - } -@@ -421,7 +421,8 @@ _png_module::read_png(const Py::Tuple& a - dimensions[2] = 1; //Greyscale images - } - //For gray, return an x by y array, not an x by y by 1 -- int num_dims = (info_ptr->color_type & PNG_COLOR_MASK_COLOR) ? 3 : 2; -+ int num_dims = (png_get_color_type(png_ptr, info_ptr) -+ & PNG_COLOR_MASK_COLOR) ? 3 : 2; - - double max_value = (1 << ((bit_depth < 8) ? 8 : bit_depth)) - 1; - PyArrayObject *A = (PyArrayObject *) PyArray_SimpleNew(