Forráskód Böngészése

Adding foss-2019a

Pierre-Yves Barriat 5 éve
szülő
commit
3019cdad24
32 módosított fájl, 2129 hozzáadás és 0 törlés
  1. 32 0
      foss-2019a/ANTLR-2.7.7-GCCcore-8.2.0.eb
  2. 32 0
      foss-2019a/CDO-1.9.7.1-gompi-2019a.eb
  3. 103 0
      foss-2019a/Cartopy-0.17.0-foss-2019a-Python-3.7.2.eb
  4. 287 0
      foss-2019a/Cartopy-0.17.0_fix_setup.patch
  5. 76 0
      foss-2019a/ELIC_Python-1-foss-2019a-Python-3.7.2.eb
  6. 596 0
      foss-2019a/ELIC_R-1-foss-2019a-Python-3.7.2.eb
  7. 34 0
      foss-2019a/ESMF-7.1.0r-foss-2019a.eb
  8. 12 0
      foss-2019a/ESMF-7.1.0r_fix-ESMC_Conf.patch
  9. 50 0
      foss-2019a/GDAL-2.4.1-foss-2019a-Python-3.7.2.eb
  10. 42 0
      foss-2019a/NCL-6.6.2-foss-2019a.eb
  11. 35 0
      foss-2019a/NCO-4.8.0-foss-2019a.eb
  12. 36 0
      foss-2019a/OpenPGM-5.2.122-GCCcore-8.2.0.eb
  13. 37 0
      foss-2019a/PROJ-5.2.0-GCCcore-8.2.0.eb
  14. 28 0
      foss-2019a/PyZMQ-18.0.1-foss-2019a-Python-3.7.2-zmq4.eb
  15. 22 0
      foss-2019a/YAXT-0.6.1-gompi-2019a.eb
  16. 34 0
      foss-2019a/ZeroMQ-4.3.1-foss-2019a.eb
  17. 26 0
      foss-2019a/configurable-http-proxy-3.1.1-foss-2019a-nodejs-8.9.4.eb
  18. 34 0
      foss-2019a/ecCodes-2.12.5-foss-2019a.eb
  19. 25 0
      foss-2019a/g2clib-1.6.0-foss-2019a.eb
  20. 31 0
      foss-2019a/g2lib-3.1.0-foss-2019a.eb
  21. 210 0
      foss-2019a/jupyter-1.0.0-foss-2019a-Python-3.7.2.eb
  22. 34 0
      foss-2019a/libdap-3.20.3-GCCcore-8.2.0.eb
  23. 33 0
      foss-2019a/libgeotiff-1.4.3-GCCcore-8.2.0.eb
  24. 22 0
      foss-2019a/libiconv-1.16-GCCcore-8.2.0.eb
  25. 23 0
      foss-2019a/libmo_unpack-3.1.2-foss-2019a.eb
  26. 28 0
      foss-2019a/libsodium-1.0.18-GCCcore-8.2.0.eb
  27. 26 0
      foss-2019a/makedepend-1.0.6-GCCcore-8.2.0.eb
  28. 53 0
      foss-2019a/matplotlib-3.1.0-foss-2019a-Python-3.7.2.eb
  29. 46 0
      foss-2019a/ncview-2.1.7-gompi-2019a.eb
  30. 24 0
      foss-2019a/netCDF-C++4-4.3.0-foss-2019a.eb
  31. 28 0
      foss-2019a/nodejs-8.9.4-foss-2019a.eb
  32. 30 0
      foss-2019a/xproto-7.0.31-GCCcore-8.2.0.eb

+ 32 - 0
foss-2019a/ANTLR-2.7.7-GCCcore-8.2.0.eb

@@ -0,0 +1,32 @@
+easyblock = 'ConfigureMake'
+
+name = 'ANTLR'
+version = '2.7.7'
+
+homepage = 'http://www.antlr2.org/'
+description = """ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
+ is a language tool that provides a framework for constructing recognizers,
+ compilers, and translators from grammatical descriptions containing
+ Java, C#, C++, or Python actions."""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = ['http://www.antlr2.org/download/']
+sources = [SOURCELOWER_TAR_GZ]
+patches = ['%(name)s-%(version)s_includes.patch']
+checksums = [
+    '853aeb021aef7586bda29e74a6b03006bcb565a755c86b66032d8ec31b67dbb9',  # antlr-2.7.7.tar.gz
+    'd167d3248a03301bc93efcb37d5df959aae6794968e42231af0b0dd26d6a2e66',  # ANTLR-2.7.7_includes.patch
+]
+
+builddependencies = [('binutils', '2.31.1')]
+dependencies = [('Java', '11.0.2', '', True)]
+
+configopts = '--disable-examples --disable-csharp --disable-python'
+
+sanity_check_paths = {
+    'files': ['bin/antlr', 'bin/antlr-config'],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'

+ 32 - 0
foss-2019a/CDO-1.9.7.1-gompi-2019a.eb

@@ -0,0 +1,32 @@
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '1.9.7.1'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'gompi', 'version': '2019a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/20124']
+sources = [SOURCELOWER_TAR_GZ]
+
+dependencies = [
+    ('HDF5', '1.10.5'),
+    ('netCDF', '4.6.2'),
+    ('YAXT', '0.6.1'),
+    ('ecCodes', '2.12.5'),
+]
+
+configopts = "--with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF --with-eccodes=$EBROOTECCODES"
+
+# fix for linking issues with HDF5 libraries for libcdi, should link with both -lnetcdf and -lhdf5_hl -lhdf5
+prebuildopts = "find libcdi -name Makefile | xargs sed -i 's/-lnetcdf -lnetcdf/-lnetcdf -lhdf5_hl -lhdf5/g' && "
+
+sanity_check_paths = {
+    'files': ['bin/cdo'],
+    'dirs': [],
+}
+
+moduleclass = 'data'

+ 103 - 0
foss-2019a/Cartopy-0.17.0-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,103 @@
+easyblock = 'PythonBundle'
+
+name = 'Cartopy'
+version = '0.17.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://scitools.org.uk/cartopy/docs/latest/'
+description = """Cartopy is a Python package designed for geospatial data processing in order to produce maps 
+    and other geospatial data analyses.
+    Cartopy makes use of the powerful PROJ.4, NumPy and Shapely libraries and includes a programmatic interface 
+    built on top of Matplotlib for the creation of publication quality maps."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('SciPy-bundle', '2019.03'),
+    ('libpng', '1.6.36'),
+    ('freetype', '2.9.1'),
+    ('Tkinter', '%(pyver)s'),
+    ('GEOS', '3.7.2', versionsuffix),
+    ('GDAL', '2.4.1', versionsuffix),
+    ('UDUNITS', '2.2.26'),
+]
+
+use_pip = True
+
+exts_list = [
+    ('Cycler', '0.10.0', {
+        'modulename': 'cycler',
+        'source_tmpl': 'cycler-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/C/Cycler'],
+        'checksums': ['cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8'],
+    }),
+    ('kiwisolver', '1.1.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/k/kiwisolver'],
+        'checksums': ['53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75'],
+    }),
+    ('matplotlib', '2.2.4', {
+        'prebuildopts': "export CPLUS_INCLUDE_PATH=$EBROOTFREETYPE/include/freetype2:${CPLUS_INCLUDE_PATH} && ",
+        'preinstallopts': "export CPLUS_INCLUDE_PATH=$EBROOTFREETYPE/include/freetype2:${CPLUS_INCLUDE_PATH} && ",
+        'source_urls': ['https://pypi.python.org/packages/source/m/matplotlib/'],
+    }),
+    ('Shapely', '1.6.4', {
+        'modulename': 'shapely',
+        'source_urls': ['https://pypi.python.org/packages/source/s/Shapely/'],
+    }),
+    ('dask', '2.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/d/dask/'],
+    }),
+    ('toolz', '0.9.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/toolz/'],
+        'checksums': ['929f0a7ea7f61c178bd951bdae93920515d3fbdbafc8e6caf82d752b9b3b31c9'],
+    }),
+    ('cftime', '1.0.3.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cftime/'],
+    }),
+    ('antlr4-python3-runtime', '4.7.2', {
+        'modulename': 'antlr4',
+        'source_urls': ['https://files.pythonhosted.org/packages/source/a/antlr4-python3-runtime/'],
+    }),
+    ('cf-units', '2.1.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cf_units/'],
+    }),
+    ('PyKE', '1.1.1', {
+        'modulename': 'pyke',
+        'source_tmpl': 'pyke3-%(version)s.zip',
+        'source_urls': ['https://sourceforge.net/projects/%(name)s/files/%(name)s/%(version)s'],
+    }),
+    ('pyshp', '2.1.0', {
+        'modulename': 'shapefile',
+        'source_urls': ['https://pypi.python.org/packages/source/p/pyshp/'],
+    }),
+    (name, version, {
+        'prebuildopts': "export D_GLIBCXX_USE_CXX11_ABI=0 && ",
+        'preinstallopts': "export D_GLIBCXX_USE_CXX11_ABI=0 && ",
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/SciTools/cartopy/archive/'],
+        #'patches': ['Cartopy-0.17.0_fix_setup.patch'],
+    }),
+    ('netCDF4', '1.5.1.2', {
+        'modulename': 'netCDF4',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4/'],
+    }),
+    ('scitools_iris', '2.2.1', {
+        'modulename': 'iris',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/SciTools/iris/archive/'],
+    }),
+]
+
+sanity_check_commands = ["""python -c 'import matplotlib; matplotlib.use("TkAgg"); import matplotlib.pyplot' """]
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+# see https://matplotlib.org/tutorials/introductory/usage.html#what-is-a-backend
+modextravars = {'MPLBACKEND': 'TkAgg'}
+  
+moduleclass = 'vis'

+ 287 - 0
foss-2019a/Cartopy-0.17.0_fix_setup.patch

@@ -0,0 +1,287 @@
+Patched setup.py file, replacing the original file.
+June 25th 2019 by PY Barriat (ELIC - UCL)
+--- Cartopy/cartopy-0.17.0/setup.py.orig	2018-11-17 08:25:32.000000000 +0100
++++ Cartopy/cartopy-0.17.0/setup.py		2019-06-25 14:28:37.989843991 +0200
+@@ -1,4 +1,4 @@
+-# (C) British Crown Copyright 2011 - 2018, Met Office
++# (C) British Crown Copyright 2011 - 2019, Met Office
+ #
+ # This file is part of cartopy.
+ #
+@@ -16,30 +16,41 @@
+ # along with cartopy.  If not, see <https://www.gnu.org/licenses/>.
+ from __future__ import print_function
+ 
+-"""
+-Distribution definition for Cartopy.
+-
+-"""
+-
+-import setuptools
+-from setuptools import setup, Extension
+-from setuptools import Command
+-from setuptools import convert_path
+-from distutils.spawn import find_executable
+-from distutils.sysconfig import get_config_var
+ import fnmatch
+ import os
+ import subprocess
+ import sys
+ import warnings
++from collections import defaultdict
++from distutils.spawn import find_executable
++from distutils.sysconfig import get_config_var
++
++from setuptools import Command, Extension, convert_path, setup
+ 
+ import versioneer
+ 
++"""
++Distribution definition for Cartopy.
++
++"""
++
++
++
++
++# The existence of a PKG-INFO directory is enough to tell us whether this is a
++# source installation or not (sdist).
++HERE = os.path.dirname(__file__)
++IS_SDIST = os.path.exists(os.path.join(HERE, 'PKG-INFO'))
++
++if not IS_SDIST:
++    import Cython
++    if Cython.__version__ < '0.28':
++        raise ImportError(
++            "Cython 0.28+ is required to install cartopy from source.")
++
++    from Cython.Distutils import build_ext as cy_build_ext
++
+ 
+-try:
+-    from Cython.Distutils import build_ext
+-except ImportError:
+-    raise ImportError('Cython 0.15.1+ is required to install cartopy.')
+ try:
+     import numpy as np
+ except ImportError:
+@@ -52,8 +63,6 @@
+ GEOS_MIN_VERSION = (3, 3, 3)
+ PROJ_MIN_VERSION = (4, 9, 0)
+ 
+-HERE = os.path.dirname(__file__)
+-
+ 
+ def file_walk_relative(top, remove=''):
+     """
+@@ -172,10 +181,7 @@
+ 
+     geos_includes = []
+     geos_library_dirs = []
+-    if sys.platform.startswith('win'):
+-        geos_libraries = ['geos']
+-    else:
+-        geos_libraries = ['geos_c']
++    geos_libraries = ['geos_c']
+ else:
+     if geos_version < GEOS_MIN_VERSION:
+         print('GEOS version %s is installed, but cartopy requires at least '
+@@ -230,6 +236,18 @@
+     return proj_version
+ 
+ 
++def get_proj_libraries():
++    """
++    This function gets the PROJ libraries to cythonize with
++    """
++    proj_libraries = ["proj"]
++    if os.name == "nt" and proj_version >= (6, 0, 0):
++        proj_libraries = [
++            "proj_{}_{}".format(proj_version[0], proj_version[1])
++        ]
++    return proj_libraries
++
++
+ conda = os.getenv('CONDA_DEFAULT_ENV')
+ if conda is not None and conda in sys.prefix:
+     # Conda does not provide pkg-config compatibility, but the search paths
+@@ -245,7 +263,7 @@
+         exit(1)
+ 
+     proj_includes = []
+-    proj_libraries = ['proj']
++    proj_libraries = get_proj_libraries()
+     proj_library_dirs = []
+ 
+ else:
+@@ -268,7 +286,7 @@
+             exit(1)
+ 
+         proj_includes = []
+-        proj_libraries = ['proj']
++        proj_libraries = get_proj_libraries()
+         proj_library_dirs = []
+     else:
+         if proj_version < PROJ_MIN_VERSION:
+@@ -283,8 +301,9 @@
+             proj_includes = proj_includes.decode()
+             proj_clibs = proj_clibs.decode()
+ 
+-        proj_includes = [proj_include[2:] if proj_include.startswith('-I') else
+-                         proj_include for proj_include in proj_includes.split()]      
++        proj_includes = [
++            proj_include[2:] if proj_include.startswith('-I') else
++            proj_include for proj_include in proj_includes.split()]
+ 
+         proj_libraries = []
+         proj_library_dirs = []
+@@ -316,21 +335,90 @@
+         return '.'
+ include_dir = get_config_var('INCLUDEDIR')
+ library_dir = get_config_var('LIBDIR')
+-if sys.platform.startswith('win'):
+-    extra_extension_args = {}
+-else:
+-    extra_extension_args = dict(
+-        runtime_library_dirs=[get_config_var('LIBDIR')])
++extra_extension_args = defaultdict(list)
++if not sys.platform.startswith('win'):
++    extra_extension_args["runtime_library_dirs"].append(
++        get_config_var('LIBDIR')
++    )
+ 
+ # Description
+ # ===========
+-
+ with open(os.path.join(HERE, 'README.md'), 'r') as fh:
+     description = ''.join(fh.readlines())
+ 
+ 
++cython_coverage_enabled = os.environ.get('CYTHON_COVERAGE', None)
++if proj_version >= (6, 0, 0):
++    extra_extension_args["define_macros"].append(
++        ('ACCEPT_USE_OF_DEPRECATED_PROJ_API_H', '1')
++    )
++if cython_coverage_enabled:
++    extra_extension_args["define_macros"].append(
++        ('CYTHON_TRACE_NOGIL', '1')
++    )
++
++extensions = [
++    Extension(
++        'cartopy.trace',
++        ['lib/cartopy/trace.pyx'],
++        include_dirs=([include_dir, './lib/cartopy', np.get_include()] +
++                      proj_includes + geos_includes),
++        libraries=proj_libraries + geos_libraries,
++        library_dirs=[library_dir] + proj_library_dirs + geos_library_dirs,
++        language='c++',
++        **extra_extension_args),
++    Extension(
++        'cartopy._crs',
++        ['lib/cartopy/_crs.pyx'],
++        include_dirs=[include_dir, np.get_include()] + proj_includes,
++        libraries=proj_libraries,
++        library_dirs=[library_dir] + proj_library_dirs,
++        **extra_extension_args),
++    # Requires proj v4.9
++    Extension(
++        'cartopy.geodesic._geodesic',
++        ['lib/cartopy/geodesic/_geodesic.pyx'],
++        include_dirs=[include_dir, np.get_include()] + proj_includes,
++        libraries=proj_libraries,
++        library_dirs=[library_dir] + proj_library_dirs,
++        **extra_extension_args),
++]
++
++
++if cython_coverage_enabled:
++    # We need to explicitly cythonize the extension in order
++    # to control the Cython compiler_directives.
++    from Cython.Build import cythonize
++
++    directives = {'linetrace': True,
++                  'binding': True}
++    extensions = cythonize(extensions, compiler_directives=directives)
++
++
++def decythonize(extensions, **_ignore):
++    # Remove pyx sources from extensions.
++    # Note: even if there are changes to the pyx files, they will be ignored.
++    for extension in extensions:
++        sources = []
++        for sfile in extension.sources:
++            path, ext = os.path.splitext(sfile)
++            if ext in ('.pyx',):
++                if extension.language == 'c++':
++                    ext = '.cpp'
++                else:
++                    ext = '.c'
++                sfile = path + ext
++            sources.append(sfile)
++        extension.sources[:] = sources
++    return extensions
++
++
+ cmdclass = versioneer.get_cmdclass()
+-cmdclass.update({'build_ext': build_ext})
++
++if IS_SDIST:
++    extensions = decythonize(extensions)
++else:
++    cmdclass.update({'build_ext': cy_build_ext})
+ 
+ 
+ # Main setup
+@@ -371,37 +459,9 @@
+ 
+ 
+     # requires proj headers
+-    ext_modules=[
+-        Extension(
+-            'cartopy.trace',
+-            ['lib/cartopy/trace.pyx', 'lib/cartopy/_trace.cpp'],
+-            include_dirs=[include_dir,
+-                          './lib/cartopy'] + proj_includes + geos_includes,
+-            libraries=proj_libraries + geos_libraries,
+-            library_dirs=[library_dir] + proj_library_dirs + geos_library_dirs,
+-            language='c++',
+-            **extra_extension_args
+-        ),
+-        Extension(
+-            'cartopy._crs',
+-            ['lib/cartopy/_crs.pyx'],
+-            include_dirs=[include_dir, np.get_include()] + proj_includes,
+-            libraries=proj_libraries,
+-            library_dirs=[library_dir] + proj_library_dirs,
+-            **extra_extension_args
+-        ),
+-        # Requires proj v4.9
+-        Extension(
+-            'cartopy.geodesic._geodesic',
+-            ['lib/cartopy/geodesic/_geodesic.pyx'],
+-            include_dirs=[include_dir, np.get_include()] + proj_includes,
+-            libraries=proj_libraries,
+-            library_dirs=[library_dir] + proj_library_dirs,
+-            **extra_extension_args
+-        ),
+-    ],
+-
++    ext_modules=extensions,
+     cmdclass=cmdclass,
++    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
+     classifiers=[
+             'Development Status :: 4 - Beta',
+             'License :: OSI Approved :: GNU Lesser General Public License v3 '
+@@ -416,9 +476,9 @@
+             'Programming Language :: Python :: 2',
+             'Programming Language :: Python :: 2.7',
+             'Programming Language :: Python :: 3',
+-            'Programming Language :: Python :: 3.3',
+-            'Programming Language :: Python :: 3.4',
+             'Programming Language :: Python :: 3.5',
++            'Programming Language :: Python :: 3.6',
++            'Programming Language :: Python :: 3.7',
+             'Topic :: Scientific/Engineering',
+             'Topic :: Scientific/Engineering :: GIS',
+             'Topic :: Scientific/Engineering :: Visualization',

+ 76 - 0
foss-2019a/ELIC_Python-1-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,76 @@
+easyblock = 'PythonBundle'
+
+name = 'ELIC_Python'
+version = '1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://gogs.elic.ucl.ac.be'
+description = """This repo provides additional Python and R extensions for ELIC ecosystem."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('matplotlib', '3.1.0', versionsuffix),
+    ('GEOS', '3.7.2', versionsuffix),
+    ('GDAL', '3.0.0', versionsuffix),
+    ('NCL', '6.6.2'),
+    ('CDO', '1.9.7.1'),
+    ('NCO', '4.8.0'),
+    ('ncview', '2.1.7'),
+    ('libmo_unpack', '3.1.2'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_tmpl': '%(name)s-%(version)s.tar.gz',
+}
+
+exts_list = [
+    # Python deps, order is important!
+    ('pip', '19.0.3', {
+        'modulename': 'pip',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/pypa/pip/archive/'],
+    }),
+    ('PyKE', '1.1.1', {
+        'modulename': 'pyke',
+        'source_tmpl': 'pyke3-%(version)s.zip',
+        'source_urls': ['https://sourceforge.net/projects/%(name)s/files/%(name)s/%(version)s'],
+        'use_pip': True,
+    }),
+    ('stratify', '0.2', {
+        'modulename': 'stratify',
+        'source_tmpl': 'master.zip',
+        'source_urls': ['https://github.com/SciTools-incubator/python-stratify/archive/'],
+    }),
+    ('mo_pack', '0.2.0', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/SciTools/mo_pack/archive/'],
+        'checksums': ['4aa70e1f846b666670843bc2514435dedf7393203e88abaf74d48f8f2717a726'],
+    }),
+    ('basemap', '1.2.0', {
+        'modulename': 'mpl_toolkits',
+        'source_tmpl': 'basemap-master.zip',
+        'source_urls': ['https://github.com/matplotlib/basemap/archive'],
+        'use_pip': True,
+    }),
+]
+
+modextrapaths = {
+    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+    'PYTHONUSERBASE': '',
+    'R_LIBS': '',
+}
+
+#pip install olefile Pillow pyproj pyshp chardet urllib3 certifi requests OWSLib netCDF4 geoval cdo Shapely dask astropy oktopus bs4 tqdm cf-units cftime pyugrid cycler singledispatch backports_abc tornado toolz patsy statsmodels nc-time-axis yamale psutil bcrypt cffi cryptography Cython decorator mpi4py numpy pandas pbr pycparser scipy six virtualenv xlrd affine atomicwrites boto3 botocore click click-plugins cligj cloudpickle configobj docutils fiona geopandas jmespath more-itertools motionless munch networkx pathlib2 pluggy py pytest python-utils rasterio s3transfer scandir snuggs xarray py-expression-eval PyWavelets attrs progressbar2 scikit-image PyNaCl descartes graphviz wcwidth Bottleneck pickleshare simplegeneric prompt_toolkit Pygments ptyprocess pexpect typelib testpath parso jedi backcall scikit-learn ldap3 skills XlsxWriter retrying pyrsistent jsonschema --user
+
+#https://github.com/SciTools/cartopy.git
+#https://github.com/SciTools/iris.git
+#pip install . --user
+
+moduleclass = 'numlib'

+ 596 - 0
foss-2019a/ELIC_R-1-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,596 @@
+easyblock = 'PythonBundle'
+
+name = 'ELIC'
+version = '1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://gogs.elic.ucl.ac.be'
+description = """This repo provides additional Python and R extensions for ELIC ecosystem."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+
+#pip olefile Pillow pyproj pyshp chardet urllib3 certifi requests OWSLib netCDF4 geoval cdo Shapely Cartopy dask astropy oktopus bs4 tqdm PyKE cf-units cftime pyugrid mo_pack cycler singledispatch backports_abc tornado toolz patsy statsmodels nc-time-axis yamale stratify psutil bcrypt cffi cryptography Cython decorator mpi4py numpy pandas pbr pycparse scipy six virtualenv xlrd affine atomicwrites boto3 botocore click click-plugins cligj cloudpickle configob docutils fiona geopandas jmespath more-itertools motionle munch networkx pathlib2 pluggy py pytest python-utils rasterio s3transf scandir snuggs xarray py-expression-eval PyWavele attrs progressbar2 scikit-image PyNaCl descartes graphviz wcwidth Bottleneck pickleshare simplegeneric prompt_toolkit Pygments ptyprocess pexpect typelib testpath parso jedi backcall scikit-learn basemap ldap3 skills XlsxWriter retrying pyrsistent 
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('R', '3.6.0'),
+    ('matplotlib', '3.1.0', versionsuffix),
+    ('GEOS', '3.7.2', versionsuffix),
+    ('GDAL', '3.0.0', versionsuffix),
+    ('NCL', '6.6.2'),
+    ('CDO', '1.9.7.1'),
+    ('NCO', '4.8.0'),
+    ('ncview', '2.1.7'),
+    #('GTK+', '3.24.7', versionsuffix),
+    #('PyGObject', '3.28.3', versionsuffix),
+    #('libmo_unpack', '3.1.2'),
+    #('numba', '0.43.0', versionsuffix),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_tmpl': '%(name)s-%(version)s.tar.gz',
+}
+
+exts_classmap = {
+    'ncdf4': 'RPackage',
+    'gdtools': 'RPackage',
+    'leaflet': 'RPackage',
+    'satellite': 'RPackage',
+    'sf': 'RPackage',
+    'svglite': 'RPackage',
+    'mapview': 'RPackage',
+    'MuMIn': 'RPackage',
+    'BayesianTools': 'RPackage'
+}
+exts_list = [
+    # Python deps, order is important!
+    ('pip', '19.0.3', {
+        'modulename': 'pip',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/pypa/pip/archive/'],
+    }),
+    ('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/'],
+    }),
+    ('astropy', '3.1.2', {
+        'modulename': 'astropy',
+        'source_urls': ['https://pypi.python.org/packages/source/a/astropy/'],
+    }),
+    ('oktopus', '0.1.2', {
+        'modulename': 'oktopus',
+        'source_urls': ['https://pypi.python.org/packages/source/o/oktopus/'],
+    }),
+    ('bs4', '0.0.1', {
+        'modulename': 'bs4',
+        'source_urls': ['https://pypi.python.org/packages/source/b/bs4/'],
+    }),
+    ('tqdm', '4.31.1', {
+        'modulename': 'tqdm',
+        'source_urls': ['https://pypi.python.org/packages/source/t/tqdm/'],
+    }),
+    ('PyKE', '3.1.0', {
+        'modulename': 'pyke',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/KeplerGO/pyke/archive/'],
+    }),
+    ('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/'],
+    }),
+    ('toolz', '0.9.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/toolz/'],
+        'checksums': ['929f0a7ea7f61c178bd951bdae93920515d3fbdbafc8e6caf82d752b9b3b31c9'],
+    }),
+    ('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'],
+    }),
+    ('bcrypt', '3.1.6', {
+        'source_urls': ['https://pypi.python.org/packages/source/b/bcrypt/'],
+    }),
+    ('cffi', '1.12.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cffi/'],
+    }),
+    ('cryptography', '2.6.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cryptography/'],
+    }),
+    ('Cython', '0.29.6', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/Cython/'],
+    }),
+    ('decorator', '4.4.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/d/decorator/'],
+    }),
+    ('mpi4py', '3.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/mpi4py/'],
+    }),
+    ('numpy', '1.16.2', {
+        'modulename': 'numpy',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/numpy/numpy/archive/'],
+    }),
+    ('pandas', '0.24.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pandas/'],
+    }),
+    ('pbr', '5.1.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pbr/'],
+    }),
+    ('pycparser', '2.19', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pycparser/'],
+    }),
+    ('scipy', '1.2.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/scipy/'],
+    }),            
+    ('six', '1.12.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/six/'],
+    }),
+    ('virtualenv', '16.4.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/x/virtualenv/'],
+    }),
+    ('xlrd', '1.2.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/x/xlrd/'],
+    }),
+    ('affine', '2.2.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/affine/'],
+    }),          
+    ('atomicwrites', '1.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/atomicwrites/'],
+    }),
+    ('boto3', '1.9.116', {
+        'source_urls': ['https://pypi.python.org/packages/source/b/boto3/'],
+    }),
+    ('botocore', '1.12.116', {
+        'source_urls': ['https://pypi.python.org/packages/source/b/botocore/'],
+    }),          
+     ('click', '7.0', {
+        'modulename': 'click',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/pallets/click/archive/'],
+    }),      
+    ('click-plugins', '1.0.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/click-plugins/'],
+    }),
+    ('cligj', '0.5.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cligj/'],
+    }),          
+    ('cloudpickle', '0.8.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/cloudpickle/'],
+    }),
+    ('configobj', '5.0.6', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/configobj/'],
+    }), 
+    ('docutils', '0.14', {
+        'source_urls': ['https://pypi.python.org/packages/source/d/docutils/'],
+    }),          
+    ('fiona', '1.8.6', {
+        'modulename': 'fiona',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/Toblerity/Fiona/archive/'],
+    }),
+    ('geopandas', '0.4.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/g/geopandas/'],
+    }),
+    ('jmespath', '0.9.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jmespath/'],
+    }),          
+    ('more-itertools', '5.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/more-itertools/'],
+    }),
+    ('motionless', '1.3.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/motionless/'],
+    }),     
+    ('munch', '2.3.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/munch/'],
+    }),
+    ('networkx', '2.2', {
+        'modulename': 'networkx',
+        'source_tmpl': 'networkx-%(version)s.tar.gz',
+        'source_urls': ['https://github.com/networkx/networkx/archive/'],
+    }),          
+    ('pathlib2', '2.3.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pathlib2/'],
+    }),
+    ('pluggy', '0.9.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pluggy/'],
+    }),   
+    ('py', '1.8.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/py/'],
+    }),           
+    ('pytest', '4.3.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pytest/'],
+    }),   
+    ('python-utils', '2.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/python-utils/'],
+    }),
+    ('rasterio', '1.0.21', {
+        'source_urls': ['https://pypi.python.org/packages/source/r/rasterio/'],
+    }), 
+    ('s3transfer', '0.2.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/s3transfer/'],
+    }),   
+    ('scandir', '1.10.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/scandir/'],
+    }),
+    ('snuggs', '1.4.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/snuggs/'],
+    }),
+    ('xarray', '0.11.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/x/xarray/'],
+    }),
+    ('py-expression-eval', '0.3.6', {
+        'modulename': 'py_expression_eval',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/Axiacore/py-expression-eval/archive/'],
+    }),
+    ('PyWavelets', '1.0.2', {
+        'modulename': 'pywt',
+        'source_urls': ['https://pypi.python.org/packages/source/p/PyWavelets/'],
+    }),
+    ('attrs', '19.1.0', {
+        'modulename': 'attr',
+        'source_urls': ['https://pypi.python.org/packages/source/a/attrs/'],
+    }),
+    ('progressbar2', '3.39.3', {
+        'modulename': 'progressbar',
+        'source_urls': ['https://pypi.python.org/packages/source/p/progressbar2/'],
+    }),
+    ('scikit-image', '0.14.2', {
+        'modulename': 'skimage',
+        'source_urls': ['https://pypi.python.org/packages/source/s/scikit-image/'],
+    }),
+    ('PyNaCl', '1.3.0', {
+        'modulename': 'nacl',
+        'source_urls': ['https://pypi.python.org/packages/source/p/PyNaCl/'],
+    }),
+    ('descartes', '1.1.0', {
+        'modulename': 'descartes',
+        'source_urls': ['https://pypi.python.org/packages/source/d/descartes/'],
+        'checksums': ['135a502146af5ed6ff359975e2ebc5fa4b71b5432c355c2cafdc6dea1337035b'],
+    }),
+    ('graphviz', '0.10.1', {
+        'modulename': 'graphviz',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/xflr6/graphviz/archive/'],
+    }),
+    ('wcwidth', '0.1.7', {
+        'modulename': 'wcwidth',
+        'source_urls': ['https://pypi.python.org/packages/source/w/wcwidth/'],
+    }),
+    ('Bottleneck', '1.2.1', {
+        'modulename': 'bottleneck',
+        'source_urls': ['https://pypi.python.org/packages/source/b/Bottleneck/'],
+    }),
+    ('pickleshare', '0.7.5', {
+        'modulename': 'pickleshare',
+        'source_urls': ['https://pypi.python.org/packages/source/p/pickleshare/'],
+    }),
+    ('simplegeneric', '0.8.1', {
+        'source_tmpl': '%(name)s-%(version)s.zip',
+        'modulename': 'simplegeneric',
+        'source_urls': ['https://pypi.python.org/packages/source/s/simplegeneric/'],
+    }),
+    ('prompt_toolkit', '2.0.9', {
+        'modulename': 'prompt_toolkit',
+        'source_urls': ['https://pypi.python.org/packages/source/p/prompt_toolkit/'],
+    }),
+    ('Pygments', '2.4.2', {
+        'modulename': 'pygments',
+        'source_urls': ['https://pypi.python.org/packages/source/p/Pygments/'],
+    }),
+    ('ptyprocess', '0.6.0', {
+        'modulename': 'ptyprocess',
+        'source_urls': ['https://pypi.python.org/packages/source/p/ptyprocess/'],
+    }),
+    ('pexpect', '4.7.0', {
+        'modulename': 'pexpect',
+        'source_urls': ['https://pypi.python.org/packages/source/p/pexpect/'],
+    }),
+    ('typelib', '0.0.10', {
+        'modulename': 'typelib',
+        'source_urls': ['https://pypi.python.org/packages/source/t/typelib/'],
+    }),
+    ('testpath', '0.4.2', {
+        'modulename': 'testpath',
+        'source_urls': ['https://pypi.python.org/packages/source/t/testpath/'],
+    }),
+    ('parso', '0.4.0', {
+        'modulename': 'parso',
+        'source_urls': ['https://pypi.python.org/packages/source/p/parso/'],
+    }),
+    ('jedi', '0.13.3', {
+        'modulename': 'jedi',
+        'source_urls': ['https://pypi.python.org/packages/source/j/jedi/'],
+    }),
+    ('backcall', '0.1.0', {
+        'modulename': 'backcall',
+        'source_urls': ['https://pypi.python.org/packages/source/b/backcall/'],
+    }),
+    ('scikit-learn', '0.20.3', {
+        'modulename': 'sklearn',
+        'source_urls': ['https://pypi.python.org/packages/source/s/scikit-learn/'],
+    }),
+    ('basemap', '1.2.0rel', {
+        'modulename': 'mpl_toolkits',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/matplotlib/basemap/archive'],
+    }),
+    ('ldap3', '2.6', {
+        'modulename': 'ldap3',
+        'source_urls': ['https://pypi.python.org/packages/source/l/ldap3/'],
+    }),
+    ('skills', '0.3.0', {
+        'modulename': 'skills',
+        'source_tmpl': '%(name)s-%(version)s.zip',
+        'source_urls': ['https://pypi.python.org/packages/source/s/skills/'],
+    }),
+    ('XlsxWriter', '1.1.7', {
+        'modulename': 'xlsxwriter',
+        'source_urls': ['https://pypi.python.org/packages/source/x/XlsxWriter/'],
+    }),
+    ('retrying', '1.3.3', {
+        'modulename': 'retrying',
+        'source_urls': ['https://pypi.python.org/packages/source/r/retrying/'],
+    }),
+    ('pyrsistent', '0.15.2', {
+        'modulename': 'pyrsistent',
+        'source_urls': ['https://pypi.python.org/packages/source/p/pyrsistent/'],
+    }),
+    ('jsonschema', '3.0.1', {
+        'modulename': 'jsonschema',
+        'source_urls': ['https://pypi.python.org/packages/source/j/jsonschema/'],
+    }),
+    ('imagesize', '1.1.0', {
+        'modulename': 'imagesize',
+        'source_urls': ['https://pypi.python.org/packages/source/i/imagesize/'],
+    }),
+    ('Babel', '2.7.0', {
+        'modulename': 'babel',
+        'source_urls': ['https://pypi.python.org/packages/source/b/Babel/'],
+    }),
+    ('alabaster', '0.7.12', {
+        'modulename': 'alabaster',
+        'source_urls': ['https://pypi.python.org/packages/source/a/alabaster/'],
+    }),
+    ('sphinxcontrib_htmlhelp', '1.0.2', {
+        'modulename': 'sphinxcontrib_htmlhelp',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_htmlhelp/'],
+    }),
+    ('sphinxcontrib_qthelp', '1.0.2', {
+        'modulename': 'sphinxcontrib_qthelp',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_qthelp/'],
+    }),
+    ('sphinxcontrib_serializinghtml', '1.1.3', {
+        'modulename': 'sphinxcontrib_serializinghtml',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_serializinghtml/'],
+    }),
+    ('sphinxcontrib_devhelp', '1.0.1', {
+        'modulename': 'sphinxcontrib_devhelp',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_devhelp/'],
+    }),
+    ('sphinxcontrib_applehelp', '1.0.1', {
+        'modulename': 'sphinxcontrib_applehelp',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_applehelp/'],
+    }),
+    ('snowballstemmer', '1.2.1', {
+        'modulename': 'snowballstemmer',
+        'source_urls': ['https://pypi.python.org/packages/source/s/snowballstemmer/'],
+    }),
+    ('sphinxcontrib_jsmath', '1.0.1', {
+        'modulename': 'sphinxcontrib_jsmath',
+        'source_urls': ['https://pypi.python.org/packages/source/s/sphinxcontrib_jsmath/'],
+    }),
+    ('Sphinx', '2.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/Sphinx/'],
+        'modulename': 'sphinx',
+    }),
+    ('SkillMetrics', '1.1.6', {
+        'modulename': 'skill_metrics',
+        'source_urls': ['https://pypi.python.org/packages/source/s/SkillMetrics/'],
+    }),
+    #('salem', '0.2.4', {
+    #    'modulename': 'salem',
+    #    'source_urls': ['https://pypi.python.org/packages/source/s/salem/'],
+    #    'checksums': ['f29594c31124b9f1198ba3361850d57e180e3ea228bebe08080760195b96558c'],
+    #}),
+    ################################
+    # 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'],
+    }),
+    ('gdtools', '0.1.7', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/gdtools',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('leaflet', '2.0.2', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/leaflet',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('satellite', '1.0.1', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/satellite',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('sf', '0.7-3', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/sf',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('svglite', '1.2.1', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/svglite',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('mapview', '2.6.3', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/mapview',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('MuMIn', '1.43.6', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/MuMIn',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+    ('BayesianTools', '0.1.6', {
+        'source_tmpl': '%(name)s_%(version)s.tar.gz',
+        'source_urls': [
+            'http://cran.r-project.org/src/contrib/Archive/BayesianTools',
+            'http://cran.r-project.org/src/contrib/',
+            'http://cran.freestatistics.org/src/contrib',
+        ],
+    }),
+]
+
+sanity_check_paths = {
+    'files': ['sf/libs/sf.so'],
+    'dirs': [],
+}
+
+postinstallcmds = [
+    "cd %(installdir)s/bin && " +
+    'chmod 755 pip'
+]
+
+modextrapaths = {
+    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+    'PYTHONUSERBASE': '',
+    'R_LIBS': '',
+}
+
+moduleclass = 'numlib'

+ 34 - 0
foss-2019a/ESMF-7.1.0r-foss-2019a.eb

@@ -0,0 +1,34 @@
+name = 'ESMF'
+version = '7.1.0r'
+
+homepage = 'http://sourceforge.net/projects/esmf'
+description = """The Earth System Modeling Framework (ESMF) is software for building and coupling weather,
+ climate, and related models."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = ['%%(namelower)s_%s_src.tar.gz' % '_'.join(version.split('.'))]
+patches = [
+    'ESMF-6.1.1_libopts.patch',
+    'ESMF-7.1.0r_fix-ESMC_Conf.patch',
+]
+checksums = [
+    'ae9a5edb8d40ae97a35cbd4bd00b77061f995c77c43d36334dbb95c18b00a889',  # esmf_7_1_0r_src.tar.gz
+    '3851627f07c32a7da55d99072d619942bd3a1d9dd002e1557716158e7aacdaf4',  # ESMF-6.1.1_libopts.patch
+]
+
+dependencies = [
+    ('netCDF', '4.6.2'),
+    ('netCDF-Fortran', '4.4.5'),
+    ('netCDF-C++4', '4.3.0'),
+]
+
+buildopts = 'ESMF_NETCDF_INCLUDE=$EBROOTNETCDFMINFORTRAN/include '
+buildopts += 'ESMF_NETCDF_LIBS="`nc-config --libs` `nf-config --flibs` `ncxx4-config --libs`"'
+
+# too parallel causes the build to become really slow
+maxparallel = 8
+
+moduleclass = 'geo'

+ 12 - 0
foss-2019a/ESMF-7.1.0r_fix-ESMC_Conf.patch

@@ -0,0 +1,12 @@
+Patched config file ESMC_Conf.h, replacing the original file.
+June 24th 2019 by PY Barriat (ELIC - UCL)
+--- esmf/build_config/Linux.gfortran.default/ESMC_Conf.h.orig 2018-03-07 00:33:07.000000000 +0100
++++ esmf/build_config/Linux.gfortran.default/ESMC_Conf.h      2019-06-24 17:06:57.735994948 +0200
+@@ -31,6 +31,7 @@
+ // Typedef to match the data type of the 'hidden' string length
+ // argument that Fortran uses when passing CHARACTER strings.
+ #if (__GNUC__ > 7)
++#include <cstddef>
+ typedef size_t ESMCI_FortranStrLenArg;
+ #else
+ typedef int ESMCI_FortranStrLenArg;

+ 50 - 0
foss-2019a/GDAL-2.4.1-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,50 @@
+easyblock = 'ConfigureMake'
+
+name = 'GDAL'
+version = '2.4.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://www.gdal.org/'
+description = """GDAL is a translator library for raster geospatial data formats that is released under an X/MIT style
+ Open Source license by the Open Source Geospatial Foundation. As a library, it presents a single abstract data model
+ to the calling application for all supported formats. It also comes with a variety of useful commandline utilities for
+ data translation and processing."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+toolchainopts = {'usempi': True}
+
+source_urls = ['http://download.osgeo.org/gdal/%(version)s/']
+sources = [SOURCELOWER_TAR_XZ]
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('netCDF', '4.6.2'),
+    ('expat', '2.2.6'),
+    ('GEOS', '3.7.2', '-Python-%(pyver)s'),
+    ('SQLite', '3.27.2'),
+    ('libxml2', '2.9.8'),
+    ('libpng', '1.6.36'),
+    ('libjpeg-turbo', '2.0.2'),
+    ('JasPer', '2.0.14'),
+    ('LibTIFF', '4.0.10'),
+    ('zlib', '1.2.11'),
+    ('cURL', '7.63.0'),
+    ('PCRE', '8.43'),
+    ('PROJ', '5.2.0'),
+    ('libgeotiff', '1.4.3'),
+]
+
+configopts = '--with-expat=$EBROOTEXPAT --with-libz=$EBROOTLIBZ --with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF'
+configopts += ' --with-xml2=$EBROOTLIBXML2 --with-geos=$EBROOTGEOS/bin/geos-config --with-jpeg=$EBROOTLIBJPEGMINTURBO'
+configopts += ' --with-png=$EBROOTLIBPNG --with-sqlite3=$EBROOTSQLITE --with-jasper=$EBROOTJASPER'
+configopts += ' --with-libtiff=$EBROOTLIBTIFF --with-pcre=$EBROOTPCRE --with-python=$EBROOTPYTHON/bin/python'
+configopts += ' --with-libgeotiff=$EBROOTLIBGEOTIFF'
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+sanity_check_paths = {
+    'files': ['lib/libgdal.a', 'lib/libgdal.%s' % SHLIB_EXT],
+    'dirs': ['bin', 'include', 'lib/python%(pyshortver)s/site-packages']
+}
+
+moduleclass = 'data'

+ 42 - 0
foss-2019a/NCL-6.6.2-foss-2019a.eb

@@ -0,0 +1,42 @@
+name = 'NCL'
+version = '6.6.2'
+
+homepage = 'http://www.ncl.ucar.edu'
+description = "NCL is an interpreted language designed specifically for scientific data analysis and visualization."
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+toolchainopts = {'cstd': 'c99', 'openmp': True, 'pic': True}
+
+source_urls = ['https://github.com/NCAR/ncl/archive/']
+sources = ['%(version)s.tar.gz']
+patches = ['NCL-6.4.0_fix-types.patch']
+checksums = [
+    'cad4ee47fbb744269146e64298f9efa206bc03e7b86671e9729d8986bb4bc30e',  # 6.6.2.tar.gz
+    'f6dfaf95e5de9045745e122cb44f9c035f81fab92f5892991ddfe93945891c8f',  # NCL-6.4.0_fix-types.patch
+]
+
+dependencies = [
+    ('cURL', '7.63.0'),
+    ('JasPer', '2.0.14'),
+    ('g2lib', '3.1.0'),
+    ('g2clib', '1.6.0'),
+    ('HDF', '4.2.14'),
+    ('HDF5', '1.10.5'),
+    ('netCDF', '4.6.2'),
+    ('netCDF-Fortran', '4.4.5'),
+    ('Szip', '2.1.1'),
+    ('freetype', '2.9.1'),
+    ('zlib', '1.2.11'),
+    ('GDAL', '3.0.0', '-Python-3.7.2'),
+    ('UDUNITS', '2.2.26'),
+    ('ESMF', '7.1.0r'),
+    ('bzip2', '1.0.6'),
+    ('cairo', '1.16.0'),
+    ('libiconv', '1.16'),
+    ('GSL', '2.5'),
+]
+builddependencies = [
+    ('makedepend', '1.0.6'),
+]
+
+moduleclass = 'data'

+ 35 - 0
foss-2019a/NCO-4.8.0-foss-2019a.eb

@@ -0,0 +1,35 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '4.8.0'
+
+homepage = "http://nco.sourceforge.net"
+description = """manipulates and analyzes data stored in netCDF-accessible formats, including DAP, HDF4, and HDF5"""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = ['https://github.com/nco/nco/archive/']
+sources = ['%(version)s.tar.gz']
+
+builddependencies = [
+    ('Bison', '3.0.5'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('UDUNITS', '2.2.26'),
+    ('expat', '2.2.6'),
+    ('ANTLR', '2.7.7'),
+    ('libdap', '3.20.3'),
+    ('GSL', '2.5'),
+    ('netCDF', '4.6.2'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/nc%s' % x for x in ('ap2', 'atted', 'bo', 'diff', 'ea', 'ecat', 'es',
+                                       'flint', 'ks', 'pdq', 'ra', 'rcat', 'rename', 'wa')] +
+             ['lib/libnco.a', 'lib/libnco.%s' % SHLIB_EXT, 'lib/libnco_c++.a', 'lib/libnco_c++.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'

+ 36 - 0
foss-2019a/OpenPGM-5.2.122-GCCcore-8.2.0.eb

@@ -0,0 +1,36 @@
+easyblock = 'ConfigureMake'
+
+name = 'OpenPGM'
+version = '5.2.122'
+
+homepage = 'http://code.google.com/p/openpgm/'
+
+description = """
+ OpenPGM is an open source implementation of the Pragmatic General Multicast
+ (PGM) specification in RFC 3208 available at www.ietf.org. PGM is a reliable
+ and scalable multicast protocol that enables receivers to detect loss, request
+ retransmission of lost data, or notify an application of unrecoverable loss.
+ PGM is a receiver-reliable protocol, which means the receiver is responsible
+ for ensuring all data is received, absolving the sender of reception
+ responsibility.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/openpgm/']
+sources = ['libpgm-%(version)s.tar.gz']
+checksums = ['6b895f550b95284dcde7189b01e04a9a1c1f94579af31b1eebd32c2207a1ba2c']
+
+builddependencies = [
+    ('binutils', '2.31.1'),
+]
+
+start_dir = 'pgm'
+
+sanity_check_paths = {
+    'files': ['lib/libpgm.%s' % SHLIB_EXT, 'lib/libpgm.a'],
+    'dirs': ['include'],
+}
+
+moduleclass = 'system'

+ 37 - 0
foss-2019a/PROJ-5.2.0-GCCcore-8.2.0.eb

@@ -0,0 +1,37 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2014-2015 The Cyprus Institute
+# Authors:: Thekla Loizou <t.loizou@cyi.ac.cy>
+# License:: MIT/GPL
+#
+##
+easyblock = 'ConfigureMake'
+
+name = 'PROJ'
+version = '5.2.0'
+
+homepage = 'http://trac.osgeo.org/proj/'
+description = """Program proj is a standard Unix filter function which converts 
+geographic longitude and latitude coordinates into cartesian coordinates"""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['http://download.osgeo.org/proj/']
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+    ('binutils', '2.31.1'),
+]
+
+dependencies = [('SQLite', '3.27.2')]
+
+sanity_check_paths = {
+    'files': ['bin/cct', 'bin/cs2cs', 'bin/geod', 'bin/gie', 'bin/proj', 'bin/nad2bin',
+              'lib/libproj.a', 'lib/libproj.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'lib'

+ 28 - 0
foss-2019a/PyZMQ-18.0.1-foss-2019a-Python-3.7.2-zmq4.eb

@@ -0,0 +1,28 @@
+easyblock = 'PythonPackage'
+
+name = 'PyZMQ'
+version = '18.0.1'
+zmqversion = '4.3.1'
+versionsuffix = '-Python-%%(pyver)s-zmq%s' % zmqversion.split('.')[0]
+
+homepage = 'http://www.zeromq.org/bindings:python'
+description = """Python bindings for ZeroMQ"""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = [PYPI_LOWER_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('ZeroMQ', zmqversion),
+]
+
+options = {'modulename': 'zmq'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/zmq'],
+}
+
+moduleclass = 'devel'

+ 22 - 0
foss-2019a/YAXT-0.6.1-gompi-2019a.eb

@@ -0,0 +1,22 @@
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.6.1'
+
+homepage = 'https://www.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'gompi', 'version': '2019a'}
+toolchainopts = {'usempi': True}
+
+sources = [SOURCELOWER_TAR_GZ]
+source_urls = ['https://www.dkrz.de/redmine/attachments/download/490/']
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+sanity_check_paths = {
+    'files': ["include/yaxt.h", "include/yaxt.mod", "lib/libyaxt.a", "lib/libyaxt.%s" % SHLIB_EXT],
+    'dirs': ["include/xt"],
+}
+
+moduleclass = 'tools'

+ 34 - 0
foss-2019a/ZeroMQ-4.3.1-foss-2019a.eb

@@ -0,0 +1,34 @@
+easyblock = 'ConfigureMake'
+
+name = 'ZeroMQ'
+version = '4.3.1'
+
+homepage = 'http://www.zeromq.org/'
+description = """ZeroMQ looks like an embeddable networking library but acts like a concurrency framework.
+ It gives you sockets that carry atomic messages across various transports like in-process,
+ inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fanout,
+ pub-sub, task distribution, and request-reply. It's fast enough to be the fabric for clustered
+ products. Its asynchronous I/O model gives you scalable multicore applications, built as asynchronous
+ message-processing tasks. It has a score of language APIs and runs on most operating systems."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/zeromq/libzmq/releases/download/v%(version)s/']
+sources = [SOURCELOWER_TAR_GZ]
+
+# --with-pgm will use shipped OpenPGM (in foreign subdir)
+configopts = '--with-pic --with-libsodium --with-pgm '
+
+dependencies = [
+    ('OpenPGM', '5.2.122'),
+    ('util-linux', '2.33'),
+    ('libsodium', '1.0.18'),
+]
+
+sanity_check_paths = {
+    'files': ['lib/libzmq.%s' % SHLIB_EXT, 'lib/libzmq.a'],
+    'dirs': ['include', 'lib'],
+}
+
+moduleclass = 'devel'

+ 26 - 0
foss-2019a/configurable-http-proxy-3.1.1-foss-2019a-nodejs-8.9.4.eb

@@ -0,0 +1,26 @@
+easyblock = 'Binary'
+
+name = 'configurable-http-proxy'
+version = '3.1.1'
+nodejsver = '8.9.4'
+versionsuffix = '-nodejs-%s' % nodejsver
+
+homepage = 'https://github.com/jupyterhub/configurable-http-proxy'
+description = """HTTP proxy for node.js including a REST API for updating the routing table.
+ Developed as a part of the Jupyter Hub multi-user server."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+dependencies = [
+    ('nodejs', nodejsver),
+]
+
+source_urls = ['https://github.com/jupyterhub/configurable-http-proxy/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['45079930e33c1322743e2700e699898136a193ada2227c2174741a23297aeec2']
+
+install_cmd = 'npm install --no-package-lock -g --prefix %(installdir)s %(version)s.tar.gz'
+
+sanity_check_commands = ['%(name)s --version']
+
+moduleclass = 'tools'

+ 34 - 0
foss-2019a/ecCodes-2.12.5-foss-2019a.eb

@@ -0,0 +1,34 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.12.5'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['36e6e73d654027b31c323b0eddd15e4d1f011ad81e79e9c71146ba96293d712a']
+
+builddependencies = [('CMake', '3.13.3')]
+dependencies = [
+    ('netCDF', '4.6.2'),
+    ('JasPer', '2.0.14'),
+]
+
+separate_build_dir = True
+
+configopts = "-DENABLE_NETCDF=ON -DENABLE_JPG=ON -DENABLE_PYTHON=OFF"
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in ['bufr_copy', 'bufr_dump', 'bufr_filter', 'bufr_ls',
+                                     'codes_count', 'codes_info', 'codes_split_file',
+                                     'grib_copy', 'grib_dump', 'grib_filter', 'grib_ls']],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 25 - 0
foss-2019a/g2clib-1.6.0-foss-2019a.eb

@@ -0,0 +1,25 @@
+name = 'g2clib'
+version = '1.6.0'
+
+homepage = 'http://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/'
+description = """Library contains GRIB2 encoder/decoder ('C' version)."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = [homepage]
+sources = ['%(name)s-%(version)s.tar']
+patches = ['g2clib-1.6.0-with-JasPer-2.x.patch']
+checksums = [
+    'afec1ea29979b84369d0f46f305ed12f73f1450ec2db737664ec7f75c1163add',  # g2clib-1.6.0.tar
+    '2e62502d7823be5407ea023029dd206930a1034421d141dd346b468e177a7fce',  # g2clib-1.6.0-with-JasPer-2.x.patch
+]
+
+dependencies = [
+    ('JasPer', '2.0.14'),
+    ('libpng', '1.6.36'),
+]
+
+# parallel build tends to fail
+parallel = 1
+
+moduleclass = 'data'

+ 31 - 0
foss-2019a/g2lib-3.1.0-foss-2019a.eb

@@ -0,0 +1,31 @@
+name = 'g2lib'
+version = '3.1.0'
+
+homepage = 'http://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/'
+description = """Library contains GRIB2 encoder/decoder and search/indexing routines."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = [homepage]
+sources = ['%(name)s-%(version)s.tar']
+patches = [
+    'g2lib-3.1.0_makefile.patch',
+    'g2lib-1.4.0-with-JasPer-2.x.patch',
+]
+checksums = [
+    '8a2de259de82094c5867f8d7945359f211592a4a503f9ed65dc60469337414e7',  # g2lib-3.1.0.tar
+    '702f76c77638fb36b662caf96890a69f19c507778c92aa1e163898b150cc8282',  # g2lib-3.1.0_makefile.patch
+    'cd4c668dab76ef3b61fa902c2eed24747517d4cbc3ec0aaffab37e6b80946170',  # g2lib-1.4.0-with-JasPer-2.x.patch
+]
+
+dependencies = [
+    ('JasPer', '2.0.14'),
+    ('libpng', '1.6.36'),
+]
+
+buildopts = 'CFLAGS="$CFLAGS -DLINUXG95 -D__64BIT__" FFLAGS="$FFLAGS -fno-range-check -cpp -I." FC=$FC CC=$CC'
+
+# parallel build tends to fail
+parallel = 1
+
+moduleclass = 'data'

+ 210 - 0
foss-2019a/jupyter-1.0.0-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,210 @@
+easyblock = 'Bundle'
+
+name = 'jupyter'
+version = '1.0.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://jupyter.org'
+description = """JupyterHub is a multiuser version of the Jupyter (IPython) notebook designed
+ for centralized deployments in companies, university classrooms and research labs."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('ELIC_Python', '1', versionsuffix),
+    ('configurable-http-proxy', '3.1.1', '-nodejs-8.9.4'),
+    ('PyZMQ', '18.0.1', '%s-zmq4' % versionsuffix),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_filter = ("python -c 'import %(ext_name)s'", '')
+
+exts_list = [
+    ('pamela', '0.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pamela/'],
+        'checksums': [
+            '1e198446a6cdd87704aa0def7621d62e7c20b0e6068e2788b9a866a8355e5d6b',  # pamela-0.3.0.tar.gz
+        ],
+    }),
+    ('SQLAlchemy', '1.1.15', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/SQLAlchemy/'],
+        'checksums': [
+            '8b79a5ed91cdcb5abe97b0045664c55c140aec09e5dd5c01303e23de5fe7a95a',  # SQLAlchemy-1.1.15.tar.gz
+        ],
+    }),
+    ('alembic', '0.9.7', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/alembic/'],
+        'checksums': [
+            '46f4849c6dce69f54dd5001b3215b6a983dee6b17512efee10e237fa11f20cfa',  # alembic-0.9.7.tar.gz
+        ],
+    }),
+    ('python-oauth2', '1.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/python-oauth2/'],
+        'modulename': 'oauth2',
+        'checksums': [
+            '5583b5cea3e6cc154800f7a04a061fc7673cb12c75ad9413e607d4472d062d28',  # python-oauth2-1.0.1.tar.gz
+        ],
+    }),
+    ('python-editor', '1.0.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/python_editor/'],
+        'modulename': 'editor',
+        'checksums': [
+            'a3c066acee22a1c94f63938341d4fb374e3fdd69366ed6603d7b24bed1efc565',  # python-editor-1.0.3.tar.gz
+        ],
+    }),
+    ('async_generator', '1.10', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/async_generator/'],
+        'modulename': 'async_generator',
+    }),
+    ('entrypoints', '0.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/e/entrypoints/'],
+        'modulename': 'entrypoints',
+    }),
+    ('Jinja2', '2.10.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/Jinja2/'],
+        'modulename': 'jinja2',
+    }),
+    ('oauthlib', '3.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/o/oauthlib/'],
+        'modulename': 'oauthlib',
+    }),
+    ('python-dateutil', '2.8.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/python-dateutil/'],
+        'modulename': 'dateutil',
+    }),
+    ('prometheus_client', '0.7.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/prometheus_client/'],
+        'modulename': 'prometheus_client',
+    }),
+    ('certipy', '0.1.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/certipy/'],
+        'modulename': 'certipy',
+    }),
+    ('wheel', '0.33.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/w/wheel/'],
+        'modulename': 'wheel',
+    }),
+    ('ipython_genutils', '0.2.0', {
+        'modulename': 'ipython_genutils',
+        'source_urls': ['https://pypi.python.org/packages/source/i/ipython_genutils/'],
+    }),
+    ('traitlets', '4.3.2', {
+        'modulename': 'traitlets',
+        'source_urls': ['https://pypi.python.org/packages/source/t/traitlets/'],
+    }),
+    ('jupyter_core', '4.4.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyter_core/'],
+    }),
+    ('nbformat', '4.4.0', {
+        'modulename': 'nbformat',
+        'source_urls': ['https://pypi.python.org/packages/source/n/nbformat/'],
+    }),
+    ('plotly', '3.10.0', {
+        'modulename': 'plotly',
+        'source_urls': ['https://pypi.python.org/packages/source/p/plotly/'],
+    }),
+    ('ipython', '7.5.0', {
+        'modulename': 'IPython',
+        'source_urls': ['https://pypi.python.org/packages/source/i/ipython/'],
+    }),
+    ('pyzmq', '18.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pyzmq/'],
+        'modulename': 'zmq',
+    }),
+    #('zmq', '0.0.0', {
+    #    'source_urls': ['https://pypi.python.org/packages/source/z/zmq/'],
+    #    'modulename': 'zmq',
+    #}),
+    ('setuptools', '41.0.1', {
+        'source_tmpl': '%(name)s-%(version)s.zip',
+        'source_urls': ['https://pypi.python.org/packages/source/s/setuptools/'],
+        'modulename': 'setuptools',
+    }),
+    ('tini', '3.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/tini/'],
+        'modulename': 'tini',
+    }),
+    ('sudospawner', '0.5.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/sudospawner/'],
+        'modulename': 'sudospawner',
+    }),
+    ('Send2Trash', '1.5.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/Send2Trash/'],
+        'modulename': 'send2trash',
+    }),
+    ('JSAnimation', '0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/JSAnimation/'],
+        'modulename': 'JSAnimation',
+    }),
+    ('jupyter_client', '5.2.4', {
+        'modulename': 'jupyter_client',
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyter_client/'],
+        'use_pip': True,
+    }),
+    ('ipykernel', '5.1.1', {
+        'modulename': 'ipykernel',
+        'source_urls': ['https://pypi.python.org/packages/source/i/ipykernel/'],
+        'use_pip': True,
+    }),
+    ('jupyterhub', version, {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyterhub/'],
+        'use_pip': True,
+    }),
+    ('notebook', '5.7.8', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/notebook/'],
+        'use_pip': True,
+    }),
+    ('jupyterlab', '0.35.6', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyterlab/'],
+        'use_pip': True,
+    }),
+    ('ipyparallel', '6.2.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/i/ipyparallel/'],
+        'use_pip': True,
+    }),
+    ('jupyterhub-ldapauthenticator', '1.2.2', {
+        'modulename': 'ldapauthenticator',
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyterhub-ldapauthenticator/'],
+        'use_pip': True,
+    }),
+    ('ipywidgets', '7.4.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/i/ipywidgets/'],
+        'use_pip': True,
+    }),
+    ('bash_kernel', '0.7.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/b/bash_kernel/'],
+        'use_pip': True,
+    }),
+    ('jupyter-fortran-kernel', '0.1.0', {
+        'source_tmpl': 'ZedThree-jupyter-fortran-kernel-%(version)s-0-g557603b.tar.gz',
+        'source_urls': ['https://github.com/ZedThree/jupyter-fortran-kernel/tarball/%(version)s'],
+        'use_pip': True,
+    }),
+    ('jupyter_console', '6.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyter_console/'],
+        'use_pip': True,
+    }),
+    ('jupyterlab_server', '0.3.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/j/jupyterlab_server/'],
+        'use_pip': True,
+    }),
+    ('widgetsnbextension', '3.4.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/w/widgetsnbextension/'],
+        'use_pip': True,
+    }),
+]
+
+modextrapaths = {
+    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+}
+
+sanity_check_paths = {
+    'files': ['bin/jupyterhub'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/jupyterhub'],
+}
+
+sanity_check_commands = ['jupyterhub --help']
+
+moduleclass = 'tools'

+ 34 - 0
foss-2019a/libdap-3.20.3-GCCcore-8.2.0.eb

@@ -0,0 +1,34 @@
+easyblock = 'ConfigureMake'
+
+name = 'libdap'
+version = '3.20.3'
+
+homepage = 'http://opendap.org/download/libdap'
+description = """A C++ SDK which contains an implementation of DAP 2.0
+ and the development versions of DAP3, up to 3.4.
+ This includes both Client- and Server-side support classes."""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = ['http://www.opendap.org/pub/source/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['29961922b53f62e9d4eb34d1d50ddc23a24100664f97b71f42561fa5588ccc58']
+
+builddependencies = [
+    ('binutils', '2.31.1'),
+    ('Bison', '3.0.5'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('cURL', '7.63.0'),
+    ('libxml2', '2.9.8'),
+    ('util-linux', '2.33'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/getdap', 'bin/getdap4', 'bin/dap-config', 'lib/libdap.a', 'lib/libdap.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'lib'

+ 33 - 0
foss-2019a/libgeotiff-1.4.3-GCCcore-8.2.0.eb

@@ -0,0 +1,33 @@
+easyblock = 'ConfigureMake'
+
+name = 'libgeotiff'
+version = '1.4.3'
+
+homepage = 'https://directory.fsf.org/wiki/Libgeotiff'
+description = """Library for reading and writing coordinate system information from/to GeoTIFF files"""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = ['http://download.osgeo.org/geotiff/libgeotiff']
+sources = [SOURCE_TAR_GZ]
+
+builddependencies = [
+    ('binutils', '2.31.1'),
+]
+
+dependencies = [
+    ('zlib', '1.2.11'),
+    ('LibTIFF', '4.0.10'),
+    ('PROJ', '5.2.0'),
+    ('libjpeg-turbo', '2.0.2'),
+]
+
+configopts = ' --with-libtiff=$EBROOTLIBTIFF --with-proj=$EBROOTPROJ --with-zlib=$EBROOTZLIB'
+configopts += ' --with-jpeg=$EBROOTLIBJPEGMINTURBO'
+
+sanity_check_paths = {
+    'files': ['bin/listgeo', 'lib/libgeotiff.a', 'lib/libgeotiff.%s' % SHLIB_EXT],
+    'dirs': ['include', 'share'],
+}
+
+moduleclass = 'lib'

+ 22 - 0
foss-2019a/libiconv-1.16-GCCcore-8.2.0.eb

@@ -0,0 +1,22 @@
+easyblock = 'ConfigureMake'
+
+name = 'libiconv'
+version = '1.16'
+
+homepage = 'https://www.gnu.org/software/libiconv'
+description = "Libiconv converts from one character encoding to another through Unicode conversion"
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCE_TAR_GZ]
+
+builddependencies = [('binutils', '2.31.1')]
+
+sanity_check_paths = {
+    'files': ['bin/iconv', 'include/iconv.h', 'include/libcharset.h', 'include/localcharset.h',
+              'lib/libcharset.a', 'lib/libcharset.%s' % SHLIB_EXT, 'lib/libiconv.%s' % SHLIB_EXT],
+    'dirs': ['share'],
+}
+
+moduleclass = 'lib'

+ 23 - 0
foss-2019a/libmo_unpack-3.1.2-foss-2019a.eb

@@ -0,0 +1,23 @@
+easyblock = 'CMakeMake'
+
+name = 'libmo_unpack'
+version = '3.1.2'
+
+homepage = 'https://github.com/SciTools/libmo_unpack'
+description = """A library for handling the WGDOS and RLE compression schemes used in UM files."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = ['https://github.com/SciTools/libmo_unpack/archive']
+sources = ['v%(version)s.tar.gz']
+
+builddependencies = [('CMake', '3.13.3')]
+
+separate_build_dir = True
+
+sanity_check_paths = {
+    'files': ['lib/libmo_unpack.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 28 - 0
foss-2019a/libsodium-1.0.18-GCCcore-8.2.0.eb

@@ -0,0 +1,28 @@
+easyblock = 'ConfigureMake'
+
+name = 'libsodium'
+version = '1.0.18'
+
+homepage = 'http://doc.libsodium.org/'
+
+description = """
+ Sodium is a modern, easy-to-use software library for encryption, decryption,
+ signatures, password hashing and more.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://download.libsodium.org/libsodium/releases/']
+sources = [SOURCE_TAR_GZ]
+
+builddependencies = [
+    ('binutils', '2.31.1'),
+]
+
+sanity_check_paths = {
+    'files': ['include/sodium.h', 'lib/libsodium.so', 'lib/libsodium.a'],
+    'dirs': ['include/sodium', 'lib/pkgconfig'],
+}
+
+moduleclass = 'lib'

+ 26 - 0
foss-2019a/makedepend-1.0.6-GCCcore-8.2.0.eb

@@ -0,0 +1,26 @@
+easyblock = 'ConfigureMake'
+
+name = 'makedepend'
+version = '1.0.6'
+
+homepage = "http://www.linuxfromscratch.org/blfs/view/svn/x/makedepend.html"
+description = "The makedepend package contains a C-preprocessor like utility to determine build-time dependencies."
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = ['https://www.x.org/archive/individual/util']
+sources = [SOURCE_TAR_GZ]
+checksums = ['845f6708fc850bf53f5b1d0fb4352c4feab3949f140b26f71b22faba354c3365']
+
+builddependencies = [
+    ('binutils', '2.31.1'),
+    ('xproto', '7.0.31'),
+    ('xorg-macros', '1.19.2'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/makedepend'],
+    'dirs': [],
+}
+
+moduleclass = 'devel'

+ 53 - 0
foss-2019a/matplotlib-3.1.0-foss-2019a-Python-3.7.2.eb

@@ -0,0 +1,53 @@
+easyblock = 'PythonBundle'
+
+name = 'matplotlib'
+version = '3.1.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://matplotlib.org'
+description = """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."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.7.2'),
+    ('SciPy-bundle', '2019.03'),
+    ('libpng', '1.6.36'),
+    ('freetype', '2.9.1'),
+    ('Tkinter', '%(pyver)s'),
+]
+
+use_pip = True
+
+exts_list = [
+    ('Cycler', '0.10.0', {
+        'modulename': 'cycler',
+        'source_tmpl': 'cycler-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/C/Cycler'],
+        'checksums': ['cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8'],
+    }),
+    ('kiwisolver', '1.1.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/k/kiwisolver'],
+        'checksums': ['53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75'],
+    }),
+    (name, version, {
+        'prebuildopts': "export CPLUS_INCLUDE_PATH=$EBROOTFREETYPE/include/freetype2:${CPLUS_INCLUDE_PATH} && ",
+        'preinstallopts': "export CPLUS_INCLUDE_PATH=$EBROOTFREETYPE/include/freetype2:${CPLUS_INCLUDE_PATH} && ",
+        'source_urls': ['https://pypi.python.org/packages/source/m/matplotlib'],
+    }),
+]
+
+sanity_check_commands = ["""python -c 'import matplotlib; matplotlib.use("TkAgg"); import matplotlib.pyplot' """]
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+  
+# see https://matplotlib.org/tutorials/introductory/usage.html#what-is-a-backend
+modextravars = {'MPLBACKEND': 'TkAgg'}
+
+moduleclass = 'vis'

+ 46 - 0
foss-2019a/ncview-2.1.7-gompi-2019a.eb

@@ -0,0 +1,46 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2014 The Cyprus Institute
+# Authors:: Thekla Loizou <t.loizou@cyi.ac.cy>
+# License:: MIT/GPL
+#
+##
+easyblock = 'ConfigureMake'
+
+name = 'ncview'
+version = '2.1.7'
+
+homepage = 'http://meteora.ucsd.edu/~pierce/ncview_home_page.html'
+description = """Ncview is a visual browser for netCDF format files. 
+Typically you would use ncview to get a quick and easy, push-button 
+look at your netCDF files. You can view simple movies of the data, 
+view along various dimensions, take a look at the actual data values, 
+change color maps, invert the data, etc."""
+
+toolchain = {'name': 'gompi', 'version': '2019a'}
+toolchainopts = {'opt': True, 'pic': True, 'usempi': True}
+
+source_urls = ['ftp://cirrus.ucsd.edu/pub/ncview/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['a14c2dddac0fc78dad9e4e7e35e2119562589738f4ded55ff6e0eca04d682c82']
+
+# specified compiler is hard checked against (full path to) compiler used for netCDF...
+preconfigopts = "CC=$(which $CC) "
+configopts = "--with-udunits2_incdir=$EBROOTUDUNITS/include --with-udunits2_libdir=$EBROOTUDUNITS/lib "
+configopts += "--with-nc-config=$EBROOTNETCDF/bin/nc-config"
+
+dependencies = [
+    ('netCDF', '4.6.2'),
+    ('netCDF-Fortran', '4.4.5'),
+    ('UDUNITS', '2.2.26'),
+    ('X11', '20190311'),
+    ('zlib', '1.2.11'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/ncview'],
+    'dirs': [],
+}
+
+moduleclass = 'vis'

+ 24 - 0
foss-2019a/netCDF-C++4-4.3.0-foss-2019a.eb

@@ -0,0 +1,24 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.0'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['25da1c97d7a01bc4cee34121c32909872edd38404589c0427fefa1301743f18f']
+
+dependencies = [('netCDF', '4.6.2')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'

+ 28 - 0
foss-2019a/nodejs-8.9.4-foss-2019a.eb

@@ -0,0 +1,28 @@
+easyblock = 'ConfigureMake'
+
+name = 'nodejs'
+version = '8.9.4'
+
+homepage = 'http://nodejs.org'
+
+description = """Node.js is a platform built on Chrome's JavaScript runtime 
+ for easily building fast, scalable network applications. Node.js uses an 
+ event-driven, non-blocking I/O model that makes it lightweight and efficient, 
+ perfect for data-intensive real-time applications that run across distributed devices."""
+
+toolchain = {'name': 'foss', 'version': '2019a'}
+toolchainopts = {'lowopt': True}
+
+sources = ['node-v%(version)s.tar.gz']
+source_urls = ['http://nodejs.org/dist/v%(version)s/']
+checksums = ['729b44b32b2f82ecd5befac4f7518de0c4e3add34e8fe878f745740a66cbbc01']
+
+# Python is required (only) as build dependency
+allow_system_deps = [('Python', SYS_PYTHON_VERSION)]
+
+sanity_check_paths = {
+    'files': ["bin/node", "bin/npm"],
+    'dirs': ["lib/node_modules", "include/node"]
+}
+
+moduleclass = 'lang'

+ 30 - 0
foss-2019a/xproto-7.0.31-GCCcore-8.2.0.eb

@@ -0,0 +1,30 @@
+easyblock = 'ConfigureMake'
+
+name = 'xproto'
+version = '7.0.31'
+
+homepage = "http://www.freedesktop.org/wiki/Software/xlibs"
+description = "X protocol and ancillary headers"
+
+toolchain = {'name': 'GCCcore', 'version': '8.2.0'}
+
+source_urls = [XORG_PROTO_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['6d755eaae27b45c5cc75529a12855fed5de5969b367ed05003944cf901ed43c7']
+
+builddependencies = [
+    # use same binutils version that was used when building GCC toolchain
+    ('binutils', '2.31.1'),
+    ('xorg-macros', '1.19.2'),
+]
+
+sanity_check_paths = {
+    'files': ['include/X11/%s' % x for x in ['ap_keysym.h', 'HPkeysym.h', 'keysym.h', 'Xalloca.h', 'Xatom.h',
+                                             'XF86keysym.h', 'Xfuncs.h', 'Xmd.h', 'Xos.h', 'Xpoll.h', 'Xprotostr.h',
+                                             'Xw32defs.h', 'Xwindows.h', 'DECkeysym.h', 'keysymdef.h', 'Sunkeysym.h',
+                                             'Xarch.h', 'Xdefs.h', 'Xfuncproto.h', 'X.h', 'Xosdefs.h', 'Xos_r.h',
+                                             'Xproto.h', 'Xthreads.h', 'XWDFile.h', 'Xwinsock.h']],
+    'dirs': []
+}
+
+moduleclass = 'devel'