From af3e91926adb3e259526c90307bb0f5d2e91ff7f Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 5 Apr 2019 11:27:23 -0700 Subject: fixes py-basemap package (#11104) * fixes py-basemap package * remove basemap mpl_toolkit __init__.py --- .../repos/builtin/packages/py-basemap/package.py | 28 ++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index 44c68f9086..834a8b8bd4 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import os class PyBasemap(PythonPackage): @@ -11,8 +12,8 @@ class PyBasemap(PythonPackage): 2D data on maps in Python.""" homepage = "http://matplotlib.org/basemap/" - url = "https://downloads.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz" - version('1.2.0', 'f8e64bd150590223701a48d60408e939', url='https://github.com/matplotlib/basemap/archive/v1.2.0rel.tar.gz') + + version('1.2.0', 'f8e64bd150590223701a48d60408e939') version('1.0.7', '48c0557ced9e2c6e440b28b3caff2de8') # Per Github issue #3813, setuptools is required at runtime in order @@ -21,8 +22,31 @@ class PyBasemap(PythonPackage): depends_on('py-setuptools', type=('run')) depends_on('py-numpy', type=('build', 'run')) depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-pyproj', type=('build', 'run')) + depends_on('py-pyshp', type=('build', 'run')) depends_on('pil', type=('build', 'run')) depends_on('geos') + def url_for_version(self, version): + if version >= Version('1.2.0'): + return 'https://github.com/matplotlib/basemap/archive/v{0}rel.tar.gz'.format(version) + else: + return 'https://downloads.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-{0}/basemap-{0}.tar.gz'.format(version) + def setup_environment(self, spack_env, run_env): spack_env.set('GEOS_DIR', self.spec['geos'].prefix) + + def install(self, spec, prefix): + """Install everything from build directory.""" + args = self.install_args(spec, prefix) + + self.setup_py('install', *args) + + # namespace packages should not create an __init__.py file. This has + # been reported to the basemap project in + # https://github.com/matplotlib/basemap/issues/456 + for root, dirs, files in os.walk(spec.prefix.lib): + for filename in files: + if (filename == '__init__.py' and + os.path.basename(root) == 'mpl_toolkits'): + os.remove(os.path.join(root, filename)) -- cgit v1.2.3-60-g2f50