easyblock = 'Binary'

name = 'ESMValTool'
version = '2.0a1'
versionsuffix = '-Python-%(pyver)s'

homepage = 'https://www.esmvaltool.org/'
description = """The Earth System Model eValuation Tool (ESMValTool)
 is a community diagnostics and performance metrics tool
 for the evaluation of Earth System Models (ESMs) that
 allows for routine comparison of single or multiple models,
 either against predecessor versions or against observations."""

toolchain = {'name': 'foss', 'version': '2018b'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/ESMValGroup/ESMValTool/archive/']
sources = [{'filename': SOURCE_TAR_GZ, 'download_filename': 'v%(version)s.tar.gz'}]

dependencies = [
    ('Python', '2.7.15'),
    ('NCL', '6.5.0-Python-2.7.15'),
    ('R', '3.5.1', versionsuffix),
    ('CDO', '1.9.5'),
    ('GEOS', '3.6.2', versionsuffix),
    ('libjpeg-turbo', '2.0.0'),
    ('libpng', '1.6.34'),
    ('zlib', '1.2.11'),
    ('LibTIFF', '4.0.9'),
    ('freetype', '2.9.1'),
    ('PROJ', '5.0.0'),
    ('netCDF', '4.6.1'),
    ('GDAL', '2.2.3', versionsuffix),
    ('PyGTK', '2.24.0', versionsuffix),
    ('ecCodes', '2.8.2'),
    ('libmo_unpack', '3.1.2'),
    ('numba', '0.43.0', versionsuffix),
]

exts_download_dep_fail = True

exts_defaultclass = 'PythonPackage'
exts_default_options = {
    'source_tmpl': '%(name)s-%(version)s.tar.gz',
}

# exts_filter =
#     ("python -c 'import %(ext_name)s'", '')
#     ("R -q --no-save", "library(%(ext_name)s)"),

exts_classmap = {'ncdf4': 'RPackage'}
exts_list = [
    # Python deps, order is important!
    ('olefile', '0.45.1', {
        'source_tmpl': '%(name)s-%(version)s.zip',
        'source_urls': ['https://pypi.python.org/packages/source/o/olefile/'],
        'checksums': ['2b6575f5290de8ab1086f8c5490591f7e0885af682c7c1793bdaf6e64078d385'],
    }),
    ('Pillow', '4.3.0', {
        'modulename': 'PIL',
        'source_urls': ['https://pypi.python.org/packages/source/p/Pillow/'],
        'checksums': ['a97c715d44efd5b4aa8d739b8fad88b93ed79f1b33fc2822d5802043f3b1b527'],
    }),
    ('pyproj', '1.9.5.1', {
        'source_urls': ['https://pypi.python.org/packages/source/p/pyproj/'],
        'checksums': ['53fa54c8fa8a1dfcd6af4bf09ce1aae5d4d949da63b90570ac5ec849efaf3ea8'],
    }),
    ('pyshp', '2.1.0', {
        'modulename': 'shapefile',
        'source_urls': ['https://pypi.python.org/packages/source/p/pyshp/'],
    }),
    ('chardet', '3.0.4', {
        'source_urls': ['https://pypi.python.org/packages/source/c/chardet/'],
        'checksums': ['84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae'],
    }),
    ('urllib3', '1.24.1', {
        'source_urls': ['https://pypi.python.org/packages/source/u/urllib3/'],
    }),
    ('certifi', '2019.3.9', {
        'source_urls': ['https://pypi.python.org/packages/source/c/certifi/'],
    }),
    ('requests', '2.21.0', {
        'source_urls': ['https://pypi.python.org/packages/source/r/requests/'],
    }),
    ('OWSLib', '0.17.1', {
        'source_urls': ['https://pypi.python.org/packages/source/o/OWSLib/'],
    }),
    ('netCDF4', '1.3.1', {
        'modulename': 'netCDF4',
        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4/'],
        'checksums': ['570ea59992aa6d98a9b672c71161d11ba5683f787da53446086077470a869957'],
    }),
    ('geoval', '0.1.5', {
        'source_urls': ['https://pypi.python.org/packages/source/g/geoval/'],
        'checksums': ['7da4a1879f78bb7aac2d41b5c1ee360ff74087bf857c81c532deb8cc31feb36e'],
    }),
    ('cdo', '1.3.6', {
        'source_urls': ['https://pypi.python.org/packages/source/c/cdo/'],
        'checksums': ['b167efbbac7d0a6cbf74f5d211255705c73245f7c2590b6d9eb634347d8b2c1f'],
    }),
    ('Shapely', '1.6.4.post2', {
        'source_urls': ['https://pypi.python.org/packages/source/s/Shapely/'],
    }),
    ('Cartopy', '0.17.0', {
        'source_urls': ['https://pypi.python.org/packages/source/c/Cartopy/'],
    }),
    ('dask', '1.1.4', {
        'source_urls': ['https://pypi.python.org/packages/source/d/dask/'],
    }),
    ('PyKE', '1.1.1', {
        'source_tmpl': 'pyke-1.1.1.zip',
        'source_urls': ['http://download.sourceforge.net/pyke'],
        'checksums': ['b0b294f435c6e6d2d4a80badf57d92cb66814dfe21e644a521901209e6a3f8ae'],
    }),
    ('cf-units', '2.1.1', {
        'source_urls': ['https://pypi.python.org/packages/source/c/cf_units/'],
    }), 
    ('cftime', '1.0.3.4rel', {
        'modulename': 'cftime',
        'source_tmpl': 'v%(version)s.tar.gz',
        'source_urls': ['https://github.com/Unidata/cftime/archive/'],
    }), 
    ('pyugrid', '0.3.1', {
        'source_urls': ['https://pypi.python.org/packages/source/p/pyugrid/'],
        'checksums': ['eddadc1e88c0e801f780b1e6f636fbfc00e3d14cdab82b43300fde0918310053'],
    }),
    ('mo_pack', '0.2.0', {
        'source_tmpl': 'v%(version)s.tar.gz',
        'source_urls': ['https://github.com/SciTools/mo_pack/archive/'],
        'checksums': ['4aa70e1f846b666670843bc2514435dedf7393203e88abaf74d48f8f2717a726'],
    }),
    ('cycler', '0.10.0', {
        'source_urls': ['https://pypi.python.org/packages/source/c/cycler/'],
        'checksums': ['cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8'],
    }),
    ('singledispatch', '3.4.0.3', {
        'source_urls': ['https://pypi.python.org/packages/source/s/singledispatch/'],
        'checksums': ['5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c'],
    }),
    ('backports_abc', '0.5', {
        'source_urls': ['https://pypi.python.org/packages/source/b/backports_abc/'],
        'checksums': ['033be54514a03e255df75c5aee8f9e672f663f93abb723444caec8fe43437bde'],
    }), 
    ('tornado', '5.1.1', {
        'source_urls': ['https://pypi.python.org/packages/source/t/tornado/'],
    }),
    ('matplotlib', '2.2.4', {
        'source_urls': ['https://pypi.python.org/packages/source/m/matplotlib/'],
    }),
    ('toolz', '0.9.0', {
        'source_urls': ['https://pypi.python.org/packages/source/t/toolz/'],
        'checksums': ['929f0a7ea7f61c178bd951bdae93920515d3fbdbafc8e6caf82d752b9b3b31c9'],
    }),
    ('basemap', '1.1.0', {
        'modulename': 'mpl_toolkits.basemap',
        'source_tmpl': 'v%(version)s.tar.gz',
        'source_urls': ['https://github.com/matplotlib/basemap/archive'],
        'checksums': ['6acdc3a08bfcebf0a1b52a05d73d51b7aa5e7240fedfa95537c92d16f2ef8778'],
    }),
    ('scitools-iris', '2.2.0', {
        'modulename': 'iris',
        'source_tmpl': 'v%(version)s.tar.gz',
        'source_urls': ['https://github.com/SciTools/iris/archive/'],
        'checksums': ['e4b52e43da16b72af9ccbcb4d53bc401'],
    }),
    ('iris-grib', '0.14.0', {
        'modulename': 'iris_grib',
        'source_tmpl': 'v%(version)s.tar.gz',
        'source_urls': ['https://github.com/SciTools/iris-grib/archive/'],
        'checksums': ['b6a4ae0dbfcfb8aa08c6106d8db98c51'],
    }),
    ('patsy', '0.5.0', {
        'source_urls': ['https://pypi.python.org/packages/source/p/patsy/'],
        'checksums': ['e05f38d5c38c8d216f0cc2b765b1069b433c92d628b954fb2fee68d13e42883b'],
    }),
    ('statsmodels', '0.9.0', {
        'source_urls': ['https://pypi.python.org/packages/source/s/statsmodels/'],
        'checksums': ['6461f93a842c649922c2c9a9bc9d9c4834110b89de8c4af196a791ab8f42ba3b'],
    }),
    ('nc-time-axis', '1.1.0', {
        'modulename': 'nc_time_axis',
        'source_urls': ['https://pypi.python.org/packages/source/n/nc-time-axis/'],
        'checksums': ['ea9d4f7f9e9189c96f7d320235ac6c4be7f63dc5aa256b3ee5d5cca5845e6e26'],
    }),
    ('yamale', '1.10.0', {
        'modulename': 'yamale',
        'source_urls': ['https://pypi.python.org/packages/source/y/yamale/'],
    }),
    ('stratify', '0.2', {
        'modulename': 'stratify',
        'source_tmpl': 'master.zip',
        'source_urls': ['https://github.com/SciTools-incubator/python-stratify/archive/'],
    }),
    ('psutil', '5.6.1', {
        'modulename': 'psutil',
        'source_urls': ['https://pypi.python.org/packages/source/p/psutil/'],
        'checksums': ['fa0a570e0a30b9dd618bffbece590ae15726b47f9f1eaf7518dfb35f4d7dcd21'],
    }),
    # R extension
    ('ncdf4', '1.16', {
        'source_tmpl': '%(name)s_%(version)s.tar.gz',
        'source_urls': [
            'http://cran.r-project.org/src/contrib/Archive/ncdf4',
            'http://cran.r-project.org/src/contrib/',
            'http://cran.freestatistics.org/src/contrib',
        ],
        'checksums': ['edd5731a805bbece3a8f6132c87c356deafc272351e1dd07256ca00574949253'],
    }),
]

skipsteps = ['sanitycheck']

postinstallcmds = [
    "cd %(installdir)s && " +
    "tar xzf ESMValTool-%(version)s.tar.gz && " +
    "cd ESMValTool-%(version)s && " +
    'PYTHONPATH="%(installdir)s/lib/python%(pyshortver)s/site-packages":"${PYTHONPATH}" && python setup.py install --prefix=%(installdir)s && ' +
    "cd esmvaltool  && " +
    "cp -r cmor diag_scripts interface_scripts preprocessor recipes utils %(installdir)s/lib/python%(pyshortver)s/site-packages/ESMValTool-%(version)s-py2.7.egg/esmvaltool && " +
    "cp config-developer.yml config-logging.yml config-references.yml config-user.yml %(installdir)s/lib/python%(pyshortver)s/site-packages/ESMValTool-%(version)s-py2.7.egg/esmvaltool && " +
    "cd %(installdir)s && " +
    "rm -rf ESMValTool-%(version)s ESMValTool-%(version)s.tar.gz"
]

modextrapaths = {
    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
    'R_LIBS': '',
}

moduleclass = 'geo'
