summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2021-11-29 10:19:01 -0600
committerGitHub <noreply@github.com>2021-11-29 17:19:01 +0100
commitfcd5f960f8efc9b63697936c250b5654efa742dc (patch)
tree71ff7199cd50647138bf006fa7098f697670fae0
parent54d88f1a1c6afcd6badf146472e79bf8252344c4 (diff)
downloadspack-fcd5f960f8efc9b63697936c250b5654efa742dc.tar.gz
spack-fcd5f960f8efc9b63697936c250b5654efa742dc.tar.bz2
spack-fcd5f960f8efc9b63697936c250b5654efa742dc.tar.xz
spack-fcd5f960f8efc9b63697936c250b5654efa742dc.zip
py-matplotlib: add v3.5.0 (#27486)
* py-matplotlib: add v3.5.0 * Remove deprecated versions, update setup.cfg filename * Add additional dependencies, save config file * Add patch to fix matplotlibrc
-rw-r--r--var/spack/repos/builtin/packages/py-fonttools/package.py22
-rw-r--r--var/spack/repos/builtin/packages/py-matplotlib/matplotlibrc.patch11
-rw-r--r--var/spack/repos/builtin/packages/py-matplotlib/package.py48
3 files changed, 64 insertions, 17 deletions
diff --git a/var/spack/repos/builtin/packages/py-fonttools/package.py b/var/spack/repos/builtin/packages/py-fonttools/package.py
new file mode 100644
index 0000000000..5937181a9e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-fonttools/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack import *
+
+
+class PyFonttools(PythonPackage):
+ """fontTools is a library for manipulating fonts, written in Python.
+
+ The project includes the TTX tool, that can convert TrueType and OpenType fonts to
+ and from an XML text format, which is also called TTX. It supports TrueType,
+ OpenType, AFM and to an extent Type 1 and some Mac-specific formats."""
+
+ homepage = "https://github.com/fonttools/fonttools"
+ pypi = "fonttools/fonttools-4.28.1.zip"
+
+ version('4.28.1', sha256='8c8f84131bf04f3b1dcf99b9763cec35c347164ab6ad006e18d2f99fcab05529')
+
+ depends_on('python@3.7:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/matplotlibrc.patch b/var/spack/repos/builtin/packages/py-matplotlib/matplotlibrc.patch
new file mode 100644
index 0000000000..bbc6b294da
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-matplotlib/matplotlibrc.patch
@@ -0,0 +1,11 @@
+--- a/setup.py 2021-09-23 23:57:06.000000000 -0500
++++ b/setup.py 2021-11-18 14:29:50.000000000 -0600
+@@ -212,7 +212,7 @@
+ idx for idx, line in enumerate(template_lines)
+ if "#backend:" in line]
+ template_lines[backend_line_idx] = (
+- "#backend: {}".format(setupext.options["backend"])
++ "#backend: {}\n".format(setupext.options["backend"])
+ if setupext.options["backend"]
+ else "##backend: Agg")
+ path.write_text("".join(template_lines))
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py
index c47af8ba14..d7b8a15dd6 100644
--- a/var/spack/repos/builtin/packages/py-matplotlib/package.py
+++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py
@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import os
import sys
@@ -24,6 +25,7 @@ class PyMatplotlib(PythonPackage):
'matplotlib.testing.jpl_units', 'pylab'
]
+ version('3.5.0', sha256='38892a254420d95594285077276162a5e9e9c30b6da08bdc2a4d53331ad9a6fa')
version('3.4.3', sha256='fc4f526dfdb31c9bd6b8ca06bf9fab663ca12f3ec9cdf4496fb44bc680140318')
version('3.4.2', sha256='d8d994cefdff9aaba45166eb3de4f5211adb4accac85cbf97137e98f26ea0219')
version('3.4.1', sha256='84d4c4f650f356678a5d658a43ca21a41fca13f9b8b00169c0b76e6a6a948908')
@@ -48,10 +50,6 @@ class PyMatplotlib(PythonPackage):
version('2.2.2', sha256='4dc7ef528aad21f22be85e95725234c5178c0f938e2228ca76640e5e84d8cde8')
version('2.0.2', sha256='0ffbc44faa34a8b1704bc108c451ecf87988f900ef7ce757b8e2e84383121ff1')
version('2.0.0', sha256='36cf0985829c1ab2b8b1dae5e2272e53ae681bf33ab8bedceed4f0565af5f813')
- version('1.5.3', sha256='a0a5dc39f785014f2088fed2c6d2d129f0444f71afbb9c44f7bdf1b14d86ebbc', deprecated=True)
- version('1.5.1', sha256='3ab8d968eac602145642d0db63dd8d67c85e9a5444ce0e2ecb2a8fedc7224d40', deprecated=True)
- version('1.4.3', sha256='61f201c6a82e89e4d9e324266203fad44f95fd8f36d8eec0d8690273e1182f75', deprecated=True)
- version('1.4.2', sha256='17a3c7154f152d8dfed1f37517c0a8c5db6ade4f6334f684989c36dab84ddb54', deprecated=True)
# https://matplotlib.org/tutorials/introductory/usage.html#backends
# From `lib/matplotlib/rcsetup.py`:
@@ -84,7 +82,7 @@ class PyMatplotlib(PythonPackage):
variant('fonts', default=False,
description='Enable support for system font detection')
- # https://matplotlib.org/users/installing.html#dependencies
+ # https://matplotlib.org/stable/devel/dependencies.html
# Required dependencies
extends('python', ignore=r'bin/nosetests.*$|bin/pbr$')
depends_on('python@2.7:2.8,3.4:', when='@:2', type=('build', 'link', 'run'))
@@ -99,12 +97,17 @@ class PyMatplotlib(PythonPackage):
depends_on('libpng@1.2:')
depends_on('py-setuptools', type=('build', 'run')) # See #3813
depends_on('py-certifi@2020.6.20:', when='@3.3.1:', type='build')
+ depends_on('py-setuptools-scm@4:', when='@3.5:', type='build')
+ depends_on('py-setuptools-scm-git-archive', when='@3.5:', type='build')
+ depends_on('py-cycler@0.10:', type=('build', 'run'))
+ depends_on('py-fonttools@4.22:', when='@3.5:', type=('build', 'run'))
+ depends_on('py-kiwisolver@1.0.1:', type=('build', 'run'), when='@2.2.0:')
depends_on('py-numpy@1.11:', type=('build', 'run'))
depends_on('py-numpy@1.15:', when='@3.3:', type=('build', 'run'))
depends_on('py-numpy@1.16:', when='@3.4:', type=('build', 'run'))
- depends_on('py-cycler@0.10:', type=('build', 'run'))
- depends_on('py-kiwisolver@1.0.1:', type=('build', 'run'), when='@2.2.0:')
- depends_on('pil@6.2.0:', when='@3.3:', type=('build', 'run'))
+ depends_on('py-numpy@1.17:', when='@3.5:', type=('build', 'run'))
+ depends_on('py-packaging', when='@3.5:', type=('build', 'run'))
+ depends_on('pil@6.2:', when='@3.3:', type=('build', 'run'))
depends_on('py-pyparsing@2.0.3,2.0.5:2.1.1,2.1.3:2.1.5,2.1.7:', type=('build', 'run'))
depends_on('py-pyparsing@2.2.1:', when='@3.4:', type=('build', 'run'))
depends_on('py-python-dateutil@2.1:', type=('build', 'run'))
@@ -149,7 +152,7 @@ class PyMatplotlib(PythonPackage):
depends_on('pkgconfig', type='build')
# Testing dependencies
- # https://matplotlib.org/devel/testing.html#requirements
+ # https://matplotlib.org/stable/devel/development_setup.html#additional-dependencies-for-testing
depends_on('py-pytest@3.6:', type='test')
depends_on('ghostscript@9.0:', type='test')
# depends_on('inkscape@:0', type='test')
@@ -160,9 +163,20 @@ class PyMatplotlib(PythonPackage):
conflicts('~image', when='@3.3:', msg='Pillow is no longer an optional dependency')
+ # https://github.com/matplotlib/matplotlib/pull/21662
+ patch('matplotlibrc.patch', when='@3.5.0')
# Patch to pick up correct freetype headers
patch('freetype-include-path.patch', when='@2.2.2:2.9.9')
+ @property
+ def config_file(self):
+ # https://github.com/matplotlib/matplotlib/pull/20871
+ return 'mplsetup.cfg' if self.spec.satisfies('@3.5:') else 'setup.cfg'
+
+ @property
+ def archive_files(self):
+ return [os.path.join(self.build_directory, self.config_file)]
+
def setup_build_environment(self, env):
include = []
library = []
@@ -183,19 +197,19 @@ class PyMatplotlib(PythonPackage):
backend = self.spec.variants['backend'].value
- with open('setup.cfg', 'w') as setup:
+ with open(self.config_file, 'w') as config:
# Default backend
- setup.write('[rc_options]\n')
- setup.write('backend = ' + backend + '\n')
+ config.write('[rc_options]\n')
+ config.write('backend = ' + backend + '\n')
# Starting with version 3.3.0, freetype is downloaded by default
# Force matplotlib to use Spack installations of freetype and qhull
- if self.version >= Version('3.3.0'):
- setup.write('[libs]\n')
- setup.write('system_freetype = True\n')
- setup.write('system_qhull = True\n')
+ if self.spec.satisfies('@3.3:'):
+ config.write('[libs]\n')
+ config.write('system_freetype = True\n')
+ config.write('system_qhull = True\n')
if self.spec.satisfies('%clang'):
- setup.write('enable_lto = False\n')
+ config.write('enable_lto = False\n')
@run_after('build')
@on_package_attributes(run_tests=True)