
- [x] add `concretize.lp`, `spack.yaml`, etc. to licensed files - [x] update all licensed files to say 2013-2021 using `spack license update-copyright-year` - [x] appease mypy with some additions to package.py that needed for oneapi.py
99 lines
4.1 KiB
Python
99 lines
4.1 KiB
Python
# 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 PyCartopy(PythonPackage):
|
|
"""Cartopy - a cartographic python library with matplotlib support."""
|
|
|
|
homepage = "https://scitools.org.uk/cartopy/docs/latest/"
|
|
url = "https://github.com/SciTools/cartopy/archive/v0.18.0.tar.gz"
|
|
|
|
maintainers = ['adamjstewart']
|
|
|
|
# Skip test files in cartopy.tests
|
|
import_modules = [
|
|
'cartopy', 'cartopy.sphinxext', 'cartopy.io', 'cartopy.geodesic',
|
|
'cartopy.examples', 'cartopy.mpl', 'cartopy.feature'
|
|
]
|
|
|
|
version('0.18.0', sha256='493ced4698361ffabec1a213d2b711dc836117242c304f3b93f5406182fd8bc2')
|
|
version('0.17.0', sha256='137642e63952404ec0841fa0333ad14c58fbbf19cca2a5ac6a38498c4b4998fb')
|
|
version('0.16.0', sha256='cadf62434492c965220b37f0548bc58180466ad6894a1db57dbc51cd43467e5c')
|
|
|
|
variant('epsg', default=False, description='Add support for epsg.io')
|
|
variant('ows', default=False, description='Add support for Open Geospatial Consortium (OGC) web service')
|
|
variant('plotting', default=False, description='Add plotting functionality')
|
|
|
|
# https://scitools.org.uk/cartopy/docs/latest/installing.html#installing
|
|
depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
|
|
depends_on('py-setuptools@0.7.2:', type='build')
|
|
depends_on('py-cython@0.28:', type='build')
|
|
depends_on('py-numpy@1.10.0:', type=('build', 'run'))
|
|
depends_on('py-shapely@1.5.6:', type=('build', 'run'))
|
|
depends_on('py-pyshp@1.1.4:', type=('build', 'run'))
|
|
depends_on('py-six@1.3.0:', type=('build', 'run'))
|
|
depends_on('py-futures', when='^python@:2', type=('build', 'run'))
|
|
depends_on('geos@3.3.3:')
|
|
depends_on('proj@4.9.0:5', when='@:0.16.0')
|
|
depends_on('proj@4.9:', when='@0.17.0:')
|
|
|
|
# Optional dependecies
|
|
depends_on('py-pyepsg@0.4.0:', type=('build', 'run'), when='+epsg')
|
|
depends_on('py-owslib@0.8.11:', type=('build', 'run'), when='+ows')
|
|
depends_on('pil@1.7.8:', type=('build', 'run'), when='+ows')
|
|
depends_on('py-matplotlib@1.5.1:', type=('build', 'run'), when='+plotting')
|
|
depends_on('gdal@1.10.0:+python', type=('build', 'run'), when='+plotting')
|
|
depends_on('pil@1.7.8:', type=('build', 'run'), when='+plotting')
|
|
depends_on('py-scipy@0.10:', type=('build', 'run'), when='+plotting')
|
|
|
|
patch('proj6.patch', when='@0.17.0')
|
|
|
|
phases = ['build_ext', 'install']
|
|
|
|
def setup_build_environment(self, env):
|
|
# Needed for `spack install --test=root py-cartopy`
|
|
library_dirs = []
|
|
for dep in self.spec.dependencies(deptype='link'):
|
|
query = self.spec[dep.name]
|
|
library_dirs.extend(query.libs.directories)
|
|
|
|
# Cartopy uses ctypes.util.find_library, which searches LD_LIBRARY_PATH
|
|
# Our RPATH logic works fine, but the unit tests fail without this
|
|
libs = ':'.join(library_dirs)
|
|
if self.spec.satisfies('platform=darwin'):
|
|
env.prepend_path('DYLD_FALLBACK_LIBRARY_PATH', libs)
|
|
else:
|
|
env.prepend_path('LD_LIBRARY_PATH', libs)
|
|
|
|
# Needed for `spack test run py-cartopy`
|
|
setup_run_environment = setup_build_environment
|
|
|
|
# Needed for `spack test run py-foo` where `py-foo` depends on `py-cartopy`
|
|
def setup_dependent_run_environment(self, env, dependent_spec):
|
|
self.setup_build_environment(env)
|
|
|
|
def build_ext_args(self, spec, prefix):
|
|
args = [
|
|
spec['geos'].headers.include_flags,
|
|
spec['geos'].libs.search_flags,
|
|
spec['proj'].headers.include_flags,
|
|
spec['proj'].libs.search_flags,
|
|
]
|
|
|
|
if '+plotting' in spec:
|
|
args.extend([
|
|
spec['gdal'].headers.include_flags,
|
|
spec['gdal'].libs.search_flags,
|
|
])
|
|
|
|
return args
|
|
|
|
# Tests need to be re-added since `phases` was overridden
|
|
run_after('install')(
|
|
PythonPackage._run_default_install_time_test_callbacks)
|
|
run_after('install')(PythonPackage.sanity_check_prefix)
|