diff --git a/Custom_Hooks/eb_hooks.py b/Custom_Hooks/eb_hooks.py
new file mode 100644
index 0000000000000000000000000000000000000000..456645f44032314930fb704bbafe5de2b63a544b
--- /dev/null
+++ b/Custom_Hooks/eb_hooks.py
@@ -0,0 +1,238 @@
+import grp
+import os
+
+from easybuild.tools.run import run_cmd
+from easybuild.tools.config import build_option
+from easybuild.tools.config import install_path
+from easybuild.tools.build_log import EasyBuildError, print_warning
+from easybuild.tools.toolchain.toolchain import SYSTEM_TOOLCHAIN_NAME
+from easybuild.toolchains.compiler.systemcompiler import TC_CONSTANT_SYSTEM
+
+SUPPORTED_COMPILERS = ["GCC", "iccifort", "PGI", "GCCcore"]
+SUPPORTED_MPIS = ["impi", "psmpi", "OpenMPI", "MVAPICH2"]
+# Maintain toplevel list for easy use of --try-toolchain
+SUPPORTED_TOPLEVEL_TOOLCHAIN_FAMILIES = [
+    "intel",
+    "intel-para",
+    "iomkl",
+    "gpsmkl",
+    "gomkl",
+    "pmvmklc",
+    "gmvmklc",
+]
+# Could potentially make a dictionary of names and supported versions here but that is
+# probably overkill
+SUPPORTED_TOOLCHAIN_FAMILIES = (
+    SUPPORTED_COMPILERS
+    + ["gcccoremkl", "gpsmpi", "ipsmpi", "iimpi", "iompi", "gmvapich2c", "pmvapich2c"]
+    + SUPPORTED_TOPLEVEL_TOOLCHAIN_FAMILIES
+)
+# Also maintain a list of CUDA enabled compilers
+CUDA_ENABLED_TOOLCHAINS = ["pmvmklc", "gmvmklc", "gmvapich2c", "pmvapich2c"]
+# Use this for a heuristic to see if the easyconfig comes from the Golden Repo
+GOLDEN_REPO = "Golden_Repo"
+
+# Some modules should use modaltsoftname by default
+REQUIRE_MODALTSOFTNAME = {
+    "impi": "IntelMPI",
+    "psmpi": "ParaStationMPI",
+    "iccifort": "Intel",
+}
+
+
+def parse_hook(ec, *args, **kwargs):
+    """Custom parse hook to manage installations intended for JSC systems."""
+
+    ec_dict = ec.asdict()
+    # Compilers are are a family (in the Lmod sense)
+    if ec.name in SUPPORTED_COMPILERS:
+        key = "modluafooter"
+        value = 'family("compiler")'
+        if key in ec_dict:
+            if not value in ec_dict[key]:
+                ec[key] = "\n".join([ec[key], value])
+        else:
+            ec[key] = value
+        ec.log.info("[parse hook] Injecting Lmod compiler family")
+        # Supported compilers should also be recursively unloaded
+        key = "recursive_module_unload"
+        if not key in ec_dict or ec_dict[key] is None:
+            ec[key] = True
+            ec.log.info(
+                "[parse hook] Injecting recursive module unloading for supported compiler"
+            )
+    # MPI are are a family (in the Lmod sense)
+    if ec.name in SUPPORTED_MPIS:
+        key = "modluafooter"
+        value = 'family("mpi")'
+        if key in ec_dict:
+            if not value in ec_dict[key]:
+                ec[key] = "\n".join([ec[key], value])
+        else:
+            ec[key] = value
+        ec.log.info("[parse hook] Injecting Lmod mpi family")
+
+    # Check if we need to use 'modaltsoftname'
+    if ec.name in REQUIRE_MODALTSOFTNAME:
+        key = "modaltsoftname"
+        if not key in ec_dict or ec_dict[key] is None:
+            ec[key] = REQUIRE_MODALTSOFTNAME[ec.name]
+            ec.log.info(
+                "[parse hook] Injecting modaltsoftname '%s' for '%s'",
+                key,
+                REQUIRE_MODALTSOFTNAME[ec.name],
+            )
+
+    # Check if CUDA is in the dependencies, if so add the GPU Lmod tag
+    if (
+        "CUDA" in [dep[0] for dep in iter(ec_dict["dependencies"])]
+        or ec_dict["toolchain"]["name"] in CUDA_ENABLED_TOOLCHAINS
+    ):
+        key = "modluafooter"
+        value = 'add_property("arch","gpu")'
+        if key in ec_dict:
+            if not value in ec_dict[key]:
+                ec[key] = "\n".join([ec_dict[key], value])
+        else:
+            ec[key] = value
+        ec.log.info("[parse hook] Injecting gpu as Lmod arch property")
+
+    # Check where installations are going to go and add appropriate site contact
+    # not sure of a fool-proof way to do this, let's just try a heuristic
+    site_contacts = None
+    if "stages" in install_path().lower():
+        users_groups = [grp.getgrgid(g).gr_name for g in os.getgroups()]
+        if any(group in user_groups for group in ["swmanage", "software"]):
+            site_contacts = "sc@fz-juelich.de"
+    if site_contacts is None:
+        # Inject the user
+        site_contacts = os.getenv("USER")
+        # Tag the build as a user build
+        key = "modluafooter"
+        value = 'add_property("build","user")'
+        if key in ec_dict:
+            if not value in ec_dict[key]:
+                ec[key] = "\n".join([ec_dict[key], value])
+        else:
+            ec[key] = value
+        ec.log.info("[parse hook] Injecting user as Lmod build property")
+    if site_contacts:
+        key = "site_contacts"
+        value = site_contacts
+        if key in ec_dict:
+            if ec_dict[key] is not None and value not in ec_dict[key]:
+                value = ",".join([ec_dict[key], value])
+        ec[key] = value
+        ec.log.info("[parse hook] Injecting contact %s", value)
+
+    # If we are parsing we are not searching, in this case if the easyconfig is
+    # located in the search path, warn that it's dependencies will (most probably)
+    # not be resolved
+    if build_option("robot"):
+        search_paths = build_option("search_paths") or []
+        robot_paths = list(set(build_option("robot_path") + build_option("robot")))
+        if ec.path:
+            ec_dir_path = os.path.dirname(os.path.abspath(ec.path))
+        else:
+            ec_dir_path = ''
+        if any(search_path in ec_dir_path for search_path in search_paths) and not any(
+            robot_path in ec_dir_path for robot_path in robot_paths
+        ):
+            raise EasyBuildError(
+                "\nYou are attempting to install an easyconfig distributed with "
+                "EasyBuild but are not properly configured to resolve dependencies "
+                "for this case. Please add additonal options:\n"
+                "  eb --robot=$EASYBUILD_ROBOT:$EBROOTEASYBUILD/easybuild/easyconfigs --try-update-deps ...."
+            )
+
+
+def pre_ready_hook(self, *args, **kwargs):
+    "When we are building something, do some checks for bad behaviour"
+    ec = self.cfg
+    # Grab name, path, toolchain, install path and check if we are installing
+    # GCCcore/MPI
+    name = ec["name"]
+    path_to_ec = os.path.abspath(ec.path)
+    toolchain = ec["toolchain"]
+    is_gcccore = ec["name"] == "GCCcore"
+    is_mpi = ec["moduleclass"] == "mpi" or name in SUPPORTED_MPIS
+
+    # Don't let people use unsupported toolchains (by default)
+    override_toolchain_check = os.getenv("JSC_OVERRIDE_TOOLCHAIN_CHECK")
+    if not override_toolchain_check:
+        toolchain_name = toolchain["name"]
+        if not toolchain_name in SUPPORTED_TOOLCHAIN_FAMILIES:
+            stage = os.getenv("STAGE", default=None)
+            if stage:
+                # Clean things up if it is a Devel stage
+                stage = stage.replace("Devel-", "")
+            else:
+                stage = "<TOOLCHAIN_VERSION>"
+            print_warning(
+                "\nYou are attempting to install software with an unsupported "
+                "toolchain (%s), please use additional arguments to map this to a supported"
+                " toolchain:\n"
+                " eb --try-toolchain=<SUPPORTED_TOOLCHAIN>,%s --try-update-deps ...\n"
+                "where <SUPPORTED_TOOLCHAIN> comes from the list %s\n"
+                "(if you really know what you are doing, you can override this "
+                "behaviour by setting the %s environment variable)\n\n"
+                "...exiting",
+                toolchain_name,
+                stage,
+                SUPPORTED_TOPLEVEL_TOOLCHAIN_FAMILIES,
+                "JSC_OVERRIDE_TOOLCHAIN_CHECK",
+            )
+            exit(1)
+
+    # Don't let people install GCCcore since this probably won't work and will lead them
+    # to reinstall most of our stack. Don't advertise that this can be overridden, only
+    # experts should know that.
+    override_gcccore_check = os.getenv("JSC_OVERRIDE_GCCCORE_CHECK")
+    if not override_gcccore_check:
+        if is_gcccore and not "stages" in install_path().lower():
+            print_warning(
+                "\nYou are attempting to install GCCcore (%s) into a non-system "
+                "location (%s), this won't work as expected without additional effort "
+                "and is likely to lead to building a whole stack of dependencies even "
+                "for simple software. Please contact sc@fz-juelich.de if you wish to "
+                "discuss this further.\n\n"
+                "...exiting",
+                path_to_ec,
+                install_path(),
+            )
+            exit(1)
+
+    # Don't let people install a non-JSC MPI (and don't advertise that this can be
+    # overridden, only experts should know that)
+    override_mpi_check = os.getenv("JSC_OVERRIDE_MPI_CHECK")
+    if not override_mpi_check:
+        if is_mpi and GOLDEN_REPO not in path_to_ec:
+            print_warning(
+                "\nYou are attempting to install a non-system MPI implementation (%s), "
+                "this is very likely to lead to severe performance degradation. Please "
+                "contact sc@fz-juelich.de if you wish to discuss this further.\n\n"
+                "...exiting",
+                path_to_ec,
+            )
+            exit(1)
+
+
+def end_hook(*args, **kwargs):
+    # If the user is part of the development group and the installation is systemwide, 
+    # rebuild the system cache
+    "Refresh Lmod's cache"
+
+    if "stages" in install_path().lower():
+        user = os.getenv("USER")
+        if user == "swmanage":
+            cmd = (
+                "/gpfs/software/juwels/configs/update_system_module_cache.sh"
+            )  # Need to make this generic
+            if os.path.isfile(cmd):
+                print("== Refreshing Lmod's cache...")
+                run_cmd(cmd, log_all=True)
+    else:
+        # Otherwise do nothing, no need to build a user cache, it's very unlikely they 
+        # will have loads of modules
+        pass
+
diff --git a/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb
index 213c01ad8ff911f480f2ecc0e510968d77524b93..ee3ab68467797446a6bae0c3278ff2f2c11bbc0a 100644
--- a/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb
+++ b/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb
@@ -25,7 +25,7 @@ builddependencies = [
 ]
 
 dependencies = [
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
     ('Python', '3.8.5'),
 ]
 
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.7.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.7.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e917f93387fa7c3738b0b532a9f7e2b4d700ce70
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.7.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb
@@ -0,0 +1,56 @@
+easyblock = 'ConfigureMake'
+
+name = 'ARPACK-NG'
+version = '3.7.0'
+versionsuffix = '-nompi'
+
+homepage = 'http://forge.scilab.org/index.php/p/arpack-ng/'
+description = """ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.
+
+libarpack.a and libparpack.a have been installed in $EBROOTARPACKMINNG.
+
+In addition the variables ARPACK_ROOT, ARPACK_LIB, PARPACK_ROOT, and PARPACK_LIB are set.
+"""
+
+examples = 'Examples can be found in $ARPACK_ROOT/EXAMPLES'
+
+site_contacts = 'I. Gutheil (i.gutheil@fz-juelich.de)'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'opt': True, 'optarch': True, 'pic': True}
+
+source_urls = ['https://github.com/opencollab/arpack-ng/archive/']
+sources = ["%(version)s.tar.gz"]
+checksums = ['972e3fc3cd0b9d6b5a737c9bf6fd07515c0d6549319d4ffb06970e64fa3cc2d6']
+
+patches = [
+    'ARPACK-NG-%(version)s-install-arpack-examples_gpsmkl.patch'
+]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Autotools', '20200321'),
+    ('pkg-config', '0.29.2')
+]
+
+# We hide it since this should be used just for Jupyter and the MPI version should be preferred for normal cases
+hidden = True
+
+preconfigopts = 'sh bootstrap &&'
+configopts = '--with-pic --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"'
+
+postinstallcmds = [
+    "cp -r EXAMPLES %(installdir)s/EXAMPLES",
+]
+
+sanity_check_paths = {
+    'files': ["lib/libarpack.a", "lib/libarpack.%s" % SHLIB_EXT, ],
+    'dirs': []
+}
+
+modextravars = {
+    'ARPACK_ROOT': '%(installdir)s',
+    'ARPACK_LIB': '%(installdir)s/lib',
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/a/ant/ant-1.10.9-Java-15.eb b/Golden_Repo/a/ant/ant-1.10.9-Java-15.eb
new file mode 100644
index 0000000000000000000000000000000000000000..299ccd4b4fc08db690844212a670ba2a73e422e1
--- /dev/null
+++ b/Golden_Repo/a/ant/ant-1.10.9-Java-15.eb
@@ -0,0 +1,29 @@
+easyblock = 'PackedBinary'
+
+name = 'ant'
+version = '1.10.9'
+versionsuffix = '-Java-%(javaver)s'
+
+homepage = 'https://ant.apache.org/'
+description = """Apache Ant is a Java library and command-line tool whose mission is to drive processes described in
+ build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of
+ Java applications."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = ['https://archive.apache.org/dist/ant/binaries/']
+sources = ['apache-%(name)s-%(version)s-bin.tar.gz']
+checksums = ['5f8a85ddee6effe79163aa54c7bef6b60305e37200dedc1986437fb5c072a9f3']
+
+dependencies = [('Java', '15')]
+
+sanity_check_paths = {
+    'files': ['bin/ant', 'lib/ant.jar'],
+    'dirs': [],
+}
+
+modextravars = {'ANT_HOME': '%(installdir)s'}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/b/basemap/basemap-1.2.2-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/b/basemap/basemap-1.2.2-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6892be2a0c371d4eb9e0ac43ac9ab14a297a97f5
--- /dev/null
+++ b/Golden_Repo/b/basemap/basemap-1.2.2-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,50 @@
+easyblock = 'Bundle'
+
+name = 'basemap'
+version = '1.2.2'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://matplotlib.org/basemap/'
+description = """Basemap is a Python matplotlib toolkit for plotting data on maps.
+
+This is the last version of Basemap. Please move development efforts over to Cartopy!
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('SciPy-Stack', '2020', versionsuffix),
+    ('GEOS', '3.8.1', versionsuffix),
+    ('PROJ', '7.1.0'),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_filter = ('python -c "import %(ext_name)s"', '')
+exts_download_dep_fail = True
+
+exts_list = [
+    ('pyshp', '2.1.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pyshp'],
+        'modulename': 'shapefile',
+    }),
+    ('pyproj', '2.6.1.post1', {  # PyProj 3 needs PROJ 7.2.0, which was released after PROJ went into production
+        'source_urls': ['https://pypi.python.org/packages/source/p/pyproj'],
+        'prebuildopts': 'PROJ_DIR="$EBROOTPROJ" ',
+        'preinstallopts': 'PROJ_DIR="$EBROOTPROJ" ',
+    }),
+    ('basemap', '1.2.2', {
+        'source_urls': ['https://github.com/matplotlib/basemap/archive/'],
+        'source_tmpl': 'v%(version)srel.tar.gz',
+        'prebuildopts': 'GEOS_DIR="$EBROOTGEOS" ',
+        'preinstallopts': 'GEOS_DIR="$EBROOTGEOS" ',
+        'modulename': 'mpl_toolkits.basemap',
+    }),
+]
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/c/Cartopy/Cartopy-0.18.0-gpsmpi-2020-Python-3.8.5.eb b/Golden_Repo/c/Cartopy/Cartopy-0.18.0-gpsmpi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aeeee5746469ce1e28ac97d2d2d0a4536d986254
--- /dev/null
+++ b/Golden_Repo/c/Cartopy/Cartopy-0.18.0-gpsmpi-2020-Python-3.8.5.eb
@@ -0,0 +1,49 @@
+easyblock = 'PythonBundle'
+
+name = 'Cartopy'
+version = '0.18.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://scitools.org.uk/cartopy/docs/latest/'
+description = """Cartopy is a Python package designed to make drawing maps for data analysis and visualisation easy."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Fiona', '1.8.16', versionsuffix),
+    ('GDAL', '3.1.2', versionsuffix),
+    ('GEOS', '3.8.1', versionsuffix),
+    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('pyproj', '2.6.1.post1', versionsuffix),
+    ('Shapely', '1.7.1', versionsuffix),
+    ('PROJ', '7.1.0'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    ('OWSLib', '0.20.0', {
+        'checksums': ['334988857b260c8cdf1f6698d07eab61839c51acb52ee10eed1275439200a40e'],
+    }),
+    ('pyepsg', '0.4.0', {
+        'checksums': ['2d08fad1e7a8b47a90a4e43da485ba95705923425aefc4e2a3efa540dbd470d7'],
+    }),
+    ('pykdtree', '1.3.1', {
+        'checksums': ['0d49d3bbfa0366dbe29176754ec86df75114a25525b530dcbbb75d3ac4c263e9'],
+    }),
+    ('pyshp', '2.1.0', {
+        'modulename': 'shapefile',
+        'checksums': ['e65c7f24d372b97d0920b864bbeb78322bb37b83f2606e2a2212631d5d51e5c0'],
+    }),
+    (name, version, {
+        'checksums': ['7ffa317e8f8011e0d965a3ef1179e57a049f77019867ed677d49dcc5c0744434'],
+    }),
+]
+
+moduleclass = 'geo'
diff --git a/Golden_Repo/c/cppcheck/cppcheck-2.2-GCCcore-9.3.0.eb b/Golden_Repo/c/cppcheck/cppcheck-2.2-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a9c8a8dc2a70edc8681c36946c8e69e436baedb4
--- /dev/null
+++ b/Golden_Repo/c/cppcheck/cppcheck-2.2-GCCcore-9.3.0.eb
@@ -0,0 +1,29 @@
+easyblock = 'CMakeMake'
+name = 'cppcheck'
+version = '2.2'
+
+homepage = 'http://cppcheck.sourceforge.net/'
+description = """Cppcheck is a static analysis tool for C/C++ code"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = ['%(name)s-%(version)s.tar.bz2']
+
+dependencies = [
+    ('binutils', '2.34'),
+    ('Qt5', '5.14.2'),
+    ('PCRE', '8.44'),
+    ('CMake', '3.18.0'),
+]
+
+configopts = '-DUSE_Z3:BOOL=OFF'
+
+sanity_check_paths = {
+    'files': ['bin/cppcheck'],
+    'dirs': [],
+}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8fcf4a476aaa2078f73c1e5450461c9a9757b67b
--- /dev/null
+++ b/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,64 @@
+easyblock = 'Bundle'
+
+name = 'distributed'
+version = '2.30.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://distributed.readthedocs.io/'
+description = """Dask.distributed is a lightweight library for distributed computing in Python.
+ It extends both the concurrent.futures and dask APIs to moderate sized clusters."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('dask', '2.22.0', versionsuffix),
+    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+]
+
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'sanity_pip_check': True,
+}
+
+exts_list = [
+    ('zict', '2.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/z/zict'],
+        'source_tmpl': 'zict-%(version)s.tar.gz',
+    }),
+    ('HeapDict', '1.0.1', {
+        'modulename': 'heapdict',
+        'source_urls': ['https://pypi.python.org/packages/source/H/HeapDict'],
+    }),
+    ('tornado', '5.0.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/tornado'],
+    }),
+    ('tblib', '1.7.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/tblib'],
+    }),
+    ('msgpack', '1.0.0', {
+        'modulename': 'msgpack',
+        'source_urls': ['https://pypi.python.org/packages/source/m/msgpack'],
+    }),
+    ('sortedcontainers', '2.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/s/sortedcontainers'],
+    }),
+    (name, version, {
+        'source_urls': ['https://pypi.python.org/packages/source/d/distributed'],
+    }),
+]
+
+sanity_check_paths = {
+    'files': ['bin/dask-scheduler', 'bin/dask-ssh', 'bin/dask-worker'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/f/FFTW/FFTW-3.3.8-GCCcore-9.3.0-nompi.eb b/Golden_Repo/f/FFTW/FFTW-3.3.8-GCCcore-9.3.0-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..62f5c8bd660de89ea0d6ccb047c13a5cb0bb6fa8
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.8-GCCcore-9.3.0-nompi.eb
@@ -0,0 +1,44 @@
+name = 'FFTW'
+version = '3.3.8'
+versionsuffix = '-nompi'
+
+homepage = 'http://www.fftw.org'
+description = """FFTW is a C subroutine library for computing the discrete
+Fourier transform (DFT) in one or more dimensions, of arbitrary input size,
+and of both real and complex data."""
+
+site_contacts = 'i.gutheil@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303']
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+# We hide it since this should be used just for Jupyter and the MPI version should be preferred for normal cases
+hidden = True
+
+# no quad precision, requires GCC v4.6 or higher
+# see also
+# http://www.fftw.org/doc/Extended-and-quadruple-precision-in-Fortran.html
+with_quad_prec = True
+
+# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
+# because Intel compilers do not support FMA4 instructions
+use_fma4 = True
+
+# can't find mpirun/mpiexec and fails
+# runtest = 'check'
+
+modextravars = {
+    'FFTW_ROOT': '%(installdir)s',
+    'FFTW_INCLUDE': '%(installdir)s/include',
+    'FFTW_LIB': '%(installdir)s/lib',
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/f/FFTW/FFTW-3.3.8-ipsmpi-2020-mt.eb b/Golden_Repo/f/FFTW/FFTW-3.3.8-ipsmpi-2020-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ec54be2c15a4b1e054dc17e1d5c53fc2b79d4150
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.8-ipsmpi-2020-mt.eb
@@ -0,0 +1,42 @@
+name = 'FFTW'
+version = '3.3.8'
+
+homepage = 'http://www.fftw.org'
+description = """FFTW is a C subroutine library for computing the discrete
+Fourier transform (DFT) in one or more dimensions, of arbitrary input size,
+and of both real and complex data."""
+
+site_contacts = 'i.gutheil@fz-juelich.de'
+
+toolchain = {'name': 'ipsmpi', 'version': '2020-mt'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = [SOURCELOWER_TAR_GZ]
+
+# See https://github.com/FFTW/fftw3/commit/10e2040af822a08ed49d2f6a1db45a7a3ad50582
+patches = ['fftw_no-gcc-intel_2020.patch']
+
+checksums = [
+    '6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303',
+    'f226cc6dbdc9d11d4340567ef3227d78284c4dc44b8e63c3901a079aa9527da6'
+]
+
+# no quad precision, requires GCC v4.6 or higher
+# see also
+# http://www.fftw.org/doc/Extended-and-quadruple-precision-in-Fortran.html
+with_quad_prec = False
+
+# Intel compilers do not support FMA4 instructions
+use_fma4 = False
+
+# can't find mpirun/mpiexec and fails
+# runtest = 'check'
+
+modextravars = {
+    'FFTW_ROOT': '%(installdir)s',
+    'FFTW_INCLUDE': '%(installdir)s/include',
+    'FFTW_LIB': '%(installdir)s/lib',
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/f/Fiona/Fiona-1.8.16-gpsmpi-2020-Python-3.8.5.eb b/Golden_Repo/f/Fiona/Fiona-1.8.16-gpsmpi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ada1c48ea2f5913390314432c8e10b2c825a3db4
--- /dev/null
+++ b/Golden_Repo/f/Fiona/Fiona-1.8.16-gpsmpi-2020-Python-3.8.5.eb
@@ -0,0 +1,50 @@
+easyblock = 'PythonBundle'
+
+name = 'Fiona'
+version = '1.8.16'
+versionsuffix = "-Python-%(pyver)s"
+
+homepage = 'https://github.com/Toblerity/Fiona'
+description = """Fiona is designed to be simple and dependable. It focuses on reading and writing data
+in standard Python IO style and relies upon familiar Python types and protocols such as files, dictionaries,
+mappings, and iterators instead of classes specific to OGR. Fiona can read and write real-world data using
+multi-layered GIS formats and zipped virtual file systems and integrates readily with other Python GIS
+packages such as pyproj, Rtree, and Shapely."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('GDAL', '3.1.2', versionsuffix),
+    ('Shapely', '1.7.1', versionsuffix),  # optional
+]
+
+use_pip = True
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    ('cligj', '0.5.0', {
+        'checksums': ['6c7d52d529a78712491974f975c33473f430c0f7beb18c0d7a402a743dcb460a'],
+    }),
+    ('click-plugins', '1.1.1', {
+        'checksums': ['46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b'],
+    }),
+    ('munch', '2.5.0', {
+        'checksums': ['2d735f6f24d4dba3417fa448cae40c6e896ec1fdab6cdb5e6510999758a4dbd2'],
+    }),
+    (name, version, {
+        'checksums': ['fd6dfb65959becc916e9f6928618bfd59c16cdbc413ece0fbac61489cd11255f'],
+    }),
+]
+
+sanity_pip_check = True
+
+sanity_check_paths = {
+    'files': ['bin/fio'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb b/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb
index 30786b3f7a2f1341cfef22b6241b3a0b55fb2c6c..0801b3b3e9789ea0f80f72f017509934c18b24fb 100644
--- a/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb
+++ b/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb
@@ -35,7 +35,7 @@ dependencies = [
     ('HDF5', '1.10.6'),
     ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
     ('libvdwxc', '0.4.0'),
-    ('GPAW-setups', '0.9.20000', '', True),
+    ('GPAW-setups', '0.9.20000', '', SYSTEM),
 ]
 
 preconfigopts = 'export MKL_ROOT=$MKLROOT && '
diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb
index 78e0e5ebffd41e5d70075fe1d944895f0dade8eb..3e66180645f0ffc436de682571f484d7f0f54e7b 100644
--- a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb
+++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb
@@ -48,7 +48,7 @@ builddependencies = [
 
 # Removed ('hwloc', '2.0.3') from dependencies due to runtime failures.
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
 ]
 
 configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24" '
diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb
index 60a7ecd70b79c667cc4ed992596c8104c8486a74..f8f204c652c3acc104ad549907e3fc8ce50f8abd 100644
--- a/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb
+++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb
@@ -47,7 +47,7 @@ builddependencies = [
 
 # Removed ('hwloc', '2.0.3') from dependencies due to runtime failures.
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
 ]
 
 configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24"'
diff --git a/Golden_Repo/g/GSL/GSL-2.6-GCCcore-9.3.0.eb b/Golden_Repo/g/GSL/GSL-2.6-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fd66530a9250d41f6b71b93581b355da88ee294c
--- /dev/null
+++ b/Golden_Repo/g/GSL/GSL-2.6-GCCcore-9.3.0.eb
@@ -0,0 +1,24 @@
+easyblock = 'ConfigureMake'
+
+name = 'GSL'
+version = '2.6'
+
+homepage = 'http://www.gnu.org/software/gsl/'
+description = """The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers.
+ The library provides a wide range of mathematical routines such as random number generators, special functions
+ and least-squares fitting.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'opt': True, 'optarch': True, 'unroll': True, 'pic': True}
+
+builddependencies = [('binutils', '2.34')]
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+configopts = "--with-pic"
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb b/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb
index 10741d030f3611b43505166f1910ed4083a6f54b..973ed942e553d3b8bcc8366b05b7a1e938921277 100644
--- a/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb
+++ b/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb
@@ -37,7 +37,7 @@ dependencies = [
     ('Ghostscript', '9.52'),
     ('GLib', '2.64.4'),
     ('GTS', '0.7.6'),
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
     ('libpng', '1.6.37'),
     ('librsvg', '2.48.8'),
     ('Pango', '1.44.7'),
diff --git a/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb b/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb
index 4901086ff29cb198c3dedc7b9c47fc410b8bb1bd..8a73818e9690d6b87797922e0cd3fba7d7d3708c 100644
--- a/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb
+++ b/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb
@@ -19,9 +19,9 @@ local_comp = (local_comp_name, local_comp_version)
 dependencies = [
     local_comp,
     ('binutils', '2.34', '', local_comp),
-    ('imkl', local_mklver, '', True),
+    ('imkl', local_mklver, '', SYSTEM),
 ]
 
-hiddendependencies = [('imkl', local_mklver, '', True)]
+hiddendependencies = [('imkl', local_mklver, '', SYSTEM)]
 
 moduleclass = 'toolchain'
diff --git a/Golden_Repo/h/HDF/HDF-4.2.15-GCC-9.3.0.eb b/Golden_Repo/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
index 347165359d20775aa70bc8e1f71f75f8b88edf01..6d7aa30ea9f519149816b1dddc4a2b38df2dabe4 100644
--- a/Golden_Repo/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
+++ b/Golden_Repo/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -30,7 +31,8 @@ source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.s
 
 preconfigopts = 'export CPATH="/usr/include/tirpc:$CPATH" && '
 preconfigopts += 'export LIBS="-ltirpc $LIBS" && '
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 prebuildopts = 'export CPATH="/usr/include/tirpc:$CPATH" && '
 
diff --git a/Golden_Repo/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb b/Golden_Repo/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
index b63df713c01a118cea327c4cdce40ca1edab824d..437dc04eaf54f04616c25eda39085499a44fe6ed 100644
--- a/Golden_Repo/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
+++ b/Golden_Repo/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -30,7 +31,8 @@ source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.s
 
 preconfigopts = 'export CPATH="/usr/include/tirpc:$CPATH" && '
 preconfigopts += 'export LIBS="-ltirpc $LIBS" && '
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 prebuildopts = 'export CPATH="/usr/include/tirpc:$CPATH" && '
 
diff --git a/Golden_Repo/h/HDF5/HDF5-1.10.6-GCCcore-9.3.0-serial.eb b/Golden_Repo/h/HDF5/HDF5-1.10.6-GCCcore-9.3.0-serial.eb
index bb2213c8207dc83822f5eed5345b76a32ee37546..4e9795c14cfea61c371e6345370c9b51db261870 100644
--- a/Golden_Repo/h/HDF5/HDF5-1.10.6-GCCcore-9.3.0-serial.eb
+++ b/Golden_Repo/h/HDF5/HDF5-1.10.6-GCCcore-9.3.0-serial.eb
@@ -20,6 +20,7 @@ checksums = ['5f9a3ee85db4ea1d3b1fa9159352aebc2af72732fc2f58c96a3f0768dba0e9aa']
 
 builddependencies = [
     ('binutils', '2.34'),
+    ('Java', '15', '', SYSTEM)
 ]
 
 dependencies = [
@@ -27,4 +28,6 @@ dependencies = [
     ('Szip', '2.1.1'),
 ]
 
+configopts = '--enable-java'
+
 moduleclass = 'data'
diff --git a/Golden_Repo/h/HDFView/HDFView-2.14-GCC-9.3.0.eb b/Golden_Repo/h/HDFView/HDFView-2.14-GCC-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1b24781cf8f543eff5bafa69cde65b7c5a7e8d58
--- /dev/null
+++ b/Golden_Repo/h/HDFView/HDFView-2.14-GCC-9.3.0.eb
@@ -0,0 +1,46 @@
+easyblock = 'PackedBinary'
+
+name = 'HDFView'
+version = '3.1.1'
+
+homepage = 'https://www.hdfgroup.org/products/java/'
+description = """The HDF Java Products consist of HDFView (a Java browser for HDF4 and HDF5 files) and the HDF-Java wrappers.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCC', 'version': '9.3.0'}
+
+source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfview-%(version)s/src/']
+sources = ['%(namelower)s-%(version)s.tar.gz']
+
+builddependencies = [
+    ('ant', '1.10.9', '-Java-%(javaver)s', SYSTEM),
+]
+
+dependencies = [
+    ('Java', '15', '', SYSTEM),
+    ('HDF', '4.2.15'),
+    ('HDF5', '1.10.6', '-serial'),
+]
+
+install_cmd = (
+    # build HDFView
+    'export HDFLIBS=$EBROOTHDF && '
+    'export HDF5LIBS=$EBROOTHDF5 && '
+    'cd %(builddir)s/hdfview-%(version)s && '
+    'ant run && '
+    'ant package && '
+    'tar -xzf build/dist/HDFView-%(version)s-Linux-x86_64.tar.gz && '
+    # install HDFView
+    'cd %(installdir)s && '
+    '%(builddir)s/hdfview-%(version)s/build/dist/HDFView-%(version)s-Linux.sh --skip-license && '
+    'mv %(installdir)s/HDFView/%(version)s/* %(installdir)s && '
+    'mkdir %(installdir)s/bin && '
+    'mv %(installdir)s/hdfview.sh %(installdir)s/bin/ && '
+    'ln -s %(installdir)s/bin/hdfview.sh %(installdir)s/bin/hdfview && '
+    "sed -i 's#JAVABIN=.*#JAVABIN=$JAVA_HOME/bin#g' %(installdir)s/bin/hdfview.sh && "
+    'sed -i "s#INSTALLDIR=.*#INSTALLDIR=%(installdir)s#g" %(installdir)s/bin/hdfview.sh '
+)
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-Python-3.8.5.eb b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5f3d9fc6fdf60bf759e5bb4aa7c3a98eb7d8bed6
--- /dev/null
+++ b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-Python-3.8.5.eb
@@ -0,0 +1,101 @@
+# on juwels booster, one needs to call "export UCX_LOG_LEVEL=FATAL ebw ...
+
+easyblock = 'PythonBundle'
+
+name = 'Horovod'
+version = '0.20.3'
+local_tf_version = '2.3.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/uber/horovod'
+description = "Horovod is a distributed training framework for TensorFlow and PyTorch."
+
+toolchain = {'name': 'gomkl', 'version': '2020'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+]
+dependencies = [
+    ('Python', '3.8.5'),
+    ('TensorFlow', local_tf_version, '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('UCX', '1.9.0', '', SYSTEM),  # Forced because default was 1.8.1. If the default is 1.9.0, this can go away
+    ('PyTorch', '1.7.0', '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('NCCL', '2.8.3-1', '-CUDA-11.0'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# possible vars:
+# HOROVOD_BUILD_ARCH_FLAGS - additional C++ compilation flags to pass in for your build architecture.
+# HOROVOD_CUDA_HOME - path where CUDA include and lib directories can be found.
+# HOROVOD_BUILD_CUDA_CC_LIST - List of compute capabilities to build Horovod CUDA
+# kernels for (example: HOROVOD_BUILD_CUDA_CC_LIST=60,70,75)
+# HOROVOD_ROCM_HOME - path where ROCm include and lib directories can be found.
+# HOROVOD_NCCL_HOME - path where NCCL include and lib directories can be found.
+# HOROVOD_NCCL_INCLUDE - path to NCCL include directory.
+# HOROVOD_NCCL_LIB - path to NCCL lib directory.
+# HOROVOD_NCCL_LINK - {SHARED, STATIC}. Mode to link NCCL library. Defaults to STATIC for CUDA, SHARED for ROCm.
+# HOROVOD_WITH_GLOO - {1}. Require that Horovod is built with Gloo support enabled.
+# HOROVOD_WITHOUT_GLOO - {1}. Skip building with Gloo support.
+# HOROVOD_WITH_MPI - {1}. Require that Horovod is built with MPI support enabled.
+# HOROVOD_WITHOUT_MPI - {1}. Skip building with MPI support.
+# HOROVOD_GPU - {CUDA, ROCM}. Framework to use for GPU operations.
+# HOROVOD_GPU_OPERATIONS - {NCCL, MPI}. Framework to use for GPU tensor allreduce, allgather, and broadcast.
+# HOROVOD_GPU_ALLREDUCE - {NCCL, MPI}. Framework to use for GPU tensor allreduce.
+# HOROVOD_GPU_ALLGATHER - {NCCL, MPI}. Framework to use for GPU tensor allgather.
+# HOROVOD_GPU_BROADCAST - {NCCL, MPI}. Framework to use for GPU tensor broadcast.
+# HOROVOD_ALLOW_MIXED_GPU_IMPL - {1}. Allow Horovod to install with NCCL allreduce and MPI GPU allgather /
+# broadcast. Not recommended due to a possible deadlock.
+# HOROVOD_CPU_OPERATIONS - {MPI, GLOO, CCL}. Framework to use for CPU tensor allreduce, allgather, and broadcast.
+# HOROVOD_CMAKE - path to the CMake binary used to build Gloo (not required when using MPI).
+# HOROVOD_WITH_TENSORFLOW - {1}. Require Horovod to install with TensorFlow support enabled.
+# HOROVOD_WITHOUT_TENSORFLOW - {1}. Skip installing TensorFlow support.
+# HOROVOD_WITH_PYTORCH - {1}. Require Horovod to install with PyTorch support enabled.
+# HOROVOD_WITHOUT_PYTORCH - {1}. Skip installing PyTorch support.
+# HOROVOD_WITH_MXNET - {1}. Require Horovod to install with MXNet support enabled.
+# HOROVOD_WITHOUT_MXNET - {1}. Skip installing MXNet support.
+
+# prebuildopts = 'export LDSHARED="$CC -shared" && '
+# prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 '
+# prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_NCCL_HOME=$EBROOTNCCL '
+# prebuildopts += ' HOROVOD_GPU_OPERATIONS=NCCL '
+# prebuildopts += ' HOROVOD_CPU_OPERATIONS=MPI '
+# prebuildopts += ' HOROVOD_GPU_ALLREDUCE=NCCL '
+# prebuildopts += ' HOROVOD_GPU_BROADCAST=NCCL '
+# prebuildopts += ' HOROVOD_WITH_MPI=1 '
+
+
+prebuildopts = 'export LDSHARED="$CC -shared" && '
+prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_NCCL_HOME=$EBROOTNCCL '
+prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1'
+prebuildopts += ' NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \
+                                -gencode=arch=compute_75,code=sm_75 \
+                                -gencode=arch=compute_80,code=sm_80"'
+
+preinstallopts = prebuildopts
+
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    ('horovod', version, {
+        'checksums': ['6ebc90d627af486d44335ed48489e1e8dc190607574758867c52e4e17d75a247'],
+        'cuda_compute_capabilities': ['7.0', '7.5', '8.0'],
+    }),
+]
+
+sanity_check_paths = {
+    'files': ['bin/horovodrun'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+# This makes openmpi work. It's up to the sysadmins to correct me here.
+modextravars = {'HOROVOD_MPI_THREADS_DISABLE': '1'}
+
+modloadmsg = 'Setting HOROVOD_MPI_THREADS_DISABLE=1. '
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb b/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
index ec81e25c4bd30963b3e6ee6fd0cb7cc0de28cc3f..6178b0c12adac5ef08a67a76dd1afc8cb3e585d7 100644
--- a/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
+++ b/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -28,7 +29,8 @@ dependencies = [
 sources = [SOURCELOWER_TAR_GZ]
 source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.split('-')[0]]
 
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 sanity_check_paths = {
     'files': ['lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a'],
diff --git a/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb b/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
index 1f25d07deebddfb7ec4eb214c9b708458c516c8b..b3d0a06f6ac30a4a58270b00cf6ea4150dc7eec3 100644
--- a/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
+++ b/Golden_Repo/hdfml_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -28,7 +29,8 @@ dependencies = [
 sources = [SOURCELOWER_TAR_GZ]
 source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.split('-')[0]]
 
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 sanity_check_paths = {
     'files': ['lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a'],
diff --git a/Golden_Repo/hidden_deps.txt b/Golden_Repo/hidden_deps.txt
index 3a45b6bcafcf5486d586b98afa8db444c934be51..74c6b3e597f0de59005ed1b80327342ce36c69c5 100644
--- a/Golden_Repo/hidden_deps.txt
+++ b/Golden_Repo/hidden_deps.txt
@@ -85,6 +85,15 @@ JSON-C
 JSON-GLib
 JsonCpp
 JUnit
+JupyterKernel-Bash
+JupyterKernel-Cling
+JupyterKernel-JavaScript
+JupyterKernel-Julia
+JupyterKernel-Octave
+JupyterKernel-PyParaView
+JupyterKernel-R
+JupyterKernel-Ruby
+JupyterProxy-XpraHTML5
 kbproto
 LAME
 LevelDB
diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.8.5.eb b/Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..87c9cb20686820c9147a754183dd376a839732e3
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.8.5.eb
@@ -0,0 +1,93 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.1.2'
+versionsuffix = '-nompi-Python-%(pyver)s'
+
+homepage = 'https://itk.org'
+description = """Insight Segmentation and Registration Toolkit (ITK) provides
+ an extensive suite of software tools for registering and segmenting
+ multidimensional imaging data."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/InsightSoftwareConsortium/ITK/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['651284ce6f68e8bd31db176a6b53f5679209a8ed5b6b5480c3591d66c6e10b60']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+    ('Bison', '3.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('Perl', '5.32.0'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('HDF5', '1.10.6', '-serial'),
+    ('SWIG', '3.0.12', '-Python-%(pyver)s'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.1.0'),
+    ('expat', '2.2.9'),
+    ('Eigen', '3.3.7'),
+    # ('ParaView', '5.8.1', '-Python-%(pyver)s'),
+    ('tbb', '2020.3'),
+    ('Qt5', '5.14.2'),
+    ('OpenGL', '2020'),
+    ('X11', '20200222'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_BUILD_TYPE=Release "
+configopts += "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+
+configopts += "-DBUILD_SHARED_LIBS=ON "
+configopts += "-DBUILD_TESTING=OFF "
+# configopts += "-DITK_FORBID_DOWNLOADS=ON "
+
+configopts += "-DITKV4_COMPATIBILITY=ON "
+configopts += "-DITK_LEGACY_SILENT=ON "
+
+configopts += "-DITK_USE_SYSTEM_SWIG=ON "
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += "-DSWIG_DIR=${EBROOTSWIG} "
+
+configopts += "-DITK_USE_SYSTEM_EIGEN=ON "
+configopts += "-DEigen3_DIR=$EBROOTEIGEN/share/eigen3/cmake "
+
+configopts += "-DITK_USE_SYSTEM_HDF5=ON "
+configopts += "-DHDF5_DIR=$EBROOTHDF5 "
+
+configopts += "-DITK_WRAP_PYTHON=ON "
+configopts += "-DModule_ITKReview=ON "
+
+# fails with ITK_WRAP_PYTON=ON, error, because vtkImage*.h cannot be found
+# read: https://discourse.itk.org/t/problem-with-building-itk-with-module-itkvtkglue-on/2315
+# code: https://github.com/InsightSoftwareConsortium/ITKVtkGlue/blob/itk-5.0.1/CMakeLists.txt#L81
+# configopts="-DModule_ITKVtkGlue=ON ${configopts} "
+# configopts="-DVTK_DIR=$EBROOTPARAVIEW/lib64/cmake/paraview-5.8/vtk ${configopts} "
+# configopts="-DVTK_INCLUDE_DIRS=$EBROOTPARAVIEW/include/paraview-5.8 ${configopts} "
+# configopts="-DVTK_LIBRARIES=$EBROOTPARAVIEW/lib64 ${configopts} "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver',
+              'lib/libITKVTK-%(version_major_minor)s.so',
+              'lib/libITKIOJPEG-%(version_major_minor)s.so',
+              'lib/libITKCommon-%(version_major_minor)s.so'],
+    'dirs': ['include/ITK-%(version_major_minor)s',
+             'lib/python%(pyshortver)s/site-packages',
+             'share'],
+}
+
+sanity_check_commands = [('python', "-c 'import %(namelower)s'")]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.8.5.eb b/Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2bfa842e22d52eab5f9d404bcf933bb82fff1011
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.8.5.eb
@@ -0,0 +1,93 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.1.2'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://itk.org'
+description = """Insight Segmentation and Registration Toolkit (ITK) provides
+ an extensive suite of software tools for registering and segmenting
+ multidimensional imaging data."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+toolchainopts = {'pic': True, 'usempi': False}
+
+source_urls = ['https://github.com/InsightSoftwareConsortium/ITK/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['651284ce6f68e8bd31db176a6b53f5679209a8ed5b6b5480c3591d66c6e10b60']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+    ('Bison', '3.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('Perl', '5.32.0'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('HDF5', '1.10.6', '-serial'),
+    ('SWIG', '3.0.12', '-Python-%(pyver)s'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.1.0'),
+    ('expat', '2.2.9'),
+    ('Eigen', '3.3.7'),
+    # ('ParaView', '5.8.1', '-Python-%(pyver)s'),
+    ('tbb', '2020.3'),
+    ('Qt5', '5.14.2'),
+    ('OpenGL', '2020'),
+    ('X11', '20200222'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_BUILD_TYPE=Release "
+configopts += "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+
+configopts += "-DBUILD_SHARED_LIBS=ON "
+configopts += "-DBUILD_TESTING=OFF "
+# configopts += "-DITK_FORBID_DOWNLOADS=ON "
+
+configopts += "-DITKV4_COMPATIBILITY=ON "
+configopts += "-DITK_LEGACY_SILENT=ON "
+
+configopts += "-DITK_USE_SYSTEM_SWIG=ON "
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += "-DSWIG_DIR=${EBROOTSWIG} "
+
+configopts += "-DITK_USE_SYSTEM_EIGEN=ON "
+configopts += "-DEigen3_DIR=$EBROOTEIGEN/share/eigen3/cmake "
+
+configopts += "-DITK_USE_SYSTEM_HDF5=ON "
+configopts += "-DHDF5_DIR=$EBROOTHDF5 "
+
+configopts += "-DITK_WRAP_PYTHON=ON "
+configopts += "-DModule_ITKReview=ON "
+
+# fails with ITK_WRAP_PYTON=ON, error, because vtkImage*.h cannot be found
+# read: https://discourse.itk.org/t/problem-with-building-itk-with-module-itkvtkglue-on/2315
+# code: https://github.com/InsightSoftwareConsortium/ITKVtkGlue/blob/itk-5.0.1/CMakeLists.txt#L81
+# configopts="-DModule_ITKVtkGlue=ON ${configopts} "
+# configopts="-DVTK_DIR=$EBROOTPARAVIEW/lib64/cmake/paraview-5.8/vtk ${configopts} "
+# configopts="-DVTK_INCLUDE_DIRS=$EBROOTPARAVIEW/include/paraview-5.8 ${configopts} "
+# configopts="-DVTK_LIBRARIES=$EBROOTPARAVIEW/lib64 ${configopts} "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver',
+              'lib/libITKVTK-%(version_major_minor)s.so',
+              'lib/libITKIOJPEG-%(version_major_minor)s.so',
+              'lib/libITKCommon-%(version_major_minor)s.so'],
+    'dirs': ['include/ITK-%(version_major_minor)s',
+             'lib/python%(pyshortver)s/site-packages',
+             'share'],
+}
+
+sanity_check_commands = [('python', "-c 'import %(namelower)s'")]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.8.5.eb b/Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..75f56451296a006c4f4390b526d77e7e187d2f31
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.8.5.eb
@@ -0,0 +1,93 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.1.2'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://itk.org'
+description = """Insight Segmentation and Registration Toolkit (ITK) provides
+ an extensive suite of software tools for registering and segmenting
+ multidimensional imaging data."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+toolchainopts = {'pic': True, 'usempi': False}
+
+source_urls = ['https://github.com/InsightSoftwareConsortium/ITK/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['651284ce6f68e8bd31db176a6b53f5679209a8ed5b6b5480c3591d66c6e10b60']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+    ('Bison', '3.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('Perl', '5.32.0'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('HDF5', '1.10.6', '-serial'),
+    ('SWIG', '3.0.12', '-Python-%(pyver)s'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.1.0'),
+    ('expat', '2.2.9'),
+    ('Eigen', '3.3.7'),
+    # ('ParaView', '5.8.1', '-Python-%(pyver)s'),
+    ('tbb', '2020.3'),
+    ('Qt5', '5.14.2'),
+    ('OpenGL', '2020'),
+    ('X11', '20200222'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_BUILD_TYPE=Release "
+configopts += "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+
+configopts += "-DBUILD_SHARED_LIBS=ON "
+configopts += "-DBUILD_TESTING=OFF "
+# configopts += "-DITK_FORBID_DOWNLOADS=ON "
+
+configopts += "-DITKV4_COMPATIBILITY=ON "
+configopts += "-DITK_LEGACY_SILENT=ON "
+
+configopts += "-DITK_USE_SYSTEM_SWIG=ON "
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += "-DSWIG_DIR=${EBROOTSWIG} "
+
+configopts += "-DITK_USE_SYSTEM_EIGEN=ON "
+configopts += "-DEigen3_DIR=$EBROOTEIGEN/share/eigen3/cmake "
+
+configopts += "-DITK_USE_SYSTEM_HDF5=ON "
+configopts += "-DHDF5_DIR=$EBROOTHDF5 "
+
+configopts += "-DITK_WRAP_PYTHON=ON "
+configopts += "-DModule_ITKReview=ON "
+
+# fails with ITK_WRAP_PYTON=ON, error, because vtkImage*.h cannot be found
+# read: https://discourse.itk.org/t/problem-with-building-itk-with-module-itkvtkglue-on/2315
+# code: https://github.com/InsightSoftwareConsortium/ITKVtkGlue/blob/itk-5.0.1/CMakeLists.txt#L81
+# configopts="-DModule_ITKVtkGlue=ON ${configopts} "
+# configopts="-DVTK_DIR=$EBROOTPARAVIEW/lib64/cmake/paraview-5.8/vtk ${configopts} "
+# configopts="-DVTK_INCLUDE_DIRS=$EBROOTPARAVIEW/include/paraview-5.8 ${configopts} "
+# configopts="-DVTK_LIBRARIES=$EBROOTPARAVIEW/lib64 ${configopts} "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver',
+              'lib/libITKVTK-%(version_major_minor)s.so',
+              'lib/libITKIOJPEG-%(version_major_minor)s.so',
+              'lib/libITKCommon-%(version_major_minor)s.so'],
+    'dirs': ['include/ITK-%(version_major_minor)s',
+             'lib/python%(pyshortver)s/site-packages',
+             'share'],
+}
+
+sanity_check_commands = [('python', "-c 'import %(namelower)s'")]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/j/Java/Java-15.0.1.eb b/Golden_Repo/j/Java/Java-15.0.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8a385d353f128ab7b2d8d8bdff34c987fe6570ff
--- /dev/null
+++ b/Golden_Repo/j/Java/Java-15.0.1.eb
@@ -0,0 +1,16 @@
+name = 'Java'
+version = '15.0.1'
+
+homepage = 'http://openjdk.java.net'
+description = """Java Platform, Standard Edition (Java SE) lets you develop and deploy
+ Java applications on desktops and servers."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = ['https://download.java.net/java/GA/jdk%(version)s/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/']
+sources = ['openjdk-%(version)s_linux-x64_bin.tar.gz']
+checksums = ['83ec3a7b1649a6b31e021cde1e58ab447b07fb8173489f27f427e731c89ed84a']
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/j/Java/Java-15.eb b/Golden_Repo/j/Java/Java-15.eb
new file mode 100644
index 0000000000000000000000000000000000000000..78c52a44db6d95cbedb8977958761b2c9773a3a6
--- /dev/null
+++ b/Golden_Repo/j/Java/Java-15.eb
@@ -0,0 +1,14 @@
+easyblock = 'ModuleRC'
+
+name = 'Java'
+version = '15'
+
+homepage = 'https://java.com/'
+description = """Java Platform, Standard Edition (Java SE) lets you develop and deploy
+ Java applications on desktops and servers."""
+
+toolchain = SYSTEM
+
+dependencies = [('Java', '%(version)s.0.1')]
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/j/Jupyter/401html.patch b/Golden_Repo/j/Jupyter/401html.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c3e71a800541a396377737132022c67a077d7564
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/401html.patch
@@ -0,0 +1,135 @@
+diff -Naur jupyterlab-2.2.9.orig/401.html jupyterlab-2.2.9/401.html
+--- jupyterlab-2.2.9.orig/401.html	1970-01-01 01:00:00.000000000 +0100
++++ jupyterlab-2.2.9/401.html	2020-12-11 23:24:45.301738818 +0100
+@@ -0,0 +1,131 @@
++<!DOCTYPE html>
++<html><head>
++  <meta http-equiv="Refresh" content="0; url=https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false" />
++
++  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
++  <meta charset="utf-8">
++
++  <title>jupyter-jsc</title>
++  <meta http-equiv="X-UA-Compatible" content="chrome=1">
++  <meta property="og:image" content="/hub/static/images/mini_website.jpg">
++  <meta property="og:locale" content="en_US">
++  <meta property="og:site_name" content="jupyter-jsc">
++  <meta property="og:title" content="jupyter-jsc">
++  <meta property="og:type" content="website">
++  <meta property="og:url" content="https://jupyter-jsc.fz-juelich.de/">
++
++  <link rel="stylesheet" href="/hub/static/css/style.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_font.min.htm" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base_header.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base_footer.min.css" type="text/css">
++  <link rel="icon" href="/hub//static/images/favicon.svg" type="jpg/png">
++  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css">  
++  <link rel="stylesheet" href="/hub/static/css/j4j_page_home.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/spawn_style.css" type="text/css">
++
++<body>
++
++<div id="container">
++
++  <div id="header-background">
++  <div id="header">
++  <nav class="navbar navbar-default">
++    <div class="container-fluid">
++      <div class="navbar-header">
++        <span id="jupyterhub-logo" class="pull-left"><a href="https://www.fz-juelich.de/jsc" target="_blank"><img src="/hub/static/images/jsc.png" alt="JupyterHub" class="jpy-logo" title="Home"></a></span>
++      </div>
++
++      <div id="thenavbar">
++        <ul class="nav navbar-nav">
++          
++          <li><a href="https://jupyter-jsc.fz-juelich.de/hub/start">Start</a></li>
++          
++          <li id="navbarbtn-links" class="main-menu-btn menu-btn"><a>Links</a>
++            <div id="navbarmenu-links" class="menu-box">
++              <ul>
++                <li id="navbarbtn-links-1" class="menu-btn"><a>jupyter-jsc</a>
++                  <div id="navbarmenu-links-1" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/Extensions.ipynb">Extensions at jupyter-jsc</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/FAQ.ipynb">HDFCloud FAQ</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/projects.html">Link Projects to Home</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/kernel.html">Setup your own kernel</a></li>
++                      <li class=""><a target="_blank" href="https://www.unicore.eu/about-unicore/case-studies/jupyter-at-jsc/">jupyter-jsc at unicore.eu</a></li>
++                    </ul>
++                  </div>
++                </li>
++                <li id="navbarbtn-links-2" class="menu-btn"><a>Jupyter</a>
++                  <div id="navbarmenu-links-2" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a target="_blank" href="https://www-jupyter.org/">Home</a></li>
++                      <li class=""><a target="_blank" href="https://newsletter.jupyter.org/">Newsletter</a></li>
++                      <li class=""><a target="_blank" href="https://www.youtube.com/watch?v=HW29067qVWk">Introduction Video</a></li>
++                      <li class=""><a target="_blank" href="https://blog.jupyter.org/">Blog</a></li>
++                      <li class=""><a target="_blank" href="https://jupyter.org/documentation.html">Documentation</a></li>
++                      <li class=""><a target="_blank" href="https://www.oreilly.com/topics/jupyter">O'Reilly on Jupyter</a></li>
++                      <li class=""><a target="_blank" href="https://twitter.com/projectjupyter">Twitter</a></li>
++                      <li class=""><a target="_blank" href="https://github.com/trending/jupyter-notebook">Jupyter-Notebooks</a></li>
++                    </ul>
++                  </div>
++                </li>
++                <li id="navbarbtn-links-3" class="menu-btn"><a>JSC</a>
++                  <div id="navbarmenu-links-3" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUWELS/JUWELS_node.html">JUWELS</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JURECA/JURECA_node.html">JURECA</a></li>
++                      <li class=""><a target="_blank" href="https://hbp-hpc-platform.fz-juelich.de/?page_id=1073">JURON</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Newsletter/newsletter_node.html">Newsletter</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Events/events_node.html">Events</a></li>
++                      <li class=""><a target="_blank" href="https://twitter.com/fzj_jsc">Twitter</a></li>
++                    </ul>
++                  </div>
++                </li>
++              </ul>
++            </div>
++          </li>
++          
++        </ul>
++      </div>
++    </div>
++  </nav>
++  </div>
++  </div>
++
++<div id="body">
++<div class="background-wrapper">
++  <div class="content" id="JupyterLabs-div">
++    
++      <!--<center><h2 style="color:red">jupyter-jsc maintenance: 25-02-2020 - 26-02-2020</h2></center>-->
++      <h2>
++      The access token of your browser session to the running JupyterLab has expired.
++      </h2>
++      <p>
++        Unfortunately you have to log out and log in again from the Jupyter-JSC to regain access permission.<br>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false"> Logout now </a>
++      </p>
++    
++  </div>
++</div>
++</div>
++
++<div class="footer">
++  <div class="footer-top-background">
++  </div>
++  <div class="footer-bottom-background">
++    <div class="footer-bottom">
++      <div class="footer-links">
++        <span>© Forschungszentrum Jülich</span>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/imprint">Imprint</a>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/privacy">Privacy Policy</a>
++        <a href="mailto:ds-support@fz-juelich.de?subject=jupyter-jsc Support&amp;body=Please describe your problem here. (english or german)">Support</a>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/terms">Terms of Service</a>
++      </div>
++      <a href="https://www.helmholtz.de/en/" target="_blank"><img class="helmholtz-logo" src="/hub/static/images/helmholtz.png"></a>
++    </div>
++  </div>
++</div>
++
++</div> <!-- container -->
++
++</body></html>
diff --git a/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b5b826ec34b3b8385af35bf77c3ea82903fc14c2
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,1317 @@
+easyblock = 'Bundle'
+
+name = 'Jupyter'
+version = '2020.2.5'
+versionsuffix = '-Python-%(pyver)s'
+
+local_jlab_version = '2.2.9'
+
+homepage = 'http://www.jupyter.org'
+description = """
+Project Jupyter exists to develop open-source software, open-standards, and services for interactive computing across
+dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('unzip', '6.0'),
+    ('Autotools', '20200321'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('libyaml', '0.2.5'),
+    ('Pandoc', '2.11.0.4', '', SYSTEM),  # For doc-generation
+    ('texlive', '20200406'),
+    ('ITK', '5.1.2', '-nompi' + versionsuffix),
+    ('HDF5', '1.10.6', '-serial'),
+    ('netcdf4-python', '1.5.4', '-serial' + versionsuffix),
+    ('FFmpeg', '4.3.1'),  # for pydub
+    ('LLVM', '10.0.1'),  # llvmlite
+    ('git', '2.28.0'),  # for jupyterlab-git (req. >=2.0)
+    ('SciPy-Stack', '2020', versionsuffix),
+]
+
+osdependencies = [('openssl'), ('git')]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'filter': ('python -c "import %(ext_name)s"', ''),
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check':  True,
+    'use_pip_for_deps': False,
+}
+
+components = [
+    ('nodejs', '14.15.3', {
+        'easyblock': 'ConfigureMake',
+        'source_urls': ['http://nodejs.org/dist/v%(version)s/'],
+        'sources': ['node-v%(version)s.tar.gz'],
+        'start_dir': 'node-v%(version)s',
+    }),
+]
+
+exts_list = [
+    ('distro', '1.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92')]),
+    ])),
+    ('scikit-build', '0.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'da40dfd69b2456fad1349a894b90180b43712152b8a85d2a00f4ae2ce8ac9a5c')]),
+        ('modulename', 'skbuild'),
+    ])),
+    ('ptvsd', '4.3.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'ptvsd-4.3.2.zip'),
+        ('checksums', [('sha256', '3b05c06018fdbce5943c50fb0baac695b5c11326f9e21a5266c854306bda28ab')]),
+    ])),
+    # ('cryptography', '2.8', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651')]),
+    # ])),  # part of Python module
+    ('pyOpenSSL', '19.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507')]),
+        ('modulename', 'OpenSSL'),
+    ])),
+    ('entrypoints', '0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451')]),
+        ('use_pip', False),
+    ])),
+    ('async_generator', '1.10', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144')]),
+    ])),
+    ('nest_asyncio', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa')]),
+    ])),
+    ('absl-py', '0.8.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd9129186431e150d7fe455f1cb1ecbb92bb5dba9da9bc3ef7b012d98c4db2526')]),
+        ('modulename', 'absl'),
+    ])),
+    ('websockify', '0.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c35b5b79ebc517d3b784dacfb993be413a93cda5222c6f382443ce29c1a6cada')]),
+    ])),
+    ('typing_extensions', '3.7.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae')]),
+    ])),
+    # General Python packages
+    ('tornado', '6.0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9')]),
+    ])),
+    ('bokeh', '2.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd9248bdb0156797abf6d04b5eac581dcb121f5d1db7acbc13282b0609314893a')]),
+    ])),
+    ('seaborn', '0.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '76c83f794ca320fb6b23a7c6192d5e185a5fcf4758966a0c0a54baee46d41e2f')]),
+    ])),
+    ('nbformat', '5.0.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f545b22138865bfbcc6b1ffe89ed5a2b8e2dc5d4fe876f2ca60d8e6f702a30f8')]),
+    ])),
+    ('param', '1.9.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8370d41616e257b8ed2e242ec531e0340b8c954bea414b791fa0ef6235959981')]),
+    ])),
+    # Jupyter-core and dependencies
+    ('alabaster', '0.7.12', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02')]),
+    ])),
+    ('Babel', '2.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28')]),
+        ('modulename', 'babel'),
+    ])),
+    ('snowballstemmer', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52')]),
+    ])),
+    ('docutils', '0.15.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99')]),
+    ])),
+    ('imagesize', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5')]),
+    ])),
+    ('sphinxcontrib-websupport', '1.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc')]),
+        ('modulename', 'sphinxcontrib'),
+    ])),
+    ('Sphinx', '1.8.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08')]),
+        ('modulename',  'sphinx'),
+    ])),
+    # ('pexpect', '4.7.0', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb')]),
+    # ])),  # part of Python module, but in version 4.6.0 (sanity check fails if package used from Python dependency)
+    ('ipython', '7.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dfd303b270b7b5232b3d08bd30ec6fd685d8a58cabd54055e3d69d8f029f7280')]),
+        ('modulename', 'IPython'),
+    ])),  # part of Python module, but in version 7.4.0 (sanity check fails if package used from Python dependency)
+    ('ipynb', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8d834c777ca3885289938728cc382f081c86a58e92961e86f0aba60c96938ce5')]),
+    ])),
+    ('jupyter_core', '4.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'aa1f9496ab3abe72da4efe0daab0cb2233997914581f9a071e07498c6add8ed3')]),
+    ])),
+    ('retrying', '1.3.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b')]),
+    ])),
+    ('plotly', '4.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9ec2c9f4cceac7c595ebb77c98cbeb6566a97bef777508584d9bb7d9bcb8854c')]),
+    ])),
+    ('tikzplotlib', '0.8.4', dict(list(local_common_opts.items()) + [  # renamed to matplotlib2tikz with version 0.8.0
+        ('checksums', [('sha256', '284e70915fc6994472abd2fa47af947e7606085e9957898fc645f0dd9b44da8c')]),
+    ])),
+    #  Jupyter client
+    ('jupyter_client', '6.1.7', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '49e390b36fe4b4226724704ea28d9fb903f1a3601b6882ce3105221cd09377a1')]),
+    ])),
+    ('pynvml', '8.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c8d4eadc648c7e12a3c9182a9750afd8481b76412f83747bcc01e2aa829cde5d')]),
+    ])),
+    #  Jupyter notebook and dependencies
+    # ('traitlets', '4.3.3', dict(list(local_common_opts.items()) + [
+    #    ('checksums', [('sha256', 'd023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7')]),
+    # ])),  # part of Python module (sanity check fails if package used from Python dependency)
+    ('pyzmq', '18.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '93f44739db69234c013a16990e43db1aa0af3cf5a4b8b377d028ff24515fbeb3')]),
+        ('modulename',  'zmq'),
+    ])),
+    ('singledispatch', '3.4.0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c')]),
+    ])),
+    ('ipyparallel', '6.2.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '76c7b028962b0ba762e4e45b450ee3a4353e7221526a8af812e817d7ef6ac065')]),
+    ])),
+    ('ipykernel', '5.1.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b368ad13edb71fa2db367a01e755a925d7f75ed5e09fbd3f06c85e7a8ef108a8')]),
+    ])),
+    ('terminado', '0.8.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4804a774f802306a7d9af7322193c5390f1da0abb429e082a10ef1d46e6fb2c2')]),
+        ('use_pip', False),
+    ])),
+    ('bleach', '3.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'aa8b870d0f46965bac2c073a93444636b0e1ca74e9777e34f03dd494b8a59d48')]),
+    ])),
+    ('mistune', '0.8.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e')]),
+    ])),
+    ('pandocfilters', '1.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9')]),
+    ])),
+    ('testpath', '0.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e')]),
+        ('use_pip', False),
+    ])),
+    ('nbconvert', '6.0.7', dict(list(local_common_opts.items()) + [  # convert Jupyter notebooks to: HTML, Latex, etc.
+        # !!! nbconvert will try to read from all paths in <jupyter-config-path> the file nbconvert/templates/conf.json
+        #     ensure it has permissions (https://github.com/jupyter/nbconvert/issues/1430)
+        ('checksums', [('sha256', 'cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002')]),
+        # 6.0.7 - patch for jupyter_contrib_nbextensions needed:
+        #               https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532
+    ])),
+    #  ('ipython_genutils', '0.2.0', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', 'eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8')]),
+    #  ])),  # part of Python module (sanity check fails if package used from Python dependency)
+    ('Send2Trash', '1.5.0', dict(list(local_common_opts.items()) + [  # req. by widgetsnbextension
+        ('checksums', [('sha256', '60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2')]),
+        ('modulename',  'send2trash'),
+    ])),
+    ('argon2-cffi', '20.1.0', dict(list(local_common_opts.items()) + [  # req. for notebook >= 6.1
+        ('checksums', [('sha256', 'd8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d')]),
+        ('modulename', 'argon2'),
+    ])),
+    ('notebook', '6.1.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3db37ae834c5f3b6378381229d0e5dfcbfb558d08c8ce646b1ad355147f5e91d')]),
+        ('patches', ['notebook-6.0.3_jsc.patch']),  # allow others to read/write in .ipynb_checkpoints
+    ])),
+    ('version_information', '1.0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '811b9cea4b376aa62a77dc729a937ce8e2844573b8686b5c1840147054fb938d')]),
+    ])),
+    ('lesscpy', '0.13.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3c6d0b544c5bcdadcd3d8319feccb4128d06676d4117c6c9396ab39c25372ad')]),
+    ])),
+    ('prometheus_client', '0.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '71cd24a2b3eb335cb800c7159f423df1bd4dcd5171b234be15e3f31ec9f622da')]),
+    ])),
+    ('jupyterthemes', '0.20.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2a8ebc0c84b212ab99b9f1757fc0582a3f53930d3a75b2492d91a7c8b36ab41e')]),
+    ])),
+    #  Jupyter Lab and dependencies
+    ('zipp', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e')]),
+    ])),
+    ('jupyter-packaging', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd89134d2df88c30098bce0f8d8fb07b988ef0f616775dbd4b82dac9562b5cae6')]),
+    ])),
+    ('importlib_metadata', '0.23', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26')]),
+    ])),
+    ('jsonschema', '3.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f')]),
+    ])),  # part of Python module in version 3.0.1 (sanity check fails if package used from Python dependency)
+    ('jupyterlab_launcher', '0.13.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0')]),
+    ])),
+    ('sphinx_rtd_theme', '0.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a')]),
+    ])),
+    ('future', '0.18.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '858e38522e8fd0d3ce8f0c1feaf0603358e366d5403209674c7b617fa0c24093')]),
+    ])),
+    ('commonmark', '0.9.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60')]),
+    ])),
+    ('recommonmark', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb')]),
+    ])),
+    ('jupyterlab', local_jlab_version, dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3be8f8edea173753dd838c1b6d3bbcb6f5c801121f824a477025c1b6a1d33dc6')]),
+        ('patches', [('401html.patch', 1)])
+    ])),
+    ('json5', '0.8.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '124b0f0da1ed2ff3bfe3a3e9b8630abd3c650852465cb52c15ef60b8e82a73b0')]),
+    ])),
+    ('jupyterlab_server', '1.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c')]),
+    ])),
+    ('jupyter_kernel_gateway', '2.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6424a9f118e757ef18e9bed7784ca05ad9e633945df328ac4d8810eadc6f6ccd')]),
+        ('modulename', 'kernel_gateway'),
+    ])),
+    ('nbclient', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '01e2d726d16eaf2cde6db74a87e2451453547e8832d142f73f72fddcd4fe0250')]),
+    ])),
+    #  Jupyter Kernel and dependencies
+    ('ptyprocess', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0')]),
+        ('use_pip', False),
+    ])),
+    #  Jupyter Widgets and dependencies
+    ('defusedxml', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5')]),
+    ])),
+    ('widgetsnbextension', '3.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7')]),
+    ])),
+    ('ipywidgets', '7.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e945f6e02854a74994c596d9db83444a1850c01648f1574adf144fbbabe05c97')]),
+    ])),
+    #  ('ipyscales', '0.5.0', dict(list(local_common_opts.items()) + [
+    #      ('checksums', [('sha256', '')]),
+    #  ])),
+    ('ipydatawidgets', '4.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd9f94828c11e3b40350fb14a02e027f42670a7c372bcb30db18d552dcfab7c01')]),
+    ])),
+    ('traittypes', '0.2.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6')]),
+    ])),
+    ('bqplot', '0.12.17', dict(list(local_common_opts.items()) + [  # 2-D plotting with d3.js
+        ('checksums', [('sha256', 'f103d82e7c05ec29e2c4c2357cb207acb99cf5fedbad55f26e04d8bbdb3248ad')]),
+    ])),
+    ('jupyter_bokeh', '2.0.2', dict(list(local_common_opts.items()) + [  # ipywidget for bokeh
+        ('checksums', [('sha256', '8dc63198833e478c3231ba5a1c5492bac859f875b1dc4e8190ce308276aa01fc')]),
+    ])),
+    ('pythreejs', '2.2.0', dict(list(local_common_opts.items()) + [  # 3-D scene visualization with three.js
+        ('checksums', [('sha256', 'c05f52932efd58ff18beb333a6b2bb80341e980718a313b74821c4a5c8640721')]),
+    ])),
+    ('PyWavelets', '1.1.1', dict(list(local_common_opts.items()) + [  # for a nice threejs example notebook
+        ('checksums', [('sha256', '1a64b40f6acb4ffbaccce0545d7fc641744f95351f62e4c6aaa40549326008c9')]),
+        ('modulename', 'pywt'),
+    ])),
+    ('imageio', '2.6.1', dict(list(local_common_opts.items()) + [  # for a nice threejs example notebook
+        ('checksums', [('sha256', 'f44eb231b9df485874f2ffd22dfd0c3c711e7de076516b9374edea5c65bc67ae')]),
+    ])),
+    ('networkx', '2.3', dict(list(local_common_opts.items()) + [  # for a nice threejs example notebook
+        ('source_tmpl', 'networkx-2.3.zip'),
+        ('checksums', [('sha256', '8311ddef63cf5c5c5e7c1d0212dd141d9a1fe3f474915281b73597ed5f1d4e3d')]),
+    ])),
+    ('scikit-image', '0.16.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dd7fbd32da74d4e9967dc15845f731f16e7966cee61f5dc0e12e2abb1305068c')]),
+        ('modulename', 'skimage'),
+    ])),
+    ('ipywebrtc', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4db2be7d0bfcbd142b2f9f9e8303b926832a632ed4a3bc5681b319a5f226285a')]),
+    ])),
+    ('ipyvolume', '0.6.0a6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1a71c681dd39b514db966c4812bbbd1347ce082ee7a7bcc53f494e0546bf37ff')]),
+    ])),
+    ('branca', '0.3.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3e762c9bdf40725f3d05ea1fda8fae9b470bfada6474e43a1242c8204a7bb15e')]),
+    ])),
+    ('ipyleaflet', '0.13.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c05f138327926bc81f29a629588bd656be5ff76dd8785c1e7eac5445b1d5a432')]),
+    ])),
+    ('ipympl', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c33243047166fbedf3729af116186ae1894ee45db71cbc6632bf057a913ae010')]),
+    ])),
+    # ('PyYAML', '5.1.2', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4')]),
+    #     ('modulename', 'yaml'),
+    # ])),  # part of Python module (sanity check fails if package used from Python dependency)
+    # Jupyter Notebook Extensions
+    ('jupyter_nbextensions_configurator', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e5e86b5d9d898e1ffb30ebb08e4ad8696999f798fef3ff3262d7b999076e4e83')]),
+    ])),
+    ('jupyter_latex_envs', '1.4.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '070a31eb2dc488bba983915879a7c2939247bf5c3b669b398bdb36a9b5343872')]),
+        ('patches', ['jupyter_latex_envs-template_paths.patch']),
+        #  support for nbconvert>=6.x -> https://github.com/jfbercher/jupyter_latex_envs/pull/58
+        ('modulename', 'latex_envs'),
+    ])),
+    ('jupyter_highlight_selected_word', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b')]),
+    ])),
+    ('prompt_toolkit', '2.0.10', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db')]),
+    ])),
+    ('jupyter_contrib_core', '0.3.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e65bc0e932ff31801003cef160a4665f2812efe26a53801925a634735e9a5794')]),
+    ])),
+    ('jupyter_contrib_nbextensions', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'eecd28ecc2fc410226c0a3d4932ed2fac4860ccf8d9e9b1b29548835a35b22ab')]),
+        ('patches', ['jupyter_contrib_nbextensions-template_paths.patch']),
+        #  support for nbconvert>=6.x -> https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532
+    ])),
+    ('rise', '5.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2be45c3dbe27e63aae047c6a90be19798b6e17e9b6b0e25408b3c4f645658e26')]),
+    ])),
+    ('idna-ssl', '1.1.0', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c')]),
+    ])),
+    ('multidict', '4.7.5', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'aee283c49601fa4c13adc64c09c978838a7e812f85377ae130a24d7198c0331e')]),
+    ])),
+    ('yarl', '1.4.2', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b')]),
+    ])),
+    ('async-timeout', '3.0.1', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f')]),
+    ])),
+    ('aiohttp', '3.6.2', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326')]),
+    ])),
+    ('simpervisor', '0.3', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'd82e4527ae326747551e4bdfa632ff4ebef275ce721f80886c747adfdbf41c2e')]),
+    ])),
+    ('jupyter_server', '1.0.7', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b0b3185975b32a03520aa577d90145bc288a3a12124e0e80306ec6216c9b8634')]),
+    ])),
+    ('jupyter-server-proxy', '1.5.2', dict(list(local_common_opts.items()) + [
+        ('source_urls', ['https://github.com/jupyterhub/jupyter-server-proxy/archive/']),
+        ('source_tmpl', 'v%(version)s.tar.gz'),
+        ('checksums', [('sha256', '140bd642c511519ddd2acc5f70e0b46a40bbc673c888dcb3b19981005286853b')]),
+        ('patches', ['jupyterserverproxy-urlfile.patch']),
+    ])),
+    # Jupyter Lab Extensions
+    ('jupyterlab_github', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1f560a91711b779d08118161af044caff44159e315cb80ae830d3dfbded7bac9')]),
+        # do not use pypi for download -> we need to patch drive.json
+        ('source_urls', ['https://github.com/jupyterlab/jupyterlab-github/archive']),
+        ('source_tmpl', 'v%(version)s.tar.gz'),
+        ('patches', ['jupyterlab_github-%(version)s_jsc.patch']),
+    ])),
+    ('jupyterlab-gitlab', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '31d3fbd9b139aca7704dd13967ac22c81e372b50c4db730f342ab7800db7a5c6')]),
+        # do not use pypi for download -> we need to patch drive.json
+        ('source_urls', ['https://gitlab.com/beenje/jupyterlab-gitlab/-/archive/%(version)s']),
+        ('source_tmpl', 'jupyterlab-gitlab-%(version)s.tar.gz'),
+        ('patches', ['jupyterlab-gitlab-%(version)s_jsc.patch']),
+    ])),
+    ('jupyterlab-quickopen', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('90cba3a7e6ff8d2b3eaf2594079c25f82e2c158d2ec63ebd951e4042a7445f8e')]),
+    ])),
+    ('zstandard', '0.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a110fb3ad1db344fbb563942d314ec5f0f3bdfd6753ec6331dded03ad6c2affb')]),
+    ])),
+
+    # https://blog.kitware.com/itk-is-on-pypi-pip-install-itk-is-here/
+    ('itk_core', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_core-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '1f0254f0f134b709e6df3601dc38ccc45c2d5d5576fc10e1a0313d1fe8aefa84')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_filtering', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_filtering-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'f4a1256c8c684329780b9f4326fb571023af1d96fbda7cb7b513b4a395a9cd42')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_segmentation', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_segmentation-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'f81ba4881f7802eb5b911c4e1eac4706220647196ebda68477318630542db226')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_numerics', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_numerics-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '6ac84a6386cd51692ed9605b6daefcc6230ec976f93161c9c5d89cfdfe042eba')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_registration', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_registration-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'd25b578ffb859f07cbad6987d1adb507e357d91f82863faeae337d8645b9d29d')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_io', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_io-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '6ecc528ce4ae42b6d14c972d51055856f130a13474463ba4bf187ed2afdb04b1')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_meshtopolydata', '0.6.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_meshtopolydata-0.6.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '486e418808c27ccc76619737219fa57fcd1de2da5fcd0325ee8c4395965deb39')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('pyct', '0.4.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'df7b2d29f874cabdbc22e4f8cba2ceb895c48aa33da4e0fe679e89873e0a4c6e')]),
+    ])),
+    ('colorcet', '2.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '514813790a74b578c3eaff76b2102274c2ba8b0239c9504586df685223007dee')]),
+    ])),
+    ('itkwidgets', '0.32.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '11ee93007cf354405e01bf9a28fb1eb2fb0a5d139e1cdded1a07b47f7ee76972')]),
+    ])),
+    ('ujson', '3.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4')]),
+    ])),
+    #    ('jupyterlab_iframe', '0.2.2', dict(list(local_common_opts.items()) + [ # open HTML URLs in Jupyter-Tabs
+    #        ('checksums', [('sha256', '7c26cddc5f29f0b5ac6ba4707ce811f9787282549d22098b691bcdcc6692238c')]),     
+    #        ('use_pip', False),
+    #    ])),
+    ('python-dotenv', '0.10.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f157d71d5fec9d4bd5f51c82746b6344dffa680ee85217c123f4a0c8117c4544')]),
+        ('modulename', 'dotenv'),
+    ])),
+    #    ('ipyauth', '0.2.5', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '189db0e9fd48cf52f333ef8ac1a71b9e3a9eec6561f5085e3d7239ca2588ba87')]),
+    #    ])),
+    ('jupyterlab_latex', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '722558144e6ce71abe4fba0fb01c13c37271fa2497881bfebe9b6422d1fc795b')]),
+    ])),
+    #    ('jupyterlab_slurm', '1.0.5', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', 'f7c6a54efe529cc47194cb4a7cbf1225fc0b0668d4dfe118405b68bde805c061')]),
+    #    ])),
+    ('jupyterlmod', '2.0.2', dict(list(local_common_opts.items()) + [
+        ('source_urls', ['https://github.com/cmd-ntrf/jupyter-lmod/archive/']),
+        ('source_tmpl', '%(version)s.tar.gz'),
+        ('checksums', [('sha256', 'f547432afb30cb87c8dabf78fd4cc4c35ff4b6d2aafbae19c249b7d596015c6a')]),
+        ('patches', [
+            'jupyterlmod-urlfile.patch',
+            'jupyterlmod-packagejson.patch',
+        ]),
+    ])),
+    ('nbresuse', '0.3.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5ba19dd0b08ff19470aeb34cda2f07276a3fb1cd750bc53f3a3e06322664e98e')]),
+    ])),
+    ('colorama', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d')]),
+    ])),
+    ('nbdime', '2.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4e3efdcfda31c3074cb565cd8e76e2e5421b1c4560c3a00c56f8679dd15590e5')]),
+    ])),
+    ('smmap2', '2.0.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a')]),
+        ('modulename', 'smmap'),
+    ])),
+    ('gitdb2', '2.0.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1b6df1433567a51a4a9c1a5a0de977aa351a405cc56d7d35f3388bad1f630350')]),
+        ('modulename', 'gitdb'),
+    ])),
+    ('GitPython', '3.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3237caca1139d0a7aa072f6735f5fd2520de52195e0fa1d8b83a9b212a2498b2')]),
+        ('modulename', 'git'),
+    ])),
+    ('jupyterlab_git', '0.23.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3c709c33df0b838e50f76fa2e7e0302bd3c32ec24e161ee0e8f436a3844e8b16')]),
+    ])),
+    ('sidecar', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3e79de269ddd2c0eff1cb26025cb9f434cf9914b777cf03eeab8347f6de7160e')]),
+    ])),
+    ('pycodestyle', '2.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e')]),
+    ])),
+    ('autopep8', '1.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee')]),
+    ])),
+    ('yapf', '0.28.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6f94b6a176a7c114cfa6bad86d40f259bbe0f10cf2fa7f2f4b3596fc5802a41b')]),
+    ])),
+    ('isort', '4.3.21', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1')]),
+    ])),
+    ('toml', '0.10.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c')]),
+    ])),
+    ('pathspec', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e285ccc8b0785beadd4c18e5708b12bb8fcf529a1e61215b3feff1d1e559ea5c')]),
+    ])),
+    ('typed_ast', '1.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34')]),
+    ])),
+    ('regex', '2019.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69')]),
+    ])),
+    ('black', '19.3b0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c')]),
+    ])),
+    ('jupyterlab_code_formatter', '1.3.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7c415caff528e55027e82c96b60dcab0537aa5cda168997f03a4964c51e2b7b5')]),
+    ])),
+    ###############
+    # extras
+    ('mccabe', '0.6.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f')]),
+    ])),
+    ('pyflakes', '2.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8')]),
+    ])),
+    ('flake8', '3.8.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208')]),
+    ])),
+    ('pydocstyle', '5.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f4f5d210610c2d153fae39093d44224c17429e2ad7da12a8b419aba5c2f614b5')]),
+    ])),
+    ('rope', '0.16.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd2830142c2e046f5fc26a022fe680675b6f48f81c7fc1f03a950706e746e9dfe')]),
+    ])),
+    # base for python language server
+    ('parso', '0.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '908e9fae2144a076d72ae4e25539143d40b8e3eafbaeae03c1bfe226f4cdf12c')]),
+    ])),
+    ('jedi', '0.17.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20')]),
+    ])),
+    ('python-jsonrpc-server', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '62c543e541f101ec5b57dc654efc212d2c2e3ea47ff6f54b2e7dcb36ecf20595')]),
+        ('modulename',  'pyls_jsonrpc'),
+    ])),
+    ('pluggy', '0.13.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0')]),
+    ])),
+    # test
+    ('versioneer', '0.18', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ead1f78168150011189521b479d3a0dd2f55c94f5b07747b484fd693c3fbf335')]),
+    ])),
+    ('lazy-object-proxy', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0')]),
+    ])),
+    ('wrapt', '1.11.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1')]),
+    ])),
+    ('astroid', '2.3.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a')]),
+    ])),
+    ('wrapt', '1.11.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1')]),
+    ])),
+    ('lazy-object-proxy', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0')]),
+    ])),
+    ('typed_ast', '1.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34')]),
+    ])),
+    ('six', '1.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73')]),
+    ])),
+    ('pylint', '2.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd')]),
+    ])),
+    ('pytest', '5.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970')]),
+    ])),
+    ('mock', '4.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dd33eb70232b6118298d516bbcecd26704689c386594f0f3c4f13867b2c56f72')]),
+    ])),
+    ('pytest-cov', '2.8.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b')]),
+    ])),
+    ('pytest-xprocess', '0.13.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '779aeca517cd9c996d1544bdc510cb3cff40c48136d94bbce6148e27f30a93ff')]),
+    ])),
+    ('coverage', '5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052')]),
+    ])),
+    # python language server
+    ('python-language-server', '0.36.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9984c84a67ee2c5102c8e703215f407fcfa5e62b0ae86c9572d0ada8c4b417b0')]),
+        ('modulename',  'pyls'),
+    ])),
+    ('jupyter-lsp', '0.9.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '73b5cb47fbe672bee6c02ddc4f2fbe728dc3bff589b5741835ebb80a862163af')]),
+    ])),
+
+    ####################
+    # Jupyter Hub
+    #    ('SQLAlchemy', '1.3.10', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '0f0768b5db594517e1f5e1572c73d14cf295140756431270d89496dc13d5e46c')]),
+    #    ])),  # part of Python module in version 1.3.1
+    #    ('python-oauth2', '1.1.1', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', 'd7a8544927ac18215ba5317edd8f640a5f1f0593921bcf3ce862178312c8c9a4')]),
+    #        ('modulename',  'oauth2'),
+    #    ])), # part of Python module
+    ('pamela', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '65c9389bef7d1bb0b168813b6be21964df32016923aac7515bdf05366acbab6c')]),
+    ])),
+    #    ('alembic', '1.2.1', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '9f907d7e8b286a1cfb22db9084f9ce4fde7ad7956bb496dc7c952e10ac90e36a')]),
+    #    ])), # part of Python module in version 1.0.8
+    ('certipy', '0.1.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859')]),
+    ])),
+    ('oauthlib', '3.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889')]),
+    ])),
+    ('ruamel.yaml', '0.16.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '412a6f5cfdc0525dee6a27c08f5415c7fd832a7afcb7a0ed7319628aed23d408')]),
+    ])),
+    ('ruamel.yaml.clib', '0.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cee86ecc893a6a8ecaa7c6a9c2d06f75f614176210d78a5f155f8e78d6989509')]),
+        ('modulename', 'ruamel.yaml'),
+    ])),
+    ('python-json-logger', '0.1.11', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281')]),
+        ('modulename', 'pythonjsonlogger'),
+    ])),
+    ('Jinja2', '2.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250')]),
+    ])),
+    ('jupyter_telemetry', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '445c613ae3df70d255fe3de202f936bba8b77b4055c43207edf22468ac875314')]),
+    ])),
+    ('jupyterhub', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '852a70225a03abd631b36a207f3ffdf69326a0db4cef539825fde39ec1b713d7')]),
+        ('patches', ['jupyterhub-1.1.0_logoutcookie-2.0.patch']),
+        # copy 401.html -> <jupyter-install-dir>/share/jupyter/lab/static/
+    ])),
+    ('appmode', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'deac99adaa95e28fa8a56c072be653603cffa49dc06469701ac9c014b690e7c4')]),
+    ])),
+    ('HeapDict', '1.0.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6')]),
+    ])),
+    ('zict', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e34dd25ea97def518fb4c77f2c27078f3a7d6c965b0a3ac8fe5bdb0a8011a310')]),
+    ])),
+    ('tblib', '1.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1735ff8fd6217446384b5afabead3b142cf1a52d242cfe6cab4240029d6d131a')]),
+    ])),
+    ('sortedcontainers', '2.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '974e9a32f56b17c1bac2aebd9dcf197f3eb9cd30553c5852a3187ad162e1a03a')]),
+    ])),
+    ('msgpack', '0.6.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830')]),
+    ])),
+    ('dask', '2.30.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a1669022e25de99b227c3d83da4801f032415962dac431099bf0534648e41a54')]),
+    ])),
+    ('cloudpickle', '1.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0b6258a20a143603d53b037a20983016d4e978f554ec4f36b3d0895b947099ae')]),
+    ])),
+    ('distributed', '2.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '30b0ca195ace1e39bdd278bf1ad257f7674b3e2b8e7a2a37ce7e2ade4aecccf3')]),
+    ])),
+    ('dask-jobqueue', '0.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd32ddf3e3c7db29ace102037fa5f61c8db2d945176454dc316a6ffdb8bbfe88b')]),
+    ])),
+    ('dask_labextension', '3.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c613f5c76b8fce4fae167eeab3377e0706e5045a27da1200b3b173025a94d94b')]),
+    ])),
+    ('Automat', '0.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '269a09dfb063a3b078983f4976d83f0a0d3e6e7aaf8e27d8df1095e09dc4a484')]),
+    ])),
+    ('PyHamcrest', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd')]),
+        ('modulename', 'hamcrest'),
+    ])),
+    ('pyasn1', '0.4.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba')]),
+    ])),
+    ('pyasn1-modules', '0.2.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e')]),
+    ])),
+    ('service_identity', '18.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0858a54aabc5b459d1aafa8a518ed2081a285087f349fe3e55197989232e2e2d')]),
+    ])),
+    ('Twisted', '19.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd5db93026568f60cacdc0615fcd21d46f694a6bfad0ef3ff53cde2b4bb85a39d')]),
+        ('source_tmpl', '%(name)s-%(version)s.tar.bz2'),
+    ])),
+    ('autobahn', '19.10.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '734385b00547448b3f30a752cbfd2900d15924d77dc4a1699b8bce1ea8899f39')]),
+    ])),
+    ('constantly', '15.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35')]),
+    ])),
+    ('hyperlink', '19.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4288e34705da077fada1111a24a0aa08bb1e76699c9ce49876af722441845654')]),
+    ])),
+    ('incremental', '17.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3')]),
+    ])),
+    ('txaio', '18.8.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '67e360ac73b12c52058219bb5f8b3ed4105d2636707a36a7cdafb56fe06db7fe')]),
+    ])),
+    ('zope.interface', '4.7.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fd1101bd3fcb4f4cf3485bb20d6cb0b56909b94d3bd2a53a6cb9d381c3da3365')]),
+    ])),
+    # ('backcall', '0.1.0', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4')]),
+    # ])),  # part of Python module (sanity check fails if package used from Python dependency)
+    ('wslink', '0.1.13', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6983114e978717a2681815b1ef4b8a0fa2c80c89c6ed09b9554a36c5869cf935')]),
+    ])),
+    ('jupyterlab_pygments', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '31deda75bd11b014190764c79f6199aa04ef2d4cf35c1c94270fc2e19c23a5c5')]),
+    ])),
+    #    ('jupyterlab-nvdashboard', '0.2.1', dict(list(local_common_opts.items()) + [
+    #        # throughs too many errors if nvtools or driver are not installed
+    #        ('checksums', [('sha256', '2f69a1c3b35250cda252fe6bc684c0e99c3eac87e012843d7fc52f204ab3d0c6')]),
+    #    ])),
+    ('ipyvue', '1.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5b59cf92a1eb7fbef4f2d02be49ac562a721a6cf34f991ac963222cf4c8885a1')]),
+    ])),
+    ('ipyvuetify', '1.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '593f5d6761e304cbb78bca967030485d8835e8d310ef7d83ac1b0e6a13e4911c')]),
+    ])),
+    ('voila', '0.2.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '332725b88fb026ad421db90fdad53d7e8de2ffd03a8584a55d9940465932ede8')]),
+    ])),
+    ('voila-material', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0827a27f0f23ca87bd8f565c4c227c754516d2a120ffce0f7ab1ee12fdec959f')]),
+        ('modulename', 'voila'),  # fake module name to trick the sanity check
+    ])),
+    ('voila-gridstack', '0.0.11', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '851dafe1912199ba36ad5544fb0f624bcb1421d2d31c0f1d03fcdcbf6d626dee')]),
+        ('modulename', 'voila'),
+    ])),
+    ('voila-vuetify', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '522f4ec91eb3912a21215b6b04ad58070d1675809d7d4289ca8e42b577fde100')]),
+        ('modulename', 'voila'),
+    ])),
+    ('pydicom', '1.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9488495a9f3e202d1219f7cb165aee0de31efd512d938c0226d34147ce860391')]),
+    ])),
+    ('dicom_upload', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd03f309bbae2094d3db75ffaa9753cca5982d2096ec55720a1f54343cc4a6877')]),
+    ])),
+    ('jsfileupload', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '245cd74a3c2ed4356df9a33d0072d8ab295b60b6fdfd69c6795396d455fc8a77')]),
+    ])),
+    ('pvlink', '0.3.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a2d5f2c204e0e779a5b865742019b4646b8592d76de87cac724dc84f64eaf80f')]),
+    ])),
+
+    ('textwrap3', '0.9.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'textwrap3-0.9.2.zip'),
+        ('checksums', [('sha256', '5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414')]),
+        ('use_pip',  True),
+    ])),
+    ('ansiwrap', '0.8.4', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'ansiwrap-0.8.4.zip'),
+        ('checksums', [('sha256', 'ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7')]),
+    ])),
+    ('backports.weakref', '1.0.post1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bc4170a29915f8b22c9e7c4939701859650f2eb84184aee80da329ac0b9825c2')]),
+    ])),
+    ('backports.tempfile', '1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1c648c452e8770d759bdc5a5e2431209be70d25484e1be24876cf2168722c762')]),
+    ])),
+    ('tqdm', '4.41.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '166a82cdea964ae45528e0cc89436255ff2be73dc848bdf239f13c501cae5dc7')]),
+    ])),
+    ('tenacity', '6.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '72f397c2bb1887e048726603f3f629ea16f88cb3e61e4ed3c57e98582b8e3571')]),
+    ])),
+    ('papermill', '2.2.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1c452b1c5a9ab52b94c99d8b7705ae7173f6aa88a3d28a5d30cffba48a46f5b6')]),
+    ])),
+    ('pyviz_comms', '0.7.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '712df4cca33dda351de754742b24361eee8e4b7c1cfb0e24f50dcb802fa25624')]),
+    ])),
+    ('Markdown', '3.2.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17')]),
+        ('modulename', 'markdown'),
+    ])),
+    ('panel', '0.9.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '53340615f30f67f3182793695ebe52bf25e7bbb0751aba6f29763244350d0f42')]),
+    ])),
+    ('holoviews', '1.13.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cf2dd426cdc08bf2ca669268ca0432634574429e5b143314ee06ad88c5382802')]),
+    ])),
+
+    # PythonPackages for Tutorials
+    ('xarray', '0.16.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '38e8439d6c91bcd5b7c0fca349daf8e0643ac68850c987262d53526e9d7d01e4')]),
+    ])),
+    ('patsy', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f115cec4201e1465cd58b9866b0b0e7b941caafec129869057405bfe5b5e3991')]),
+    ])),
+    ('statsmodels', '0.10.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9cd2194c6642a8754e85f9a6e6912cdf996bebf6ff715d3cc67f65dadfd37cc9')]),
+    ])),
+    ('cftime', '1.0.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1ac64f8f9066ea756ea27d67cedaf064e7c866275218fa7c84684066a5890f70')]),
+    ])),
+    ('vega_datasets', '0.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'db8883dab72b6f414e1fafdbf1e8db7543bba6ed77912a4e0c197d74fcfa1c20')]),
+    ])),
+    ('Theano', '1.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '35c9bbef56b61ffa299265a42a4e8f8cb5a07b2997dabaef0f8830b397086913')]),
+        ('modulename', 'theano'),
+    ])),
+    ('altair', '3.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9f7c521239ac5a207c3cffc29c5bdde0854fff0dec0b5f91f086ba8e5f1de8a9')]),
+    ])),
+    ('cssselect', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc')]),
+    ])),
+    ('smopy', '0.0.7', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '578b5bc2502176d210f176ab94e77974f43b32c95cd0768fb817ea2499199592')]),
+    ])),
+    ('joblib', '0.14.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0630eea4f5664c463f23fbf5dcfc54a2bc6168902719fa8e19daf033022786c8')]),
+    ])),
+    ('scikit-learn', '0.22', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '314abf60c073c48a1e95feaae9f3ca47a2139bd77cebb5b877c23a45c9e03012')]),
+        ('modulename', 'sklearn'),
+    ])),
+    ('memory_profiler', '0.55.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5fa47b274c929dd2cbcd9190afb62fec110701251d2ac2d301caaf545c81afc1')]),
+    ])),
+    ('h5py', '2.10.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '84412798925dc870ffd7107f045d7659e60f5d46d1c70c700375248bf6bf512d')]),
+    ])),
+    ('line_profiler', '3.1.0', dict(list(local_common_opts.items()) + [
+        # ('checksums', [('sha256', '7218ad6bd81f8649b211974bf108933910f016d66b49651effe7bbf63667d141')]),
+        # ('use_pip', False), # no pip ! uses PEP 517
+        ('source_tmpl', 'line_profiler-3.1.0-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'a66e089e6d98ab8a70b5f89c0367c6780abad0f0b1d624dbe5edd8f0083986c7')]),
+        ('unpack_sources', False),  # whl package instead of tar.gz because building with skbuild->cmake fails
+    ])),
+    ('llvmlite', '0.35.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '80e51d5aa02ad72da9870e89d21f9b152b0220ca551b4596a6c0614bcde336fc')]),
+    ])),
+    ('numba', '0.52.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '44661c5bd85e3d3619be0a40eedee34e397e9ccb3d4c458b70e10bf95d1ce933')]),
+    ])),
+    ('arviz', '0.10.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dc1f08ce02459989dd4f41fa6012e736cf2ba00ee44b29bebe0a451c58a68e42')]),
+    ])),
+    ('pymc3', '3.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1bb2915e4a29877c681ead13932b0b7d276f7f496e9c3f09ba96b977c99caf00')]),
+    ])),
+    ('numexpr', '2.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b0d239d9827e1bcee08344fd05835823bc60aff97232e35a928214d03ff802b1')]),
+    ])),
+    ('ipythonblocks', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ba923cb7a003bddee755b5a7ac9e046ffc093a04b0bdede8a0a51ef900aed0ba')]),
+    ])),
+    ('pydub', '0.23.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c362fa02da1eebd1d08bd47aa9b0102582dff7ca2269dbe9e043d228a0c1ea93')]),
+    ])),
+    ('multipledispatch', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea')]),
+    ])),
+    ('partd', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6e258bf0810701407ad1410d63d1a15cfd7b773fd9efe555dac6bb82cc8832b0')]),
+    ])),
+    ('locket', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1fee63c1153db602b50154684f5725564e63a0f6d09366a1cb13dffcec179fb4')]),
+    ])),
+    ('fsspec', '0.6.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ffd7cd5ac32f36698097c3d78c2c433d4c12f7e4bce3a3a4036fd3491188046d')]),
+    ])),
+    ('datashape', '0.5.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2356ea690c3cf003c1468a243a9063144235de45b080b3652de4f3d44e57d783')]),
+    ])),
+    ('datashader', '0.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b1f80415f72f92ccb660aaea7b2881ddd35d07254f7c44101709d42e819d6be6')]),
+    ])),
+    ('selenium', '3.141.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d')]),
+    ])),
+    ('graphviz', '0.13.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'graphviz-0.13.2.zip'),
+        ('checksums', [('sha256', '60acbeee346e8c14555821eab57dbf68a169e6c10bce40e83c1bf44f63a62a01')]),
+    ])),
+    ('vincent', '0.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5765bcd360140d2304e52728ad1d4382f3f919ea259a13932828680f2d84fcd3')]),
+    ])),
+    ('tailer', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '78d60f23a1b8a2d32f400b3c8c06b01142ac7841b75d8a1efcb33515877ba531')]),
+    ])),
+    # Dash
+    ('Flask', '1.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52')]),
+    ])),
+    ('Flask-Compress', '1.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '468693f4ddd11ac6a41bca4eb5f94b071b763256d54136f77957cfee635badb3')]),
+    ])),
+    ('Werkzeug', '1.0.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c')]),
+    ])),
+    ('hiredis', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '996021ef33e0f50b97ff2d6b5f422a0fe5577de21a8873b58a779a5ddd1c3132')]),
+    ])),
+    ('redis', '3.5.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2')]),
+    ])),
+    ('Flask-Caching', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a0356ad868b1d8ec2d0e675a6fe891c41303128f8904d5d79e180d8b3f952aff')]),
+    ])),
+    ('dash', '1.16.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fdfe2a16c4041c7769e06e4e0eaaeb65cfd8351797ed4b37efe001384637b6c7')]),
+    ])),
+    ('dash_renderer', '1.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '736f8e0dcce244699457b54a2ee262a04baf389db1a8f54e98c949bb3e7e487f')]),
+    ])),
+    ('dash_core_components', '1.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '803b54d01ca48b90f3fc1652f7be9f818ed2882da8975a51b99fc2d77dd2727e')]),
+    ])),
+    ('dash_html_components', '1.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2c662e640528c890aaa0fa23d48e51c4d13ce69a97841d856ddcaaf2c6a47be3')]),
+    ])),
+    ('dash_table', '4.10.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1aa02180faef13434364286b60404d26164d1ce2779c765c9c52e6935991a4e9')]),
+    ])),
+    ('dash-bootstrap-components', '0.10.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '40500e692f59648dbc024b9e921a1e1410ee0bc97cfa963990e54e42523679b4')]),
+    ])),
+    ('dash_daq', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a1d85b6799f7b885652fbc44aebdb58c41254616a8d350b943beeb42ade4256a')]),
+    ])),
+    ('dash_player', '0.0.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '46114910b497f35f1aa496ed8b9ff1457d07c96171227961b671ba4164c537a0')]),
+    ])),
+    ('dash_canvas', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '72fcfb37e1c0f68c08f6fa6cf0b5be67ecc66fcfb5253231ffc450957b640b31')]),
+    ])),
+    ('dash_bio', '0.4.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a6f480b060488ab9be26129562a7bcb491ef40ae0ffae46f499fb7d5997de06c')]),
+    ])),
+    ('dash_cytoscape', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0669c79c197e4b150a5db7a278d1c7acebc947f3f5cbad5274835ebb44f712cd')]),
+    ])),
+    ('ansi2html', '1.5.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '96ae85ae7b26b7da674d87de2870ba4d1964bca733ae4614587080b6358c3ba9')]),
+    ])),
+    ('jupyter-dash', '0.3.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e41d68aa85a7dd53480cc33feae04f4cfd7ac2ace8089c1e1630a2342e8bd8aa')]),
+    ])),
+    # more
+    ('fastcore', '1.3.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '550c201f6a0f7001994898260588e3df310968165c43ecc4fa3062dd6eee5956')]),
+    ])),
+    ('fastscript', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '67d2315a508ffd0499af590fffaa63d276ce6eaff73ffbd60eb3315ba38d08fa')]),
+    ])),
+    #   ('nbdev', '1.1.5', dict(list(local_common_opts.items()) + [
+    #       #   nbdev < 2 needs nbconvert < 6, will change with nbdev >= 2
+    #       ('checksums', [('sha256', '0ce349625514e2865bbc023db597d791c45b572a7bbc8a49b320a327b9e7b721')]),
+    #   ])),
+    ('PyJWT', '1.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96')]),
+        ('modulename', 'jwt'),
+    ])),
+    ('pyunicore', '0.9.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '09cd91562feb7677c8bd9cbbe02e1b0d27d1b5817e12ef5bf4701619cac77d9b')]),
+    ])),
+
+    # misc
+    #    ('rpy2', '3.2.4', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '3daf1a4b28c4e354ef989093f03b066908bf6e5082a6f4af72cc3fd928a28dc6')]),
+    #    ])),
+]
+
+local_jupyter_config_path = 'etc/jupyter'
+local_jupyter_path = 'share/jupyter'
+local_jupyterlab_dir = 'share/jupyter/lab'
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    #  search path to find installable data files, such as kernelspecs and notebook extensions
+    'JUPYTER_PATH': [local_jupyter_path],
+    'JUPYTERLAB_DIR': [local_jupyterlab_dir],
+    #  do NOT set JUPYTER_CONFIG_DIR: if not set, if will be ${HOME}/.jupyter, which is just right
+    'JUPYTER_CONFIG_PATH': [local_jupyter_config_path]   # config dir at install time.
+    #  ATTENTION: not config dir at runtime, because this is fixed to {sys.prefix}/etc/jupyter/
+}
+
+modextravars = {
+    'JUPYTER': '%(installdir)s/bin/jupyter',
+    'MKL_THREADING_LAYER': 'GNU',  # https://github.com/Theano/Theano/issues/6568
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is fist entry in JUPYTHER_PATH and JUPYTER_DATA_DIR
+# https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html#envvar-JUPYTER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+prepend_path("JUPYTER_DATA_DIR", pathJoin(os.getenv("HOME"),".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    #  ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+
+    'echo "#!/bin/bash" > %(builddir)s/env.sh',
+    'echo "source %(installdir)s/bin/activate" >> %(builddir)s/env.sh',
+    (
+        'echo "export PYTHONPATH='
+        '%(installdir)s/lib/python3.8/site-packages:${EBROOTPYTHON}/lib/python3.8/site-packages:${PYTHONPATH}"'
+        ' >> %(builddir)s/env.sh'
+    ),
+    #  Jupyter Paths - http://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html
+    'echo "export JUPYTER=%(installdir)s/bin/jupyter" >> %(builddir)s/env.sh',
+    'echo "export JUPYTER_PATH=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+    'echo "export JUPYTERLAB_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyterlab_dir,
+    #  Config dir at install time. ATTENTION: not config dir at runtime. This is picked up by JUPYTER_CONFIG_PATH
+    'echo "export JUPYTER_CONFIG_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_config_path,
+    #  jupyter will use $JUPYTER_CONFIG_DIR with "--user"
+    'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+    'echo "export PATH=%(installdir)s/bin:${PATH}" >> %(builddir)s/env.sh',
+
+    #  NodeJS packages
+    'source %(builddir)s/env.sh && npm install -g phantomjs-prebuilt@2.1.16',  # req. export_png/export_svg of bokeh
+
+    #  Jupyter Notebook Extensions
+    'source %(builddir)s/env.sh && jupyter contrib nbextension install --user',
+    'source %(builddir)s/env.sh && jupyter nbextensions_configurator enable --user',
+    'source %(builddir)s/env.sh && jupyter nbextension enable codefolding/main --user',
+
+    ('source %(builddir)s/env.sh && '
+     '    jupyter nbextension install widgetsnbextension --py --nbextensions=${JUPYTER_PATH}/nbextensions'),
+    'source %(builddir)s/env.sh && jupyter nbextension enable  widgetsnbextension --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension enable ipyvuetify --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension install rise --py --nbextensions=${JUPYTER_PATH}/nbextensions',
+    'source %(builddir)s/env.sh && jupyter nbextension enable  rise --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension     enable appmode --py --user',
+    'source %(builddir)s/env.sh && jupyter serverextension enable appmode --py',
+
+    #  Jupyter Notebook Extensions
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-manager@2.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-sidecar@0.5.0 --no-build',
+
+    # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/server-proxy@2.1.1 --no-build',
+    ('source %(builddir)s/env.sh && '
+     '  cd %(builddir)s/jupyterserverproxy/jupyter-server-proxy-1.5.2/jupyterlab-server-proxy/ && '
+     '    npm install && '                             # install npm package dependencies incurrent directory
+     '    npm run build && '                           # optional build step if using TypeScript, babel, etc.
+     '    jupyter labextension install --no-build'),   # install the current directory as an extension'
+    # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/github@2.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/latex@2.0.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/git@0.23.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/toc@4.0.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-datawidgets@6.3.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-plotly@4.8.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-gitlab@2.0.0 --no-build',
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab_iframe@0.2.2 --no-build',
+
+    #  this might interfer with Xpra-icon: https://github.com/cmd-ntrf/jupyter-lmod/issues/30
+    ('source %(builddir)s/env.sh && '
+     '  cd %(builddir)s/jupyterlmod/jupyter-lmod-2.0.2/jupyterlab/ && '
+     '    npm install && '                            # install npm package dependencies incurrent directory
+     '    npm run build && '                          # optional build step if using TypeScript, babel, etc.
+     '    jupyter labextension install --no-build'),  # install the current directory as an extension
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-nvdashboard@0.3.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-dash@0.3.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-topbar-extension@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-system-monitor@0.6.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-theme-toggle@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-control@1.1.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-favorites@2.0.0 --no-build',
+    #   store default in ../share/jupyter/lab/schemas/jupyterlab-favorites/favorites.json
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-tour@2.1.1 --no-build',
+    #   tour-state on/off is saved in workspace-file in ~/.jupyter/lab/workspaces/
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-matplotlib@0.7.4 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-leaflet@0.13.2 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-threejs@2.2.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-vuetify@1.5.1 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install nbdime-jupyterlab@2.0.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install dask-labextension@3.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install ipyvolume@0.6.0-alpha.5 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install plotlywidget@4.12.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install bqplot@0.5.17 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install dicom-upload@0.2.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jsfileupload@0.2.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install @pyviz/jupyterlab_pyviz@1.0.4 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @bokeh/jupyter_bokeh@2.0.2 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-voila/jupyterlab-preview@1.1.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install @parente/jupyterlab-quickopen@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @ryantam626/jupyterlab_code_formatter@1.3.8 --no-build',
+    ('source %(builddir)s/env.sh && '
+     '    jupyter labextension install @krassowski/jupyterlab_go_to_definition@1.0.0 --no-build'),
+    'source %(builddir)s/env.sh && jupyter labextension install @krassowski/jupyterlab-lsp@2.1.2 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install pvlink@0.3.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install itkwidgets@0.32.0 --no-build',
+
+    #  build JupyterLab app directory for all previous installed extensions in one go
+    'source %(builddir)s/env.sh && jupyter lab build --dev-build=False',  # --minimize=False
+
+    #  jupyterlab server extensions
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_server_proxy --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_code_formatter --py',
+    # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_sql --py',
+    # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_iframe --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_git --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_lsp --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable dask_labextension --py',
+
+    #  configure jupyterlab extensions
+
+    #  Send2Trash
+    #  disable
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        'c.FileContentsManager.delete_to_trash = False\n'
+        'EOF'
+    ),
+
+    #  GitLab-extension
+    #  for security reasons access-token must be set in the server extension:
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# no username+password needed, if repo is public or we have the token for a specific URL\n'
+        '# c.GitLabConfig.access_token = "<API-TOKEN>"  # give api-access of user "jupyter.jsc@fz-juelich.de"\n'
+        'c.GitLabConfig.allow_client_side_access_token = False\n'
+        'c.GitLabConfig.url = "https://gitlab.version.fz-juelich.de"\n'
+        'c.GitLabConfig.validate_cert = False\n'
+        'EOF'
+    ),
+
+    #  GitHub-extension
+    #  for security reasons access-token must be set in the server extension:
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# no username+password needed, if repo is public or we have the token for a specific URL\n'
+        '# c.GitHubConfig.access_token = "<API-TOKEN>"\n'
+        'c.GitHubConfig.allow_client_side_access_token = False\n'
+        'c.GitHubConfig.url = "https://github.com"\n'
+        'c.GitHubConfig.validate_cert = False\n'
+        'EOF'
+    ),
+
+    #  iframe-extension
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# c.JupyterLabIFrame.iframes = [\'list\', \'of\', \'sites\']\n'
+        'c.JupyterLabIFrame.welcome = "http://www.fz-juelich.de/jsc"\n'
+        'EOF'
+    ),
+
+    #  define .ipynb_checkpoints permissions
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        'c.FileCheckpoints.checkpoint_permissions = 0o664\n'
+        'c.FileCheckpoints.restore_permissions = 0o644\n'
+        'c.FileCheckpoints.checkpoint_dir_umask = 0o002\n'
+        'EOF'
+    ),
+
+    #  modify the installation files, which would be overwritten if done before (must be last commands to run)
+    (
+        'cp %(builddir)s/jupyterlabgitlab/jupyterlab-gitlab-2.0.0/schema/drive.json'
+        '   %(installdir)s/share/jupyter/lab/schemas/jupyterlab-gitlab/drive.json'
+    ),
+
+    #  Add the overrides file
+    (
+        '{ cat > %(builddir)s/file_jupyter-overrides_jsc.patch; } << \'EOF\'\n'
+        'diff -Naur share.orig/jupyter/lab/settings/overrides.json share/jupyter/lab/settings/overrides.json\n'
+        '--- share.orig/jupyter/lab/settings/overrides.json      1970-01-01 01:00:00.000000000 +0100\n'
+        '+++ share/jupyter/lab/settings/overrides.json   2019-11-26 13:40:46.560731000 +0100\n'
+        '@@ -0,0 +1,8 @@\n'
+        '+{\n'
+        '+    "jupyterlab-gitlab:drive": {\n'
+        '+        "baseUrl": "https://gitlab.version.fz-juelich.de"\n'
+        '+    },\n'
+        '+    "@parente/jupyterlab-quickopen:plugin": {\n'
+        '+        "relativeSearch": true\n'
+        '+    }\n'
+        '+}\n'
+        'EOF'
+    ),
+    'patch -p0 -d %(installdir)s < %(builddir)s/file_jupyter-overrides_jsc.patch',
+
+    # add webpage, which leads back to https://jupyter-jsc.fz-juelich.de
+    'cp %%(builddir)s/jupyterlab/jupyterlab-%s/401.html %%(installdir)s/share/jupyter/lab/static/' % local_jlab_version,
+
+    #  ###################################################
+    #  IMPORTANT:
+    #  start JupyterLab once (for 60 seconds) to allow some cleanup at first start
+    #  ###################################################
+    (
+        'source %(builddir)s/env.sh && '
+        '{(jupyter lab --no-browser) & } && JLAB_PID=$! && '
+        'sleep 60 && '
+        'jupyter notebook list --json | grep $JLAB_PID | '
+        'awk \'{for(i=1;i<=NF;i++)if($i=="\\"port\\":")print $(i+1)}\' | sed \'s/,*$//g\' | '
+        'xargs -i jupyter notebook stop {}'
+    ),
+
+    #  Ensure Jupyter does not want to build anything on startup
+    #  The build_config.json file is used to track the local directories that have been installed
+    #  using jupyter labextension install <directory>, as well as core extensions that have been explicitly uninstalled.
+    # 'if [ -e %(installdir)s/share/jupyter/lab/settings/build_config.json ]; then exit 1; fi ',
+    (
+        '{ cat > %(installdir)s/share/jupyter/lab/settings/build_config.json; } << \'EOF\'\n'
+        '{\n'
+        '    "local_extensions": {}\n'
+        '}\n'
+        'EOF'
+    ),
+
+    #  Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm %(installdir)s/pyvenv.cfg',
+    'rm %(installdir)s/bin/python',
+    'rm %(installdir)s/bin/python3',
+    'rm %(installdir)s/bin/activate',
+    'rm %(installdir)s/bin/activate*',
+    'rm %(installdir)s/bin/easy_install*',
+    'rm %(installdir)s/bin/pip*',
+
+    #  Compile Python files to byte-code to speedup execution
+    #  ERROR: returns with exit code 1, because some files cannot be compiled for different reasons
+    #  ###################################################
+    #   Disable possible, because sanity check will    #
+    #   force the compile of all python packages anyway#
+    #  ###################################################
+    #  'source %(builddir)s/env.sh && python -m compileall %(installdir)s',
+
+    #  ###################################################
+    #   IMPORTANT: must be done manual after eb-install: #
+    #  ###################################################
+    #  'chmod -R g-w %(installdir)s ',          # software-group must not modify the installation on accident
+    #  'chmod -R ugo-w %(installdir)s/share ', # Noone should add files/configs to the global share after install
+    #  'chmod -R ug-w ...../2020/software/Python/3.8.5-GCCcore-9.3.0/share ',  # Python module, too
+]
+
+#  specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+#  full_sanity_check = True # would result in sanity-errors about yaml,ipython_genutils,IPython,traitlets
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch b/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c51dfd38ddbf859c8282aa48875224addaf60f38
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch
@@ -0,0 +1,121 @@
+diff -Naur jupyter_contrib_nbextensions.orig/CHANGELOG.md jupyter_contrib_nbextensions/CHANGELOG.md
+--- jupyter_contrib_nbextensions.orig/CHANGELOG.md	2020-11-22 12:43:10.086824740 +0100
++++ jupyter_contrib_nbextensions/CHANGELOG.md	2020-11-22 12:47:11.839564000 +0100
+@@ -21,6 +21,9 @@
+ This is where each new PR to the project should add a summary of its changes,
+ which makes it much easier to fill in each release's changelog :)
+ 
++- Replace `template_path` with `template_paths` [#1532](https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532). Nbconvert 6.0 replaced `template_path` with `template_paths` (see https://nbconvert.readthedocs.io/en/latest/changelog.html#significant-changes). This change in Nbconvert 6.0 causes errors in jupyter_latex_envs and in jupyter_contrib_nbextensions (see [#1529](https://github.com/ipython-contrib/jupyter_contrib_nbextensions/issues/1529).
++- Update `install_requires` list in `setup.py` with 'nbconvert >=6.0' 
++
+ 0.5.1
+ -----
+ 
+diff -Naur jupyter_contrib_nbextensions.orig/setup.py jupyter_contrib_nbextensions/setup.py
+--- jupyter_contrib_nbextensions.orig/setup.py	2020-11-22 12:43:10.325780000 +0100
++++ jupyter_contrib_nbextensions/setup.py	2020-11-22 12:47:11.842264000 +0100
+@@ -67,7 +67,7 @@
+             'jupyter_highlight_selected_word >=0.1.1',
+             'jupyter_latex_envs >=1.3.8',
+             'jupyter_nbextensions_configurator >=0.4.0',
+-            'nbconvert >=4.2',
++            'nbconvert >=6.0',
+             'notebook >=4.0',
+             'pyyaml',
+             'tornado',
+@@ -81,7 +81,7 @@
+                 'pip',
+                 'requests',
+             ],
+-            'test:python_version == "2.7"': [
++            'test:python_version == "3.8"': [
+                 'mock',
+             ],
+         },
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py	2020-11-22 12:43:10.330209000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py	2020-11-22 12:47:11.799365000 +0100
+@@ -7,7 +7,7 @@
+ 
+ c = get_config()  # noqa
+ c.NbConvertApp.export_format = "html"
+-c.Exporter.template_path = [
++c.Exporter.template_paths = [
+     '.',
+     jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
+     os.path.join(jcnbe_dir, 'nbextensions', 'highlighter')
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py	2020-11-22 12:43:10.331124000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py	2020-11-22 12:47:11.801863000 +0100
+@@ -7,7 +7,7 @@
+ 
+ c = get_config()  # noqa
+ c.NbConvertApp.export_format = "latex"
+-c.Exporter.template_path = [
++c.Exporter.template_paths = [
+     '.',
+     jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
+     os.path.join(jcnbe_dir, 'nbextensions', 'highlighter')
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/install.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/install.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/install.py	2020-11-22 12:43:10.332127000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/install.py	2020-11-22 12:47:11.804683000 +0100
+@@ -124,7 +124,7 @@
+     if logger:
+         logger.info('--  Configuring nbconvert template path')
+     # our templates directory
+-    _update_config_list(config, 'Exporter.template_path', [
++    _update_config_list(config, 'Exporter.template_paths', [
+         '.',
+         jupyter_contrib_nbextensions.nbconvert_support.templates_directory(),
+     ], install)
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/migrate.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/migrate.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/migrate.py	2020-11-22 12:43:10.333126000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/migrate.py	2020-11-22 12:47:11.807881000 +0100
+@@ -128,7 +128,7 @@
+     config = Config(cm.get(config_basename))
+     if config and logger:
+         logger.info('- Removing old config values from {}'.format(config_path))
+-    _update_config_list(config, 'Exporter.template_path', [
++    _update_config_list(config, 'Exporter.template_paths', [
+         '.', os.path.join(jupyter_data_dir(), 'templates'),
+     ], False)
+     _update_config_list(config, 'Exporter.preprocessors', [
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py	2020-11-22 12:43:10.337543000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py	2020-11-22 12:47:11.811491000 +0100
+@@ -39,8 +39,8 @@
+             templates_directory)
+         contrib_templates_dir = templates_directory()
+ 
+-        template_path = c.TemplateExporter.setdefault('template_path', [])
+-        if contrib_templates_dir not in template_path:
+-            template_path.append(contrib_templates_dir)
++        template_paths = c.TemplateExporter.setdefault('template_paths', [])
++        if contrib_templates_dir not in template_paths:
++            template_paths.append(contrib_templates_dir)
+ 
+         return c
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py	2020-11-22 12:45:58.854592000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py	2020-11-22 12:47:11.814530000 +0100
+@@ -52,7 +52,7 @@
+             templates_directory)
+         c.merge(super(TocExporter, self).default_config)
+ 
+-        c.TemplateExporter.template_path = [
++        c.TemplateExporter.template_paths = [
+             '.',
+             templates_directory(),
+         ]
+diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md
+--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md	2020-11-22 12:43:10.871469000 +0100
++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md	2020-11-22 12:47:11.816660000 +0100
+@@ -78,7 +78,7 @@
+ ```
+ 
+ The template needs to be in a path where nbconvert can find it. This can be your local path or specified in 
+-`jupyter_nbconvert_config` or `jupyter_notebook_config` as `c.Exporter.template_path`, see [Jupyter docs](https://jupyter-notebook.readthedocs.io/en/latest/config.html).
++`jupyter_nbconvert_config` or `jupyter_notebook_config` as `c.Exporter.template_paths`, see [Jupyter docs](https://jupyter-notebook.readthedocs.io/en/latest/config.html).
+ 
+ For HTML export a template is provided as `nbextensions.tpl` in the `jupyter_contrib_nbextensions` templates directory. Alternatively you can create your own template:
+ ```
diff --git a/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch b/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch
new file mode 100644
index 0000000000000000000000000000000000000000..451f439ae2cb32668895a3c8b77a58896b8e8040
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch
@@ -0,0 +1,48 @@
+diff -Naur jupyter_latex_envs.orig/src/latex_envs/latex_envs.py jupyter_latex_envs/src/latex_envs/latex_envs.py
+--- jupyter_latex_envs.orig/src/latex_envs/latex_envs.py	2020-11-22 17:04:43.617982112 +0100
++++ jupyter_latex_envs/src/latex_envs/latex_envs.py	2020-11-22 17:05:35.063217000 +0100
+@@ -301,12 +301,12 @@
+         )
+         c.merge(super(LenvsHTMLExporter, self).default_config)
+         if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')):
+-            c.TemplateExporter.template_path = ['.',
++            c.TemplateExporter.template_paths = ['.',
+                                                 os.path.join(os.path.dirname(__file__), 'templates')]
+         else:
+             from jupyter_contrib_nbextensions.nbconvert_support import (
+                 templates_directory)
+-            c.TemplateExporter.template_path = ['.', templates_directory()]
++            c.TemplateExporter.template_paths = ['.', templates_directory()]
+ 
+         return c
+ 
+@@ -364,12 +364,12 @@
+         )
+         c.merge(super(LenvsSlidesExporter, self).default_config)
+         if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')):
+-            c.TemplateExporter.template_path = ['.',
++            c.TemplateExporter.template_paths = ['.',
+                                                 os.path.join(os.path.dirname(__file__), 'templates')]
+         else:
+             from jupyter_contrib_nbextensions.nbconvert_support import (
+                 templates_directory)
+-            c.TemplateExporter.template_path = ['.', templates_directory()]
++            c.TemplateExporter.template_paths = ['.', templates_directory()]
+ 
+         return c
+ 
+@@ -483,12 +483,12 @@
+         c.merge(super(LenvsLatexExporter, self).default_config)
+ 
+         if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')):
+-            c.TemplateExporter.template_path = ['.',
++            c.TemplateExporter.template_paths = ['.',
+                                                 os.path.join(os.path.dirname(__file__), 'templates')]
+         else:
+             from jupyter_contrib_nbextensions.nbconvert_support import (
+                 templates_directory)
+-            c.TemplateExporter.template_path = ['.', templates_directory()]
++            c.TemplateExporter.template_paths = ['.', templates_directory()]
+         return c
+ 
+     def tocrefrm(self, text):
diff --git a/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch b/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..dc420a9b2607b58f666925f4cb608a94298e7c15
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch
@@ -0,0 +1,123 @@
+diff -Naur jupyterhub-1.1.0.orig/jupyterhub/services/auth.py jupyterhub-1.1.0/jupyterhub/services/auth.py
+--- jupyterhub-1.1.0.orig/jupyterhub/services/auth.py	2019-12-03 10:13:48.000000000 +0100
++++ jupyterhub-1.1.0/jupyterhub/services/auth.py	2020-12-23 08:24:38.868452725 +0100
+@@ -28,6 +28,7 @@
+ from tornado.log import app_log
+ from tornado.web import HTTPError
+ from tornado.web import RequestHandler
++from traitlets import Bool
+ from traitlets import default
+ from traitlets import Dict
+ from traitlets import Instance
+@@ -191,6 +192,29 @@
+         """,
+     ).tag(config=True)
+ 
++    session_id_required = Bool(
++        os.getenv('JUPYTERHUB_SESSION_ID_REQUIRED', 'false').lower()=="true",
++        help="""
++        Blocks any requests, if there's no jupyterhub-session-id cookie.
++        """,
++    ).tag(config=True)
++
++    session_id_required_user = Bool(
++        os.getenv('JUPYTERHUB_SESSION_ID_REQUIRED_USER', 'false').lower()=="true",
++        help="""
++        Blocks any requests to /user, if there's no jupyterhub-session-id cookie.
++        """,
++    ).tag(config=True)
++
++    last_session_id_validation = 0
++    last_session_id_validation_result = None
++
++    last_session_id_validation_cache_time = Integer(
++        int(os.getenv('JUPYTERHUB_SESSION_ID_CACHE_TIME', "10")),
++        help="""The maximum time (in seconds) to cache the Hub's responses for session_id verification. Default is 10.
++        """,
++    ).tag(config=True)
++
+     hub_prefix = Unicode(
+         '/hub/',
+         help="""The URL prefix for the Hub itself.
+@@ -461,6 +485,18 @@
+         """
+         return handler.get_cookie('jupyterhub-session-id', '')
+ 
++    def validate_session_id(self, username, session_id):
++        if time.time() - self.last_session_id_validation > self.last_session_id_validation_cache_time:
++            self.last_session_id_validation = int(time.time())
++            url = url_path_join(
++                self.api_url, "authorizations/sessionid", quote(username, safe=''),
++            )
++            headers = {"sessionid": session_id}
++            self.last_session_id_validation_result = self._api_request(
++                'GET', url, allow_404=True, headers=headers
++            )
++        return self.last_session_id_validation_result
++
+     def get_user(self, handler):
+         """Get the Hub user for a given tornado handler.
+ 
+@@ -484,16 +520,33 @@
+         handler._cached_hub_user = user_model = None
+         session_id = self.get_session_id(handler)
+ 
+-        # check token first
+-        token = self.get_token(handler)
+-        if token:
+-            user_model = self.user_for_token(token, session_id=session_id)
++        if self.session_id_required and not session_id:
++            app_log.info("Unauthorized access. Only users with a session id are allowed.")
++            return {'name': '<session_id_required>', 'kind': 'User'}
++        elif self.session_id_required_user and not session_id and handler.request.uri.startswith('/user'):
++            app_log.info("Unauthorized access. Only users with a session id are allowed to access /user.")
++            return {'name': '<session_id_required>', 'kind': 'User'}
++        elif self.session_id_required or ( self.session_id_required_user and handler.request.uri.startswith('/user')):
++            token = self.get_token(handler)
++            if token:
++                user_model = self.user_for_token(token)
++                if user_model:
++                    handler._token_authenticated = True
++            if user_model is None:
++                user_model = self._get_user_cookie(handler)
+             if user_model:
+-                handler._token_authenticated = True
++                user_model = self.validate_session_id(user_model.get('name', ''), session_id)
++        else:
++            # check token first
++            token = self.get_token(handler)
++            if token:
++                user_model = self.user_for_token(token, session_id=session_id)
++                if user_model:
++                    handler._token_authenticated = True
+ 
+-        # no token, check cookie
+-        if user_model is None:
+-            user_model = self._get_user_cookie(handler)
++            # no token, check cookie
++            if user_model is None:
++                user_model = self._get_user_cookie(handler)
+ 
+         # cache result
+         handler._cached_hub_user = user_model
+@@ -904,10 +957,16 @@
+             # tries to redirect to login URL, 403 will be raised instead.
+             # This is not the best, but avoids problems that can be caused
+             # when get_current_user is allowed to raise.
+-            def raise_on_redirect(*args, **kwargs):
+-                raise HTTPError(
+-                    403, "{kind} {name} is not allowed.".format(**user_model)
+-                )
++            if user_model.get('name', '') == '<session_id_required>':
++                def raise_on_redirect(*args, **kwargs):
++                    raise HTTPError(
++                        401, "Please login to proceed."
++                    )
++            else:
++                def raise_on_redirect(*args, **kwargs):
++                    raise HTTPError(
++                        403, "{kind} {name} is not allowed.".format(**user_model)
++                    )
+ 
+             self.redirect = raise_on_redirect
+             return
diff --git a/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch b/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a382b73c04e2bd356a7a1ce4813ab80d7cf9591d
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch
@@ -0,0 +1,23 @@
+diff
+--- jupyterlab-gitlab-2.0.0.orig/schema/drive.json    2019-05-02 08:22:45.219143000 +0200
++++ jupyterlab-gitlab-2.0.0/schema/drive.json         2019-05-02 08:25:15.392631000 +0200
+@@ -6,8 +6,8 @@
+   "properties": {
+     "baseUrl": {
+       "type": "string",
+-      "title": "The GitLab Base URL",
+-      "default": "https://gitlab.com"
++      "title": "JSC GitLab Base URL",
++      "default": "https://gitlab.version.fz-juelich.de"
+     },
+     "accessToken": {
+       "type": "string",
+@@ -18,7 +18,7 @@
+     "defaultRepo": {
+       "type": "string",
+       "title": "Default Repository",
+-      "default": ""
++      "default": "jupyter4jsc/j4j_notebooks"
+     }
+   },
+   "type": "object"
diff --git a/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch b/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ebee87027b2ee62abbf2c08f58506edd7b898f35
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch
@@ -0,0 +1,13 @@
+diff
+--- jupyterlab-github-2.0.0.orig/schema/drive.json     2018-10-10 21:14:53.986184891 +0200
++++ jupyterlab_github-2.0.0/schema/drive.json          2018-10-11 00:28:34.846777384 +0200
+@@ -18,7 +18,7 @@
+     "defaultRepo": {
+       "type": "string",
+       "title": "Default Repository",
+-      "default": ""
++      "default": "FZJ-JSC/jupyter-jsc-notebooks"
+     }
+   },
+   "type": "object"
+
diff --git a/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch b/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0d166fec22bceb14c1f704b3ee57d04831efe8c8
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch
@@ -0,0 +1,17 @@
+diff -Naur jupyter-lmod-2.0.2.orig/jupyterlab/package.json jupyter-lmod-2.0.2/jupyterlab/package.json
+--- jupyter-lmod-2.0.2.orig/jupyterlab/package.json	2020-11-25 16:19:57.000000000 +0100
++++ jupyter-lmod-2.0.2/jupyterlab/package.json	2020-12-29 16:50:58.803504000 +0100
+@@ -31,10 +31,12 @@
+     "prepare": "npm run clean && npm run build"
+   },
+   "dependencies": {
+-    "@jupyterlab/application": ">=2.0.0",
++    "@jupyterlab/application": "^2.0.0",
++    "@jupyterlab/apputils": "^2.1.0",
+     "@jupyterlab/launcher": "^2.1.0"
+   },
+   "devDependencies": {
++    "@types/react": "^16.9.16",
+     "rimraf": "~2.6.2",
+     "typescript": "~3.7.3"
+   },
diff --git a/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch b/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0b56aa3e3705f48801d287a08eaad4505016c81f
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch
@@ -0,0 +1,37 @@
+diff -Naur jupyter-lmod-2.0.1/jupyterlab/src/index.ts jupyter-lmod-2.0.1_devel/jupyterlab/src/index.ts
+--- jupyter-lmod-2.0.1/jupyterlab/src/index.ts	2020-10-05 17:08:01.000000000 +0200
++++ jupyter-lmod-2.0.1_devel/jupyterlab/src/index.ts	2020-11-25 11:55:24.000000000 +0100
+@@ -244,7 +244,13 @@
+   const namespace = 'server-proxy';
+   const command = namespace + ':' + 'open';
+   for (let server_process of data.server_processes) {
+-    const url = PageConfig.getBaseUrl() + server_process.name + '/';
++
++    let urlfile = '';
++    if (server_process.launcher_entry.urlfile) {
++       urlfile =  server_process.launcher_entry.urlfile;
++    }
++    const url = PageConfig.getBaseUrl() + server_process.name + '/' + urlfile;
++    
+     const title = server_process.launcher_entry.title;
+     const newBrowserTab = server_process.new_browser_tab;
+     const id = namespace + ':' + server_process.name;
+diff -Naur jupyter-lmod-2.0.1/jupyterlmod/static/main.js jupyter-lmod-2.0.1_devel/jupyterlmod/static/main.js
+--- jupyter-lmod-2.0.1/jupyterlmod/static/main.js	2020-10-05 17:08:01.000000000 +0200
++++ jupyter-lmod-2.0.1_devel/jupyterlmod/static/main.js	2020-11-25 11:55:24.000000000 +0100
+@@ -316,10 +316,14 @@
+                 .addClass('new-' + server_process.name);
+ 
+             /* create our list item's link */
++            let urlfile = '';
++            if (server_process.launcher_entry.urlfile) {
++                urlfile =  server_process.launcher_entry.urlfile;
++            }
+             let entry_link = $('<a>')
+                 .attr('role', 'menuitem')
+                 .attr('tabindex', '-1')
+-                .attr('href', base_url + server_process.name + '/')
++                .attr('href', base_url + server_process.name + '/' + urlfile)
+                 .attr('target', '_blank')
+                 .text(server_process.launcher_entry.title);
+ 
diff --git a/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch b/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..de883561447a477f8ad6286b61d0b93c07d0265a
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch
@@ -0,0 +1,82 @@
+diff -Naur jupyter-server-proxy.orig/jupyterlab-server-proxy/src/index.ts jupyter-server-proxy/jupyterlab-server-proxy/src/index.ts
+--- jupyter-server-proxy.orig/jupyterlab-server-proxy/src/index.ts	2020-11-19 06:40:34.521630000 +0100
++++ jupyter-server-proxy/jupyterlab-server-proxy/src/index.ts	2020-11-19 06:41:35.023864000 +0100
+@@ -79,8 +79,11 @@
+     if (!server_process.launcher_entry.enabled) {
+       continue;
+     }
+-
+-    const url = PageConfig.getBaseUrl() + server_process.name + '/';
++    var urlfile = '';
++    if (server_process.launcher_entry.urlfile) {
++       urlfile =  server_process.launcher_entry.urlfile;
++    }
++    const url = PageConfig.getBaseUrl() + server_process.name + '/' + urlfile;
+     const title = server_process.launcher_entry.title;
+     const newBrowserTab = server_process.new_browser_tab;
+     const id = namespace + ':' + server_process.name;
+diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/api.py jupyter-server-proxy/jupyter_server_proxy/api.py
+--- jupyter-server-proxy.orig/jupyter_server_proxy/api.py	2020-11-19 06:40:34.516286000 +0100
++++ jupyter-server-proxy/jupyter_server_proxy/api.py	2020-11-19 06:41:35.015090000 +0100
+@@ -19,7 +19,8 @@
+                 'name': sp.name,
+                 'launcher_entry': {
+                     'enabled': sp.launcher_entry.enabled,
+-                    'title': sp.launcher_entry.title
++                    'title': sp.launcher_entry.title,
++                    'urlfile': sp.launcher_entry.urlfile,
+                 },
+                 'new_browser_tab' : sp.new_browser_tab
+             }
+diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/config.py jupyter-server-proxy/jupyter_server_proxy/config.py
+--- jupyter-server-proxy.orig/jupyter_server_proxy/config.py	2020-11-19 06:40:34.516753000 +0100
++++ jupyter-server-proxy/jupyter_server_proxy/config.py	2020-11-19 06:41:35.016181000 +0100
+@@ -99,7 +99,7 @@
+         ))
+     return handlers
+ 
+-LauncherEntry = namedtuple('LauncherEntry', ['enabled', 'icon_path', 'title'])
++LauncherEntry = namedtuple('LauncherEntry', ['enabled', 'icon_path', 'title', 'urlfile'])
+ ServerProcess = namedtuple('ServerProcess', [
+     'name', 'command', 'environment', 'timeout', 'absolute_url', 'port', 'mappath', 'launcher_entry', 'new_browser_tab'])
+ 
+@@ -116,7 +116,8 @@
+         launcher_entry=LauncherEntry(
+             enabled=le.get('enabled', True),
+             icon_path=le.get('icon_path'),
+-            title=le.get('title', name)
++            title=le.get('title', name),
++            urlfile=le.get('urlfile', ''),
+         ),
+         new_browser_tab=server_process_config.get('new_browser_tab', True)
+     )
+@@ -175,6 +176,10 @@
+             title
+               Title to be used for the launcher entry. Defaults to the name of the server if missing.
+ 
++            urlfile
++              URL file name and URL parameters to be added to the base URL of the launcher entry.
++              Default is none.
++
+           new_browser_tab
+             Set to True (default) to make the proxied server interface opened as a new browser tab. Set to False
+             to have it open a new JupyterLab tab. This has no effect in classic notebook.
+diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/static/tree.js jupyter-server-proxy/jupyter_server_proxy/static/tree.js
+--- jupyter-server-proxy.orig/jupyter_server_proxy/static/tree.js	2020-11-19 06:40:34.519694000 +0100
++++ jupyter-server-proxy/jupyter_server_proxy/static/tree.js	2020-11-19 06:41:35.020051000 +0100
+@@ -33,10 +33,14 @@
+                     .addClass('new-' + server_process.name);
+ 
+                 /* create our list item's link */
++                var urlfile = '';
++                if (server_process.launcher_entry.urlfile) {
++                    urlfile =  server_process.launcher_entry.urlfile;
++                }
+                 var $entry_link = $('<a>')
+                     .attr('role', 'menuitem')
+                     .attr('tabindex', '-1')
+-                    .attr('href', base_url + server_process.name + '/')
++                    .attr('href', base_url + server_process.name + '/' + urlfile)
+                     .attr('target', '_blank')
+                     .text(server_process.launcher_entry.title);
+ 
diff --git a/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch b/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d7a9bb20d7d6eea484462bd8bf68c8e018546b4e
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch
@@ -0,0 +1,143 @@
+diff
+--- notebook-6.0.3.orig/notebook/services/contents/filecheckpoints.py   2020-04-28 06:26:51.384296390 +0200
++++ notebook-6.0.3/notebook/services/contents/filecheckpoints.py        2020-04-28 06:30:55.139342947 +0200
+@@ -14,7 +14,7 @@
+ 
+ from jupyter_core.utils import ensure_dir_exists
+ from ipython_genutils.py3compat import getcwd
+-from traitlets import Unicode
++from traitlets import Unicode, Integer
+ 
+ from notebook import _tz as tz
+ 
+@@ -28,6 +28,35 @@
+     you want file-based checkpoints with another ContentsManager.
+     """
+ 
++    checkpoint_permissions = Integer(
++        0o644,
++        config=True,
++        help="""The permission of your checkpoint files.
++
++        By default, it is 0o644
++        """,
++    )
++
++    restore_permissions = Integer(
++        0o644,
++        config=True,
++        help="""The permission of a restored checkpoint.
++
++        By default, it is 0o644
++        """,
++    )
++
++    checkpoint_dir_umask = Integer(
++        0o022,
++        config=True,
++        help="""The umask for the checkpoint directory.
++
++        Keep in mind that it depends on your system umask, too.
++
++        By default, it is 0o022
++        """,
++    )
++
+     checkpoint_dir = Unicode(
+         '.ipynb_checkpoints',
+         config=True,
+@@ -50,21 +79,29 @@
+     # ContentsManager-dependent checkpoint API
+     def create_checkpoint(self, contents_mgr, path):
+         """Create a checkpoint."""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         checkpoint_id = u'checkpoint'
+         src_path = contents_mgr._get_os_path(path)
+         dest_path = self.checkpoint_path(checkpoint_id, path)
+         self._copy(src_path, dest_path)
+-        return self.checkpoint_model(checkpoint_id, dest_path)
++        os.chmod(dest_path, self.checkpoint_permissions)
++        ret = self.checkpoint_model(checkpoint_id, dest_path)
++        os.umask(original_umask)
++        return ret
+ 
+     def restore_checkpoint(self, contents_mgr, checkpoint_id, path):
+         """Restore a checkpoint."""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         src_path = self.checkpoint_path(checkpoint_id, path)
+         dest_path = contents_mgr._get_os_path(path)
+         self._copy(src_path, dest_path)
++        os.chmod(dest_path, self.restore_permissions)
++        os.umask(original_umask)
+ 
+     # ContentsManager-independent checkpoint API
+     def rename_checkpoint(self, checkpoint_id, old_path, new_path):
+         """Rename a checkpoint from old_path to new_path."""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         old_cp_path = self.checkpoint_path(checkpoint_id, old_path)
+         new_cp_path = self.checkpoint_path(checkpoint_id, new_path)
+         if os.path.isfile(old_cp_path):
+@@ -75,9 +112,11 @@
+             )
+             with self.perm_to_403():
+                 shutil.move(old_cp_path, new_cp_path)
++        os.umask(original_umask)
+ 
+     def delete_checkpoint(self, checkpoint_id, path):
+         """delete a file's checkpoint"""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         path = path.strip('/')
+         cp_path = self.checkpoint_path(checkpoint_id, path)
+         if not os.path.isfile(cp_path):
+@@ -86,23 +125,29 @@
+         self.log.debug("unlinking %s", cp_path)
+         with self.perm_to_403():
+             os.unlink(cp_path)
++        os.umask(original_umask)
+ 
+     def list_checkpoints(self, path):
+         """list the checkpoints for a given file
+ 
+         This contents manager currently only supports one checkpoint per file.
+         """
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         path = path.strip('/')
+         checkpoint_id = "checkpoint"
+         os_path = self.checkpoint_path(checkpoint_id, path)
+         if not os.path.isfile(os_path):
++            os.umask(original_umask)
+             return []
+         else:
+-            return [self.checkpoint_model(checkpoint_id, os_path)]
++            ret = self.checkpoint_model(checkpoint_id, os_path)
++            os.umask(original_umask)
++            return [ret]
+ 
+     # Checkpoint-related utilities
+     def checkpoint_path(self, checkpoint_id, path):
+         """find the path to a checkpoint"""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         path = path.strip('/')
+         parent, name = ('/' + path).rsplit('/', 1)
+         parent = parent.strip('/')
+@@ -117,16 +162,19 @@
+         with self.perm_to_403():
+             ensure_dir_exists(cp_dir)
+         cp_path = os.path.join(cp_dir, filename)
++        os.umask(original_umask)
+         return cp_path
+ 
+     def checkpoint_model(self, checkpoint_id, os_path):
+         """construct the info dict for a given checkpoint"""
++        original_umask = os.umask(self.checkpoint_dir_umask)
+         stats = os.stat(os_path)
+         last_modified = tz.utcfromtimestamp(stats.st_mtime)
+         info = dict(
+             id=checkpoint_id,
+             last_modified=last_modified,
+         )
++        os.umask(original_umask)
+         return info
+ 
+     # Error Handling
+
diff --git a/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3c95d6f138d593c2b7672401e04b22170c4fc4d9
--- /dev/null
+++ b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,33 @@
+easyblock = 'Bundle'
+
+name = 'JupyterCollection'
+version = '2020.2.5'
+
+local_pysuffix = '-Python-3.8.5'
+
+homepage = 'http://www.jupyter.org'
+description = """
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+dependencies = [
+    ('JupyterKernel-Bash',       '0.7.1', '-' + version),
+    ('JupyterKernel-Cling',      '0.7',   '-' + version),
+    ('JupyterKernel-JavaScript', '5.2.0', '-' + version),
+    ('JupyterKernel-Julia',      '1.5.2', '-' + version),
+    ('JupyterKernel-Octave',     '6.1.0', '-' + version),
+    ('JupyterKernel-PyParaView', '5.8.1', '-' + version),
+    # ('JupyterKernel-PyQuantum',  '1.1',   '-' + version),
+    ('JupyterKernel-R',          '4.0.2', '-' + version),
+    ('JupyterKernel-Ruby',       '2.7.1', '-' + version),
+    ('JupyterProxy-XpraHTML5',   '0.3.0', '-' + version),
+    ('Jupyter', version, local_pysuffix),
+]
+
+skipsteps = ['configure', 'build', 'install', 'sanity_check']
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..65d3c8c014f31e4058e31c0235782028857441e8
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,98 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Bash'
+version = '0.7.1'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/takluyver/bash_kernel'
+description = """
+Native Bash kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_defaultclass = 'PythonPackage'
+exts_filter = ('python -c "import %(ext_name)s"', '')
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    # 0.7.2 fails with BackendUnavailable. Might be fixable --no-use-pep517
+    ('bash_kernel', '0.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29f895819e076e3f225e37034b70b5265a559e2964e020c942024f51ea6153e8')]),
+        ('use_pip',  True),
+    ])),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # Jupyter Kernel: Bash - https://github.com/takluyver/bash_kernel
+    # installs bash_kernel in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && ${EBROOTPYTHON}/bin/python3 -m bash_kernel.install --user',
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm %(installdir)s/pyvenv.cfg',
+    'rm -r %(installdir)s/bin',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/bash/kernel.json',
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/bash/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8de48fc00e6eafc78dd98cda09d2bc72fde8d6cb
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,93 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Cling'
+version = '0.7'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/root-project/cling'
+description = """
+Native C kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('Cling', version),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # Jupyter Kernel: Cling (C++)
+    'source %(builddir)s/env.sh && pip3 install ${EBROOTCLING}/share/cling/Jupyter/kernel',
+    (
+        'source %(builddir)s/env.sh && '
+        '    jupyter-kernelspec install --prefix=%(installdir)s ${EBROOTCLING}/share/cling/Jupyter/kernel/cling-cpp17'
+    ),
+
+    # correct shebang to correct python binary
+    (
+        'source %(builddir)s/env.sh && '
+        '    abs2python="#! ${EBROOTPYTHON}/bin/python" && '
+        '    sed "1s@^.*@$abs2python@g" -i %(installdir)s/bin/jupyter-cling-kernel'
+    ),
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm %(installdir)s/pyvenv.cfg',
+    'rm %(installdir)s/bin/python',
+    'rm %(installdir)s/bin/python3',
+    'rm %(installdir)s/bin/activate',
+    'rm %(installdir)s/bin/activate*',
+    'rm %(installdir)s/bin/easy_install*',
+    'rm %(installdir)s/bin/pip*',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/cling-cpp17/kernel.json',
+    ],
+    'dirs': [
+        # 'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/cling-cpp17/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..63f3f746f56cbc0dc82f569bf0ad6eff20181df8
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,71 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-JavaScript'
+version = '5.2.0'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+homepage = 'https://www.npmjs.com/package/ijavascript'
+description = """
+Native JavaScript kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'PATH': ['bin'],
+    'NODE_PATH': ['lib/node_modules'],  # npm´s search path to extra modules
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'export PATH=%%(installdir)s/bin:${PATH}\n'
+        'export NODE_PATH=%%(installdir)s/lib/node_modules\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    'source %(builddir)s/env.sh && npm install ijavascript@5.2.0 -g --prefix %(installdir)s',
+    # installs ijavascript in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && ijsinstall --install=local',
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/javascript/kernel.json',
+    ],
+    'dirs': [
+        'lib/node_modules/',
+        'share/jupyter/kernels/javascript/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..735b3cd4ce2e2a3e87d92493c03d91c7d5347ef9
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,117 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Julia'
+version = '1.5.2'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/IRkernel/IRkernel'
+description = """
+Native R kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('Julia', version),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_defaultclass = 'PythonPackage'
+exts_filter = ('python -c "import %(ext_name)s"', '')
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    ('julia', '0.5.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b13207125709fdba069a25c4e54ff366f0bc308807b2aa0f3b66924101799c58')]),
+        ('use_pip',  True),
+    ])),
+]
+
+local_jupyter_path = 'share/jupyter'
+local_julia_depot_path = "%(installdir)s/share/julia/site/"  # for Julia packages needed for Jupyter
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+modextravars = {
+    'JULIA_DEPOT_PATH': local_julia_depot_path,
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        ''
+        'export JULIA_DEPOT_PATH=%s\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_julia_depot_path, local_jupyter_path),
+
+    # installs ijulia in JULIA_DEPOT_PATH and kernel in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && julia -e \'using Pkg; Pkg.add("IJulia"); Pkg.build("IJulia")\'',
+
+    # to trigger the precompilation
+    'source %(builddir)s/env.sh && julia -e \'using IJulia\'',
+
+    # adjust permissions of precompiled files
+    'for i in $(find %s); do chmod +r $i; done' % local_julia_depot_path,
+
+    # configure Python<->Julia bridge (of python package julia)
+    'source %(builddir)s/env.sh && python -c "import julia; julia.install()"',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm %(installdir)s/pyvenv.cfg',
+    'rm %(installdir)s/bin/python',
+    'rm %(installdir)s/bin/python3',
+    'rm %(installdir)s/bin/activate',
+    'rm %(installdir)s/bin/activate*',
+    'rm %(installdir)s/bin/easy_install*',
+    'rm %(installdir)s/bin/pip*',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/julia-%(version_major_minor)s/kernel.json',
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/julia-%(version_major_minor)s/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c712e30c7783628b321266ffa1c3e9b35d38f66e
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,137 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Octave'
+version = '6.1.0'
+local_octavever = '6.1.0'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/Calysto/octave_kernel'
+description = """
+Native Octave kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Octave', local_octavever, '-nompi'),  # ensure it is available
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    # no dependency to Octave as it is loaded in kernel.sh
+]
+
+local_jupyter_path = 'share/jupyter'
+local_kernel_dir = 'octave'
+local_kernel_name = 'Octave-%s' % local_octavever
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # enable use of Octave from production stage Stages/2020
+    'source %(builddir)s/env.sh && pip3 install ipykernel ',
+    'rm -rf %(installdir)s/share/jupyter/kernels/',  # remove any kernel installed by ipykernel
+    'source %(builddir)s/env.sh && pip3 install ipyparallel ',
+
+    # install Python package octave_kernel
+    'source %(builddir)s/env.sh && pip3 install octave_kernel==0.32.0 ',
+
+    # write kernel.sh
+    (
+        '{ cat >> %%(builddir)s/env.sh; } << \'EOF\'\n'
+        'export KERNEL_DIR=%s\n'
+        'export KERNEL_NAME=%s\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_name),
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << \'EOF\'\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/2020 \n'
+        'module load GCC/9.3.0 \n'
+        '\n' \
+        'module load Python/%%(pyver)s \n'
+        'module load Jupyter/%s%s \n'
+        'module load Octave/%s-nompi \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH} \n'
+        '\n'
+        'exec python $@\n'
+        'EOF'
+    ) % (local_kernel_dir, local_jupyterver, local_pysuffix, local_octavever),
+    'source %(builddir)s/env.sh && chmod +x %(installdir)s/share/jupyter/kernels/${KERNEL_DIR}/kernel.sh',
+
+    # write kernel.json
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "octave_kernel", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "mimetype": "text/x-octave", \n'
+        '  "language": "python", \n'
+        '  "name": "%s" \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+
+    # ensure correct permissions
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm %(installdir)s/pyvenv.cfg',
+    'rm -r %(installdir)s/bin',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/octave/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..02ad2914a3351aa6ab1ef393d1bc817069fdb2e4
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,130 @@
+easyblock = 'Binary'
+
+name = 'JupyterKernel-PyParaView'
+version = '5.8.1'
+local_paraviewver = '5.8.1'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://www.paraview.org'
+description = """
+Special ParaView kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+sources = [
+    ('logo-128x128.png'),
+    ('logo-32x32.png'),
+    ('logo-64x64.png'),
+]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    # ('ParaView', local_paraviewver, '-EGL' + local_pysuffix, ('gpsmkl', '2020')),  # ensure it is available
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_kernel_dir = 'pyparaview'
+local_kernel_name = 'PyParaView-%s' % local_paraviewver
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    (
+        '{ cat >> %%(builddir)s/env.sh; } << \'EOF\'\n'
+        'export KERNEL_DIR=%s\n'
+        'export KERNEL_NAME=%s\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_name),
+    'source %%(builddir)s/env.sh && python -m ipykernel install --name=%s --prefix=%%(installdir)s' % local_kernel_dir,
+
+    # write logo image
+    (
+        'source %%(builddir)s/env.sh && '
+        '    cp %%(builddir)s/logo-32x32.png %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png'
+    ) % (local_kernel_dir),
+    (
+        'source %%(builddir)s/env.sh && '
+        '    cp %%(builddir)s/logo-64x64.png %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png'
+    ) % (local_kernel_dir),
+    (
+        'source %%(builddir)s/env.sh && '
+        '    cp %%(builddir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png'
+    ) % (local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << \'EOF\'\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module use $OTHERSTAGES \n'
+        'module load Stages/2020 \n'
+        'module load GCC/9.3.0 \n'
+        'module load ParaStationMPI \n'
+        'module load Python/%%(pyver)s \n'
+        'module load Jupyter/%s%s \n'
+        '\n'
+        'module load ParaView/%s-EGL%s \n'
+        'module unload VTK \n'
+        '\n'
+        'exec python -m ipykernel $@\n'
+        'EOF'
+    ) % (local_kernel_dir,
+         local_jupyterver, local_pysuffix,
+         local_paraviewver, local_pysuffix),
+    'source %(builddir)s/env.sh && chmod +x %(installdir)s/share/jupyter/kernels/${KERNEL_DIR}/kernel.sh',
+
+    # write kernel.json
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "ipykernel_launcher", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "python", \n'
+        '  "name": "%s" \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ee02c803106fcea641d1bd70912d2ad3052aa32e
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,61 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-R'
+version = '4.0.2'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+homepage = 'https://github.com/IRkernel/IRkernel'
+description = """
+Native R kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('R', '4.0.2', '-nompi'),
+]
+
+modextrapaths = {
+    'JUPYTER_PATH': 'share/jupyter',  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Jupyter Kernel: R - https://github.com/IRkernel/IRkernel
+    # installs R kernel in $EBROOTJUPYTER/share/jupyter/kernels
+    'R -e \'IRkernel::installspec(name="ir40", displayname="R 4.0", prefix="%(installdir)s")\'',
+
+    # force options(bitmapType='cairo') -> https://github.com/IRkernel/IRkernel/issues/388
+    (
+        'sed -i "s#IRkernel::main()#options(bitmapType=\'cairo\') ; IRkernel::main()#g" '
+        '       %(installdir)s/share/jupyter/kernels/ir40/kernel.json'
+    ),
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/ir40/kernel.json',
+    ],
+    'dirs': [
+        'share/jupyter/kernels/ir40/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a88416c91842db501138d1430faf784f9e915615
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,65 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Ruby'
+version = '2.7.1'
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+homepage = 'https://github.com/SciRuby/iruby'
+description = """
+Native Ruby kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python',  '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('Ruby',    '2.7.1'),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    'echo "#!/bin/bash" > %(builddir)s/env.sh',
+    'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+
+    # install Ruby kernel in $JUPYTHER_PATH
+    'source %(builddir)s/env.sh && iruby register --force ',
+
+    # ensure correct permissions
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/ruby/kernel.json',
+    ],
+    'dirs': [
+        'share/jupyter/kernels/ruby/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8fde03a92d49c001e80d348d9bd7c8bc68a240b3
--- /dev/null
+++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb
@@ -0,0 +1,57 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterProxy-XpraHTML5'
+version = '0.3.0'
+
+local_jupyterver = '2020.2.5'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://xpra.org'
+description = """
+Jupyter proxy for Xpra HTML5 sessions.
+Xpra is an open-source multi-platform persistent remote display server and client
+for forwarding applications and desktop screens.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, '-Python-%(pyver)s'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_list = [
+    ('jupyter-xprahtml5-proxy', '0.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'db852682e8e366091e6a3984b60ac3d2e6b3197be2ef074440c11cb09e23b80b')]),
+        ('source_urls', ['https://github.com/FZJ-JSC/jupyter-xprahtml5-proxy/archive/']),
+        ('source_tmpl', 'v0.3.0_devel.tar.gz'),
+        ('patches', ['jupyter_xprahtml5_proxy-launch_xpra.patch']),
+        ('modulename', 'jupyter_xprahtml5_proxy'),
+    ])),
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch b/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch
new file mode 100644
index 0000000000000000000000000000000000000000..329d2ac2728fc42991d54a2f7a74e9c081fc50b0
--- /dev/null
+++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch
@@ -0,0 +1,27 @@
+diff -Naur jupyter-xprahtml5-proxy.orig/jupyter_xprahtml5_proxy/share/launch_xpra.sh jupyter-xprahtml5-proxy/jupyter_xprahtml5_proxy/share/launch_xpra.sh
+--- jupyter-xprahtml5-proxy.orig/jupyter_xprahtml5_proxy/share/launch_xpra.sh   2020-11-19 00:13:39.000000000 +0100
++++ jupyter-xprahtml5-proxy/jupyter_xprahtml5_proxy/share/launch_xpra.sh        2020-11-20 18:49:09.557792000 +0100
+@@ -5,10 +5,17 @@
+ # Do it here.
+
+ # example
+-# module purge > /dev/null
+-# module use $OTHERSTAGES > /dev/null
+-# module load Stages/2020 > /dev/null
+-# module load GCCcore/.9.3.0 > /dev/null
+-# module load xpra/4.0.4-Python-3.8.5 > /dev/null
++module purge
++module use $OTHERSTAGES
++module load Stages/2020
++module load GCCcore/.9.3.0
++module load xpra/4.0.4-Python-3.8.5
++module load jsc-xdg-menu/.2020.3
++
++if ! command -v xterm &> /dev/null
++then
++    echo "xterm not found - trying to load the xterm-module"
++    module load xterm
++fi
+
+ xpra "$@"
+
diff --git a/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
index ddee966f3e5b79e371d41631ff7432683350fd79..7210f37bc48a792d042c384051407ef0e62e7057 100644
--- a/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
+++ b/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
@@ -36,7 +36,7 @@ builddependencies = [
     ('archspec', '0.1.0', '-Python-%(pyver)s'),
 ]
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('Python', '3.8.5'),
     ('libpng', '1.6.37'),
     ('libjpeg-turbo', '2.0.5'),
diff --git a/Golden_Repo/jurecadc_overlay/v/Vampir/Vampir-9.9.0.eb b/Golden_Repo/jurecadc_overlay/v/Vampir/Vampir-9.9.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..bd7449cc1fe09bb86fd46f2d4a6c7f77bdd1d167
--- /dev/null
+++ b/Golden_Repo/jurecadc_overlay/v/Vampir/Vampir-9.9.0.eb
@@ -0,0 +1,40 @@
+# This is an easyconfig file for EasyBuild, see https://github.com/hpcugent/easybuild
+# Copyright:: Copyright 2013 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+# License::   New BSD
+#
+# This work is based from experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+easyblock = 'Binary'
+
+name = "Vampir"
+version = "9.9.0"
+local_archsuffix = "-linux-x86_64"
+
+homepage = 'http://www.vampir.eu'
+description = """The VAMPIR software tool provides an easy-to-use framework that enables
+developers to quickly display and analyze arbitrary program behavior at any level of detail.
+The tool suite implements optimized event analysis algorithms and customizable displays that
+enable fast and interactive rendering of very complex performance monitoring data.
+
+"""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = SYSTEM
+
+sources = ['vampir-%s%s-setup.sh' % (version, local_archsuffix)]
+
+install_cmd = './vampir-%(version)s-linux-x86_64-setup.sh --silent --instdir=%(installdir)s'
+
+sanity_check_paths = {
+    'files': ["bin/vampir", "doc/vampir-manual.pdf"],
+    'dirs': []
+}
+
+modextravars = {
+    'VAMPIR_LICENSE': '/p/software/jurecadc/licenses/vampir/vampir.license',
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/jurecadc_overlay/v/VampirServer/VampirServer-9.9.0-gpsmpi-2020.eb b/Golden_Repo/jurecadc_overlay/v/VampirServer/VampirServer-9.9.0-gpsmpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fb750f42d8eaa5a0f75070b125e0a4ee43d1f821
--- /dev/null
+++ b/Golden_Repo/jurecadc_overlay/v/VampirServer/VampirServer-9.9.0-gpsmpi-2020.eb
@@ -0,0 +1,61 @@
+# This is an easyconfig file for EasyBuild, see https://github.com/hpcugent/easybuild
+# Copyright:: Copyright 2013 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+# License::   New BSD
+#
+# This work is based from experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+easyblock = 'Binary'
+
+name = "VampirServer"
+version = "9.9.0"
+
+homepage = 'http://www.vampir.eu'
+description = """The VAMPIR software tool provides an easy-to-use framework that enables
+developers to quickly display and analyze arbitrary program behavior at any level of detail.
+The tool suite implements optimized event analysis algorithms and customizable displays that
+enable fast and interactive rendering of very complex performance monitoring data.
+"""
+
+usage = """
+To start VampirServer
+module load Vampir VampirServer
+vampir &
+BATCH_OPT="--account=<budget> --partition=<partition>" vampirserver start -n 4 mpi
+(note server + port + server_id)
+- Use it
+Vampir GUI-> open other -> remote file -> server + port
+- To stop VampirServer
+vampirserver stop <server_id>
+"""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+
+toolchainopts = {"usempi": True}
+
+sources = ['vampirserver-%s-linux-x86_64-setup.sh' % (version)]
+
+install_cmd = ('./vampirserver-%(version)s-linux-x86_64-setup.sh --silent --instdir=%(installdir)s '
+               '&& %(installdir)s/bin/vampirserver config --silent')
+
+sanity_check_paths = {
+    'files': ["bin/vampirserver", "doc/vampirserver-manual.pdf"],
+    'dirs': []
+}
+
+# Remove Cray-specific 'ap' launcher,
+# use SLURM launcher as MPI launcher and default
+postinstallcmds = [
+    'rm %(installdir)s/etc/server/launcher/ap',
+    '''sed -i s/'BATCH_OPT=""'/'#BATCH_OPT=""'/g %(installdir)s/etc/server/launcher/custom/slurm''',
+    'cp %(installdir)s/etc/server/launcher/custom/slurm %(installdir)s/etc/server/launcher/mpi',
+]
+
+modextravars = {
+    'VAMPIR_LICENSE': '/p/software/jurecadc/licenses/vampir/vampir.license',
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb b/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
index ec81e25c4bd30963b3e6ee6fd0cb7cc0de28cc3f..6178b0c12adac5ef08a67a76dd1afc8cb3e585d7 100644
--- a/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
+++ b/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -28,7 +29,8 @@ dependencies = [
 sources = [SOURCELOWER_TAR_GZ]
 source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.split('-')[0]]
 
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 sanity_check_paths = {
     'files': ['lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a'],
diff --git a/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb b/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
index 1f25d07deebddfb7ec4eb214c9b708458c516c8b..b3d0a06f6ac30a4a58270b00cf6ea4150dc7eec3 100644
--- a/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
+++ b/Golden_Repo/jusuf_overlay/h/HDF/HDF-4.2.15-iccifort-2020.2.254-GCC-9.3.0.eb
@@ -16,6 +16,7 @@ toolchainopts = {'opt': True, 'pic': True}
 builddependencies = [
     ('flex', '2.6.4'),
     ('Bison', '3.6.4'),
+    ('Java', '15', '', SYSTEM),
 ]
 
 dependencies = [
@@ -28,7 +29,8 @@ dependencies = [
 sources = [SOURCELOWER_TAR_GZ]
 source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%s/src/' % version.split('-')[0]]
 
-configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --includedir=%(installdir)s/include/%(namelower)s'
+configopts = '--with-szlib=$EBROOTSZIP --with-zlib=$EBROOTZLIB --enable-java '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
 
 sanity_check_paths = {
     'files': ['lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a'],
diff --git a/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
index ddee966f3e5b79e371d41631ff7432683350fd79..7210f37bc48a792d042c384051407ef0e62e7057 100644
--- a/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
+++ b/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
@@ -36,7 +36,7 @@ builddependencies = [
     ('archspec', '0.1.0', '-Python-%(pyver)s'),
 ]
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('Python', '3.8.5'),
     ('libpng', '1.6.37'),
     ('libjpeg-turbo', '2.0.5'),
diff --git a/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
index b7411d242a805cb6bf5f3f11ae0e693ba31e223b..3a53f84ceb7dd4b9f45a5bdd24bf46daaac26f6c 100644
--- a/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
+++ b/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb
@@ -36,7 +36,7 @@ builddependencies = [
     ('archspec', '0.1.0', '-Python-%(pyver)s'),
 ]
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('Python', '3.8.5'),
     ('libpng', '1.6.37'),
     ('libjpeg-turbo', '2.0.5'),
diff --git a/Golden_Repo/l/libxc/README.md b/Golden_Repo/l/libxc/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8b554daccd9029e27a209691fdab65caa674ff1d
--- /dev/null
+++ b/Golden_Repo/l/libxc/README.md
@@ -0,0 +1,25 @@
+# libxc
+
+The default version of `libxc` in the stage `2020` is `4.3.4`. We decided against the newer version `libxc/5.0.0`, as some applications would need to be patched. However, also not every application is working with version `4.3.4`, as the API changed between version 3 and 4. This lead to the fact that we need two different version:
+
+- `libxc/3.0.1`
+- `libxc/4.3.4`
+
+Both versions are installed for the following toolchains:
+
+- `GCC/9.3.0`
+- `iccifort-2020.2.254-GCC-9.3.0`
+
+## ABINIT
+
+`ABINIT/8.X` is only working with `libxc/3.0.1` due to changes in the API. Starting with `ABINIT/9.X` version 4.3.0 or later is supported.
+
+## Quantum ESPRESSO
+
+While Quantum ESPRESSO 6.6 would work with `libxc/5.0.0`, QE would require a patch. From the Quantum ESPRESSO User Guide (https://www.quantum-espresso.org/Doc/user_guide.pdf):
+
+**Note  for  version  5.0.0:** the `f03` interfaces  are  no  longer  available  in `libxc` 5.0.0. They have been reintroduced in the current develop version.  Version 5.0.0 is still usable, but, before compiling Quantum ESPRESSO, a string replacement is necessary, namely `‘xcf03’` must berepalced with `‘xcf90’` everywhere in the following files: `funct.f90, xcldalsdadrivers.f90, xcggadrivers.f90, xcmggadrivers.f90, dmxcdrivers.f90` and `dgcxcdrivers.f90` in `Modules` folder and `xctestqelibxc.f90` in `PP/src` folder.
+
+## Note for future Stage 2021
+
+Check if all application can work with the newest version of `libxc`, e.g. 5.0.0. One common version would be desirable.
diff --git a/Golden_Repo/l/libxc/libxc-3.0.1-GCC-9.3.0.eb b/Golden_Repo/l/libxc/libxc-3.0.1-GCC-9.3.0.eb
index 3041617f624344f7a24b7a980c25d692339abb56..c50654fe0634458014e8daea9605e157abf00352 100644
--- a/Golden_Repo/l/libxc/libxc-3.0.1-GCC-9.3.0.eb
+++ b/Golden_Repo/l/libxc/libxc-3.0.1-GCC-9.3.0.eb
@@ -9,7 +9,7 @@ Libxc is a library of exchange-correlation functionals for density-functional th
 The aim is to provide a portable, well tested and reliable set of exchange and correlation functionals.
 """
 
-site_contacts = 'Sebastian Achilles (s.achilles@fz-juelich.de)'
+site_contacts = 'Sebastian Achilles <s.achilles@fz-juelich.de>'
 
 toolchain = {'name': 'GCC', 'version': '9.3.0'}
 # Results for some functionals (e.g. mgga_c_tpss) deviate with too aggressive optimization settings.
diff --git a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb
index fa00a133155d8ad92ca38b7c9140c67c8f9e6db0..89152e411f290f6a40395301a61b0b8e813ecd14 100644
--- a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb
+++ b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb
@@ -15,7 +15,7 @@ sources = ['%(version)s.tar.gz']
 source_urls = ['https://github.com/hfp/libxsmm/archive/']
 
 dependencies = [
-    ('imkl', '2020.2.254', '', True),
+    ('imkl', '2020.2.254', '', SYSTEM),
 ]
 
 # install both static and dynamic version
diff --git a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb
index c46b09870e6687143d89f2af3f793fa669214f83..e424c8064e7b6844838cacdf2ad6b43828fb3615 100644
--- a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb
+++ b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb
@@ -15,7 +15,7 @@ sources = ['%(version)s.tar.gz']
 source_urls = ['https://github.com/hfp/libxsmm/archive/']
 
 dependencies = [
-    ('imkl', '2020.2.254', '', True),
+    ('imkl', '2020.2.254', '', SYSTEM),
 ]
 
 # install both static and dynamic version
diff --git a/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb b/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb
index 53c0ff98cae3078e56396775c7795f3713bafc30..f4def944cc3a11eb0bd00343ed7a9211df35b8b0 100644
--- a/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb
+++ b/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb
@@ -22,7 +22,7 @@ builddependencies = [
 ]
 
 dependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
 ]
 
 # make sure both static and shared libs are built
diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iimpi-2020-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iimpi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..403d9b55a92573b407c346d59092cbc5d3d4ff38
--- /dev/null
+++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iimpi-2020-Python-3.8.5.eb
@@ -0,0 +1,27 @@
+easyblock = 'PythonPackage'
+
+name = 'mpi4py'
+version = '3.0.3'
+
+homepage = 'https://bitbucket.org/mpi4py/mpi4py'
+description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for
+ the Python programming language, allowing any Python program to exploit multiple processors.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'iimpi', 'version': '2020'}
+
+source_urls = [BITBUCKET_DOWNLOADS]
+sources = [SOURCE_TAR_GZ]
+
+versionsuffix = '-Python-%(pyver)s'
+
+dependencies = [('Python', '3.8.5')]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/mpi4py'],
+}
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iompi-2020-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iompi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a047689c7a499148c6dfdb36da3811e0e47867c1
--- /dev/null
+++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-iompi-2020-Python-3.8.5.eb
@@ -0,0 +1,27 @@
+easyblock = 'PythonPackage'
+
+name = 'mpi4py'
+version = '3.0.3'
+
+homepage = 'https://bitbucket.org/mpi4py/mpi4py'
+description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for
+ the Python programming language, allowing any Python program to exploit multiple processors.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'iompi', 'version': '2020'}
+
+source_urls = [BITBUCKET_DOWNLOADS]
+sources = [SOURCE_TAR_GZ]
+
+versionsuffix = '-Python-%(pyver)s'
+
+dependencies = [('Python', '3.8.5')]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/mpi4py'],
+}
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-ipsmpi-2020-mt-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-ipsmpi-2020-mt-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9aa9df5da18424443a1c83f9f11fc808e73686c6
--- /dev/null
+++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-ipsmpi-2020-mt-Python-3.8.5.eb
@@ -0,0 +1,27 @@
+easyblock = 'PythonPackage'
+
+name = 'mpi4py'
+version = '3.0.3'
+
+homepage = 'https://bitbucket.org/mpi4py/mpi4py'
+description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for
+ the Python programming language, allowing any Python program to exploit multiple processors.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'ipsmpi', 'version': '2020-mt'}
+
+source_urls = [BITBUCKET_DOWNLOADS]
+sources = [SOURCE_TAR_GZ]
+
+versionsuffix = '-Python-%(pyver)s'
+
+dependencies = [('Python', '3.8.5')]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/mpi4py'],
+}
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2020.3.0-GCCcore-9.3.0.eb b/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2020.3.0-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c6029d714fce57ffe2b3fdaa402cf00a1a29a11f
--- /dev/null
+++ b/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2020.3.0-GCCcore-9.3.0.eb
@@ -0,0 +1,49 @@
+# jg (CSCS)
+# AH (JSC)
+easyblock = 'Binary'
+
+name = 'Nsight-Compute'
+version = '2020.3.0'
+homepage = 'https://developer.nvidia.com/nsight-compute'
+description = 'NVIDIA Nsight Compute is an interactive kernel profiler for CUDA applications'
+
+site_contacts = 'Andreas Herten <a.herten@fz-juelich.de>'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+# Download source binary package manually, requires Nvidia Developer Account
+# source_urls = 'https://developer.nvidia.com/nsight-compute'
+sources = [{
+    'filename': 'nsight-compute-linux-%(version)s.18-29307467.run',
+    'extract_cmd': '/bin/sh %s'
+}]
+checksums = ['af838473286e180904ec972892faf13ef4546b0e0fb539b87c06382daadfe2c1']
+
+# Not really necessary, but useful if we use this as a template for another package
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    # ('nvidia-driver', 'default', '', SYSTEM),
+    ('X11', '20200222')
+]
+
+extract_sources = True
+unpack_options = '--nochown --noexec --nox11 --target %(builddir)s'
+
+install_cmd = 'cp -r %(builddir)s/pkg/* %(installdir)s/'
+
+# Workaround due to wrong permissions once the files are extracted from the .run file
+postinstallcmds = ['find %(installdir)s -type f -and -executable -and ! -name "lib*" -exec chmod go+x {} \;']
+
+sanity_check_paths = {
+    'files': ['ncu-ui', 'ncu'],
+    'dirs': ['docs', 'extras', 'host', 'sections', 'target']
+}
+
+modluafooter = """
+add_property("arch","gpu")
+"""
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb
index f269520d75a34746df74ba1b52393662c994f6e6..7ba5b3411e29ac03d42f3a0faa7d8a941d06661a 100644
--- a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb
+++ b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb
@@ -35,8 +35,9 @@ dependencies = [
     ('GLPK', '4.65'),
     ('GL2PS', '1.4.2'),
     ('gnuplot', '5.2.8'),
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
     ('OpenGL', '2020'),
+    ('freeglut', '3.2.1'),
     ('zlib', '1.2.11'),
     ('Qhull', '2020.1'),
     ('Qt5', '5.14.2'),
@@ -61,6 +62,6 @@ sanity_check_paths = {
     'dirs': []
 }
 
-sanity_check_commands = [('octave', '--eval "1+2"')]
+sanity_check_commands = [('octave-cli', '--eval "1+2"')]
 
 moduleclass = 'math'
diff --git a/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb b/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..dff7022148519d11b831f92623c453785bc3ee76
--- /dev/null
+++ b/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb
@@ -0,0 +1,70 @@
+easyblock = 'ConfigureMake'
+
+name = 'Octave'
+version = '6.1.0'
+versionsuffix = '-nompi'
+
+homepage = 'http://www.gnu.org/software/octave/'
+description = """GNU Octave is a high-level interpreted language, primarily intended for numerical computations."""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Bison', '3.6.4'),
+    ('flex', '2.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('texinfo', '6.7'),
+    ('gperf', '3.1'),
+    ('Autotools', '20200321'),
+]
+
+dependencies = [
+    ('X11', '20200222'),
+    ('PCRE', '8.44'),
+    ('ncurses', '6.2'),
+    ('libreadline', '8.0'),
+    ('ARPACK-NG', '3.7.0', '-nompi'),
+    ('cURL', '7.71.1'),
+    ('FLTK', '1.3.5'),
+    ('fontconfig', '2.13.92'),
+    ('freetype', '2.10.1'),
+    ('GLPK', '4.65'),
+    ('GL2PS', '1.4.2'),
+    ('gnuplot', '5.2.8'),
+    ('Java', '15', '', SYSTEM),
+    ('OpenGL', '2020'),
+    ('freeglut', '3.2.1'),
+    ('zlib', '1.2.11'),
+    ('Qhull', '2020.1'),
+    ('Qt5', '5.14.2'),
+    ('HDF5', '1.10.6', '-serial'),
+    ('qrupdate', '1.1.2'),
+    ('GraphicsMagick', '1.3.35'),
+    ('FFTW', '3.3.8', '-nompi'),
+    ('texlive', '20200406'),
+]
+
+maxparallel = 12
+
+configopts = 'MOC=$EBROOTQT5/bin/moc '
+configopts += 'UIC=$EBROOTQT5/bin/uic '
+configopts += 'RCC=$EBROOTQT5/bin/rcc '
+configopts += 'LRELEASE=$EBROOTQT5/bin/lrelease '
+configopts += '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" --disable-docs '
+# correct for both GCC and Intel compilers
+configopts += '--enable-fortran-calling-convention=gfortran '
+
+sanity_check_paths = {
+    'files': ['bin/octave'],
+    'dirs': []
+}
+
+sanity_check_commands = [('octave-cli', '--eval "1+2"')]
+
+moduleclass = 'math'
diff --git a/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c18bec08905494c893b7a97af80a1976f818a7ed
--- /dev/null
+++ b/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb
@@ -0,0 +1,67 @@
+easyblock = 'ConfigureMake'
+
+name = 'Octave'
+version = '6.1.0'
+
+homepage = 'http://www.gnu.org/software/octave/'
+description = """GNU Octave is a high-level interpreted language, primarily intended for numerical computations."""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'gpsmkl', 'version': '2020'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('Bison', '3.6.4'),
+    ('flex', '2.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('texinfo', '6.7'),
+    ('gperf', '3.1'),
+    ('Autotools', '20200321'),
+]
+
+dependencies = [
+    ('X11', '20200222'),
+    ('PCRE', '8.44'),
+    ('ncurses', '6.2'),
+    ('libreadline', '8.0'),
+    ('ARPACK-NG', '3.7.0'),
+    ('cURL', '7.71.1'),
+    ('FLTK', '1.3.5'),
+    ('fontconfig', '2.13.92'),
+    ('freetype', '2.10.1'),
+    ('GLPK', '4.65'),
+    ('GL2PS', '1.4.2'),
+    ('gnuplot', '5.2.8'),
+    ('Java', '15', '', SYSTEM),
+    ('OpenGL', '2020'),
+    ('freeglut', '3.2.1'),
+    ('zlib', '1.2.11'),
+    ('Qhull', '2020.1'),
+    ('Qt5', '5.14.2'),
+    ('HDF5', '1.10.6'),
+    ('qrupdate', '1.1.2'),
+    ('SuiteSparse', '5.7.1', '-CUDA'),
+    ('GraphicsMagick', '1.3.35'),
+    ('FFTW', '3.3.8'),
+    ('texlive', '20200406'),
+]
+
+configopts = 'MOC=$EBROOTQT5/bin/moc '
+configopts += 'UIC=$EBROOTQT5/bin/uic '
+configopts += 'RCC=$EBROOTQT5/bin/rcc '
+configopts += 'LRELEASE=$EBROOTQT5/bin/lrelease '
+configopts += '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" --disable-docs '
+# correct for both GCC and Intel compilers
+configopts += '--enable-fortran-calling-convention=gfortran '
+
+sanity_check_paths = {
+    'files': ['bin/octave'],
+    'dirs': []
+}
+
+sanity_check_commands = [('octave-cli', '--eval "1+2"')]
+
+moduleclass = 'math'
diff --git a/Golden_Repo/p/Pillow-SIMD/Pillow-SIMD-7.0.0.post3-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/Pillow-SIMD/Pillow-SIMD-7.0.0.post3-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c2110159fe17783ec386b8ca4e083c49df3e6ee2
--- /dev/null
+++ b/Golden_Repo/p/Pillow-SIMD/Pillow-SIMD-7.0.0.post3-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,41 @@
+easyblock = 'PythonPackage'
+
+name = 'Pillow-SIMD'
+version = '7.0.0.post3'
+versionsuffix = '-Python-%(pyver)s'
+
+
+homepage = 'https://github.com/uploadcare/pillow-simd'
+description = """Pillow-SIMD is a drop-in replacement for Pillow with AVX support
+Pillow is the 'friendly PIL fork' by Alex Clark and Contributors.
+ PIL is the Python Imaging Library by Fredrik Lundh and Contributors."""
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+source_urls = ['https://github.com/uploadcare/pillow-simd/archive/']
+sources = ['v%(version)s.tar.gz']
+
+builddependencies = [('binutils', '2.34')]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.11'),
+    ('LibTIFF', '4.1.0'),
+    ('freetype', '2.10.1')
+]
+
+use_pip = True
+download_dep_fail = True
+
+options = {'modulename': 'PIL'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/PIL'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
index e18f87f8d34dd5f804eeca69be97bacf47e6a11c..a869d62bf93773a4b99e88d4f7efd384b7c0bad5 100644
--- a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
+++ b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
@@ -25,7 +25,7 @@ toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
 osdependencies = [('openssl-devel', 'libssl-dev')]
 
 dependencies = [
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
     ('libreadline', '8.0'),
     ('zlib', '1.2.11'),
 ]
diff --git a/Golden_Repo/p/PyFerret/Faddpath b/Golden_Repo/p/PyFerret/Faddpath
new file mode 100755
index 0000000000000000000000000000000000000000..e97792348b685397f6c75bcffc2aa697be7749ea
--- /dev/null
+++ b/Golden_Repo/p/PyFerret/Faddpath
@@ -0,0 +1,11 @@
+# Wrapper to compensate for the lack of function definition (defined when sourcing a PyFerret script)
+#!/bin/sh
+if [ -n "$*" ]
+then
+    export FER_GO="$FER_GO $*"
+    export FER_DATA="$FER_DATA $*"
+    export FER_DESCR="$FER_DESCR $*"
+    export FER_GRIDS="$FER_GRIDS $*"
+else
+    echo "    Usage: Faddpath new_directory_1 ..."
+fi
diff --git a/Golden_Repo/p/PyFerret/PyFerret-7.6.3-gpsmkl-2020-Python-3.8.5.eb b/Golden_Repo/p/PyFerret/PyFerret-7.6.3-gpsmkl-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c3fc983f42e8f61935e007745a9616463676a521
--- /dev/null
+++ b/Golden_Repo/p/PyFerret/PyFerret-7.6.3-gpsmkl-2020-Python-3.8.5.eb
@@ -0,0 +1,96 @@
+easyblock = 'ConfigureMake'
+
+name = 'PyFerret'
+version = '7.6.3'
+local_dataset_ver = '7.6'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://ferret.pmel.noaa.gov/'
+description = '''PyFerret is an interactive computer visualization and analysis environment
+designed to meet the needs of oceanographers and meteorologists analyzing large and complex gridded data sets.'''
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gpsmkl', 'version': '2020'}
+toolchainopts = {'usempi': False}
+
+source_urls = [
+    'https://github.com/NOAA-PMEL/PyFerret/archive/',
+    'https://github.com/NOAA-PMEL/FerretDatasets/archive/'
+]
+sources = [
+    'v%(version)s.tar.gz',
+    'v7.6.tar.gz'
+]
+
+checksums = [
+    ('sha256', 'f062c20bedf64713f57c3d45aaeb63eb9b4d3ba622e5c5e4a99e61fdf08d2224'),
+    ('sha256', 'b2fef758ec1817c1c19e6225857ca3a82c727d209ed7fd4697d45c5533bb2c72'),
+]
+
+patches = [
+    ('pyferret', 'bin'),
+    ('Faddpath', 'bin'),
+    ('configure_pyferret-7.6.3_stage2020.patch')
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('netCDF', '4.7.4'),
+    ('netCDF-Fortran', '4.5.3'),
+    ('HDF5', '1.10.6'),
+    ('zlib', '1.2.11'),
+    ('cURL', '7.71.1'),
+    ('Pango', '1.44.7'),
+    ('libpng', '1.6.37'),
+    ('cairo', '1.17.2'),
+    ('freetype', '2.10.1'),
+    ('fontconfig', '2.13.92'),
+    ('pixman', '0.40.0'),
+    ('GLib', '2.64.4'),
+    ('PyQt5', '5.15.1', versionsuffix),
+]
+
+maxparallel = 1  # yes!
+
+skipsteps = ['configure']
+start_dir = '%(builddir)s/%(name)s-%(version)s'
+
+prebuildopts = ['export FER_SRC_PREFIX=%(builddir)s/%(name)s-%(version)s && ']
+
+preinstallopts = ['export FER_DIR=%(installdir)s && ']
+
+modextrapaths = {
+    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+    'LD_LIBRARY_PATH': 'lib/python%(pyshortver)s/site-packages/pyferret',
+}
+
+modextravars = {
+    'FER_DIR': '%(installdir)s',
+    'FER_DSETS': '%(installdir)s/datasets',
+    # 'FER_WEB_BROWSER': 'firefox', # Probably nobody should use this
+    'FER_DATA_THREDDS': 'http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml %(installdir)s/datasets',
+    'FER_DATA': '. %(installdir)s/datasets/data %(installdir)s/go %(installdir)s/examples',
+    'FER_DESCR': '. %(installdir)s/datasets/descr',
+    'FER_GRIDS': '. %(installdir)s/datasets/grids',
+    'FER_GO': '. %(installdir)s/go %(installdir)s/examples %(installdir)s/contrib',
+    'FER_EXTERNAL_FUNCTIONS': '%(installdir)s/ext_func/libs',
+    'PYFER_EXTERNAL_FUNCTIONS': '%(installdir)s/ext_func/pylibs',
+    'FER_PALETTE': '. %(installdir)s/ppl',
+    'SPECTRA': '%(installdir)s/ppl',
+    'FER_FONTS': '%(installdir)s/ppl/fonts',
+    'PLOTFONTS': '%(installdir)s/ppl/fonts',
+    'FER_LIBS': '%(installdir)s/lib',
+    'FER_DAT': '%(installdir)s',
+}
+
+postinstallcmds = [
+    'chmod +x %(installdir)s/bin/pyferret',
+    'mkdir %(installdir)s/datasets',
+    'mv %%(builddir)s/FerretDatasets-%s/data  %%(installdir)s/datasets' % local_dataset_ver,
+    'mv %%(builddir)s/FerretDatasets-%s/descr %%(installdir)s/datasets' % local_dataset_ver,
+    'mv %%(builddir)s/FerretDatasets-%s/grids %%(installdir)s/datasets' % local_dataset_ver,
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/PyFerret/configure_pyferret-7.6.3_stage2020.patch b/Golden_Repo/p/PyFerret/configure_pyferret-7.6.3_stage2020.patch
new file mode 100644
index 0000000000000000000000000000000000000000..39846aaef0874e38f911531151609f56ef3b72e4
--- /dev/null
+++ b/Golden_Repo/p/PyFerret/configure_pyferret-7.6.3_stage2020.patch
@@ -0,0 +1,438 @@
+diff -Naur PyFerret-7.6.3.orig/external_functions/ef_utility/site_specific.mk PyFerret-7.6.3/external_functions/ef_utility/site_specific.mk
+--- PyFerret-7.6.3.orig/external_functions/ef_utility/site_specific.mk	1970-01-01 01:00:00.000000000 +0100
++++ PyFerret-7.6.3/external_functions/ef_utility/site_specific.mk	2020-12-17 15:22:43.154040000 +0100
+@@ -0,0 +1,75 @@
++## Site-dependent definitions included in external function Makefiles
++## of an installed PyFerret directory.
++
++## =========================
++## Machine type for which to build Ferret/PyFerret
++##   x86_64-linux      for 64-bit RHEL
++##   x86_64-linux-gnu  for 64-bit Ubuntu and many "free" Linux systems
++##   i386-linux        for 32-bit RHEL
++##   i386-linux-gnu    for 32-bit Ubuntu and many "free" Linux systems
++##   intel-mac         for Max OSX
++## This value is used to determine which platform_specific.mk
++## file to include in the Makefiles.
++## =========================
++# BUILDTYPE = $(HOSTTYPE)
++BUILDTYPE = x86_64-linux
++# BUILDTYPE = x86_64-linux-gnu
++# BUILDTYPE = i386-linux
++# BUILDTYPE = i386-linux-gnu
++# BUILDTYPE = intel-mac
++
++## =========================
++## INSTALL_FER_DIR and PYTHON_EXE are only used to construct
++## the location of pyferret library.  The library should be
++## (for either 32-bit or 64-bit Linux)
++## $(INSTALL_FER_DIR)/lib/$(PYTHON_EXE)/site-package/pyferret/libpyferret.so
++## or possibly (for 64-bit Linux only)
++## $(INSTALL_FER_DIR)/lib64/$(PYTHON_EXE)/site-package/pyferret/libpyferret.so
++##
++## PyFerret installation directory, usually just $(FER_DIR)
++## Must be $(FER_DIR) when building pyferret from source.
++## (This file is also found in PyFerret installations, thus the option.)
++## =========================
++# INSTALL_FER_DIR = $(HOME)/PyFerret
++INSTALL_FER_DIR = $(FER_DIR)
++
++## =========================
++## C and Fortran compilers to use.  The construct "$(shell which gcc)" assigns
++## the response to "which gcc" run from a Bourne shell (such as bash).
++## When compiling for Mac OS X, one may wish to use clang instead of gcc.
++## If you wish to use values already defined in you shell environment when 
++## you run make, comment out all definitions of CC and FC (do NOT leave blank).
++## =========================
++# CC = $(shell which clang)
++CC = $(shell which gcc)
++FC = $(shell which gfortran)
++
++## =========================
++## Linker used to generate executables and shared-object libraries.
++## Normally the Fortran compiler is used which then calls the actual
++## linker with appropriate flags and system-level Fortran libraries.
++## The construct "$(shell which gfortran)" assigns the response to 
++## "which gfortran" run from a Bourne shell (such as bash).
++## If you wish to use a value already defined in you shell environment when 
++## you run make, comment out all definitions of LD (do NOT leave blank).
++## =========================
++LD = $(shell which gfortran)
++
++## =========================
++## Python version used by PyFerret
++## =========================
++# PYTHON_EXE = python2.6
++# PYTHON_EXE = python2.7
++# PYTHON_EXE = python3.6
++# PYTHON_EXE = python3.7
++PYTHON_EXE = python3.8
++
++## =========================
++## FER_LOCAL_EXTFCNS is the directory in which to install
++## the Ferret Fortran external functions.  The example
++## functions that come with the PyFerret installation are
++## installed in $(INSTALL_FER_DIR)/ext_func/pylibs
++## =========================
++FER_LOCAL_EXTFCNS = $(INSTALL_FER_DIR)/ext_func/pylibs
++
++##
+diff -Naur PyFerret-7.6.3.orig/Makefile PyFerret-7.6.3/Makefile
+--- PyFerret-7.6.3.orig/Makefile	2020-09-28 21:10:48.000000000 +0200
++++ PyFerret-7.6.3/Makefile	2020-12-17 14:37:08.501952000 +0100
+@@ -74,10 +74,12 @@
+ 	  export CFLAGS="$(CFLAGS) -DNDEBUG -O" ; \
+ 	  export BUILDTYPE=$(BUILDTYPE) ; \
+ 	  export NETCDF_LIBDIR=$(NETCDF_LIBDIR) ; \
++          export NETCDFFORTRAN_LIBDIR=$(NETCDFFORTRAN_LIBDIR) ; \
+ 	  export HDF5_LIBDIR=$(HDF5_LIBDIR) ; \
+ 	  export SZ_LIBDIR=$(SZ_LIBDIR) ; \
+ 	  export CAIRO_LIBDIR=$(CAIRO_LIBDIR) ; \
+ 	  export PIXMAN_LIBDIR=$(PIXMAN_LIBDIR) ; \
++          export HARFBUZZ_LIBDIR=$(HARFBUZZ_LIBDIR) ; \
+ 	  export PANGO_LIBDIR=$(PANGO_LIBDIR) ; \
+ 	  export GLIB2_LIBDIR=$(GLIB2_LIBDIR) ; \
+ 	  export GFORTRAN_LIB=$(GFORTRAN_LIB) ; \
+@@ -94,10 +96,12 @@
+ 	  export CFLAGS="$(CFLAGS) -DNDEBUG -O" ; \
+ 	  export BUILDTYPE=$(BUILDTYPE) ; \
+ 	  export NETCDF_LIBDIR=$(NETCDF_LIBDIR) ; \
++          export NETCDFFORTRAN_LIBDIR=$(NETCDFFORTRAN_LIBDIR) ; \
+ 	  export HDF5_LIBDIR=$(HDF5_LIBDIR) ; \
+ 	  export SZ_LIBDIR=$(SZ_LIBDIR) ; \
+ 	  export CAIRO_LIBDIR=$(CAIRO_LIBDIR) ; \
+ 	  export PIXMAN_LIBDIR=$(PIXMAN_LIBDIR) ; \
++	  export HARFBUZZ_LIBDIR=$(HARFBUZZ_LIBDIR) ; \
+ 	  export PANGO_LIBDIR=$(PANGO_LIBDIR) ; \
+ 	  export GLIB2_LIBDIR=$(GLIB2_LIBDIR) ; \
+ 	  export GFORTRAN_LIB=$(GFORTRAN_LIB) ; \
+@@ -117,10 +121,12 @@
+ 	  export CFLAGS="$(CFLAGS) -UNDEBUG -O0 -g" ; \
+ 	  export BUILDTYPE=$(BUILDTYPE) ; \
+ 	  export NETCDF_LIBDIR=$(NETCDF_LIBDIR) ; \
++          export NETCDFFORTRAN_LIBDIR=$(NETCDFFORTRAN_LIBDIR) ; \
+ 	  export HDF5_LIBDIR=$(HDF5_LIBDIR) ; \
+ 	  export SZ_LIBDIR=$(SZ_LIBDIR) ; \
+ 	  export CAIRO_LIBDIR=$(CAIRO_LIBDIR) ; \
+ 	  export PIXMAN_LIBDIR=$(PIXMAN_LIBDIR) ; \
++          export HARFBUZZ_LIBDIR=$(HARFBUZZ_LIBDIR) ; \
+ 	  export PANGO_LIBDIR=$(PANGO_LIBDIR) ; \
+ 	  export GLIB2_LIBDIR=$(GLIB2_LIBDIR) ; \
+ 	  export GFORTRAN_LIB=$(GFORTRAN_LIB) ; \
+@@ -137,10 +143,12 @@
+ 	  export CFLAGS="$(CFLAGS) -UNDEBUG -O0 -g" ; \
+ 	  export BUILDTYPE=$(BUILDTYPE) ; \
+ 	  export NETCDF_LIBDIR=$(NETCDF_LIBDIR) ; \
++          export NETCDFFORTRAN_LIBDIR=$(NETCDFFORTRAN_LIBDIR) ; \
+ 	  export HDF5_LIBDIR=$(HDF5_LIBDIR) ; \
+ 	  export SZ_LIBDIR=$(SZ_LIBDIR) ; \
+ 	  export CAIRO_LIBDIR=$(CAIRO_LIBDIR) ; \
+ 	  export PIXMAN_LIBDIR=$(PIXMAN_LIBDIR) ; \
++          export HARFBUZZ_LIBDIR=$(HARFBUZZ_LIBDIR) ; \
+ 	  export PANGO_LIBDIR=$(PANGO_LIBDIR) ; \
+ 	  export GLIB2_LIBDIR=$(GLIB2_LIBDIR) ; \
+ 	  export GFORTRAN_LIB=$(GFORTRAN_LIB) ; \
+@@ -185,10 +193,12 @@
+ 	  export CFLAGS="$(CFLAGS) -O" ; \
+ 	  export BUILDTYPE=$(BUILDTYPE) ; \
+ 	  export NETCDF_LIBDIR=$(NETCDF_LIBDIR) ; \
++          export NETCDFFORTRAN_LIBDIR=$(NETCDFFORTRAN_LIBDIR) ; \
+ 	  export HDF5_LIBDIR=$(HDF5_LIBDIR) ; \
+ 	  export SZ_LIBDIR=$(SZ_LIBDIR) ; \
+ 	  export CAIRO_LIBDIR=$(CAIRO_LIBDIR) ; \
+ 	  export PIXMAN_LIBDIR=$(PIXMAN_LIBDIR) ; \
++          export HARFBUZZ_LIBDIR=$(HARFBUZZ_LIBDIR) ; \
+ 	  export PANGO_LIBDIR=$(PANGO_LIBDIR) ; \
+ 	  export GLIB2_LIBDIR=$(GLIB2_LIBDIR) ; \
+ 	  export GFORTRAN_LIB=$(GFORTRAN_LIB) ; \
+diff -Naur PyFerret-7.6.3.orig/platform_specific.mk.x86_64-linux PyFerret-7.6.3/platform_specific.mk.x86_64-linux
+--- PyFerret-7.6.3.orig/platform_specific.mk.x86_64-linux	2020-09-28 21:10:48.000000000 +0200
++++ PyFerret-7.6.3/platform_specific.mk.x86_64-linux	2020-12-17 14:36:27.694118000 +0100
+@@ -17,6 +17,7 @@
+ # Include directories
+ #
+ 	NETCDF_INCLUDE	= -I$(NETCDF_LIBDIR)/../include
++	NETCDFFORTRAN_INCLUDE = -I$(NETCDFFORTRAN_LIBDIR)/../include
+ 
+ ifeq ($(strip $(HDF5_LIBDIR)),)
+ 	HDF5_INCLUDE	=
+@@ -36,6 +37,12 @@
+ 	PIXMAN_INCLUDE	= -I$(PIXMAN_LIBDIR)/../include
+ endif
+ 
++ifeq ($(strip $(HARFBUZZ_LIBDIR)),)
++        HARFBUZZ_INCLUDE   = -I/usr/include/harfbuzz
++else
++        HARFBUZZ_INCLUDE   = -I$(HARFBUZZ_LIBDIR)/../include/harfbuzz
++endif
++
+ ifeq ($(strip $(PANGO_LIBDIR)),)
+ 	PANGO_INCLUDE	= -I/usr/include/pango-1.0
+ else
+@@ -64,9 +71,11 @@
+ 			  -I$(DIR_PREFIX)/pyfermod \
+ 			  -I$(DIR_PREFIX)/external_functions/ef_utility \
+ 			  $(NETCDF_INCLUDE) \
++			  $(NETCDFFORTRAN_INCLUDE) \
+ 			  $(HDF5_INCLUDE) \
+ 			  $(CAIRO_INCLUDE) \
+ 			  $(PIXMAN_INCLUDE) \
++			  $(HARFBUZZ_INCLUDE) \
+ 			  $(PANGO_INCLUDE) \
+ 			  $(GLIB2_INCLUDE)
+ 
+diff -Naur PyFerret-7.6.3.orig/setup.py PyFerret-7.6.3/setup.py
+--- PyFerret-7.6.3.orig/setup.py	2020-09-28 21:10:48.000000000 +0200
++++ PyFerret-7.6.3/setup.py	2020-12-17 14:36:06.465376000 +0100
+@@ -30,6 +30,13 @@
+ if not netcdf_libdir:
+     raise ValueError("Environment variable NETCDF_LIBDIR is not defined")
+ 
++# NETCDFFORTAN_LIBDIR must be given, either for the static library or the shared-object library
++netcdffortran_libdir = os.getenv("NETCDFFORTRAN_LIBDIR")
++if netcdffortran_libdir:
++    netcdffortran_libdir = netcdffortran_libdir.strip()
++else:
++    netcdffortran_libdir = netcdf_libdir
++
+ # HDF5_LIBDIR is only given if the HDF5 and NetCDF libraries are to be statically linked
+ hdf5_libdir = os.getenv("HDF5_LIBDIR")
+ if hdf5_libdir:
+@@ -50,6 +57,11 @@
+ if pixman_libdir:
+     pixman_libdir = pixman_libdir.strip()
+ 
++# HARFBUZZ gives a non-standard location of the harfbuzz libraries
++harfbuzz_libdir = os.getenv("HARFBUZZ_LIBDIR")
++if harfbuzz_libdir:
++    harfbuzz_libdir = harfbuzz_libdir.strip()
++
+ # PANGO_LIBDIR gives a non-standard location of the pango libraries
+ pango_libdir = os.getenv("PANGO_LIBDIR")
+ if pango_libdir:
+@@ -66,6 +78,8 @@
+ 
+ # The list of additional directories to examine for libraries
+ libdir_list = [ "lib", netcdf_libdir, ]
++if netcdffortran_libdir:
++    libdir_list.append(netcdffortran_libdir)
+ if hdf5_libdir:
+     libdir_list.append(hdf5_libdir)
+ if sz_libdir:
+@@ -74,6 +88,8 @@
+     libdir_list.append(cairo_libdir)
+ if pixman_libdir:
+     libdir_list.append(pixman_libdir)
++if harfbuzz_libdir:
++    libdir_list.append(harfbuzz_libdir)
+ if pango_libdir:
+     libdir_list.append(pango_libdir)
+ libdir_list.append(python_libdir)
+@@ -103,7 +119,7 @@
+ # The hdf5 libraries are only used to resolve netcdf library function
+ # calls when statically linking in the netcdf libraries.
+ if hdf5_libdir:
+-    netcdff_lib = os.path.join(netcdf_libdir, "libnetcdff.a")
++    netcdff_lib = os.path.join(netcdffortran_libdir, "libnetcdff.a")
+     addn_link_args.append(netcdff_lib)
+     netcdf_lib = os.path.join(netcdf_libdir, "libnetcdf.a")
+     addn_link_args.append(netcdf_lib)
+diff -Naur PyFerret-7.6.3.orig/site_specific.mk PyFerret-7.6.3/site_specific.mk
+--- PyFerret-7.6.3.orig/site_specific.mk	1970-01-01 01:00:00.000000000 +0100
++++ PyFerret-7.6.3/site_specific.mk	2020-12-17 14:41:42.140897914 +0100
+@@ -0,0 +1,195 @@
++## Site-dependent definitions included in Makefiles
++
++## !!! Also verify the values in external_functions/ef_utility/site_specific.mk !!!
++
++## =========================
++## Full path name of the directory containing this file (the ferret root directory).
++## Do not use $(shell pwd) since this is included in Makefiles in other directories.
++## =========================
++# DIR_PREFIX = $(HOME)/build/pyferret_dev
++# DIR_PREFIX = $(HOME)/svn/pyferret
++DIR_PREFIX = $(FER_SRC_PREFIX)
++
++## =========================
++## Installation directory for built PyFerret.
++## Using the "install" Makefile target creates a generic pyferret-*.tar.gz file
++## and then extracts it to create a PyFerret installation at this location.
++## =========================
++# INSTALL_FER_DIR = $(HOME)/ferret_distributions/rhel6_64
++INSTALL_FER_DIR = $(FER_DIR)
++
++## =========================
++## Machine type for which to build Ferret/PyFerret
++##   x86_64-linux      for 64-bit RHEL
++##   x86_64-linux-gnu  for 64-bit Ubuntu and many "free" Linux systems
++##   i386-linux        for 32-bit RHEL
++##   i386-linux-gnu    for 32-bit Ubuntu and many "free" Linux systems
++##   intel-mac         for Mac OSX
++## =========================
++# BUILDTYPE = $(HOSTTYPE)
++BUILDTYPE = x86_64-linux
++# BUILDTYPE = x86_64-linux-gnu
++# BUILDTYPE = i386-linux
++# BUILDTYPE = i386-linux-gnu
++# BUILDTYPE = intel-mac
++
++## =========================
++## C and Fortran compilers to use.  The construct "$(shell which gcc)" assigns
++## the response to "which gcc" run from a Bourne shell (such as bash).
++## When compiling for Mac OS X, one may wish to use clang instead of gcc.
++## If you wish to use values already defined in you shell environment when 
++## you run make, comment out all definitions of CC and FC (do NOT leave blank).
++## =========================
++# CC = $(shell which clang)
++CC = $(shell which gcc)
++FC = $(shell which gfortran)
++
++## =========================
++## Python executable to invoke for build and install.
++## =========================
++# PYTHON_EXE = python2.6
++# PYTHON_EXE = python2.7
++# PYTHON_EXE = python3.6
++# PYTHON_EXE = python3.7
++PYTHON_EXE = python3.8
++
++## =========================
++## Full path to the python include files directory.
++## Should not need any modifications.
++## =========================
++PYTHONINCDIR := $(shell $(PYTHON_EXE) -c "from __future__ import print_function ; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())")
++
++## =========================
++## If given and not empty, the full path name to the gfortran library to use.
++## This is primarily used for the intel-mac build.
++## The given scripts (commented out) should provide the correct value for the gfortran libraries.
++## If empty or not given, the gfortran library is linked in using the "-lgfortran" flag.
++## =========================
++# GFORTRAN_LIB = $(shell $(FC) --print-file-name=libgfortran.dylib)
++# GFORTRAN_LIB = $(shell $(FC) --print-file-name=libgfortran.a)
++GFORTRAN_LIB =
++
++## =========================
++## Directory containing the Cairo static libraries (v1.12 or later).
++## Include files are assumed to be located in an "include" sibling directory.
++## If given and not empty, the Cairo static libraries found under this directory will be used.
++## If empty or not given, the system's Cairo shared libraries will be used.
++## =========================
++# CAIRO_LIBDIR = /usr/local/cairo/lib
++# CAIRO_LIBDIR = $(HOME)/.local/lib
++# CAIRO_LIBDIR = /usr/local/lib
++# CAIRO_LIBDIR = /p/software/juwels/stages/Devel-2020/software/cairo/1.17.2-GCCcore-9.3.0/lib64
++CAIRO_LIBDIR = $(EBROOTCAIRO)/lib
++
++## =========================
++## Directory containing the Pixman static libraries used by the above Cairo static libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If given and not empty, the Pixman-1 static libraries found in this directory will be used.
++## If empty or not given, the system's Pixman-1 shared library will be used.
++## This value should be empty or not given if CAIRO_LIBDIR is empty or not given.
++## =========================
++# PIXMAN_LIBDIR = /usr/local/pixman/lib
++# PIXMAN_LIBDIR = $(HOME)/.local/lib
++# PIXMAN_LIBDIR = /usr/local/lib
++# PIXMAN_LIBDIR = /gpfs/software/juwels/stages/Devel-2020/software/pixman/0.40.0-GCCcore-9.3.0/lib
++PIXMAN_LIBDIR = $(EBROOTPIXMAN)/lib
++
++## =========================
++## Directory containing the HarfBuzz shared libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If given and not empty, the HarfBuzz shared libraries under this directory are used.
++## If empty or not given, the system's HarfBuzz shared libraries are used.
++## This value should be empty or not given if CAIRO_LIBDIR is empty or not given.
++## =========================
++#HARFBUZZ_LIBDIR = /p/software/juwels/stages/Devel-2020/software/HarfBuzz/2.6.7-GCCcore-9.3.0/lib64
++HARFBUZZ_LIBDIR = $(EBROOTHARFBUZZ)/lib
++
++## =========================
++## Directory containing the Pango shared libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If given and not empty, the Pango shared libraries under this directory are used.
++## If empty or not given, the system's Pango shared libraries are used.
++## This value should be empty or not given if CAIRO_LIBDIR is empty or not given.
++## =========================
++# PANGO_LIBDIR = $(HOME)/.local/lib
++# PANGO_LIBDIR = /usr/local/lib
++# PANGO_LIBDIR = /gpfs/software/juwels/stages/Devel-2020/software/Pango/1.44.7-GCCcore-9.3.0/lib
++PANGO_LIBDIR = $(EBROOTPANGO)/lib
++
++## =========================
++## Library directory containing a "glib-2.0" subdirectory with GLib-2.0 include file(s)
++## (yes, a little unusual) used by the above Pango shared libraries.
++## An "include" sibling directory containing a "glib-2.0" subdirectory with more
++## GLib-2.0 include files is assumed to exist.
++## If given and not empty, GLib-2.0 include files under this directory are used.
++## If empty or not given, the system's GLib-2.0 shared libraries are used.
++## This value should be empty or not given if PANGO_LIBDIR is empty or not given.
++## =========================
++# GLIB2_LIBDIR = $(HOME)/.local/lib
++# GLIB2_LIBDIR = /usr/local/lib
++# GLIB2_LIBDIR = /gpfs/software/juwels/stages/Devel-2020/software/GLib/2.64.4-GCCcore-9.3.0/lib
++GLIB2_LIBDIR = $(EBROOTGLIB)/lib
++
++## =========================
++## Directory containing the HDF5 static libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If given and not empty, HDF5 and NetCDF static libraries will be used.
++## If empty or not given, NetCDF shared libraries (which specify the HDF5 and
++## compression libraries required) will be used.
++## =========================
++# HDF5_LIBDIR = /usr/local/hdf5/lib
++# HDF5_LIBDIR = $(HOME)/.local/lib
++# HDF5_LIBDIR = /usr/local/lib
++# HDF5_LIBDIR = /usr/lib64
++# HDF5_LIBDIR = /usr/lib
++# HDF5_LIBDIR = /p/software/juwels/stages/Devel-2020/software/HDF5/1.10.6-gompi-2020/lib64
++# HDF5_LIBDIR = $(EBROOTHDF5)/lib
++
++## =========================
++## Location of the SZ compression static library.
++## This value should be given only if the SZ compression library was used in
++## building the HDF5 library, and the NetCDF and HDF5 static libraries are being
++## used (HDF5_LIBDIR is given and not empty).
++## If given and not empty, the SZ compression static library is used.
++## If empty or not given, the SZ compression library will not be used
++## (which is what you want if the HDF5 libraries were built using the Z compression library).
++## =========================
++# SZ_LIBDIR = $(HOME)/.local/lib
++# SZ_LIBDIR = /usr/local/lib
++# SZ_LIBDIR = /usr/lib64
++# SZ_LIBDIR = /usr/lib
++# SZ_LIBDIR = /gpfs/software/juwels/stages/Devel-2020/software/Szip/2.1.1-GCCcore-9.3.0/lib
++SZ_LIBDIR = $(EBROOTSZIP)/lib
++
++## =========================
++## Location of the NetCDF libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If HDF5_LIBDIR is given and not empty, the static libraries will be used
++## (along with the HDF5 static libraries).
++## If HDF5_LIBDIR is empty or not given, NetCDF shared libraries will be used.
++## =========================
++# NETCDF_LIBDIR = /usr/local/netcdf/lib
++# NETCDF_LIBDIR = $(HOME)/.local/lib
++# NETCDF_LIBDIR = /usr/local/lib
++# NETCDF_LIBDIR = /usr/lib64
++# NETCDF_LIBDIR = /usr/lib
++# NETCDF_LIBDIR = /p/software/juwels/stages/Devel-2020/software/netCDF/4.7.4-gompi-2020/lib64
++NETCDF_LIBDIR = $(EBROOTNETCDF)/lib64
++
++## =========================
++## Location of the NetCDF fortran libraries.
++## Include files are assumed to be located in an "include" sibling directory.
++## If HDF5_LIBDIR is given and not empty, the static libraries will be used
++## (along with the HDF5 static libraries).
++## If HDF5_LIBDIR is empty or not given, NetCDF fortran shared libraries will be used.
++## If empty or not given, the netcdf fortran shared libraries will be searched for in NETCDF_LIBDIR
++## =========================
++# NETCDFFORTRAN_LIBDIR = /usr/local/netcdf/lib
++# NETCDFFORTRAN_LIBDIR = $(HOME)/.local/lib
++# NETCDFFORTRAN_LIBDIR = /usr/local/lib
++# NETCDFFORTRAN_LIBDIR = /usr/lib64
++# NETCDFFORTRAN_LIBDIR = /usr/lib
++# NETCDFFORTRAN_LIBDIR = /p/software/juwels/stages/Devel-2020/software/netCDF-Fortran/4.5.3-gompi-2020/lib64
++NETCDFFORTRAN_LIBDIR = $(EBROOTNETCDFMINFORTRAN)/lib
++
++##
diff --git a/Golden_Repo/p/PyFerret/pyferret b/Golden_Repo/p/PyFerret/pyferret
new file mode 100755
index 0000000000000000000000000000000000000000..46e83c36bf729bd15b7417fc107aa2cafdc9a41d
--- /dev/null
+++ b/Golden_Repo/p/PyFerret/pyferret
@@ -0,0 +1,6 @@
+#!/bin/sh
+if [ -z "${FER_LIBS}" ]; then
+    echo "**ERROR: Ferret environment variables are not defined"
+    exit 1
+fi
+python -i -c "import sys; import pyferret; (errval, errmsg) = pyferret.init(sys.argv[1:], True)" $*
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
index 16deb6cba847a0e0272cdbfa8b4c0ad828b19fde..865f39655e9398c84edee37ca14e3b146642ac9d 100644
--- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
+++ b/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -25,9 +25,9 @@ dependencies = [
     ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
     ('MPFR', '4.1.0'),
     ('GMP', '6.2.0'),
-    ('numactl', '2.0.13', '', True),
+    ('numactl', '2.0.13', '', SYSTEM),
     ('FFmpeg', '4.3.1'),
-    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True),
+    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, SYSTEM),
     ('magma', '2.5.4'),
     ('NCCL', '2.8.3-1', '-CUDA-%s' % local_cudaver),
     ('LLVM', '10.0.1'),
diff --git a/Golden_Repo/p/parallel/parallel-20201122-GCCcore-9.3.0.eb b/Golden_Repo/p/parallel/parallel-20201122-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4e09e072ed8ef04d6759745a29e7657ef8f0accb
--- /dev/null
+++ b/Golden_Repo/p/parallel/parallel-20201122-GCCcore-9.3.0.eb
@@ -0,0 +1,24 @@
+easyblock = 'ConfigureMake'
+
+name = 'parallel'
+version = '20201122'
+
+homepage = 'https://savannah.gnu.org/projects/parallel/'
+description = """parallel: Build and execute shell commands in parallel"""
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_BZ2]
+
+builddependencies = [('binutils', '2.34')]
+dependencies = [
+    ('Perl', '5.32.0'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/parallel'],
+    'dirs': []
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/p/pixman/pixman-0.40.0-GCCcore-9.3.0.eb b/Golden_Repo/p/pixman/pixman-0.40.0-GCCcore-9.3.0.eb
index db81137fbc5738f4d5c9eab2818eb10f86208254..b0e6ccc06baed58cb93621aadc554138eec8daf2 100644
--- a/Golden_Repo/p/pixman/pixman-0.40.0-GCCcore-9.3.0.eb
+++ b/Golden_Repo/p/pixman/pixman-0.40.0-GCCcore-9.3.0.eb
@@ -11,6 +11,7 @@ compositing and trapezoid rasterization. Important users of pixman are the cairo
 site_contacts = 'sc@fz-juelich.de'
 
 toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
 
 source_urls = ['http://cairographics.org/releases/']
 sources = [SOURCE_TAR_GZ]
diff --git a/Golden_Repo/p/protobuf-python/protobuf-python-3.13.0-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/protobuf-python/protobuf-python-3.13.0-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..664bab39432e214a7c0a1149d8da6f89af9b1a2c
--- /dev/null
+++ b/Golden_Repo/p/protobuf-python/protobuf-python-3.13.0-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,36 @@
+easyblock = 'PythonPackage'
+
+name = 'protobuf-python'
+version = '3.13.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/google/protobuf/'
+description = """Python Protocol Buffers runtime library."""
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+source_urls = ['https://pypi.python.org/packages/source/p/protobuf']
+sources = [{'download_filename': 'protobuf-%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}]
+checksums = ['6a82e0c8bb2bf58f606040cc5814e07715b2094caeba281e2e7d0b0e2e397db5']
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('protobuf', version)
+]
+
+download_dep_fail = True
+use_pip = True
+sanity_pip_check = True
+
+# Make sure protobuf is installed as a regular folder or it will not be found if
+# other google packages are installed in other site-packages folders
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/google/protobuf'],
+}
+
+options = {'modulename': 'google.protobuf'}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/p/pyproj/pyproj-2.6.1.post1-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/pyproj/pyproj-2.6.1.post1-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0978d8a944fd9891ec32772198f69e59b9c05a54
--- /dev/null
+++ b/Golden_Repo/p/pyproj/pyproj-2.6.1.post1-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,34 @@
+easyblock = 'PythonPackage'
+
+name = 'pyproj'
+version = '2.6.1.post1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://pyproj4.github.io/pyproj'
+description = "Python interface to PROJ4 library for cartographic transformations"
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = [PYPI_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['4f5b02b4abbd41610397c635b275a8ee4a2b5bc72a75572b98ac6ae7befa471e']
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('PROJ', '7.1.0'),
+]
+
+download_dep_fail = True
+use_pip = True
+
+preinstallopts = "export PROJ_DIR=$EBROOTPROJ && "
+
+sanity_pip_check = True
+
+moduleclass = 'data'
diff --git a/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb b/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..719838a272dd976c03dd31536459a7af69cde72a
--- /dev/null
+++ b/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb
@@ -0,0 +1,2565 @@
+name = 'R'
+version = '4.0.2'
+versionsuffix = '-nompi'
+
+homepage = 'https://www.r-project.org/'
+description = """R is a free software environment for statistical computing
+ and graphics."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s']
+sources = [SOURCE_TAR_GZ]
+checksums = ['d3bceab364da0876625e4097808b42512395fdf41292f4915ab1fd257c1bbe75']
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+dependencies = [
+    ('X11', '20200222'),
+    ('OpenGL', '2020'),
+    ('cairo', '1.17.2'),
+    ('libreadline', '8.0'),
+    ('ncurses', '6.2'),
+    ('bzip2', '1.0.8'),
+    ('XZ', '5.2.5'),
+    ('zlib', '1.2.11'),
+    ('SQLite', '3.32.3'),
+    ('PCRE2', '10.34'),
+    ('libpng', '1.6.37'),  # for plotting in R
+    ('libjpeg-turbo', '2.0.5'),  # for plottting in R
+    ('LibTIFF', '4.1.0'),
+    ('Java', '1.8', '', SYSTEM),
+    ('Tk', '8.6.10'),  # for tcltk
+    ('cURL', '7.71.1'),  # for RCurl
+    ('libxml2', '2.9.10'),  # for XML
+    ('PROJ', '7.1.0'),  # for rgdal
+    ('GMP', '6.2.0'),  # for igraph
+    ('NLopt', '2.6.2'),  # for nloptr
+    ('FFTW', '3.3.8', '-nompi'),  # for fftw
+    ('libsndfile', '1.0.28'),  # for seewave
+    ('ICU', '67.1'),  # for rJava & gdsfmt
+    ('HDF5', '1.10.6', '-serial'),  # for hdf5r
+    ('UDUNITS', '2.2.26'),  # for units
+    ('GSL', '2.6'),  # for RcppGSL
+    ('ImageMagick', '7.0.10-25'),  # for animation
+    ('GLPK', '4.65'),  # for Rglpk
+    ('netCDF', '4.7.4', '-serial'),  # the ndf4 needs it
+    ('GEOS', '3.8.1', '-Python-3.8.5'),  # for rgeos
+    ('ZeroMQ', '4.3.3'),  # for pbdZMQ needed by IRkernel
+
+    # OS dependency should be preferred if the os version is more recent then
+    # this version, it's nice to have an up to date openssl for security
+    # reasons
+    # ('OpenSSL', '1.1.1e'),
+]
+
+osdependencies = [('openssl-devel', 'libssl-dev', 'libopenssl-devel')]
+
+preconfigopts = 'export LDFLAGS="$LDFLAGS -lm" && '
+
+configopts = "--with-pic --enable-threads --enable-R-shlib"
+# some recommended packages may fail in a parallel build (e.g. Matrix), and
+# we're installing them anyway below
+configopts += " --with-recommended-packages=no"
+
+# specify that at least EasyBuild v3.5.0 is required,
+# since we rely on the updated easyblock for R to configure correctly w.r.t.
+# BLAS/LAPACK
+easybuild_version = '4.2.2'
+
+exts_default_options = {
+    'source_urls': [
+        'https://cran.r-project.org/src/contrib/Archive/%(name)s',  # package archive
+        'https://cran.r-project.org/src/contrib/',  # current version of packages
+        'https://cran.freestatistics.org/src/contrib',  # mirror alternative for current packages
+    ],
+    'source_tmpl': '%(name)s_%(version)s.tar.gz',
+}
+
+# !! order of packages is important !!
+# packages updated on 23 July 2020
+exts_list = [
+    'base',
+    'datasets',
+    'graphics',
+    'grDevices',
+    'grid',
+    'methods',
+    'splines',
+    'stats',
+    'stats4',
+    'tools',
+    'utils',
+    'parallel',
+    ('abind', '1.4-5', {
+        'checksums': ['3a3ace5afbcb86e56889efcebf3bf5c3bb042a282ba7cc4412d450bb246a3f2c'],
+    }),
+    ('magic', '1.5-9', {
+        'checksums': ['fa1d5ef2d39e880f262d31b77006a2a7e76ea38e306aae4356e682b90d6cd56a'],
+    }),
+    ('Rcpp', '1.0.4.6', {
+        'checksums': ['45af675ddbbe155e671453b2e84fe32250bb98d4ccb4342b61c1e25cff10b302'],
+    }),
+    ('RcppProgress', '0.4.2', {
+        'checksums': ['b1624b21b7aeb1dafb30f092b2a4bef4c3504efd2d6b00b2cdf55dc9df194b48'],
+    }),
+    ('lpSolve', '5.6.15', {
+        'checksums': ['4627be4178abad34fc85a7d264c2eb5e27506f007e46687b0b8a4f8fbdf4f3ba'],
+    }),
+    ('linprog', '0.9-2', {
+        'checksums': ['8937b2e30692e38de1713f1513b78f505f73da6f5b4a576d151ad60bac2221ce'],
+    }),
+    ('geometry', '0.4.5', {
+        'checksums': ['8fedd17c64468721d398e3c17a39706321ab71098b29f5e8d8039dd115a220d8'],
+    }),
+    ('bit', '1.1-15.2', {
+        'checksums': ['0b83e78385293d6cdc0189a07fcc3f9f9db286c8c4af3288467f5257e79cb28b'],
+    }),
+    ('filehash', '2.4-2', {
+        'checksums': ['b6d056f75d45e315943a4618f5f62802612cd8931ba3f9f474b595140a3cfb93'],
+    }),
+    ('ff', '2.2-14.2', {
+        'checksums': ['f8c06ac333ffe3545cdf56531619865176e1827728f7aeeba82d135d5c5e37e4'],
+    }),
+    ('bnlearn', '4.5', {
+        'checksums': ['a8047625533260a855d309b3c0785cbeec0f9ec13f284b6664a1f61638138578'],
+    }),
+    ('bootstrap', '2019.6', {
+        'checksums': ['5252fdfeb944cf1fae35016d35f9333b1bd1fc8c6d4a14e33901160e21968694'],
+    }),
+    ('combinat', '0.0-8', {
+        'checksums': ['1513cf6b6ed74865bfdd9f8ca58feae12b62f38965d1a32c6130bef810ca30c1'],
+    }),
+    ('deal', '1.2-39', {
+        'checksums': ['a349db8f1c86cbd8315c068da49314ce9eb585dbb50d2e5ff09300506bd8806b'],
+    }),
+    ('fdrtool', '1.2.15', {
+        'checksums': ['65f964aa768d0703ceb7a199adc5e79ca79a6d29d7bc053a262eb533697686c0'],
+    }),
+    ('formatR', '1.7', {
+        'checksums': ['a366621b3ff5f8e86a499b6f87858ad47eefdace138341b1377ecc307a5e5ddb'],
+    }),
+    ('gtools', '3.8.2', {
+        'checksums': ['503ba60a41f3c61b8129c25de62c74dab29761d2e661d4addd106e2e02f1dcde'],
+    }),
+    ('gdata', '2.18.0', {
+        'checksums': ['4b287f59f5bbf5fcbf18db16477852faac4a605b10c5284c46b93fa6e9918d7f'],
+    }),
+    ('GSA', '1.03.1', {
+        'checksums': ['e192d4383f53680dbd556223ea5f8cad6bae62a80a337ba5fd8d05a8aee6a917'],
+    }),
+    ('highr', '0.8', {
+        'checksums': ['4bd01fba995f68c947a99bdf9aca15327a5320151e10bd0326fad50a6d8bc657'],
+    }),
+    ('infotheo', '1.2.0', {
+        'checksums': ['9b47ebc3db5708c88dc014b4ffec6734053a9c255a9241fcede30fec3e63aaa3'],
+    }),
+    ('lars', '1.2', {
+        'checksums': ['64745b568f20b2cfdae3dad02fba92ebf78ffee466a71aaaafd4f48c3921922e'],
+    }),
+    ('lazy', '1.2-16', {
+        'checksums': ['c796c8b987ed1bd9dfddd593e17312ed681fc4fa3a1ecfe51da2def0ac1e50df'],
+    }),
+    ('kernlab', '0.9-29', {
+        'checksums': ['c3da693a0041dd34f869e7b63a8d8cf7d4bc588ac601bcdddcf7d44f68b3106f'],
+    }),
+    ('mime', '0.9', {
+        'checksums': ['2ccf97d2940a09539dc051c7a9a1aee90ef04b34e9bc6c0b64b4435fb3c2fa80'],
+    }),
+    ('xfun', '0.13', {
+        'checksums': ['a3da8d53b74ae58bb0f121177dcf3caf312c65fc181c18f168abd59afac33e0e'],
+    }),
+    ('markdown', '1.1', {
+        'checksums': ['8d8cd47472a37362e615dbb8865c3780d7b7db694d59050e19312f126e5efc1b'],
+    }),
+    ('mlbench', '2.1-1', {
+        'checksums': ['748141d56531a39dc4d37cf0a5165a40b653a04c507e916854053ed77119e0e6'],
+    }),
+    ('NLP', '0.2-0', {
+        'checksums': ['fc64c80124c4e53b20f92b60c68e2fd33ee189653d0ceea410c32dd66d9e7075'],
+    }),
+    ('mclust', '5.4.6', {
+        'checksums': ['d4ffcf36bf709ad42dccb2387263f67ca32012b0707f0ef6eda32730b5c286fc'],
+    }),
+    ('RANN', '2.6.1', {
+        'checksums': ['b299c3dfb7be17aa41e66eff5674fddd2992fb6dd3b10bc59ffbf0c401697182'],
+    }),
+    ('rmeta', '3.0', {
+        'checksums': ['b9f9d405935cffcd7a5697ff13b033f9725de45f4dc7b059fd68a7536eb76b6e'],
+    }),
+    ('segmented', '1.1-0', {
+        'checksums': ['d081d0efaec708d717bf1248ba3df099876389c22796aad676655efb706e9d19'],
+    }),
+    ('som', '0.3-5.1', {
+        'checksums': ['a6f4c0e5b36656b7a8ea144b057e3d7642a8b71972da387a7133f3dd65507fb9'],
+    }),
+    ('SuppDists', '1.1-9.5', {
+        'checksums': ['680b67145c07d44e200275e08e48602fe19cd99fb106c05422b3f4a244c071c4'],
+    }),
+    ('stabledist', '0.7-1', {
+        'checksums': ['06c5704d3a3c179fa389675c537c39a006867bc6e4f23dd7e406476ed2c88a69'],
+    }),
+    ('survivalROC', '1.0.3', {
+        'checksums': ['1449e7038e048e6ad4d3f7767983c0873c9c7a7637ffa03a4cc7f0e25c31cd72'],
+    }),
+    ('pspline', '1.0-18', {
+        'checksums': ['f71cf293bd5462e510ac5ad16c4a96eda18891a0bfa6447dd881c65845e19ac7'],
+    }),
+    ('timeDate', '3043.102', {
+        'checksums': ['377cba03cddab8c6992e31d0683c1db3a73afa9834eee3e95b3b0723f02d7473'],
+    }),
+    ('longmemo', '1.1-2', {
+        'checksums': ['7964e982287427dd58f98e1144e468ae0cbd572d25a4bea6ca9ae9c7522f3207'],
+    }),
+    ('ADGofTest', '0.3', {
+        'checksums': ['9cd9313954f6ecd82480d373f6c5371ca84ab33e3f5c39d972d35cfcf1096846'],
+    }),
+    ('MASS', '7.3-51.6', {
+        'checksums': ['e2035c47d8428b52afc02dd4f87ccb39a0085629932dfaff5f0a5d2c84ef3eee'],
+    }),
+    ('pixmap', '0.4-11', {
+        'checksums': ['6fa010749a59cdf56aad9f81271473b7d55697036203f2cd5d81372bcded7412'],
+    }),
+    ('lattice', '0.20-41', {
+        'checksums': ['54ca557f0cb33df60eb10b883c2ed2847e061ddd57ed9b5dd7695149609d57b5'],
+    }),
+    ('sp', '1.4-1', {
+        'checksums': ['8f96f1a4827eea2cc02bb35c418ce2bdaf2d5ea47a214bcd4bc85f928b417039'],
+    }),
+    ('ade4', '1.7-15', {
+        'checksums': ['3286fa7d8c372a5596e82c970c058e4cca1139a09935f14b238ba38aa9fdfdf6'],
+    }),
+    ('AlgDesign', '1.2.0', {
+        'checksums': ['ff86c9e19505770520e7614970ad19c698664d08001ce888b8603e44c2a3b52a'],
+    }),
+    ('base64enc', '0.1-3', {
+        'checksums': ['6d856d8a364bcdc499a0bf38bfd283b7c743d08f0b288174fba7dbf0a04b688d'],
+    }),
+    ('BH', '1.72.0-3', {
+        'checksums': ['888ec1a3316bb69e1ba749b08ba7e0903ebc4742e3a185de8d148c13cddac8ab'],
+    }),
+    ('brew', '1.0-6', {
+        'checksums': ['d70d1a9a01cf4a923b4f11e4374ffd887ad3ff964f35c6f9dc0f29c8d657f0ed'],
+    }),
+    ('Brobdingnag', '1.2-6', {
+        'checksums': ['19eccaed830ce9d93b70642f6f126ac66722a98bbd48586899cc613dd9966ad4'],
+    }),
+    ('corpcor', '1.6.9', {
+        'checksums': ['2e4fabd1d3936fecea67fa365233590147ca50bb45cf80efb53a10345a8a23c2'],
+    }),
+    ('longitudinal', '1.1.12', {
+        'checksums': ['d4f894c38373ba105b1bdc89e3e7c1b215838e2fb6b4470b9f23768b84e603b5'],
+    }),
+    ('backports', '1.1.6', {
+        'checksums': ['d0e8af477514d81b46cc777e0fa532835c1dc7eecd3c2432bb40228131bc199c'],
+    }),
+    ('checkmate', '2.0.0', {
+        'checksums': ['0dc25b0e20c04836359df1885d099c6e4ad8ae0e585a9e4107f7ea945d9c6fa4'],
+    }),
+    ('cubature', '2.0.4', {
+        'checksums': ['d97ce5eaac5e43910208e8274ddf6ff4f974d05688f0247ebccd807e24c2fe4a'],
+    }),
+    ('DEoptimR', '1.0-8', {
+        'checksums': ['846911c1b2561a9fae73a8c60a21a5680963ebb0050af3c1f1147ae9a121e5ef'],
+    }),
+    ('digest', '0.6.25', {
+        'checksums': ['15ccadb7b8bccaa221b6700bb549011719d0f4b38dbd3a1f29face3e019e2de5'],
+    }),
+    ('fastmatch', '1.1-0', {
+        'checksums': ['20b51aa4838dbe829e11e951444a9c77257dcaf85130807508f6d7e76797007d'],
+    }),
+    ('ffbase', '0.12.8', {
+        'checksums': ['18622f799641fb624dc274cdd31c52c9bd77c8f1f63fbb1dc636be80673b5356'],
+    }),
+    ('iterators', '1.0.12', {
+        'checksums': ['96bf31d60ebd23aefae105d9b7790715e63327eec0deb2ddfb3d543994ea9f4b'],
+    }),
+    ('maps', '3.3.0', {
+        'checksums': ['199afe19a4edcef966ae79ef802f5dcc15a022f9c357fcb8cae8925fe8bd2216'],
+    }),
+    ('nnls', '1.4', {
+        'checksums': ['0e5d77abae12bc50639d34354f96a8e079408c9d7138a360743b73bd7bce6c1f'],
+    }),
+    ('sendmailR', '1.2-1', {
+        'checksums': ['04feb08c6c763d9c58b2db24b1222febe01e28974eac4fe87670be6fb9bff17c'],
+    }),
+    ('dotCall64', '1.0-0', {
+        'checksums': ['69318dc6b8aecc54d4f789c8105e672198363b395f1a764ebaeb54c0473d17ad'],
+    }),
+    ('spam', '2.5-1', {
+        'checksums': ['d145881a0d48351ce88678a57862c0d0f716d98f3166f6338d954acacc51c067'],
+    }),
+    ('subplex', '1.6', {
+        'checksums': ['0d05da1622fffcd20a01cc929fc6c2b7df40a8246e7018f7f1f3c175b774cbf9'],
+    }),
+    ('stringi', '1.4.6', {
+        'checksums': ['633f67da5bd7bcb611764e4f478b0da050d22a715bbcbdd67aed0300dcef6fd6'],
+    }),
+    ('magrittr', '1.5', {
+        'checksums': ['05c45943ada9443134caa0ab24db4a962b629f00b755ccf039a2a2a7b2c92ae8'],
+    }),
+    ('glue', '1.4.0', {
+        'checksums': ['ea6c409f7141754baa090deba96cff270a11b185452cf9e6fb69cb148a9069c1'],
+    }),
+    ('stringr', '1.4.0', {
+        'checksums': ['87604d2d3a9ad8fd68444ce0865b59e2ffbdb548a38d6634796bbd83eeb931dd'],
+    }),
+    ('evaluate', '0.14', {
+        'checksums': ['a8c88bdbe4e60046d95ddf7e181ee15a6f41cdf92127c9678f6f3d328a3c5e28'],
+    }),
+    ('logspline', '2.1.15', {
+        'checksums': ['dfe0c89a2ae219d121ea7af788dd994097f42d2ff39f4f86f5c4288a4ec0f71e'],
+    }),
+    ('ncbit', '2013.03.29', {
+        'checksums': ['4480271f14953615c8ddc2e0666866bb1d0964398ba0fab6cc29046436820738'],
+    }),
+    ('permute', '0.9-5', {
+        'checksums': ['d2885384a07497e8df273689d6713fc7c57a7c161f6935f3572015e16ab94865'],
+    }),
+    ('plotrix', '3.7-8', {
+        'checksums': ['8ccd1f7e656413b9956cea614c986ce9cc61366deba356afb38cee6672a59480'],
+    }),
+    ('randomForest', '4.6-14', {
+        'checksums': ['f4b88920419eb0a89d0bc5744af0416d92d112988702dc726882394128a8754d'],
+    }),
+    ('scatterplot3d', '0.3-41', {
+        'checksums': ['4c8326b70a3b2d37126ca806771d71e5e9fe1201cfbe5b0d5a0a83c3d2c75d94'],
+    }),
+    ('SparseM', '1.78', {
+        'checksums': ['d6b79ec881a10c91cb03dc23e6e783080ded9db4f2cb723755aa0d7d29a8b432'],
+    }),
+    ('tripack', '1.3-9', {
+        'checksums': ['2b40670c23894b12e86a36fb2f42cab4728c8af8bd5338e94fbf86b7916a8c10'],
+    }),
+    ('R6', '2.4.1', {
+        'checksums': ['26b0fd64827655c28c903f7ff623e839447387f3ad9b04939a02f41ac82faa3e'],
+    }),
+    ('irace', '3.4.1', {
+        'checksums': ['7eea92ba42e6ba320fa8bdca3c53091ae42f26a0f097244f65e7e117f6d514b6'],
+    }),
+    ('rJava', '0.9-12', {
+        'checksums': ['2248a8c73cacfecf75445ad0ebda4960409ec3f21afb180a1bc02a6de4057b0f'],
+    }),
+    ('RColorBrewer', '1.1-2', {
+        'checksums': ['f3e9781e84e114b7a88eb099825936cc5ae7276bbba5af94d35adb1b3ea2ccdd'],
+    }),
+    ('png', '0.1-7', {
+        'checksums': ['e269ff968f04384fc9421d17cfc7c10cf7756b11c2d6d126e9776f5aca65553c'],
+    }),
+    ('jpeg', '0.1-8.1', {
+        'checksums': ['1db0a4976fd9b2ae27a37d3e856cca35bc2909323c7a40724846a5d3c18915a9'],
+    }),
+    ('latticeExtra', '0.6-29', {
+        'checksums': ['6cadc31d56f73d926e2e8d72e43ae17ac03607a4d1a374719999a4a231e3df11'],
+    }),
+    ('Matrix', '1.2-18', {
+        'checksums': ['f7ff018c2811946767ffd4c96d3987e859b82786ff72e1c211ab18bc03cb6119'],
+    }),
+    ('RcppArmadillo', '0.9.870.2.0', {
+        'checksums': ['bb605d6702d49d447b18986d9a7864b27e5512630a6713bca67afbb5bb54f1e4'],
+    }),
+    ('plyr', '1.8.6', {
+        'checksums': ['ea55d26f155443e9774769531daa5d4c20a0697bb53abd832e891b126c935287'],
+    }),
+    ('gtable', '0.3.0', {
+        'checksums': ['fd386cc4610b1cc7627dac34dba8367f7efe114b968503027fb2e1265c67d6d3'],
+    }),
+    ('reshape2', '1.4.4', {
+        'checksums': ['d88dcf9e2530fa9695fc57d0c78adfc5e361305fe8919fe09410b17da5ca12d8'],
+    }),
+    ('dichromat', '2.0-0', {
+        'checksums': ['31151eaf36f70bdc1172da5ff5088ee51cc0a3db4ead59c7c38c25316d580dd1'],
+    }),
+    ('colorspace', '1.4-1', {
+        'checksums': ['693d713a050f8bfecdb7322739f04b40d99b55aed168803686e43401d5f0d673'],
+    }),
+    ('munsell', '0.5.0', {
+        'checksums': ['d0f3a9fb30e2b5d411fa61db56d4be5733a2621c0edf017d090bdfa5e377e199'],
+    }),
+    ('labeling', '0.3', {
+        'checksums': ['0d8069eb48e91f6f6d6a9148f4e2dc5026cabead15dd15fc343eff9cf33f538f'],
+    }),
+    ('viridisLite', '0.3.0', {
+        'checksums': ['780ea12e7c4024d5ba9029f3a107321c74b8d6d9165262f6e64b79e00aa0c2af'],
+    }),
+    ('farver', '2.0.3', {
+        'checksums': ['0e1590df79ec6078f10426411b96216b70568a4eaf3ffd84ca723add0ed8e5cc'],
+    }),
+    ('rlang', '0.4.5', {
+        'checksums': ['cd1fac76f1a6ac26e07cc11dd08c55947fe152e4703daf8c94e3a650721b10a8'],
+    }),
+    ('lifecycle', '0.2.0', {
+        'checksums': ['29746e8dee05d4e36f9c612e8c7a903a4f648a36b3b94c9776e518c38a412224'],
+    }),
+    ('scales', '1.1.0', {
+        'checksums': ['1ee4a6fd1dbc5f52fe57dd8cce8caee4ce2fecb02d4e7d519e83f15aa45b2d03'],
+    }),
+    ('assertthat', '0.2.1', {
+        'checksums': ['85cf7fcc4753a8c86da9a6f454e46c2a58ffc70c4f47cac4d3e3bcefda2a9e9f'],
+    }),
+    ('crayon', '1.3.4', {
+        'checksums': ['fc6e9bf990e9532c4fcf1a3d2ce22d8cf12d25a95e4779adfa17713ed836fa68'],
+    }),
+    ('fansi', '0.4.1', {
+        'checksums': ['3c69eec803a3827e5227f9cf084976eeb738b22c7eb7665bb5faa251bce41e09'],
+    }),
+    ('cli', '2.0.2', {
+        'checksums': ['490834e5b80eb036befa0e150996bcab1c4d5d168c3d45209926e52d0d5413b6'],
+    }),
+    ('utf8', '1.1.4', {
+        'checksums': ['f6da9cadfc683057d45f54b43312a359cf96ec2731c0dda18a8eae31d1e31e54'],
+    }),
+    ('zeallot', '0.1.0', {
+        'checksums': ['439f1213c97c8ddef9a1e1499bdf81c2940859f78b76bc86ba476cebd88ba1e9'],
+    }),
+    ('ellipsis', '0.3.0', {
+        'checksums': ['0bf814cb7a1f0ee1f2949bdc98752a0d535f2a9489280dd4d8fcdb10067ee907'],
+    }),
+    ('vctrs', '0.2.4', {
+        'checksums': ['dcc8b6bfd2d951d48d338a3d4deaaabfee356c0ee43169a6d6b06ea78cfe4f97'],
+    }),
+    ('pillar', '1.4.3', {
+        'checksums': ['5a8bc40bd836baab80f70fba268e3f530fb464a9268ad99f1c037380f83f560b'],
+    }),
+    ('pkgconfig', '2.0.3', {
+        'checksums': ['330fef440ffeb842a7dcfffc8303743f1feae83e8d6131078b5a44ff11bc3850'],
+    }),
+    ('tibble', '3.0.1', {
+        'checksums': ['154552cfb767e0bd48ef3fc61df8286ce52205e970815c5bc2560f41eceea79e'],
+    }),
+    ('lazyeval', '0.2.2', {
+        'checksums': ['d6904112a21056222cfcd5eb8175a78aa063afe648a562d9c42c6b960a8820d4'],
+    }),
+    ('withr', '2.3.0', {
+        'checksums': ['2cc03c9947d424717e94f301a0ab7d97eb2079eea5c6a0a3cdf2da32aedc67a0'],
+    }),
+    ('nlme', '3.1-147', {
+        'checksums': ['efc8d82e5758c4696458f647f2b8bb1776fdbff6c8eaad3fe3c0573a3c1f0ce7'],
+    }),
+    ('mgcv', '1.8-31', {
+        'checksums': ['736de462a0ac43a6ed38cd57dfb0ba2942c941dfbb538128782727ab7125c3c5'],
+    }),
+    ('rprojroot', '1.3-2', {
+        'checksums': ['df5665834941d8b0e377a8810a04f98552201678300f168de5f58a587b73238b'],
+    }),
+    ('desc', '1.2.0', {
+        'checksums': ['e66fb5d4fc7974bc558abcdc107a1f258c9177a29dcfcf9164bc6b33dd08dae8'],
+    }),
+    ('ps', '1.3.2', {
+        'checksums': ['89f2456af6c7ffbc151aeccb620584ca26015b7d6188eb188488c7c4afc14704'],
+    }),
+    ('processx', '3.4.2', {
+        'checksums': ['94a0ffc632759be85d13b7b11ed006adf6c08c2d9cd99612cd0372833bd75c09'],
+    }),
+    ('callr', '3.4.3', {
+        'checksums': ['01b7277f20c1d662c6bebbfa2798d179922b36d4148b4298853579aeda0382b5'],
+    }),
+    ('prettyunits', '1.1.1', {
+        'checksums': ['9a199aa80c6d5e50fa977bc724d6e39dae1fc597a96413053609156ee7fb75c5'],
+    }),
+    ('pkgbuild', '1.0.7', {
+        'checksums': ['29bb38a38202ba780d2d46aeca0a6e2f052653e4a83891ec38d19bebd131a971'],
+    }),
+    ('rstudioapi', '0.13', {
+        'checksums': ['aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b'],
+    }),
+    ('pkgload', '1.0.2', {
+        'checksums': ['3186564e690fb05eabe76e1ac0bfd4312562c3ac8794b29f8850399515dcf27c'],
+    }),
+    ('praise', '1.0.0', {
+        'checksums': ['5c035e74fd05dfa59b03afe0d5f4c53fbf34144e175e90c53d09c6baedf5debd'],
+    }),
+    ('testthat', '2.3.2', {
+        'checksums': ['1a268d8df07f7cd8d282d03bb96ac2d96a24a95c9aa52f4cca5138a09dd8e06c'],
+    }),
+    ('isoband', '0.2.1', {
+        'checksums': ['18883606bea8352e04a4618bea4e5c9833269e73a46b50bc006dddf4c8b6b4d9'],
+    }),
+    ('ggplot2', '3.3.0', {
+        'checksums': ['320e3c76fe0d0397e29f4782bf85af3647518154b3900a39fd18cf024c554148'],
+    }),
+    ('pROC', '1.16.2', {
+        'checksums': ['b68b960ed9a2cdea7976943649082c3945e370d14115b7adbce440fc7f51fc2a'],
+    }),
+    ('quadprog', '1.5-8', {
+        'checksums': ['22128dd6b08d3516c44ff89276719ad4fe46b36b23fdd585274fa3a93e7a49cd'],
+    }),
+    ('BB', '2019.10-1', {
+        'checksums': ['04d0b6ce6e5f070b109478a6005653dbe78613bb4e3ea4903203d851b5d3c94d'],
+    }),
+    ('BBmisc', '1.11', {
+        'checksums': ['1ea48c281825349d8642a661bb447e23bfd651db3599bf72593bfebe17b101d2'],
+    }),
+    ('fail', '1.3', {
+        'checksums': ['ede8aa2a9f2371aff5874cd030ac625adb35c33954835b54ab4abf7aeb34d56d'],
+    }),
+    ('rlecuyer', '0.3-5', {
+        'checksums': ['4723434ff7624d4f404a6854ffa0673fc43daa46f58f064dbeeaa17da28ab626'],
+    }),
+    ('snow', '0.4-3', {
+        'checksums': ['8512537daf334ea2b8074dbb80cf5e959a403a78d68bc1e97664e8a4f64576d8'],
+    }),
+    ('tree', '1.0-40', {
+        'checksums': ['ffab16382d7ed5b76529801ab26b4970363b2072231c6a87330326298ce626e7'],
+    }),
+    ('pls', '2.7-2', {
+        'checksums': ['67e91e36dbebeb2f2d9c9b88f310dc00f70de275e5f382f392e72dd36af42b88'],
+    }),
+    ('class', '7.3-17', {
+        'checksums': ['be1f85b6df7556db93f50cb08106aac6620d4b5bb3fee846422863a022461313'],
+    }),
+    ('e1071', '1.7-3', {
+        'checksums': ['bb2dba526b673ec3a573befe365e3500b773593f0384fd6694e0835496bcc25d'],
+    }),
+    ('nnet', '7.3-14', {
+        'checksums': ['5d1b9e9764d74d16c651f18f949aa4e9e2995ba64633cbfa2c6a7355ae30f4af'],
+    }),
+    ('minqa', '1.2.4', {
+        'checksums': ['cfa193a4a9c55cb08f3faf4ab09c11b70412523767f19894e4eafc6e94cccd0c'],
+    }),
+    ('RcppEigen', '0.3.3.7.0', {
+        'checksums': ['62ea627284425bfdb56613bc315cca492ed3483a56a03c1f9dc9821a25c3e8ac'],
+    }),
+    ('MatrixModels', '0.4-1', {
+        'checksums': ['fe878e401e697992a480cd146421c3a10fa331f6b37a51bac83b5c1119dcce33'],
+    }),
+    ('quantreg', '5.55', {
+        'checksums': ['cbe1541409aed8222a41043958ab9c352b84dba4e0766b54bf1eac59d2454cfe'],
+    }),
+    ('robustbase', '0.93-6', {
+        'checksums': ['ea1463a646a0aad0cc6f48e011c8baf990178f1228e0759be63259123b3a24b3'],
+    }),
+    ('zoo', '1.8-7', {
+        'checksums': ['9e072ddc8f245adcdeb230cbf0c818db9c028c320894f48211758da2bf2085f0'],
+    }),
+    ('lmtest', '0.9-37', {
+        'checksums': ['ddc929f94bf055974832fa4a20fdd0c1eb3a84ee11f716c287936f2141d5ca0a'],
+    }),
+    ('vcd', '1.4-7', {
+        'checksums': ['ec89b2ad202b89d70344b49d9410ddc8a15dced00462ed7e6f9b516811325299'],
+    }),
+    ('snowfall', '1.84-6.1', {
+        'checksums': ['5c446df3a931e522a8b138cf1fb7ca5815cc82fcf486dbac964dcbc0690e248d'],
+    }),
+    ('rpart', '4.1-15', {
+        'checksums': ['2b8ebe0e9e11592debff893f93f5a44a6765abd0bd956b0eb1f70e9394cfae5c'],
+    }),
+    ('survival', '3.1-12', {
+        'checksums': ['b62ed66eb646f3df13f7e9bf6571e3bfecae128c66491e174c8833cbef1bf21f'],
+    }),
+    ('bindr', '0.1.1', {
+        'checksums': ['7c785ca77ceb3ab9282148bcecf64d1857d35f5b800531d49483622fe67505d0'],
+    }),
+    ('plogr', '0.2.0', {
+        'checksums': ['0e63ba2e1f624005fe25c67cdd403636a912e063d682eca07f2f1d65e9870d29'],
+    }),
+    ('bindrcpp', '0.2.2', {
+        'checksums': ['48130709eba9d133679a0e959e49a7b14acbce4f47c1e15c4ab46bd9e48ae467'],
+    }),
+    ('purrr', '0.3.4', {
+        'checksums': ['23ebc93bc9aed9e7575e8eb9683ff4acc0270ef7d6436cc2ef4236a9734840b2'],
+    }),
+    ('tidyselect', '1.0.0', {
+        'checksums': ['fe761766d03af86d04da9a9a7800e9c8271d2cb067776cfb817d853725d59caf'],
+    }),
+    ('dplyr', '0.8.5', {
+        'checksums': ['5750d3bf4bda7b5448e08af264ed183b4f7bd0c59a9d828fe9dd399b14590218'],
+    }),
+    ('tidyr', '1.0.2', {
+        'checksums': ['2403dd2f4d350d1ecb449be5d61cdccf6655572a807409325f9122c716924e69'],
+    }),
+    ('mnormt', '1.5-6', {
+        'checksums': ['2951fcc9711d577d7d5577d313875c4ed9f7a7a06df8c3b62fa27c231f021e4d'],
+    }),
+    ('foreign', '0.8-79', {
+        'checksums': ['af36b6945afbf849543ef7e432e27fecb66d5a8b3932b2428e59c2392699b9b4'],
+    }),
+    ('psych', '1.9.12.31', {
+        'checksums': ['25e71dbe0b0d8211e7a9c8439c1c205a25fd571a0f95a89b8425b87b95b9290a'],
+    }),
+    ('generics', '0.0.2', {
+        'checksums': ['71b3d1b719ce89e71dd396ac8bc6aa5f1cd99bbbf03faff61dfbbee32fec6176'],
+    }),
+    ('broom', '0.5.6', {
+        'checksums': ['0b06f670ace7349b95a71313c360dbded2428d65d17eaacccc93750196964335'],
+    }),
+    ('nloptr', '1.2.2.1', {
+        'checksums': ['d037bea484725cf6cbc069eee17db17f1bc8fc4edc1f1ca16cf6c34bc21610ae'],
+    }),
+    ('boot', '1.3-25', {
+        'checksums': ['464835fcb453072346ce49e4ae318e04c9dba682349be49db616623b6088fbbe'],
+    }),
+    ('statmod', '1.4.34', {
+        'checksums': ['1a81c286e099d2395e39f47f1e87295b8e1d64b64ec55bb09bc817ae8879747a'],
+    }),
+    ('lme4', '1.1-23', {
+        'checksums': ['99d542b1f78fae33a64f1b8eec33b7a4532a8d82d2ac47bdb2838248f14c0262'],
+    }),
+    ('ucminf', '1.1-4', {
+        'checksums': ['a2eb382f9b24e949d982e311578518710f8242070b3aa3314a331c1e1e7f6f07'],
+    }),
+    ('numDeriv', '2016.8-1.1', {
+        'checksums': ['d8c4d19ff9aeb31b0c628bd4a16378e51c1c9a3813b525469a31fe89af00b345'],
+    }),
+    ('ordinal', '2019.12-10', {
+        'checksums': ['7a41e7b7e852a8fa3e911f8859d36e5709ccec5ca42ee3de14a813b7aaac7725'],
+    }),
+    ('jomo', '2.6-10', {
+        'checksums': ['4063d48e259e936dc0bd9dc616a09043f695703848cb1bf8faa08c07922034cd'],
+    }),
+    ('hms', '0.5.3', {
+        'checksums': ['4e2b67c8cf65fe86179f24f42d82b3ca9377d5907837bda98b4fc6c2318853ad'],
+    }),
+    ('clipr', '0.7.0', {
+        'checksums': ['03a4e4b72ec63bd08b53fe62673ffc19a004cc846957a335be2b30d046b8c2e2'],
+    }),
+    ('readr', '1.3.1', {
+        'checksums': ['33f94de39bb7f2a342fbb2bd4e5afcfec08798eac39672ee18042ac0b349e4f3'],
+    }),
+    ('forcats', '0.5.0', {
+        'checksums': ['8f960e789333ec597ddf2d653a64e330f03b86f465e9b71f6779f227355d90c4'],
+    }),
+    ('haven', '2.2.0', {
+        'checksums': ['199ee9b14e1ff70a0b0c3b9ce33dfdec8ed3b5e857a2a36bfb82e78a7b352d3d'],
+    }),
+    ('pan', '1.6', {
+        'checksums': ['adc0df816ae38bc188bce0aef3aeb71d19c0fc26e063107eeee71a81a49463b6'],
+    }),
+    ('mitml', '0.3-7', {
+        'checksums': ['c6f796d0059f1b093b599a89d955982fa257de9c45763ecc2cbbce10fdec1e7b'],
+    }),
+    ('mice', '3.8.0', {
+        'checksums': ['04bc18d6cf225d626d4a5d52dd98a30a19662ae14263c83b51744efce25e7ec5'],
+    }),
+    ('urca', '1.3-0', {
+        'checksums': ['621cc82398e25b58b4a16edf000ed0a1484d9a0bc458f734e97b6f371cc76aaa'],
+    }),
+    ('fracdiff', '1.5-1', {
+        'checksums': ['b8103b32a4ca3a59dda1624c07da08ecd144c7a91a747d1f4663e99421950eb6'],
+    }),
+    ('logistf', '1.23', {
+        'checksums': ['5adb22a40569883395dc048c877f849dd08d07582a991f1b160f0338f0b13838'],
+    }),
+    ('akima', '0.6-2', {
+        'checksums': ['61da3e556553eea6d1f8db7c92218254441da31e365bdef82dfe5da188cc97ce'],
+    }),
+    ('bitops', '1.0-6', {
+        'checksums': ['9b731397b7166dd54941fb0d2eac6df60c7a483b2e790f7eb15b4d7b79c9d69c'],
+    }),
+    ('mixtools', '1.2.0', {
+        'checksums': ['ef033ef13625209065d26767bf70d129972e6808927f755629f1d70a118b9023'],
+    }),
+    ('cluster', '2.1.0', {
+        'checksums': ['eaf955bef8f616ea563351ec7f597c445aec43e65991ca975e382ef1fd70aa14'],
+    }),
+    ('gclus', '1.3.2', {
+        'checksums': ['9cc61cdff206c11213e73afca3d570a7234250cf6044a9202c2589932278e0b3'],
+    }),
+    ('coda', '0.19-3', {
+        'checksums': ['d3df1fc848bcf1af8fae13d61eeab60e99a3d4b4db384bec4326f909f502c5d6'],
+    }),
+    ('codetools', '0.2-16', {
+        'checksums': ['f67a66175cb5d8882457d1e9b91ea2f16813d554fa74f80c1fd6e17cf1877501'],
+    }),
+    ('foreach', '1.5.0', {
+        'checksums': ['1af9a713418c4cdeb49c4194f6482a7ee8ae4959b995a958a8a8a19ec8b60415'],
+    }),
+    ('doMC', '1.3.6', {
+        'checksums': ['2977fc9e2dc54d85d45b4a36cd286dff72834fbc73f38b6ee45a6eb8557fc9b2'],
+    }),
+    ('DBI', '1.1.0', {
+        'checksums': ['a96db7fa39a58f1ed34c6e78d8f5f7e4cf0882afb301323b5c6975d6729203e4'],
+    }),
+    ('gam', '1.16.1', {
+        'checksums': ['80d04102c6152143e8ed364f91eb312e413f73b8fcab7cf15d677867a16e74b9'],
+    }),
+    ('gamlss.data', '5.1-4', {
+        'checksums': ['0d3777d8c3cd76cef273aa6bde40a91688719be401195ed9bfd1e85bd7d5eeb5'],
+    }),
+    ('gamlss.dist', '5.1-6', {
+        'checksums': ['3ff0e36dfd7ddea109410c539375a408af8f8f865dd8865555e41fb0402720dd'],
+    }),
+    ('gamlss', '5.1-6', {
+        'checksums': ['b9c9a21343ed7777c239d8c5ad63b6f6efa0254bfcd6eaf66a74c319268b6799'],
+    }),
+    ('gamlss.tr', '5.1-0', {
+        'checksums': ['f9e1c4935d8876bfc80dddc0a9bc2c82b4deeda9482df208297a84a638a4a9df'],
+    }),
+    ('hwriter', '1.3.2', {
+        'checksums': ['6b3531d2e7a239be9d6e3a1aa3256b2745eb68aa0bdffd2076d36552d0d7322b'],
+    }),
+    ('KernSmooth', '2.23-17', {
+        'checksums': ['2b3d73fe15db46dbc2f6e3b043baadb7633c46bfa4a66d9eea5aed633058e685'],
+    }),
+    ('xts', '0.12-0', {
+        'checksums': ['df11e6dad7cf0a266702988fa6127aaf72437da743ca40e9abcd9e6b3d628c60'],
+    }),
+    ('curl', '4.3', {
+        'checksums': ['7406d485bb50a6190e3ed201e3489063fd249b8b3b1b4f049167ac405a352edb'],
+    }),
+    ('TTR', '0.23-6', {
+        'checksums': ['afc10a89d3a18f121ddf0f7256408eeb05cc64e18ee94e654bfa803e5415e265'],
+    }),
+    ('quantmod', '0.4.17', {
+        'checksums': ['0aff56f276f8e347c56356060f7320913f0e417f1c5411c49f0865ca732044eb'],
+    }),
+    ('mvtnorm', '1.1-0', {
+        'checksums': ['8112e12eb11f5db2ff145893f48426520e669be99b87889457dd2c4f2636cb5d'],
+    }),
+    ('pcaPP', '1.9-73', {
+        'checksums': ['ca4566b0babfbe83ef9418283b08a12b3420dc362f93c6562f265df7926b53fc'],
+    }),
+    ('SQUAREM', '2020.2', {
+        'checksums': ['6e3373bb5190ade222d676dae9f1aad32feddd50e97499fab7d66fd94752dac8'],
+    }),
+    ('lava', '1.6.7', {
+        'checksums': ['63f7a8454cfc70739877812481a987deea33d4235f05234d0dd0ed8bd6eadf39'],
+    }),
+    ('prodlim', '2019.11.13', {
+        'checksums': ['6809924f503a14681de84730489cdaf9240d7951c64f5b98ca37dc1ce7809b0f'],
+    }),
+    ('pscl', '1.5.5', {
+        'checksums': ['054c9b88a991abdec3338688f58e81b6ba55f91edb988621864b24fd152fee6f'],
+    }),
+    ('memoise', '1.1.0', {
+        'checksums': ['b276f9452a26aeb79e12dd7227fcc8712832781a42f92d70e86040da0573980c'],
+    }),
+    ('bit64', '0.9-7', {
+        'checksums': ['7b9aaa7f971198728c3629f9ba1a1b24d53db5c7e459498b0fdf86bbd3dff61f'],
+    }),
+    ('blob', '1.2.1', {
+        'checksums': ['ef54bc7a9646c1b73f4d2f60c869b4f1940bc3505874175114297ad7772d8bea'],
+    }),
+    ('RSQLite', '2.2.0', {
+        'checksums': ['000d126fda069cd97d1a9f9df16cd267ca76d8b96c290ca9b8c32d9e91d468d4'],
+    }),
+    ('data.table', '1.12.8', {
+        'checksums': ['d3a75f3a355ff144cc20a476041617e21fcf2a9f79265fd9bbd4693f3671f9dc'],
+    }),
+    ('BatchJobs', '1.8', {
+        'checksums': ['35cc2dae31994b1df982d11939509ce965e12578418c4fbb8cd7a422afd6e4ff'],
+    }),
+    ('sandwich', '2.5-1', {
+        'checksums': ['dbef6f4d12b83e166f9a2508b7c732b04493641685d6758d29f3609e564166d6'],
+    }),
+    ('sfsmisc', '1.1-6', {
+        'checksums': ['57b22cdd713e71e9235ff1ace8cdf73564bfdcee4b018f3d7cde6fb35493db11'],
+    }),
+    ('spatial', '7.3-12', {
+        'checksums': ['7639039ee7407bd088e1b253376b2cb4fcdf4cc9124d6b48e4119d5cda872d63'],
+    }),
+    ('VGAM', '1.1-3', {
+        'checksums': ['0c9ff51b9ee76d8b182a19b61f278970ad6d421c0206bfef40b7413b7acb94c3'],
+    }),
+    ('waveslim', '1.8.2', {
+        'checksums': ['133c4f7a027282742fe99b583ca65f178fc7a3df2ce75cb4d60650f0a1dd7145'],
+    }),
+    ('xtable', '1.8-4', {
+        'checksums': ['5abec0e8c27865ef0880f1d19c9f9ca7cc0fd24eadaa72bcd270c3fb4075fd1c'],
+    }),
+    ('profileModel', '0.6.0', {
+        'checksums': ['a829ceec29c817d6d15947b818e28f9cf5a188a231b9b5d0a75018388887087b'],
+    }),
+    ('brglm', '0.6.2', {
+        'checksums': ['c2af432a43ccf37e9de50317f770b9703a4c80b4ef79ec40aa8e7ec3987e3631'],
+    }),
+    ('deSolve', '1.28', {
+        'checksums': ['4c55ef4cae841df91034382d277b483985af120240f87af587ff82177fdb5a49'],
+    }),
+    ('tseriesChaos', '0.1-13.1', {
+        'checksums': ['23cb5fea56409a305e02a523ff8b7642ec383942d415c9cffdc92208dacfd961'],
+    }),
+    ('tseries', '0.10-47', {
+        'checksums': ['202377df56806fe611c2e12c4d9732c71b71220726e2defa7e568d2b5b62fb7b'],
+    }),
+    ('fastICA', '1.2-2', {
+        'checksums': ['32223593374102bf54c8fdca7b57231e4f4d0dd0be02d9f3500ad41b1996f1fe'],
+    }),
+    ('R.methodsS3', '1.8.0', {
+        'checksums': ['e005f5ee21bfb6fbbf415de957a9ca0ed6e9f2800b95d98d76a9acb3c14185a5'],
+    }),
+    ('R.oo', '1.23.0', {
+        'checksums': ['f5124ce3dbb0a62e8ef1bfce2de2d1dc2f776e8c48fd8cac358f7f5feb592ea1'],
+    }),
+    ('jsonlite', '1.6.1', {
+        'checksums': ['74921dd249857a23afabc1ad1485a63a48828e57f240f0619deb04c60f883377'],
+    }),
+    ('sys', '3.3', {
+        'checksums': ['a6217c2a7240ed68614006f392c6d062247dab8b9b0d498f95e947110df19b93'],
+    }),
+    ('askpass', '1.1', {
+        'checksums': ['db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f'],
+    }),
+    ('openssl', '1.4.1', {
+        'checksums': ['f7fbecc75254fc43297a95a4338c674ab9ba2ec056b59e027d16d23122161fc6'],
+    }),
+    ('httr', '1.4.1', {
+        'checksums': ['675c7e07bbe82c48284ee1ab929bb14a6e653abae2860d854dc41a3c028de156'],
+    }),
+    ('cgdsr', '1.3.0', {
+        'checksums': ['4aa2a3564cee2449c3ff39ab2ad631deb165d4c78b8107e0ff77a9095340cc1f'],
+    }),
+    ('R.utils', '2.9.2', {
+        'checksums': ['ac6b3b8e814fbb855c38fbdb89a4f0cf0ed65ce7fa308445bd74107fbc0d32cf'],
+    }),
+    ('R.matlab', '3.6.2', {
+        'checksums': ['1ba338f470a24b7f6ef68cadbd04eb468ead4a689f263d2642408ad591b786bb'],
+    }),
+    ('gridExtra', '2.3', {
+        'checksums': ['81b60ce6f237ec308555471ae0119158b115463df696d2eca9b177ded8988e3b'],
+    }),
+    ('gbm', '2.1.5', {
+        'checksums': ['06fbde10639dfa886554379b40a7402d1f1236a9152eca517e97738895a4466f'],
+    }),
+    ('Formula', '1.2-3', {
+        'checksums': ['1411349b20bd09611a9fd0ee6d15f780c758ad2b0e490e908facb49433823872'],
+    }),
+    ('acepack', '1.4.1', {
+        'checksums': ['82750507926f02a696f6cc03693e8d4a5ee7e92500c8c15a16a9c12addcd28b9'],
+    }),
+    ('proto', '1.0.0', {
+        'checksums': ['9294d9a3b2b680bb6fac17000bfc97453d77c87ef68cfd609b4c4eb6d11d04d1'],
+    }),
+    ('chron', '2.3-55', {
+        'checksums': ['0f731fb9e79818cd95b5fa843cc233616a5f8e5dd39a1ae8048f5a1fd8d1eb25'],
+    }),
+    ('viridis', '0.5.1', {
+        'checksums': ['ddf267515838c6eb092938133035cee62ab6a78760413bfc28b8256165701918'],
+    }),
+    ('yaml', '2.2.1', {
+        'checksums': ['1115b7bc2a397fa724956eec916df5160c600c99a3be186d21558dd38d782783'],
+    }),
+    ('htmltools', '0.4.0', {
+        'checksums': ['5b18552e1183b1b90b5cca8e7f95b57e8124c9d517b22aa64783b829513b811a'],
+    }),
+    ('htmlwidgets', '1.5.1', {
+        'checksums': ['d42e59144552d9b4131f11ddd6169dfb9bd538c7996669a09acbdb400d18d781'],
+    }),
+    ('knitr', '1.28', {
+        'checksums': ['05ee01da31d715bf24793efb3e4ef3bb3101ef1e1ab2d760c645fc5b9d40232a'],
+    }),
+    ('htmlTable', '1.13.3', {
+        'checksums': ['d459c43675f6ee0a1ae8232ea8819b2a842e795a833b28127081fa344d09393d'],
+    }),
+    ('Hmisc', '4.4-0', {
+        'checksums': ['f16ecf4c5ee2202d51f426282a54f8000ffa8b9747c3e910205f34f878556ec7'],
+    }),
+    ('fastcluster', '1.1.25', {
+        'checksums': ['f3661def975802f3dd3cec5b2a1379f3707eacff945cf448e33aec0da1ed4205'],
+    }),
+    ('registry', '0.5-1', {
+        'checksums': ['dfea36edb0a703ec57e111016789b47a1ba21d9c8ff30672555c81327a3372cc'],
+    }),
+    ('bibtex', '0.4.2.2', {
+        'checksums': ['073887668f16568d9fafaa5862ed7d3d866f40cbc1a028371b038cdbbe9c1090'],
+    }),
+    ('pkgmaker', '0.31.1', {
+        'checksums': ['1702b8e2fa9751fa67c3031468273eaa28358d27ba2df98a4fbb08df80500f64'],
+    }),
+    ('rngtools', '1.5', {
+        'checksums': ['8274873b73f7acbe0ce007e62893bf4d369d2aab8768754a60da46b3f078f575'],
+    }),
+    ('doParallel', '1.0.15', {
+        'checksums': ['71ad7ea69616468996aefdd8d02a4a234759a21ddde9ed1657e3c537145cd86e'],
+    }),
+    ('gridBase', '0.4-7', {
+        'checksums': ['be8718d24cd10f6e323dce91b15fc40ed88bccaa26acf3192d5e38fe33e15f26'],
+    }),
+    ('irlba', '2.3.3', {
+        'checksums': ['6ee233697bcd579813bd0af5e1f4e6dd1eea971e8919c748408130d970fef5c0'],
+    }),
+    ('igraph', '1.2.5', {
+        'checksums': ['0cdd675b2e6a31f54bd5ba4530a26f00996eb310ceea93263c6fc4ba9e0fdf88'],
+    }),
+    ('GeneNet', '1.2.14', {
+        'checksums': ['76f4d1a5954b3060d95017b0108b2f0936fdf38c15e5c1fd051cfc5c82ccb031'],
+    }),
+    ('ape', '5.3', {
+        'checksums': ['08b0df134c523feb00a86896d1aa2a43f0f0dab20a53bc6b5d6268d867988b23'],
+    }),
+    ('RJSONIO', '1.3-1.4', {
+        'checksums': ['54142c931e15eca278a02dad5734026bb49d960471eb085008af825352953190'],
+    }),
+    ('caTools', '1.18.0', {
+        'checksums': ['0343698a41e8b516769af0433ac2e52a7df9be709b7f78c1825e88e1a37f3378'],
+    }),
+    ('gplots', '3.0.3', {
+        'checksums': ['d776d3ee9e284085f6ec1b7717afcd5c4addad60d2f1f4f220cda788c8ac4643'],
+    }),
+    ('ROCR', '1.0-7', {
+        'checksums': ['e7ef710f847e441a48b20fdc781dbc1377f5a060a5ee635234053f7a2a435ec9'],
+    }),
+    ('later', '1.0.0', {
+        'checksums': ['277b9848ef2e5e1ac7257aefeb58f6b20cca17693460e7c4eee0477de456b287'],
+    }),
+    ('promises', '1.1.0', {
+        'checksums': ['c8ea0f3e3256cf3010439b3a6111966db419c3dcff9a561e73caf8bd65f38006'],
+    }),
+    ('httpuv', '1.5.2', {
+        'checksums': ['93b32be974e0f531a3cb343685165c0caadf30cfea07683f8d69302a34045d8d'],
+    }),
+    ('rjson', '0.2.20', {
+        'checksums': ['3a287c1e5ee7c333ed8385913c0a307daf99335fbdf803e9dcca6e3d5adb3f6c'],
+    }),
+    ('sourcetools', '0.1.7', {
+        'checksums': ['47984406efb3b3face133979ccbae9fefb7360b9a6ca1a1c11473681418ed2ca'],
+    }),
+    ('fastmap', '1.0.1', {
+        'checksums': ['4778b05dfebd356f8df980dfeff3b973a72bca14898f870e5c40c1d84db9faec'],
+    }),
+    ('shiny', '1.4.0.2', {
+        'checksums': ['dca6ac83d03266a3d930273e7b821afa4a574f02ef89f963672972c2a2f5e064'],
+    }),
+    ('seqinr', '3.6-1', {
+        'checksums': ['c44fc8922ef410da3c3b5ca117cdbec55ccb546c9e6d96c01ede44398dfa6048'],
+    }),
+    ('LearnBayes', '2.15.1', {
+        'checksums': ['9b110858456523ca0b2a63f22013c4e1fbda6674b9d84dc1f4de8bffc5260532'],
+    }),
+    ('deldir', '0.1-25', {
+        'checksums': ['f0a2f2eb511e8e99423a8f9b6ebc9073967d79629db4c86824eb0696d1a6af4d'],
+    }),
+    ('gmodels', '2.18.1', {
+        'checksums': ['626140a34eb8c53dd0a06511a76c71bc61c48777fa76fcc5e6934c9c276a1369'],
+    }),
+    ('expm', '0.999-4', {
+        'checksums': ['58d06427a08c9442462b00a5531e2575800be13ed450c5a1546261251e536096'],
+    }),
+    ('raster', '3.1-5', {
+        'checksums': ['db6622d55bb9e5c4a8d8e59887a802b35fc07dcee946800453bc5e1901c01a04'],
+    }),
+    ('spData', '0.3.5', {
+        'checksums': ['901e840ba42e945d51ea0dfe815fece44dd92a8e74a2356345ccbb2577908926'],
+    }),
+    ('units', '0.6-6', {
+        'checksums': ['d0b6c76afb9aa5d7a0eaae05e6fc1bd2bb9d62d4c43e986b4782d6e5c2efa687'],
+    }),
+    ('classInt', '0.4-3', {
+        'checksums': ['9ede7a2a7a6b6c114919a3315a884fb592e33b037a50a4fe45cbd4fe2fc434ac'],
+    }),
+    ('vegan', '2.5-6', {
+        'checksums': ['b3c00aceb3db38101960515658e2b9ec1552439c3ed4e26e72989f18eccbc03c'],
+    }),
+    ('progress', '1.2.2', {
+        'checksums': ['b4a4d8ed55db99394b036a29a0fb20b5dd2a91c211a1d651c52a1023cc58ff35'],
+    }),
+    ('rncl', '0.8.4', {
+        'checksums': ['6b19d0dd9bb08ecf99766be5ad684bcd1894d1cd9291230bdd709dbd3396496b'],
+    }),
+    ('XML', '3.99-0.3', {
+        'checksums': ['81b7a76308f3b7378dff525eff0180bba73b31117483a26cc3aa172d15c7f753'],
+    }),
+    ('tinytex', '0.22', {
+        'checksums': ['6bbcbc907cad14bc0a583670bad1d9648d1f1cedd364354042aee83bb6302e69'],
+    }),
+    ('rmarkdown', '2.1', {
+        'checksums': ['ef450e21206c454aa78eeca9023bbc78d1b2939e0b4bed9fdec9f2bf81ee455d'],
+    }),
+    ('reshape', '0.8.8', {
+        'checksums': ['4d5597fde8511e8fe4e4d1fd7adfc7ab37ff41ac68c76a746f7487d7b106d168'],
+    }),
+    ('xml2', '1.3.2', {
+        'checksums': ['df22f9e7e3189d8c9b8804eaf0105324fdac983cffe743552f6d76613600a4cf'],
+    }),
+    ('triebeard', '0.3.0', {
+        'checksums': ['bf1dd6209cea1aab24e21a85375ca473ad11c2eff400d65c6202c0fb4ef91ec3'],
+    }),
+    ('urltools', '1.7.3', {
+        'checksums': ['6020355c1b16a9e3956674e5dea9ac5c035c8eb3eb6bbdd841a2b5528cafa313'],
+    }),
+    ('httpcode', '0.3.0', {
+        'checksums': ['593a030a4f94c3df8c15576837c17344701bac023ae108783d0f06c476062f76'],
+    }),
+    ('crul', '0.9.0', {
+        'checksums': ['a7b42c69ca31648a419b93c618d32d0613f3ea053e45d584e84ef422ccf531c0'],
+    }),
+    ('bold', '0.9.0', {
+        'checksums': ['45e844a83f4545a2f84887e36db83113da824a8673fa039f067a3bd7ee82ed5e'],
+    }),
+    ('rredlist', '0.6.0', {
+        'checksums': ['bed33680f4e36f0f357d5785b631ae91232c8593a7517f1c0a4199d4e1e28332'],
+    }),
+    ('rentrez', '1.2.2', {
+        'checksums': ['e5cb4265fd06d2ed0e11da3667ba79f7f2c8816005ba72cf5f53b8cf02dc193e'],
+    }),
+    ('rotl', '3.0.10', {
+        'checksums': ['38b4679fe2d5407f7d0799d624ae8ea5d73ec0b6531b0e3d48246dea5575073a'],
+    }),
+    ('solrium', '1.1.4', {
+        'checksums': ['5fccdb455746493c56e4df91f01ea9e89cdf0d67cfa5f958ca246b9207d20375'],
+    }),
+    ('ritis', '0.9.0', {
+        'checksums': ['4abbe6c860fd3e465116573c9b2f119dbbd0046646844551523188ded63f0f6c'],
+    }),
+    ('worrms', '0.4.0', {
+        'checksums': ['8480c56a4412662a383103fef68e73fcf14e94fcb878c25df8c6d5a8c0146059'],
+    }),
+    ('natserv', '0.4.0', {
+        'checksums': ['ba7ef96290b4713e46197cc872d5400710086dc3668717d67995ee3de3d19c87'],
+    }),
+    ('WikipediR', '1.5.0', {
+        'checksums': ['f8d0e6f04fb65f7ad9c1c068852a6a8b699ffe8d39edf1f3fa07d32d087e8ff0'],
+    }),
+    ('WikidataR', '1.4.0', {
+        'checksums': ['64b1d53d7023249b73a77a7146adc3a8957b7bf3d808ebd6734795e9f58f4b2a'],
+    }),
+    ('wikitaxa', '0.3.0', {
+        'checksums': ['10dbabac6c56c1d0f33a66ff9b4f48b0bcb470711808a86863b48dc1140ec86c'],
+    }),
+    ('phangorn', '2.5.5', {
+        'checksums': ['c58dc1ace26cb4358619a15da3ea4765dbdde1557acccc5103c85589a7571346'],
+    }),
+    ('taxize', '0.9.95', {
+        'checksums': ['8a27d81678e60f67082d9b0b3cd104fe531ea2be2d9073a20cab016259228834'],
+    }),
+    ('uuid', '0.1-4', {
+        'checksums': ['98e0249dda17434bfa209c2058e9911e576963d4599be9f7ea946e664f8ca93e'],
+    }),
+    ('RNeXML', '2.4.3', {
+        'checksums': ['bf801c93da4d5a59c92d17c15c04072e1ba4f72c50461a1e1eda2d446109a925'],
+    }),
+    ('phylobase', '0.8.10', {
+        'checksums': ['5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b'],
+    }),
+    ('magick', '2.3', {
+        'checksums': ['a8412512a132a74ed88fbe64a0a415e9ba5437a1b8a664990638e10915274ba0'],
+    }),
+    ('animation', '2.6', {
+        'checksums': ['90293638920ac436e7e4de76ebfd92e1643ccdb0259b62128f16dd0b13245b0a'],
+    }),
+    ('bigmemory.sri', '0.1.3', {
+        'checksums': ['55403252d8bae9627476d1f553236ea5dc7aa6e54da6980526a6cdc66924e155'],
+    }),
+    ('bigmemory', '4.5.36', {
+        'checksums': ['18c67fbe6344b2f8223456c4f19ceebcf6c1166255eab81311001fd67a45ef0e'],
+    }),
+    ('calibrate', '1.7.5', {
+        'checksums': ['33f4f6874f0a979af3ce592ed1105e829d3df1fbf05c6e0cd3829a13b21d82e8'],
+    }),
+    ('clusterGeneration', '1.3.4', {
+        'checksums': ['7c591ad95a8a9d7fb0e4d5d80dfd78f7d6a63cf7d11eb53dd3c98fdfb5b868aa'],
+    }),
+    ('dismo', '1.1-4', {
+        'checksums': ['f2110f716cd9e4cca5fd2b22130c6954658aaf61361d2fe688ba22bbfdfa97c8'],
+    }),
+    ('extrafontdb', '1.0', {
+        'checksums': ['faa1bafee5d4fbc24d03ed237f29f1179964ebac6e3a46ac25b0eceda020b684'],
+    }),
+    ('Rttf2pt1', '1.3.8', {
+        'checksums': ['560646d4488bf70edd8f785a99e8208e7fd004014e29cb52b050fb55e7176e2c'],
+    }),
+    ('extrafont', '0.17', {
+        'checksums': ['2f6d7d79a890424b56ddbdced361f8b9ddede5edd33e090b816b88a99315332d'],
+    }),
+    ('fields', '10.3', {
+        'checksums': ['490bff3637edd6d42b578776648be031486fc38cdbe668fd46b07c2add3e698a'],
+    }),
+    ('shapefiles', '0.7', {
+        'checksums': ['eeb18ea4165119519a978d4a2ba1ecbb47649deb96a7f617f5b3100d63b3f021'],
+    }),
+    ('fossil', '0.4.0', {
+        'checksums': ['37c082fa15ebae89db99d6071b2bb2cad6a97a0405e9b4ef77f62a8f6ad274c1'],
+    }),
+    ('geiger', '2.0.6.4', {
+        'checksums': ['8ddc12779b86b14b173a5c72a28c4e22784e4a7a48e6c806e48a097c2928af64'],
+    }),
+    ('shape', '1.4.4', {
+        'checksums': ['f4cb1b7d7c84cf08d2fa97f712ea7eb53ed5fa16e5c7293b820bceabea984d41'],
+    }),
+    ('glmnet', '3.0-2', {
+        'checksums': ['f48956a75af7e2be045198873fc9eb637a549af1db83dcf76cac3774bfb3762c'],
+    }),
+    ('crosstalk', '1.1.0.1', {
+        'checksums': ['36a70b10bc11826e314c05f9579fd791b9ac3b3a2cfed4d4ca74ce1ad991300e'],
+    }),
+    ('miniUI', '0.1.1.1', {
+        'checksums': ['452b41133289f630d8026507263744e385908ca025e9a7976925c1539816b0c0'],
+    }),
+    ('webshot', '0.5.2', {
+        'checksums': ['f183dc970157075b51ac543550a7a48fa3428b9c6838abb72fe987c21982043f'],
+    }),
+    ('manipulateWidget', '0.10.1', {
+        'checksums': ['9d621192121f6b516bc7f1a18305995bfb7838c6683ac701422afc03a50e27ee'],
+    }),
+    ('rgl', '0.100.54', {
+        'checksums': ['17b7f8f135f526aba17dc516952f692daa7a7d6e787157fdff8dd5175113fad5'],
+    }),
+    ('Rtsne', '0.15', {
+        'checksums': ['56376e4f0a382fad3d3d40e2cb0562224be5265b827622bcd235e8fc63df276c'],
+    }),
+    ('labdsv', '2.0-1', {
+        'checksums': ['5a4d55e9be18222dc47e725008b450996448ab117d83e7caaa191c0f13fd3925'],
+    }),
+    ('stabs', '0.6-3', {
+        'checksums': ['e961ae21d45babc1162b6eeda874c4e3677fc286fd06f5427f071ad7a5064a9f'],
+    }),
+    ('modeltools', '0.2-23', {
+        'checksums': ['6b3e8d5af1a039db5c178498dbf354ed1c5627a8cea9229726644053443210ef'],
+    }),
+    ('strucchange', '1.5-2', {
+        'checksums': ['7d247c5ae6f5a63c80e478799d009c57fb8803943aa4286d05f71235cc1002f8'],
+    }),
+    ('TH.data', '1.0-10', {
+        'checksums': ['618a1c67a30536d54b1e48ba3af46a6edcd6c2abef17935b5d4ba526a43aff55'],
+    }),
+    ('multcomp', '1.4-13', {
+        'checksums': ['d30f0357b8307e7feb574d6d307e0ebc6bdca66b2cc172980fa5309685885fdb'],
+    }),
+    ('libcoin', '1.0-5', {
+        'checksums': ['0a744164e00557d2f3e888d14cfd6108d17c14e983db620f74c7a5475be8a9b2'],
+    }),
+    ('matrixStats', '0.56.0', {
+        'checksums': ['39e34a3dc480b9df05bb1a555eaef1dc1971a53f3ea6e01eb3a68bd1d3760f27'],
+    }),
+    ('coin', '1.3-1', {
+        'checksums': ['5de2519a6e2b059bba9d74c58085cccaff1aaaa0454586ed164a108ebd1b2062'],
+    }),
+    ('party', '1.3-4', {
+        'checksums': ['7689bd4fe7968ef1981147c5ad11237d630eddd5789a05c090339898eff71e7f'],
+    }),
+    ('inum', '1.0-1', {
+        'checksums': ['3c2f94c13c03607e05817e4859595592068b55e810fed94e29bc181ad248a099'],
+    }),
+    ('partykit', '1.2-7', {
+        'checksums': ['5c993c729c2975095eb27e6363eeb1c8a8ba22035f226f598af9d43a4ca312c1'],
+    }),
+    ('mboost', '2.9-2', {
+        'checksums': ['34c6ba2051adc5ff429a594f7144bffcb7b129d5ff7c28a14cf21f38dbd554aa'],
+    }),
+    ('msm', '1.6.8', {
+        'checksums': ['f3f18a9ea622a6d56f0f6d675b4890081d6def8b91a694c6764dac0d1cf262b4'],
+    }),
+    ('nor1mix', '1.3-0', {
+        'checksums': ['9ce4ee92f889a4a4041b5ea1ff09396780785a9f12ac46f40647f74a37e327a0'],
+    }),
+    ('np', '0.60-10', {
+        'checksums': ['a27b4bbca8b83a289c98920c1c8f5e9979ba9772086893252a4297dd2698081a'],
+    }),
+    ('polynom', '1.4-0', {
+        'checksums': ['c5b788b26f7118a18d5d8e7ba93a0abf3efa6603fa48603c70ed63c038d3d4dd'],
+    }),
+    ('polspline', '1.1.17', {
+        'checksums': ['d67b269d01105d4a6ea774737e921e66e065a859d1931ae38a70f88b6fb7ee30'],
+    }),
+    ('rms', '5.1-4', {
+        'checksums': ['38f5844c4944a95b2adebea6bb1d163111270b8662399ea0349c45c0758076a6'],
+    }),
+    ('RWekajars', '3.9.3-2', {
+        'checksums': ['16e6b019aab1646f89c5203f0d6fc1cb800129e5169b15aaef30fd6236f5da1a'],
+    }),
+    ('RWeka', '0.4-42', {
+        'checksums': ['84e53028875d4603bd073c77709941d358152b8274977d45934fa89121b02104'],
+    }),
+    ('slam', '0.1-47', {
+        'checksums': ['696356a68aa92059fa794444faa4c1775193c723a262a5f75de3c3c3047fcf89'],
+    }),
+    ('tm', '0.7-7', {
+        'checksums': ['d0dbe41ff8414bdc2eee06a1b0d6db4567850135c4c6ff0a9c9ca8239166d15f'],
+    }),
+    ('TraMineR', '2.2-0', {
+        'checksums': ['eeaeaf5151ec7a6b7179fd04dbdfb16479b4893e1547ccc29be74e444691d0f6'],
+    }),
+    ('chemometrics', '1.4.2', {
+        'checksums': ['b705832fa167dc24b52b642f571ed1efd24c5f53ba60d02c7797986481b6186a'],
+    }),
+    ('FNN', '1.1.3', {
+        'checksums': ['de763a25c9cfbd19d144586b9ed158135ec49cf7b812938954be54eb2dc59432'],
+    }),
+    ('ipred', '0.9-9', {
+        'checksums': ['0da87a70730d5a60b97e46b2421088765e7d6a7cc2695757eba0f9d31d86416f'],
+    }),
+    ('miscTools', '0.6-26', {
+        'checksums': ['be3c5a63ca12ce7ce4d43767a1815cd3dcf32664728ade251cfb03ea6f77fc9a'],
+    }),
+    ('maxLik', '1.3-8', {
+        'checksums': ['33404d10bfe7746cab8227b880b50808a63909036daf6fedbac94c75ac68dfe5'],
+    }),
+    ('gbRd', '0.4-11', {
+        'checksums': ['0251f6dd6ca987a74acc4765838b858f1edb08b71dbad9e563669b58783ea91b'],
+    }),
+    ('Rdpack', '0.11-1', {
+        'checksums': ['58020f150be07209fd1fdd7f5e58c138863e850f4e4c1512d69250286e091e20'],
+    }),
+    ('mlogit', '1.0-3.1', {
+        'checksums': ['e4b601d8f0d0bcd1c63468ab88aa305355d2811c60b038a5ba4b99245cf59b0c'],
+    }),
+    ('getopt', '1.20.3', {
+        'checksums': ['531f5fdfdcd6b96a73df2b39928418de342160ac1b0043861e9ea844f9fbf57f'],
+    }),
+    ('gsalib', '2.1', {
+        'checksums': ['e1b23b986c18b89a94c58d9db45e552d1bce484300461803740dacdf7c937fcc'],
+    }),
+    ('optparse', '1.6.6', {
+        'checksums': ['51779d497146e9354b1153713d939e81551e08948c2b00e4b117b1377c0b60d0'],
+    }),
+    ('labelled', '2.3.0', {
+        'checksums': ['9f16f168436039d7881d535a9f15fb0dce752fd3a28bce89192718cdbd043a50'],
+    }),
+    ('questionr', '0.7.0', {
+        'checksums': ['c4566880a1ca8f01faad396e20d907d913f4a252acaf83a0cb508a3738874cb3'],
+    }),
+    ('klaR', '0.6-15', {
+        'checksums': ['5bfe5bc643f8a64b222317732c26e9f93be297cdc318a869f15cc9ab0d9e0fae'],
+    }),
+    ('neuRosim', '0.2-12', {
+        'checksums': ['f4f718c7bea2f4b61a914023015f4c71312f8a180124dcbc2327b71b7be256c3'],
+    }),
+    ('locfit', '1.5-9.4', {
+        'checksums': ['d9d3665c5f3d49f698fb4675daf40a0550601e86db3dc00f296413ceb1099ced'],
+    }),
+    ('GGally', '1.5.0', {
+        'checksums': ['069261cd469e2d2c8c794b2956e69c356b471eccfc45a60c55e55dfd83185a20'],
+    }),
+    ('beanplot', '1.2', {
+        'checksums': ['49da299139a47171c5b4ccdea79ffbbc152894e05d552e676f135147c0c9b372'],
+    }),
+    ('clValid', '0.6-6', {
+        'checksums': ['c13ef1b6258e34ba53615b78f39dbe4d8ba47b976b3c24a3eedaecf5ffba19ed'],
+    }),
+    ('DiscriMiner', '0.1-29', {
+        'checksums': ['5aab7671086ef9940e030324651976456f0e84dab35edb7048693ade885228c6'],
+    }),
+    ('ellipse', '0.4.1', {
+        'checksums': ['1a9a9c52195b26c2b4d51ad159ab98aff7aa8ca25fdc6b2198818d1a0adb023d'],
+    }),
+    ('leaps', '3.1', {
+        'checksums': ['3d7c3a102ce68433ecf167ece96a7ebb4207729e4defd0ac8fc00e7003f5c3b6'],
+    }),
+    ('pbkrtest', '0.4-8.6', {
+        'checksums': ['5f863b167968d97ea504f3fffabc1b4c922e244d4e194e013229960d3384bd68'],
+    }),
+    ('carData', '3.0-3', {
+        'checksums': ['986b84bdd289159eead8b050ea82600a4f77bf0bbe0293a7c7b25d607ff7e231'],
+    }),
+    ('maptools', '0.9-9', {
+        'checksums': ['69ba3b2cd50260f78fb6c25cf0557b4a0d31498d6a4f4ff00e466334fba4946c'],
+    }),
+    ('zip', '2.0.4', {
+        'checksums': ['ab5dd0c63bd30b478d0f878735e7baf36e2e76e4d12d2b4b8eddd03b665502b0'],
+    }),
+    ('openxlsx', '4.1.4', {
+        'checksums': ['07a38b21f6ce6e92d58d7a51ea9f4b5fd77db49b019a18ba9ecea69878a39dd7'],
+    }),
+    ('rematch', '1.0.1', {
+        'checksums': ['a409dec978cd02914cdddfedc974d9b45bd2975a124d8870d52cfd7d37d47578'],
+    }),
+    ('cellranger', '1.1.0', {
+        'checksums': ['5d38f288c752bbb9cea6ff830b8388bdd65a8571fd82d8d96064586bd588cf99'],
+    }),
+    ('readxl', '1.3.1', {
+        'checksums': ['24b441713e2f46a3e7c6813230ad6ea4d4ddf7e0816ad76614f33094fbaaaa96'],
+    }),
+    ('rio', '0.5.16', {
+        'checksums': ['d3eb8d5a11e0a3d26169bb9d08f834a51a6516a349854250629072d59c29d465'],
+    }),
+    ('car', '3.0-7', {
+        'checksums': ['ad98a2f0f47105285d6677b398fc1b169cc20458e799e05dae47c84068984e87'],
+    }),
+    ('flashClust', '1.01-2', {
+        'checksums': ['48a7849bb86530465ff3fbfac1c273f0df4b846e67d5eee87187d250c8bf9450'],
+    }),
+    ('ggrepel', '0.8.2', {
+        'checksums': ['0d01bfc005e9af5e6b57e2a677781424387f38ec208818295eb87dd5867551e1'],
+    }),
+    ('FactoMineR', '2.3', {
+        'checksums': ['c64f30a3839a375395a3b7d8a4131e1df74aea31da6348d7a506eaa9da70af51'],
+    }),
+    ('flexclust', '1.4-0', {
+        'checksums': ['82fe445075a795c724644864c7ee803c5dd332a89ea9e6ccf7cd1ae2d1ecfc74'],
+    }),
+    ('flexmix', '2.3-15', {
+        'checksums': ['ba444c0bfe33ab87d440ab590c06b03605710acd75811c1622253171bb123f43'],
+    }),
+    ('prabclus', '2.3-2', {
+        'checksums': ['f421bcbcb557281e0de4a06b15f9a496adb5c640e883c0f7bb12051efc69e441'],
+    }),
+    ('diptest', '0.75-7', {
+        'checksums': ['462900100ca598ef21dbe566bf1ab2ce7c49cdeab6b7a600a50489b05f61b61b'],
+    }),
+    ('trimcluster', '0.1-5', {
+        'checksums': ['9239f20e4a06ac2fa89e5d5d89b23a45c8c534a7264d89bede8a35d43dda518b'],
+    }),
+    ('fpc', '2.2-5', {
+        'checksums': ['45855d446593b93ea0873d701a6c7c6b47335a67ab34066e4cc8ae1d3f24a080'],
+    }),
+    ('BiasedUrn', '1.07', {
+        'checksums': ['2377c2e59d68e758a566452d7e07e88663ae61a182b9ee455d8b4269dda3228e'],
+    }),
+    ('TeachingDemos', '2.12', {
+        'checksums': ['3e75405ce1affa406d6df85e06f96381412bc7a2810b25d8c81bfe64c4698644'],
+    }),
+    ('kohonen', '3.0.10', {
+        'checksums': ['996956ea46a827c9f214e4f940a19304a0ff35bda707d4d7312f80d3479067b2'],
+    }),
+    ('base64', '2.0', {
+        'checksums': ['8e259c2b12446197d1152b83a81bab84ccb5a5b77021a9b5645dd4c63c804bd1'],
+    }),
+    ('doRNG', '1.8.2', {
+        'checksums': ['33e9d45b91b0fde2e35e911b9758d0c376049121a98a1e4c73a1edfcff11cec9'],
+    }),
+    ('nleqslv', '3.3.2', {
+        'checksums': ['f54956cf67f9970bb3c6803684c84a27ac78165055745e444efc45cfecb63fed'],
+    }),
+    ('Deriv', '4.0', {
+        'checksums': ['76788764177b24dc27f4e27046fa563ad97014e0d53e14a880ebff2f9177b40e'],
+    }),
+    ('RGCCA', '2.1.2', {
+        'checksums': ['20f341fca8f616c556699790814debdf2ac7aa4dd9ace2071100c66af1549d7d'],
+    }),
+    ('pheatmap', '1.0.12', {
+        'checksums': ['579d96ee0417203b85417780eca921969cda3acc210c859bf9dfeff11539b0c1'],
+    }),
+    ('pvclust', '2.2-0', {
+        'checksums': ['7892853bacd413b5a921006429641ad308a344ca171b3081c15e4c522a8b0201'],
+    }),
+    ('RCircos', '1.2.1', {
+        'checksums': ['3b9489ab05ea83ead99ca6e4a1e6830467a2064779834aff1317b42bd41bb8fd'],
+    }),
+    ('lambda.r', '1.2.4', {
+        'checksums': ['d252fee39065326c6d9f45ad798076522cec05e73b8905c1b30f95a61f7801d6'],
+    }),
+    ('futile.options', '1.0.1', {
+        'checksums': ['7a9cc974e09598077b242a1069f7fbf4fa7f85ffe25067f6c4c32314ef532570'],
+    }),
+    ('futile.logger', '1.4.3', {
+        'checksums': ['5e8b32d65f77a86d17d90fd8690fc085aa0612df8018e4d6d6c1a60fa65776e4'],
+    }),
+    ('VennDiagram', '1.6.20', {
+        'checksums': ['e51cb3fff23c6ec8191966490bf875a7415f8725d4054bae881a25febb9281c5'],
+    }),
+    ('xlsxjars', '0.6.1', {
+        'checksums': ['37c1517f95f8bca6e3514429394d2457b9e62383305eba288416fb53ab2e6ae6'],
+    }),
+    ('xlsx', '0.6.3', {
+        'checksums': ['e5a9b8ead1b4502e7a1143a1d842d4994dd92f333a95a00d81a27ef62c5e035e'],
+    }),
+    ('uroot', '2.1-0', {
+        'checksums': ['3c02a9dadd22aa67a59e99007ab6f576dc428859fa746d3a8f3ffa2bb43d18c2'],
+    }),
+    ('forecast', '8.12', {
+        'checksums': ['eb607fd584d66abf39b14c00d50111304e892a6e0778c9a8354195c6c92f92f9'],
+    }),
+    ('fma', '2.4', {
+        'checksums': ['69a94c3bd464176a80232d49fcd04d478d4dd59f9bf128d6a9f46e49612d27f4'],
+    }),
+    ('expsmooth', '2.3', {
+        'checksums': ['ac7da36347f983d6ec71715daefd2797fe2fc505c019f4965cff9f77ce79982a'],
+    }),
+    ('fpp', '0.5', {
+        'checksums': ['9c87dd8591b8a87327cae7a03fd362a5492495a96609e5845ccbeefb96e916cb'],
+    }),
+    ('tensor', '1.5', {
+        'checksums': ['e1dec23e3913a82e2c79e76313911db9050fb82711a0da227f94fc6df2d3aea6'],
+    }),
+    ('polyclip', '1.10-0', {
+        'checksums': ['74dabc0dfe5a527114f0bb8f3d22f5d1ae694e6ea9345912909bae885525d34b'],
+    }),
+    ('goftest', '1.2-2', {
+        'checksums': ['e497992666b002b6c6bed73bf05047ad7aa69eb58898da0ad8f1f5b2219e7647'],
+    }),
+    ('spatstat.utils', '1.17-0', {
+        'checksums': ['39cd683ed7f41d8adc9e28af073d91b244aa1cf5ad966dfbb396ee3ee79f0922'],
+    }),
+    ('spatstat.data', '1.4-3', {
+        'checksums': ['8955b6ac40cc7d0d89e02334bb46f4c223ff0755e5818f132fee753e77918ea2'],
+    }),
+    ('spatstat', '1.63-3', {
+        'checksums': ['07b4a1a1b37c91944f31779dd789598f4a5ad047a3de3e9ec2ca99b9e9565528'],
+    }),
+    ('pracma', '2.2.9', {
+        'checksums': ['0cea0ff5e88643df121e07b9aebfe57084c61e11801680039752f371fe87bf1e'],
+    }),
+    ('RCurl', '1.98-1.2', {
+        'checksums': ['5d74a0cdc3c5684b0348b959f67039e3c2a5da2bbb6176f6800a94124895a7a8'],
+    }),
+    ('bio3d', '2.4-1', {
+        'checksums': ['679fbd87fe9fb82a65427d281d3b68906509e411270cd87d2deb95d404333c1f'],
+    }),
+    ('AUC', '0.3.0', {
+        'checksums': ['e705f2c63d336249d19187f3401120d738d42d323fce905f3e157c2c56643766'],
+    }),
+    ('interpretR', '0.2.4', {
+        'checksums': ['4c08a6dffd6fd5764f27812f3a085c53e6a21d59ae82d903c9c0da93fd1dd059'],
+    }),
+    ('cvAUC', '1.1.0', {
+        'checksums': ['c4d8ed53b93869650aa2f666cf6d1076980cbfea7fa41f0b8227595be849738d'],
+    }),
+    ('SuperLearner', '2.0-26', {
+        'checksums': ['4462922c8daae2773f79ecdea7ca3cc4ea51bfd101c5e6c1ad22f9190e746081'],
+    }),
+    ('mediation', '4.5.0', {
+        'checksums': ['210206618787c395a67689be268283df044deec7199d9860ed95218ef1e60845'],
+    }),
+    ('ModelMetrics', '1.2.2.2', {
+        'checksums': ['5e06f1926aebca5654e1329c66ef19b04058376b2277ebb16e3bf8c208d73457'],
+    }),
+    ('CVST', '0.2-2', {
+        'checksums': ['854b8c983427ecf9f2f7798c4fd1c1d06762b5b0bcb1045502baadece6f78316'],
+    }),
+    ('DRR', '0.0.4', {
+        'checksums': ['93e365a4907e301ae01f7d943e6bdcda71ef23c51a4759ba3c94bcf842d4e0f8'],
+    }),
+    ('dimRed', '0.2.3', {
+        'checksums': ['e6e56e3f6999ebdc326e64ead5269f3aaf61dd587beefafb7536ac3890370d84'],
+    }),
+    ('lubridate', '1.7.8', {
+        'checksums': ['3da19922fc373e113ecc58c4984955ba26da703edc9c991bd444b7077d4b553c'],
+    }),
+    ('ddalpha', '1.3.11', {
+        'checksums': ['c30b4a3a9549cb4dc0a8e51e06f5b6e4c457c5326acc8f4680968c920f59b6e9'],
+    }),
+    ('gower', '0.2.1', {
+        'checksums': ['af3fbe91cf818c0841b2c0ec4ddf282c182a588031228c8d88f7291b2cdff100'],
+    }),
+    ('RcppRoll', '0.3.0', {
+        'checksums': ['cbff2096443a8a38a6f1dabf8c90b9e14a43d2196b412b5bfe5390393f743f6b'],
+    }),
+    ('recipes', '0.1.10', {
+        'checksums': ['4f345e31568e41b3efb6c6333e8ccab032e293dbd0256299d922fe6c9532c985'],
+    }),
+    ('caret', '6.0-86', {
+        'checksums': ['da4a1c7c3fbf645c5b02871e563a77404622b83623f0d1c5dc1425de7aa4ce37'],
+    }),
+    ('adabag', '4.2', {
+        'checksums': ['47019eb8cefc8372996fbb2642f64d4a91d7cedc192690a8d8be6e7e03cd3c81'],
+    }),
+    ('parallelMap', '1.5.0', {
+        'checksums': ['4afa727f4786279718cc799e45e91859a46f5cbc1ee652b0f47ae3b9f9d45e4e'],
+    }),
+    ('ParamHelpers', '1.14', {
+        'checksums': ['b17652d0a69de3241a69f20be4ad1bfe02c413328a17f3c1ac7b73886a6ba2eb'],
+    }),
+    ('ggvis', '0.4.5', {
+        'checksums': ['82373c3565c299279f6849f798cc39127b2b3f7ff2deee1946528474824b3124'],
+    }),
+    ('mlr', '2.17.1', {
+        'checksums': ['0b71b9d00c627647cf5fc1f456d4445f025c90be2f974e05ccdb84e25ba1923b'],
+    }),
+    ('unbalanced', '2.0', {
+        'checksums': ['9be32b1ce9d972f1abfff2fbe18f5bb5ba9c3f4fb1282063dc410b82ad4d1ea2'],
+    }),
+    ('RSNNS', '0.4-12', {
+        'checksums': ['b18dfeda71573bc92c6888af72da407651bff7571967965fd3008f0d331743b9'],
+    }),
+    ('abc.data', '1.0', {
+        'checksums': ['b242f43c3d05de2e8962d25181c6b1bb6ca1852d4838868ae6241ca890b161af'],
+    }),
+    ('abc', '2.1', {
+        'checksums': ['0bd2dcd4ee1915448d325fb5e66bee68e0497cbd91ef67a11b400b2fbe52ff59'],
+    }),
+    ('lhs', '1.0.2', {
+        'checksums': ['e2945192740fb088b210786006b311d3d4e7da967733a1998380d597320c1158'],
+    }),
+    ('tensorA', '0.36.1', {
+        'checksums': ['c7ffe12b99867675b5e9c9f31798f9521f14305c9d9f9485b171bcbd8697d09c'],
+    }),
+    ('EasyABC', '1.5', {
+        'checksums': ['1dd7b1383a7c891cafb34d9cec65d92f1511a336cff1b219e63c0aa791371b9f'],
+    }),
+    ('whisker', '0.4', {
+        'checksums': ['7a86595be4f1029ec5d7152472d11b16175737e2777134e296ae97341bf8fba8'],
+    }),
+    ('commonmark', '1.7', {
+        'checksums': ['d14a767a3ea9778d6165f44f980dd257423ca6043926e3cd8f664f7171f89108'],
+    }),
+    ('roxygen2', '7.1.0', {
+        'checksums': ['7e9b36f6e7c01a5c8c4747340b3d0c064ce2e48c93fcfbfe45139854fae74103'],
+    }),
+    ('git2r', '0.26.1', {
+        'checksums': ['13d609286a0af4ef75ba76f2c2f856593603b8014e311b88896243a50b417435'],
+    }),
+    ('rversions', '2.0.1', {
+        'checksums': ['51ec1f64e7d628e88d716a020d5d521eba71d472e3c9ae7b694428ef6dd786c5'],
+    }),
+    ('xopen', '1.0.0', {
+        'checksums': ['e207603844d69c226142be95281ba2f4a056b9d8cbfae7791ba60535637b3bef'],
+    }),
+    ('sessioninfo', '1.1.1', {
+        'checksums': ['166b04678448a7decd50f24afabe5e2ad613e3c55b180ef6e8dd7a870a1dae48'],
+    }),
+    ('rcmdcheck', '1.3.3', {
+        'checksums': ['1ab679eb1976d74cd3be5bcad0af7fcc673dbdfd4406bbce32591c8fddfb93b4'],
+    }),
+    ('remotes', '2.1.1', {
+        'checksums': ['4e590746fce618094089372b185e1ea234b3337b23c44c44118e942d0fb5118b'],
+    }),
+    ('fs', '1.4.1', {
+        'checksums': ['ae9103dff26ca56a34901408bd650a2949f491b2a0886c686a51a179d38b7a4e'],
+    }),
+    ('clisymbols', '1.2.0', {
+        'checksums': ['0649f2ce39541820daee3ed408d765eddf83db5db639b493561f4e5fbf88efe0'],
+    }),
+    ('ini', '0.3.1', {
+        'checksums': ['7b191a54019c8c52d6c2211c14878c95564154ec4865f57007953742868cd813'],
+    }),
+    ('gh', '1.1.0', {
+        'checksums': ['de9faf383c3fe5e87a75391d82cf71b1331b3c80cd00c4203146a303825d89ad'],
+    }),
+    ('rematch2', '2.1.1', {
+        'checksums': ['d0423a418e8b46ac3a4819af7a7d19c39ca7c8c862c1e9a1c1294aa19152518f'],
+    }),
+    ('usethis', '1.6.1', {
+        'checksums': ['60339059a97ed07dea7f8908b828b5bb42e0fd0b471165c061bc9660b0d59d6f'],
+    }),
+    ('DT', '0.13', {
+        'checksums': ['79a073fe96980ce150d790ab76133c9e80bd463270c34d149c03934a622d63b5'],
+    }),
+    ('rex', '1.2.0', {
+        'checksums': ['06b491f1469078862e40543fd74e1d38b2e0fb61fdf01c8083add4b11ac2eb54'],
+    }),
+    ('covr', '3.5.0', {
+        'checksums': ['cb919912018130164a40803ac573a37dde2186678c058c03c6303d79604979df'],
+    }),
+    ('devtools', '2.3.0', {
+        'checksums': ['4fc375c171335c67bd71df4e0b1b3dff2ae3aa17b3e0566b790ba0808b39dcd0'],
+    }),
+    ('Rook', '1.1-1', {
+        'checksums': ['00f4ecfa4c5c57018acbb749080c07154549a6ecaa8d4130dd9de79427504903'],
+    }),
+    ('Cairo', '1.5-12', {
+        'checksums': ['4e08eafb8c44045d16674ee5ae659f182ffe13ca86076fb077832947aa4a620b'],
+    }),
+    ('RMTstat', '0.3', {
+        'checksums': ['81eb4c5434d04cb66c749a434c33ceb1c07d92ba79765d4e9233c13a092ec2da'],
+    }),
+    ('Lmoments', '1.3-1', {
+        'checksums': ['7c9d489a08f93fa5877e2f233ab9732e0d1b2761596b3f6ac91f2295e41a865d'],
+    }),
+    ('distillery', '1.0-7', {
+        'checksums': ['898833ceceed5291b4a02bf62c6fa5b78dd7837f9cc5a42b87a08672c7dae270'],
+    }),
+    ('extRemes', '2.0-11', {
+        'checksums': ['75fbdeef677c81cf5661b8df3df4090c55f53e9bb96bb138b498eb0fbbf5af42'],
+    }),
+    ('tkrplot', '0.0-24', {
+        'checksums': ['2873630a37d7ae1e09a5803d9a89ca0494edd83526c7b1860d9246543722f311'],
+    }),
+    ('misc3d', '0.8-4', {
+        'checksums': ['75de3d2237f67f9e58a36e80a6bbf7e796d43eb46789f2dd1311270007bf5f62'],
+    }),
+    ('multicool', '0.1-11', {
+        'checksums': ['1c907e64af2ac39facdf431a5691e69649f64af1f50e198ae39da5bf30026476'],
+    }),
+    ('plot3D', '1.3', {
+        'checksums': ['b9e4ec2789e34ad249318900e186868650e1a33466b385cb492a45466db3dfc9'],
+    }),
+    ('plot3Drgl', '1.0.1', {
+        'checksums': ['466d428d25c066c9c96d892f24da930513d42b1bdf76d3b53628c3ba13c3e48a'],
+    }),
+    ('OceanView', '1.0.5', {
+        'checksums': ['c16e1bed97f4ede46dc017fdd6bd7575d925b57bd2601317bd3ad2357609f885'],
+    }),
+    ('ks', '1.11.7', {
+        'checksums': ['6a6d9c2366e85a4c6af39b798f3798d20a42615ddfcebcedf6cf56087cdfd2b8'],
+    }),
+    ('logcondens', '2.1.5', {
+        'checksums': ['72e61abc1f3eb28830266fbe5b0da0999eb5520586000a3024e7c26be93c02eb'],
+    }),
+    ('Iso', '0.0-18', {
+        'checksums': ['2d7e8c4452653364ee086d95cea620c50378e30acfcff129b7261e1756a99504'],
+    }),
+    ('penalized', '0.9-51', {
+        'checksums': ['eaa80dca99981fb9eb576261f30046cfe492d014cc2bf286c447b03a92e299fd'],
+    }),
+    ('clusterRepro', '0.9', {
+        'checksums': ['940d84529ff429b315cf4ad25700f93e1156ccacee7b6c38e4bdfbe2d4c6f868'],
+    }),
+    ('randomForestSRC', '2.9.3', {
+        'checksums': ['bc47bef9e5afade8fdf56e08ae0ad320e424dfa5b11a32cd2d166c9988dc2e16'],
+    }),
+    ('sm', '2.2-5.6', {
+        'checksums': ['b890cd7ebe8ed711ab4a3792c204c4ecbe9e6ca1fd5bbc3925eba5833a839c30'],
+    }),
+    ('pbivnorm', '0.6.0', {
+        'checksums': ['07c37d507cb8f8d2d9ae51a9a6d44dfbebd8a53e93c242c4378eaddfb1cc5f16'],
+    }),
+    ('lavaan', '0.6-5', {
+        'checksums': ['feeb6e1b419aa1d54fd5af1d67260b5d13ff251c19de8136a4df565305d47b12'],
+    }),
+    ('matrixcalc', '1.0-3', {
+        'checksums': ['17e6caeeecd596b850a6caaa257984398de9ec5d2b41ce83c428f112614b9cb0'],
+    }),
+    ('arm', '1.11-1', {
+        'checksums': ['7b82dbe8c5141546d11b0af656a6addda4c07f06fc165d01c7c1e39540b55444'],
+    }),
+    ('mi', '1.0', {
+        'checksums': ['34f44353101e8c3cb6bf59c5f4ff5b2391d884dcbb9d23066a11ee756b9987c0'],
+    }),
+    ('visNetwork', '2.0.9', {
+        'checksums': ['5e0b3dc3a91e66e0a359433f03cc856d04b981b0f9ad228d8fa9c96b7fcaa420'],
+    }),
+    ('servr', '0.16', {
+        'checksums': ['cc950bedbd52f2d93c54157dc5b261113be6baee2d9e90e99a8de048c09fda80'],
+    }),
+    ('rgexf', '0.16.0', {
+        'checksums': ['2a671df9ac70cfefd4092754317cb28e32a33df345b80e1975bf838e838245ee'],
+    }),
+    ('influenceR', '0.1.0', {
+        'checksums': ['4fc9324179bd8896875fc0e879a8a96b9ef2a6cf42a296c3b7b4d9098519e98a'],
+    }),
+    ('downloader', '0.4', {
+        'checksums': ['1890e75b028775154023f2135cafb3e3eed0fe908138ab4f7eff1fc1b47dafab'],
+    }),
+    ('DiagrammeR', '1.0.5', {
+        'checksums': ['0877af707925b03c58a7e00cd84eb4e9906b551a61d86130ef4165477654e334'],
+    }),
+    ('sem', '3.1-9', {
+        'checksums': ['4a33780202506543da85877cd2813250114420d6ec5e75457bc67477cd332cb9'],
+    }),
+    ('network', '1.16.0', {
+        'checksums': ['a24f51457439c7186ffa1fe53719742c501929ac1a354e458754a83f280fce36'],
+    }),
+    ('statnet.common', '4.3.0', {
+        'checksums': ['834a3359eac967df0420eee416ae4983e3b502a3de56bb24f494a7ca4104e959'],
+    }),
+    ('sna', '2.5', {
+        'checksums': ['13b508cacb0bf1e79b55d5c8f7e9ada3b173468d4d6d5f1dc606990ac03071c8'],
+    }),
+    ('glasso', '1.11', {
+        'checksums': ['4c37844b26f55985184a734e16b8fe880b192e3d2763614b0ab3f99b4530e30a'],
+    }),
+    ('huge', '1.3.4.1', {
+        'checksums': ['78ef9eae464d52c5247998b9514a81b178419b857b1a6c00d885e3ae6c03a886'],
+    }),
+    ('d3Network', '0.5.2.1', {
+        'checksums': ['5c798dc0c87c6d574abb7c1f1903346e6b0fec8adfd1df7aef5e4f9e7e3a09be'],
+    }),
+    ('BDgraph', '2.62', {
+        'checksums': ['7e5de4406f4a7873bf948852291d2851a2ab312288467687dd5c0392b2723bac'],
+    }),
+    ('pbapply', '1.4-2', {
+        'checksums': ['ac19f209f36f4fa3d0f5b14b6cc5b0c279996fb9d3e86c848c0f6d03c025b3f6'],
+    }),
+    ('graphlayouts', '0.7.0', {
+        'checksums': ['20464b60376d9f8d522eec6a7495054b1715e4919f10e9a049868d8866398c9e'],
+    }),
+    ('tweenr', '1.0.1', {
+        'checksums': ['efd68162cd6d5a4f6d833dbf785a2bbce1cb7b9f90ba3fb060931a4bd705096b'],
+    }),
+    ('ggforce', '0.3.1', {
+        'checksums': ['a05271da9b226c12ae5fe6bc6eddb9ad7bfe19e1737e2bfcd6d7a89631332211'],
+    }),
+    ('tidygraph', '1.1.2', {
+        'checksums': ['5642001d4cccb122d66481b7c61a06c724c02007cbd356ee61cb29726a56fafe'],
+    }),
+    ('ggraph', '2.0.2', {
+        'checksums': ['80caab7a38f2548a9fcd1ff3655a6bdbcb776fe662e3d93c17798bf2a04078b2'],
+    }),
+    ('qgraph', '1.6.5', {
+        'checksums': ['2295ccca41f84cba34ad0e6c1b31af8bde79bda7373754c255e0ee9e63d29e5f'],
+    }),
+    ('HWxtest', '1.1.9', {
+        'checksums': ['a37309bed4a99212ca104561239d834088217e6c5e5e136ff022544c706f25e6'],
+    }),
+    ('diveRsity', '1.9.90', {
+        'checksums': ['b8f49cdbfbd82805206ad293fcb2dad65b962fb5523059a3e3aecaedf5c0ee86'],
+    }),
+    ('doSNOW', '1.0.18', {
+        'checksums': ['70e7bd82186e477e3d1610676d4c6a75258ac08f104ecf0dcc971550ca174766'],
+    }),
+    ('geepack', '1.3-1', {
+        'checksums': ['823153ca28e1a8bd8a45de778279480c1c35e063d62c8955b6cea1602f28d6df'],
+    }),
+    ('biom', '0.3.12', {
+        'checksums': ['4ad17f7811c7346dc4923bd6596a007c177eebb1944a9f46e5674afcc5fdd5a1'],
+    }),
+    ('pim', '2.0.2', {
+        'checksums': ['1195dbdbd67348dfef4b6fc34fcec643da685ebe58d34bbe049ab121aca9944f'],
+    }),
+    ('minpack.lm', '1.2-1', {
+        'checksums': ['14cb7dba3ef2b46da0479b46d46c76198e129a31f6157cd8b37f178adb15d5a3'],
+    }),
+    ('rootSolve', '1.8.2.1', {
+        'checksums': ['488451182663197ae4513e46e24f72cadb2297d35a58a3007a0dbf1bf0833031'],
+    }),
+    ('diagram', '1.6.4', {
+        'checksums': ['7c2bc5d5d634c3b8ca7fea79fb463e412962d88f47a77a74c811cc62f375ce38'],
+    }),
+    ('FME', '1.3.6.1', {
+        'checksums': ['ae0c69f75614e2ef9f2096c205c7f8eb90485c6311213762c1416ece4036be18'],
+    }),
+    ('bmp', '0.3', {
+        'checksums': ['bdf790249b932e80bc3a188a288fef079d218856cf64ffb88428d915423ea649'],
+    }),
+    ('tiff', '0.1-5', {
+        'checksums': ['9514e6a9926fcddc29ce1dd12b1072ad8265900373f738de687ef4a1f9124e2b'],
+    }),
+    ('readbitmap', '0.1.5', {
+        'checksums': ['737d7d585eb33de2c200da64d16781e3c9522400fe2af352e1460c6a402a0291'],
+    }),
+    ('imager', '0.42.1', {
+        'checksums': ['cb9c0f8dbf1383951bf96f5aeded1e774c26135a0117279de7e728cb6822eab4'],
+    }),
+    ('signal', '0.7-6', {
+        'checksums': ['6b60277b07cf0167f8272059b128cc82f27a9bab1fd33d74c2a9e1f2abca5def'],
+    }),
+    ('tuneR', '1.3.3', {
+        'checksums': ['bdc3c2017b162d2ba0a249e80361a4f47202e763c21aecfc57380a482a3a692b'],
+    }),
+    ('pastecs', '1.3.21', {
+        'checksums': ['8c1ef2affe88627f0b23295aa5edb758b8fd6089ef09f60f37c46445128b8d7c'],
+    }),
+    ('audio', '0.1-7', {
+        'checksums': ['52e0397a45325aa9586ec68b94ab9e505bdefaf2a588d634fcb57a6a11659c74'],
+    }),
+    ('fftw', '1.0-6', {
+        'checksums': ['397ef5ec354b919884f74fba4202bfc13ad11a70b16285c41677aad1d3b170ce'],
+    }),
+    ('seewave', '2.1.5', {
+        'checksums': ['718b1fb1c289f92be50de099da36d20380d113cb1577569333fca6195f71e8e1'],
+    }),
+    ('gsw', '1.0-5', {
+        'checksums': ['eb468918ee91e429b47fbcac43269eca627b7f64b61520de5bbe8fa223e96453'],
+    }),
+    ('oce', '1.2-0', {
+        'checksums': ['99072f2b20ad471b5a2afeb4d0690cad57cc770d60769a5cb20d001511439aa2'],
+    }),
+    ('ineq', '0.2-13', {
+        'checksums': ['e0876403f59a3dfc2ea7ffc0d965416e1ecfdecf154e5856e5f54800b3efda25'],
+    }),
+    ('soundecology', '1.3.3', {
+        'checksums': ['276164d5eb92c78726c647be16232d2443acbf7061371ddde2672b4fdb7a069a'],
+    }),
+    ('memuse', '4.1-0', {
+        'checksums': ['58d6d1ca5d6bd481f4ed299eff6a9d5660eb0f8db1abe54c49e144093cba72ad'],
+    }),
+    ('pinfsc50', '1.1.0', {
+        'checksums': ['b6b9b6365a3f408533264d7ec820494f57eccaf362553e8478a46a8e5b474aba'],
+    }),
+    ('vcfR', '1.10.0', {
+        'checksums': ['9e19c8b23c981b61320aa275821f9accae8738bca775175b1201fcc30479ae8d'],
+    }),
+    ('glmmML', '1.1.0', {
+        'checksums': ['34f088a73ccf6092908502a5bdaaf8209e9134d38abbbd7c4dd559832e653188'],
+    }),
+    ('cowplot', '1.0.0', {
+        'checksums': ['70f9a7c46d10f409d1599f1afc9fd3c947051cf2b430f01d903c64ef1e6c98a5'],
+    }),
+    ('tsne', '0.1-3', {
+        'checksums': ['66fdf5d73e69594af529a9c4f261d972872b9b7bffd19f85c1adcd66afd80c69'],
+    }),
+    ('sn', '1.6-1', {
+        'checksums': ['80071625131256147f94a1a35b6f0cabd6de8b225f16860e398b6a8ca688d96a'],
+    }),
+    ('tclust', '1.4-1', {
+        'checksums': ['4b0be612c8ecd7b4eb19a44ab6ac8f5d40515600ae1144c55989b6b41335ad9e'],
+    }),
+    ('ranger', '0.12.1', {
+        'checksums': ['fc308e0ac06718272799928e1a19612de16b05bde481d8f38e11a101df5425ef'],
+    }),
+    ('hexbin', '1.28.1', {
+        'checksums': ['42d092c709ebc84b18df8121beb6bd1d8a3f6f357afd5c3490757c4c4795c6e7'],
+    }),
+    ('pryr', '0.1.4', {
+        'checksums': ['d39834316504c49ecd4936cbbcaf3ee3dae6ded287af42475bf38c9e682f721b'],
+    }),
+    ('moments', '0.14', {
+        'checksums': ['2a3b81e60dafdd092d2bdd3513d7038855ca7d113dc71df1229f7518382a3e39'],
+    }),
+    ('laeken', '0.5.1', {
+        'checksums': ['1aa94a1768969eb999f7a41212af2d8b2943b43a68a92f99c9f77929e19439a5'],
+    }),
+    ('VIM', '5.1.1', {
+        'checksums': ['ca1430103b6bd658e318bbbbd9c25763d11d0b3f52706b1a7ea7fafd408e4270'],
+    }),
+    ('proxy', '0.4-24', {
+        'checksums': ['8cff9bf036475941a7c44ba9bb5e2f6d4777d49ab3daaeb52d23f4b2af6d9c7c'],
+    }),
+    ('smoother', '1.1', {
+        'checksums': ['91b55b82f805cfa1deedacc0a4e844a2132aa59df593f3b05676954cf70a195b'],
+    }),
+    ('dynamicTreeCut', '1.63-1', {
+        'checksums': ['831307f64eddd68dcf01bbe2963be99e5cde65a636a13ce9de229777285e4db9'],
+    }),
+    ('beeswarm', '0.2.3', {
+        'checksums': ['0115425e210dced05da8e162c8455526a47314f72e441ad2a33dcab3f94ac843'],
+    }),
+    ('vipor', '0.4.5', {
+        'checksums': ['7d19251ac37639d6a0fed2d30f1af4e578785677df5e53dcdb2a22771a604f84'],
+    }),
+    ('ggbeeswarm', '0.6.0', {
+        'checksums': ['bbac8552f67ff1945180fbcda83f7f1c47908f27ba4e84921a39c45d6e123333'],
+    }),
+    ('shinydashboard', '0.7.1', {
+        'checksums': ['51a49945c6b8a684111a2ba4b2a5964e3a50610286ce0378e37ae02316620a4e'],
+    }),
+    ('rrcov', '1.5-2', {
+        'checksums': ['a7641b93ca8efd91b0957adecd76f96c53d3804ace7b1cbe84872f655199c254'],
+    }),
+    ('WriteXLS', '5.0.0', {
+        'checksums': ['5aeb631c7f4dee300a19ded493110d7241e1b79744be05beca770a01ffc1d7bf'],
+    }),
+    ('bst', '0.3-17', {
+        'checksums': ['1ed161d33a7304abfa2fb23daeda2f870ad8483b7fa9b91e6fc8ced21fd8f074'],
+    }),
+    ('mpath', '0.3-25', {
+        'checksums': ['3332f74255520152cb2149bdff24ad650a036161a7629f686c8fee804c0336e8'],
+    }),
+    ('timereg', '1.9.4', {
+        'checksums': ['fbf4eeee1648fceb98773156764c32b3a9481f0fb9f8dc3a9d0331a9051cb54b'],
+    }),
+    ('peperr', '1.1-7.1', {
+        'checksums': ['5d4eff0f0b61c0b3e479c2ac2978c8e32373b9630565bf58fee48ead6166698a'],
+    }),
+    ('heatmap3', '1.1.7', {
+        'checksums': ['bab39bdcc462ed9e15dda54d58385b7c8d2bca800cd0e6ee2fce12475661b2bd'],
+    }),
+    ('GlobalOptions', '0.1.1', {
+        'checksums': ['4249ef78424128050af83bbb8e71b4af82f8490c87f6a9d927782b80be830975'],
+    }),
+    ('circlize', '0.4.8', {
+        'checksums': ['22d6908b9d2e496105d9b70b73a74152398e5e9e38c60042ffe041df2b4c794b'],
+    }),
+    ('GetoptLong', '0.1.8', {
+        'checksums': ['6c0edb7233b79fb7f4789a825e8e7d7eee50b5e85b7fd5b7d74b9440fd9e1dd1'],
+    }),
+    ('dendextend', '1.13.4', {
+        'checksums': ['c456b4f43075e8de0f29a6c997e1c0d4788487ab7b947a4b1bf05db2b4f94bde'],
+    }),
+    ('RInside', '0.2.16', {
+        'checksums': ['7ae4ade128ea05f37068d59e610822ff0b277f9d39d8900f7eb31759ad5a2a0e'],
+    }),
+    ('limSolve', '1.5.6', {
+        'checksums': ['b97ea9930383634c8112cdbc42f71c4e93fe0e7bfaa8f401921835cb44cb49a0'],
+    }),
+    ('dbplyr', '1.4.3', {
+        'checksums': ['69ac7b4022c691e3822fc73fabb3bf073405d5a433c52f5f0f98cf90a1d228ea'],
+    }),
+    ('modelr', '0.1.6', {
+        'checksums': ['d7e5f3ddf0b3e6520ca06229471f5bcd9e371e2fecd53c03202b474c2a1955f4'],
+    }),
+    ('debugme', '1.1.0', {
+        'checksums': ['4dae0e2450d6689a6eab560e36f8a7c63853abbab64994028220b8fd4b793ab1'],
+    }),
+    ('reprex', '0.3.0', {
+        'checksums': ['203c2ae6343f6ff887e7a5a3f5d20bae465f6e8d9745c982479f5385f4effb6c'],
+    }),
+    ('selectr', '0.4-2', {
+        'checksums': ['5588aed05f3f5ee63c0d29953ef53da5dac7afccfdd04b7b22ef24e1e3b0c127'],
+    }),
+    ('rvest', '0.3.5', {
+        'checksums': ['0e7f41be4ce6501d7af50575a2532d4bfd9153ca57900ee62dbc27c0a22c0a64'],
+    }),
+    ('tidyverse', '1.3.0', {
+        'checksums': ['6d8acb81e994f9bef5e4dcf908bcea3786d108adcf982628235b6c8c80f6fe09'],
+    }),
+    ('R.cache', '0.14.0', {
+        'checksums': ['18af4e372440b9f28b4b71346c8ed9de220232f9903730ccee2bfb3c612c16d9'],
+    }),
+    ('R.rsp', '0.43.2', {
+        'checksums': ['f291a78ce9955943e0ebad1291f729dc4d9a8091f04b83fc4b1526bcb6c71f89'],
+    }),
+    ('listenv', '0.8.0', {
+        'checksums': ['fd2aaf3ff2d8d546ce33d1cb38e68401613975117c1f9eb98a7b41facf5c485f'],
+    }),
+    ('globals', '0.12.5', {
+        'checksums': ['1519a7668b4b549c081f60a5f6b71d8d1dc8833f618125f6c0e4caf8b48a48c1'],
+    }),
+    ('future', '1.17.0', {
+        'checksums': ['2fa3b88439eaa33901669295186d04eb54f033257015683cf8a2e3c7f83b9e34'],
+    }),
+    ('gdistance', '1.3-1', {
+        'checksums': ['0e9a7ab4fb75c2990ff7b85aa0661aaadbf4804f2a92fac9dd6d3c75db346813'],
+    }),
+    ('vioplot', '0.3.4', {
+        'checksums': ['4914262f2e7913ffa5741e74b20157f4a904ba31e648fa5df9ff6a1aaba753bb'],
+    }),
+    ('emulator', '1.2-20', {
+        'checksums': ['7cabf2cf74d879ad9dbaed8fdee54a5c94a8658a0645c021d160b2ef712ce287'],
+    }),
+    ('gmm', '1.6-4', {
+        'checksums': ['03ad5ff37d174e9cef13fa41d866412c57b7cbd9155312831e16a1fcda70bc95'],
+    }),
+    ('tmvtnorm', '1.4-10', {
+        'checksums': ['1a9f35e9b4899672e9c0b263affdc322ecb52ec198b2bb015af9d022faad73f0'],
+    }),
+    ('IDPmisc', '1.1.20', {
+        'checksums': ['bcb9cd7b8097e5089d1936286ef310ac2030ea7791350df706382ba470afc67f'],
+    }),
+    ('gap', '1.2.2', {
+        'checksums': ['9c66a52b371b282b20295676bdd86a11d59a6fb2acddb19170376e1a5c65b834'],
+    }),
+    ('qrnn', '2.0.5', {
+        'checksums': ['3bd83ee8bd83941f9defdab1b5573d0ceca02bf06759a67665e5b9358ff92f52'],
+    }),
+    ('TMB', '1.7.16', {
+        'checksums': ['84740a2eaecd2ece7049c82d661fe1688008fdece96d90399d31a5d8a0089e52'],
+    }),
+    ('glmmTMB', '1.0.1', {
+        'checksums': ['b582ac41fb4390146f1446c6629fec40c6c9c125f99083602f091dc60f0ebd69'],
+    }),
+    ('gmp', '0.5-13.6', {
+        'checksums': ['39a61618cc9eeabd00665cc5f24721e75f0dec8268059a0d18c907c2adf85a48'],
+    }),
+    ('ROI', '0.3-3', {
+        'checksums': ['2977604b9def46a3638d56a7efa890f2e84fa320bece693d03c196771466a919'],
+    }),
+    ('Rglpk', '0.6-4', {
+        'checksums': ['a28dbc3130b9618d6ed2ef718d2c55df8ed8c44a47161097c53fe15fa3bfbfa6'],
+    }),
+    ('ROI.plugin.glpk', '0.3-0', {
+        'checksums': ['160ac14d20c217ff186912c06d53bccf2a33664977ae4c6fc5113a7ac8533ba8'],
+    }),
+    ('spaMM', '3.2.0', {
+        'checksums': ['40d54ad52c4839f33baa1e488e1e76042e57083ff7780f9c5640c49340ff2999'],
+    }),
+    ('qgam', '1.3.2', {
+        'checksums': ['273a40d0bfdc340c049bcb85aea83acd887868d8a69c0062b8399e0b24137a52'],
+    }),
+    ('DHARMa', '0.3.0', {
+        'checksums': ['1c7ac2f1897ca62e0ebb7367c4b31866515c8503d0fa645fa5e8ac5172310298'],
+    }),
+    ('mvnfast', '0.2.5', {
+        'checksums': ['21b9fa72d1e3843513908aaacd6c4d876cc7a9339782d0151b24910df2975f88'],
+    }),
+    ('bridgesampling', '1.0-0', {
+        'checksums': ['9e182e15ba4e0a0fefd6edc58f1939fd971dd5c53c444ca9c1820bb2c1de90ab'],
+    }),
+    ('BayesianTools', '0.1.7', {
+        'checksums': ['af49389bdeb794da3c39e1d63f59e6219438ecb8613c5ef523b00c6fed5a600c'],
+    }),
+    ('gomms', '1.0', {
+        'checksums': ['52828c6fe9b78d66bde5474e45ff153efdb153f2bd9f0e52a20a668e842f2dc5'],
+    }),
+    ('feather', '0.3.5', {
+        'checksums': ['50ff06d5e24d38b5d5d62f84582861bd353b82363e37623f95529b520504adbf'],
+    }),
+    ('dummies', '1.5.6', {
+        'checksums': ['7551bc2df0830b98c53582cac32145d5ce21f5a61d97e2bb69fd848e3323c805'],
+    }),
+    ('SimSeq', '1.4.0', {
+        'checksums': ['5ab9d4fe2cb1b7634432ff125a9e04d2f574fed06246a93859f8004e10790f19'],
+    }),
+    ('uniqueAtomMat', '0.1-3-2', {
+        'checksums': ['f7024e73274e1e76a870ce5e26bd58f76e8f6df0aa9775c631b861d83f4f53d7'],
+    }),
+    ('PoissonSeq', '1.1.2', {
+        'checksums': ['6f3dc30ad22e33e4fcfa37b3427c093d591c02f1b89a014d85e63203f6031dc2'],
+    }),
+    ('aod', '1.3.1', {
+        'checksums': ['052d8802500fcfdb3b37a8e3e6f3fbd5c3a54e48c3f68122402d2ea3a15403bc'],
+    }),
+    ('cghFLasso', '0.2-1', {
+        'checksums': ['6e697959b35a3ceb2baa1542ef81f0335006a5a9c937f0173c6483979cb4302c'],
+    }),
+    ('svd', '0.5', {
+        'checksums': ['d042d448671355d0664d37fd64dc90932eb780e6494c479d4431d1faae2071a1'],
+    }),
+    ('Rssa', '1.0.2', {
+        'checksums': ['3991ad98e0170034b06ae8bb5b6337cbc418dc31ce465d02030cedf4ab69ff91'],
+    }),
+    ('JBTools', '0.7.2.9', {
+        'checksums': ['b33cfa17339df7113176ad1832cbb0533acf5d25c36b95e888f561d586c5d62f'],
+    }),
+    ('RUnit', '0.4.32', {
+        'checksums': ['23a393059989000734898685d0d5509ece219879713eb09083f7707f167f81f1'],
+    }),
+    ('DistributionUtils', '0.6-0', {
+        'checksums': ['7443d6cd154760d55b6954142908eae30385672c4f3f838dd49876ec2f297823'],
+    }),
+    ('gapfill', '0.9.6', {
+        'checksums': ['850d0be9d05e3f3620f0f5143496321f1004ed966299bffd6a67a9abd8d9040d'],
+    }),
+    ('gee', '4.13-20', {
+        'checksums': ['53014cee059bd87dc22f9679dfbf18fe6813b9ab41dfe90361921159edfbf798'],
+    }),
+    ('Matching', '4.9-7', {
+        'checksums': ['1956ecb5ebe1c88e2112cd277ae5c2ab4b8d8f60743e6e856a2c2e40aa05fc6d'],
+    }),
+    ('MatchIt', '3.0.2', {
+        'checksums': ['782b159a2b5172e758e3993177930d604140ae668fd8a7c98c30792df80de9de'],
+    }),
+    ('RItools', '0.1-17', {
+        'checksums': ['75654780e9ca39cb3c43acfaca74080ad74de50f92c5e36e95694aafdfdc0cea'],
+    }),
+    ('optmatch', '0.9-13', {
+        'checksums': ['f8f327faa95c808773376570793bbabdbc185a6c7fcdce3b96a09c998134d0d8'],
+    }),
+    ('SPAtest', '3.0.2', {
+        'checksums': ['7a5e02f636df4c299d3a2d36033f26492b6db51f04a5cd1c2ff17e7ec1a4e831'],
+    }),
+    ('SKAT', '2.0.0', {
+        'checksums': ['b90be9552f65f0055311ec7a4de5b33520a040f9202aa5872fbfae306c496ce2'],
+    }),
+    ('GillespieSSA', '0.6.1', {
+        'checksums': ['272e9b6b26001d166fd7ce8d04f32831ba23c676075fbd1e922e27ba2c962052'],
+    }),
+    ('startupmsg', '0.9.6', {
+        'checksums': ['1d60ff13bb260630f797bde66a377a5d4cd65d78ae81a3936dc4374572ec786e'],
+    }),
+    ('distr', '2.8.0', {
+        'checksums': ['bb7df05d6b946bcdbbec2e3397c7c7e349b537cabfcbb13a34bcf6312a71ceb7'],
+    }),
+    ('distrEx', '2.8.0', {
+        'checksums': ['b064cde7d63ce93ec9969c8c4463c1e327758b6f8ea7765217d77f9ba9d590bf'],
+    }),
+    ('KODAMA', '1.5', {
+        'checksums': ['8ecf53732c1be2bd1e111b3c6de65b66caf28360306e683fe945dc76d4c267dd'],
+    }),
+    ('locfdr', '1.1-8', {
+        'checksums': ['42d6e12593ae6d541e6813a140b92591dabeb1df94432a515507fc2eee9a54b9'],
+    }),
+    ('ica', '1.0-2', {
+        'checksums': ['e721596fc6175d3270a60d5e0b5b98be103a8fd0dd93ef16680af21fe0b54179'],
+    }),
+    ('dtw', '1.21-3', {
+        'checksums': ['1aa46b285b7a31ba19759e83562671ed9076140abec79fe0df0316af43871e0a'],
+    }),
+    ('SDMTools', '1.1-221.2', {
+        'checksums': ['f0dd8c5f98d2f2c012536fa56d8f7a58aaf0c11cbe3527e66d4ee3194f6a6cf7'],
+    }),
+    ('ggridges', '0.5.2', {
+        'checksums': ['b03a775df279a71f259470335decf033b0b9e34b7ee5726681b302ae4e11ff0e'],
+    }),
+    ('TFisher', '0.2.0', {
+        'checksums': ['bd9b7484d6fba0165841596275b446f85ba446d40e92f3b9cb37381a3827e76f'],
+    }),
+    ('lsei', '1.2-0', {
+        'checksums': ['4781ebd9ef93880260d5d5f23066580ac06061e95c1048fb25e4e838963380f6'],
+    }),
+    ('npsurv', '0.4-0', {
+        'checksums': ['404cf7135dc40a04e9b81224a543307057a8278e11109ba1fcaa28e87c6204f3'],
+    }),
+    ('fitdistrplus', '1.0-14', {
+        'checksums': ['85082590f62aa08d99048ea3414c5cc1e5b780d97b3779d2397c6cb435470083'],
+    }),
+    ('rappdirs', '0.3.1', {
+        'checksums': ['2fd891ec16d28862f65bb57e4a78f77a597930abb59380e757afd8b6c6d3264a'],
+    }),
+    ('reticulate', '1.15', {
+        'checksums': ['47db3e9c9424263ade15287da8e74f6ba261a936b644b197dba6772853b7b50d'],
+    }),
+    ('hdf5r', '1.3.2', {
+        'installopts': '--configure-args="--with-hdf5=$EBROOTHDF5/bin/h5cc"',
+        'preinstallopts': "unset LIBS && ",
+        'checksums': ['31493d9dde9705543e5474c937fa5b4b64895ae1dd6ee51d7039dd95a6015730'],
+    }),
+    ('DTRreg', '1.5', {
+        'checksums': ['eb9b4d98b25eec304a447db302f618a75180f8d8fe0f5728ecd7e85957613456'],
+    }),
+    ('pulsar', '0.3.6', {
+        'checksums': ['b5851bf365003ace07542fd21ccff015c4b21ffd73e21ec3a539563e9ef53564'],
+    }),
+    ('bayesm', '3.1-4', {
+        'checksums': ['061b216c62bc72eab8d646ad4075f2f78823f9913344a781fa53ea7cf4a48f94'],
+    }),
+    ('energy', '1.7-7', {
+        'checksums': ['67b88fb33ee6e7bec2e4fe356a4efd36f70c3cf9b0ebe2f6d9da9ec96de9968f'],
+    }),
+    ('compositions', '1.40-5', {
+        'checksums': ['879e296037b0b3c52cfe48556820500b94d4eea16ec2b40f85988b65c5f72a51'],
+    }),
+    ('clustree', '0.4.2', {
+        'checksums': ['5d6b8ee3cbbcdd235a7abe4107429e45847ed09ec1cdb572ad6efb9d88dff82e'],
+    }),
+    ('plotly', '4.9.2.1', {
+        'checksums': ['f45eae325ab7e7924b0be098bad866ce003d657cf63e137104401c2dd4401db8'],
+    }),
+    ('tweedie', '2.3.2', {
+        'checksums': ['9a6226e64e3d56eb7eb2a408f8b825c2ad6ee0ea203a9220e85e7789514adb81'],
+    }),
+    ('RcppGSL', '0.3.7', {
+        'checksums': ['45e95c4170fc8421ae9b32134b3a402f76ea9657030969723a3563c7ce14dc32'],
+    }),
+    ('mvabund', '4.1.3', {
+        'checksums': ['4b98049026fcc5a262163f6801d5b98b8543267cf7b0edac8382d5311b81a8fc'],
+    }),
+    ('fishMod', '0.29', {
+        'checksums': ['5989e49ca6d6b2c5d514655e61f75b019528a8c975f0d6056143f17dc4277a5d'],
+    }),
+    ('gllvm', '1.2.1', {
+        'checksums': ['a9dca68227a8f89c61950f6411de3b988e6e067d97fadc589f69ddd731c2e1ff'],
+    }),
+    ('grpreg', '3.2.2', {
+        'checksums': ['e59f576ee5d794444917e0fbdab0d1ebf4aa71967c9a35ec196899ed5b168388'],
+    }),
+    ('trust', '0.1-8', {
+        'checksums': ['952e348b62aec35988b103fd152329662cb6a451538f184549252fbf49d7dcac'],
+    }),
+    ('ergm', '3.10.4', {
+        'checksums': ['885f0b1a23c5a2c1947962350cfab66683dfdfd1db173c115e90396d00831f22'],
+    }),
+    ('networkDynamic', '0.10.1', {
+        'checksums': ['22eed8d9dea8d70877c1619eb2bc3f1ac5142ce3db6fd6eb3e0879ca56b76ca0'],
+    }),
+    ('tergm', '3.6.1', {
+        'checksums': ['21de2eca943d89ba63af14951655d626f241bafccc4b2709fa39aa130625cd0f'],
+    }),
+    ('ergm.count', '3.4.0', {
+        'checksums': ['7c24c79d0901c18991cce907306a1531cca676ae277c6b0a0e4962ad27c36baf'],
+    }),
+    ('tsna', '0.3.1', {
+        'checksums': ['bba4b5e04ba647784581a2137f653f60b4c83cfd726c399556054c5a6d2cbd95'],
+    }),
+    ('statnet', '2019.6', {
+        'checksums': ['0903e1a81ed1b6289359cefd12da1424c92456d19e062c3f74197b69e536b29d'],
+    }),
+    ('aggregation', '1.0.1', {
+        'checksums': ['86f88a02479ddc8506bafb154117ebc3b1a4a44fa308e0193c8c315109302f49'],
+    }),
+    ('ComICS', '1.0.4', {
+        'checksums': ['0af7901215876f95f309d7da6e633c38e4d7faf04112dd6fd343bc15fc593a2f'],
+    }),
+    ('dtangle', '2.0.9', {
+        'checksums': ['c375068c1877c2e8cdc5601cfd5a9c821645c3dff90ddef64817f788f372e179'],
+    }),
+    ('mcmc', '0.9-7', {
+        'checksums': ['b7c4d3d5f9364c67a4a3cd49296a61c315ad9bd49324a22deccbacb314aa8260'],
+    }),
+    ('MCMCpack', '1.4-6', {
+        'checksums': ['6bcd018d6fa589a6854ee1bcea18b9d6c4095f3deae9058f69afbb09cba873c7'],
+    }),
+    ('shinythemes', '1.1.2', {
+        'checksums': ['2e13d4d5317fc61082e8f3128b15e0b10ed9736ce81e152dd7ae7f6109f9b18a'],
+    }),
+    ('csSAM', '1.2.4', {
+        'checksums': ['3d6442ad8c41fa84633cbbc275cd67e88490a160927a5c55d29da55a36e148d7'],
+    }),
+    ('bridgedist', '0.1.0', {
+        'checksums': ['dc7c1c8874d6cfa34d550d9af194389e13471dfbc55049a1ab66db112fbf1343'],
+    }),
+    ('asnipe', '1.1.12', {
+        'checksums': ['3a1f166f1c71b5877a2acca1384ec6c9b430b67af67ef26125f2abbb53c66206'],
+    }),
+    ('oddsratio', '2.0.0', {
+        'checksums': ['89bf3c68a6ded6a98f4ee8d487c29605ad00ac5f8db9b8bf1a52144e65332553'],
+    }),
+    ('mltools', '0.3.5', {
+        'checksums': ['7093ffceccdf5d4c3f045d8c8143deaa8ab79935cc6d5463973ffc7d3812bb10'],
+    }),
+    ('h2o', '3.30.0.1', {
+        'checksums': ['cb11ef58a7d7dfd3a9193686ddd9c8a9f988b33a69656d8b3e8f59082068b0f5'],
+    }),
+    ('mlegp', '3.1.7', {
+        'checksums': ['d4845eaf9260f8b8112726dd7ceb5c2f5ce75125fa313191db9de121f2ee15e0'],
+    }),
+    ('itertools', '0.1-3', {
+        'checksums': ['b69b0781318e175532ad2d4f2840553bade9637e04de215b581704b5635c45d3'],
+    }),
+    ('missForest', '1.4', {
+        'checksums': ['f785804b03bdf424e1c76095989a803afb3b47d6bebca9a6832074b6326c0278'],
+    }),
+    ('bartMachineJARs', '1.1', {
+        'checksums': ['f2c31cb94d7485174a2519771127a102e35b9fe7f665e27beda3e76a56feeef2'],
+    }),
+    ('bartMachine', '1.2.4.2', {
+        'checksums': ['28a5f7363325021bd93f9bd060cc48f20c689dae2f2f6f7100faae66d7651f80'],
+    }),
+    ('lqa', '1.0-3', {
+        'checksums': ['3889675dc4c8cbafeefe118f4f20c3bd3789d4875bb725933571f9991a133990'],
+    }),
+    ('PresenceAbsence', '1.1.9', {
+        'checksums': ['1a30b0a4317ea227d674ac873ab94f87f8326490304e5b08ad58953cdf23169f'],
+    }),
+    ('GUTS', '1.1.1', {
+        'checksums': ['094b8f51719cc36ddc56e3412dbb146eafc93c5e8fbb2c5999c2e80ea7a7d216'],
+    }),
+    ('GenSA', '1.1.7', {
+        'checksums': ['9d99d3d0a4b7770c3c3a6de44206811272d78ab94481713a8c369f7d6ae7b80f'],
+    }),
+    ('parsedate', '1.2.0', {
+        'checksums': ['39ab3c507cb3efcd677c6cf453f46d6b1948662bd70c7765845e755ea1e1633d'],
+    }),
+    ('circular', '0.4-93', {
+        'checksums': ['76cee2393757390ad91d3db3e5aeb2c2d34c0a46822b7941498571a473417142'],
+    }),
+    ('cobs', '1.3-4', {
+        'checksums': ['a1c7b77e4ca097349884fd1c0d863d74f9092766131094d603f34d33ab2e3c42'],
+    }),
+    ('resample', '0.4', {
+        'checksums': ['f0d5f735e1b812612720845d79167a19f713a438fd10a6a3206e667045fd93e5'],
+    }),
+    ('MIIVsem', '0.5.4', {
+        'checksums': ['de918d6b1820c59a7d4324342ad15444c2370ce1d843397a136c307397ed64b9'],
+    }),
+    ('medflex', '0.6-6', {
+        'checksums': ['b9d04fb5281d0ea0555ec4f327a0ee951a7f312a3af944578dc175183dc49211'],
+    }),
+    ('Rserve', '1.7-3.1', {
+        'checksums': ['3ba1e919706e16a8632def5f45d666b6e44eafa6c14b57064d6ddf3415038f99'],
+    }),
+    ('spls', '2.2-3', {
+        'checksums': ['bbd693da80487eef2939c37aba199f6d811ec289828c763d9416a05fa202ab2e'],
+    }),
+    ('Boruta', '6.0.0', {
+        'checksums': ['1c9a7aabe09f040e147f6c614f5fe1d0b951d3b0f0024161fbb4c31da8fae8de'],
+    }),
+    ('dr', '3.0.10', {
+        'checksums': ['ce523c1bdb62a9dda30afc12b1dd96975cc34695c61913012236f3b80e24bf36'],
+    }),
+    ('CovSel', '1.2.1', {
+        'checksums': ['b375d00cc567e125ff106b4357654f43bba3abcadeed2238b6dea4b7a68fda09'],
+    }),
+    ('tmle', '1.4.0.1', {
+        'checksums': ['075e7b7fe0496e02785eb35aed0db84476db756c6f14a0047808af2565b33501'],
+    }),
+    ('ctmle', '0.1.2', {
+        'checksums': ['e3fa0722cd87aa0e0b209c2dddf3fc44c6d09993f1e66a6c43285fe950948161'],
+    }),
+    ('BayesPen', '1.0', {
+        'checksums': ['772df9ae12cd8a3da1d5b7d1f1629602c7693f0eb03945784df2809e2bb061b0'],
+    }),
+    ('inline', '0.3.15', {
+        'checksums': ['ff043fe13c1991a3b285bed256ff4a9c0ba10bee764225a34b285875b7d69c68'],
+    }),
+    ('BMA', '3.18.12', {
+        'checksums': ['cbabb77d92b09a11a986ad03950322e78dff743f82ff67fda51d32e44135dd79'],
+    }),
+    ('BCEE', '1.3.0', {
+        'checksums': ['82afc9b8c6d617f5f728341960ae32922194f637c550916b3bea12c231414fa7'],
+    }),
+    ('bacr', '1.0.1', {
+        'checksums': ['c847272e2c03fd08ed79b3b739f57fe881af77404b6fd087caa0c398c90ef993'],
+    }),
+    ('clue', '0.3-57', {
+        'checksums': ['6e369d07b464a9624209a06b5078bf988f01f7963076e946649d76aea0622d17'],
+    }),
+    ('bdsmatrix', '1.3-4', {
+        'checksums': ['251e21f433a016ec85e478811ea3ad34c572eb26137447f48d1bbf3cc8bb06ea'],
+    }),
+    ('fftwtools', '0.9-8', {
+        'checksums': ['4641c8cd70938c2a8bde0b6da6cf7f83e96175ef52f1ca42ec3920a1dabf1bdb'],
+    }),
+    ('imagerExtra', '1.3.2', {
+        'checksums': ['0ebfa1eabb89459d774630ab73c7a97a93b9481ea5afc55482975475acebd5b8'],
+    }),
+    ('MALDIquant', '1.19.3', {
+        'checksums': ['a730327c1f8d053d29e558636736b7b66d0671a009e0004720b869d2c76ff32c'],
+    }),
+    ('threejs', '0.3.3', {
+        'checksums': ['76c759c8b20fb34f4f7a01cbd1b961296e1f19f4df6dded69aae7f1bca80219c'],
+    }),
+    ('LaplacesDemon', '16.1.4', {
+        'checksums': ['4152a1c3c652979e97870e5c50c45a243d0ad8d4ff968091160e3d66509f61db'],
+    }),
+    ('rda', '1.0.2-2.1', {
+        'checksums': ['eea3a51a2e132a023146bfbc0c384f5373eb3ea2b61743d7658be86a5b04949e'],
+    }),
+    ('sampling', '2.8', {
+        'checksums': ['356923f35971bb55f7e97b178aede3366374aa3ad3d24a97be765660553bf21a'],
+    }),
+    ('lda', '1.4.2', {
+        'checksums': ['5606a1e1bc24706988853528023f7a004c725791ae1a7309f1aea2fc6681240f'],
+    }),
+    ('jiebaRD', '0.1', {
+        'checksums': ['045ee670f5378fe325a45b40fd55136b355cbb225e088cb229f512c51abb4df1'],
+    }),
+    ('jiebaR', '0.11', {
+        'checksums': ['adde8b0b21c01ec344735d49cd33929511086719c99f8e10dce4ca9479276623'],
+    }),
+    ('hdm', '0.3.1', {
+        'checksums': ['ba087565e9e0a8ea30a6095919141895fd76b7f3c05a03e60e9e24e602732bce'],
+    }),
+    ('abe', '3.0.1', {
+        'checksums': ['66d2e9ac78ba64b7d27b22b647fc00378ea832f868e51c18df50d6fffb8029b8'],
+    }),
+    ('SignifReg', '3.0', {
+        'checksums': ['ada4e1f8cbb08ba8ff16275ec5f9a453857e0cab63b70d42753989ab4c716b7b'],
+    }),
+    ('bbmle', '1.0.23.1', {
+        'checksums': ['60421eb01190b741ab14885eaf1088f51d49dcf70e58c42b360489bca04e745c'],
+    }),
+    ('emdbook', '1.3.12', {
+        'checksums': ['0646caf9e15aaa61ff917a4b5fdf82c06ac17ef221a61dec3fbb554e7bff4353'],
+    }),
+    ('SOAR', '0.99-11', {
+        'checksums': ['d5a0fba3664087308ce5295a1d57d10bad149eb9771b4fe67478deae4b7f68d8'],
+    }),
+    ('rasterVis', '0.47', {
+        'checksums': ['123ebe870895c2ba3a4b64d8a18bccab5287c831fa14bb0fe07f0d7de61e51d3'],
+    }),
+    ('tictoc', '1.0', {
+        'checksums': ['47da097c1822caa2d8e262381987cfa556ad901131eb96109752742526b2e2fe'],
+    }),
+    ('ISOcodes', '2020.03.16', {
+        'checksums': ['160eb4ea23be53305e4e728002c8f5d3852d89155f538deccb734e7c8ad4e1c3'],
+    }),
+    ('stopwords', '2.0', {
+        'checksums': ['5cca60ce9f44406486e0dca2e36cec2488096c3558b45fc3bd0e7b6d1500af94'],
+    }),
+    ('janeaustenr', '0.1.5', {
+        'checksums': ['992f6673653daf7010fe176993a01cd4127d9a88be428da8da7a28241826d6f3'],
+    }),
+    ('SnowballC', '0.7.0', {
+        'checksums': ['b10fee9d322f567a22c580b49b5d4ba1c86eae40a71794ca92552c726b3895f3'],
+    }),
+    ('tokenizers', '0.2.1', {
+        'checksums': ['28617cdc5ddef5276abfe14a2642999833322b6c34697de1d4e9d6dc7670dd00'],
+    }),
+    ('hunspell', '3.0', {
+        'checksums': ['01fb9c87f7cf094aaad3b7098378134f2e503286224351e91d08c00b6ee19857'],
+    }),
+    ('topicmodels', '0.2-11', {
+        'checksums': ['9c26b4d967be6ec26834a39f04aa92b059ea9503eb70c700e1c0a7a43637b74a'],
+    }),
+    ('tidytext', '0.2.4', {
+        'checksums': ['46ff59063b6a519c9eb606ae135ef31d7073ac729e4a912c9f77e234801b933d'],
+    }),
+    ('splitstackshape', '1.4.8', {
+        'checksums': ['656032c3f1e3dd5b8a3ee19ffcae617e07104c0e342fc3da4d863637a770fe56'],
+    }),
+    ('grImport2', '0.2-0', {
+        'checksums': ['a102a2d877e42cd4e4e346e5510a77b2f3e57b43ae3c6d5c272fdceb506b00a7'],
+    }),
+    ('preseqR', '4.0.0', {
+        'checksums': ['0143db473fb9a811f9cf582a348226a5763e62d9857ce3ef4ec41412abb559bc'],
+    }),
+    ('idr', '1.2', {
+        'checksums': ['8bbfdf82c8c2b5c73eb079127e198b6cb65c437bb36729f502c7bcd6037fdb16'],
+    }),
+    ('entropy', '1.2.1', {
+        'checksums': ['edb27144b8f855f1ef21de6b93b6b6c5cf7d4f2c3d592bf625e5158c02226f83'],
+    }),
+    ('kedd', '1.0.3', {
+        'checksums': ['38760abd8c8e8f69ad85ca7992803060acc44ce68358de1763bd2415fdf83c9f'],
+    }),
+    ('HiddenMarkov', '1.8-11', {
+        'checksums': ['4a1614249eee9f428bc182ea9ced443dff4eafa7babf4259c720e5b4da2d08fa'],
+    }),
+    ('lmerTest', '3.1-2', {
+        'checksums': ['385870873fd303c2caa4ac43e2df0ca5aa36ddb484bfb4eefbc5c4ac4bef6de2'],
+    }),
+    ('loo', '2.2.0', {
+        'checksums': ['466df60953a89fcb135b32909197c3ff26ecea719c191667faa5747324fb01c3'],
+    }),
+    ('StanHeaders', '2.21.0-1', {
+        'checksums': ['4e94148af2960f203b208c2b725d8be628ca282c7a1e967a7e6e78aa5eb90d3f'],
+    }),
+    ('rstan', '2.19.3', {
+        'checksums': ['d7025dccdc2337fd0cf3b9689c3e0a07558a47a08b7cbc370e0b3998256f1689'],
+    }),
+    ('Rborist', '0.2-3', {
+        'checksums': ['f3b3f953ca99e0d17425ac6ba9a7b1e9d6098343abace575cdb492bca2a9c461'],
+    }),
+    ('VSURF', '1.1.0', {
+        'checksums': ['eee99e0c441795c2ccb21cc6e0a37b24f580241e494c83e811b726b43469eeab'],
+    }),
+    ('mRMRe', '2.1.0', {
+        'checksums': ['fe23c5c1e7b5b653e0358e98f25ebd8c0c74c6c871606d1b24cd02a5534181d4'],
+    }),
+    ('dHSIC', '2.1', {
+        'checksums': ['94c86473790cf69f11c68ed8ba9d6ae98218c7c69b7a9a093f235d175cf83db0'],
+    }),
+    ('ggsci', '2.9', {
+        'checksums': ['4af14e6f3657134c115d5ac5e65a2ed74596f9a8437c03255447cd959fe9e33c'],
+    }),
+    ('ggsignif', '0.6.0', {
+        'checksums': ['6fe13efda31386483e64d466ba2f5a53a2a235ae04f5c17bba3ccc63d283499e'],
+    }),
+    ('corrplot', '0.84', {
+        'checksums': ['0dce5e628ead9045580a191f60c58fd7c75b4bbfaaa3307678fc9ed550c303cc'],
+    }),
+    ('rstatix', '0.5.0', {
+        'checksums': ['06b2ba1b16698c93203474eb67e59169fa4127283d46cf694e032a5472956b46'],
+    }),
+    ('ggfan', '0.1.3', {
+        'checksums': ['5c888b203ecf5e3dc7a317a790ca059c733002fbca4b4bc1a4f62b7ded5f70dc'],
+    }),
+    ('ggpubr', '0.3.0', {
+        'checksums': ['b82ffc6bd5974c3036d08393fa1f2bafeaf6f567e0b3faf43e38226b19399eb6'],
+    }),
+    ('yaImpute', '1.0-32', {
+        'checksums': ['08eee5d851b80aad9c7c80f9531aadd50d60e4b16b3a80657a50212269cd73ff'],
+    }),
+    ('intrinsicDimension', '1.2.0', {
+        'checksums': ['6cc9180a83aa0d123f1e420136bb959c0d5877867fa170b79536f5ee22106a32'],
+    }),
+    ('patchwork', '1.0.0', {
+        'checksums': ['8bfb59b91775781848f39eedcaaaf92c147e2637f384085fcdd41fc8355b3c63'],
+    }),
+    ('leiden', '0.3.3', {
+        'checksums': ['c2b5e1c061c8bbea494639a0d7f0fa22f5b41ff5fd911409e5f832f3575d06c2'],
+    }),
+    ('future.apply', '1.4.0', {
+        'checksums': ['737e5a8e2d0ce2678835f5be15c96d491f690d307662ed6719be41937633f8cd'],
+    }),
+    ('sctransform', '0.2.1', {
+        'checksums': ['d6430a81a66c93da770b1a7c55344df42187321038b4eee80b7066cdd8a7631f'],
+    }),
+    ('packrat', '0.5.0', {
+        'checksums': ['d6a09290fbe037a6c740921c5dcd70b500e5b36e4713eae4010adf0c456bc5f7'],
+    }),
+    ('shinyjs', '1.1', {
+        'checksums': ['8986181baa68fb2863eea65b9df1b04b9b4e1293685298531d42de3bc2f06892'],
+    }),
+    ('colourpicker', '1.0', {
+        'checksums': ['f1dacbafb05c09f61b9bdd0fdcee5344409759b042a71ec46d7c9e3710107b7c'],
+    }),
+    ('ggExtra', '0.9', {
+        'checksums': ['f22db92d6e3e610901998348acbcaa6652fa6c62a285a622d3b962ba9e89aba2'],
+    }),
+    ('findpython', '1.0.5', {
+        'checksums': ['3e9a21988cb78833769b02680d128a0cc01bcb41aa9c9725ab1742f349759145'],
+    }),
+    ('argparse', '2.0.1', {
+        'checksums': ['949843920d14fc7c162aedab331a936499541736e7dafbb103fbfd79be8147ab'],
+    }),
+    ('intergraph', '2.0-2', {
+        'checksums': ['6cbe77f1e87fa1c110db2d46010f2f3ae72bfdb708ce2ca84c1cdc2cd6eb47a1'],
+    }),
+    ('ggnetwork', '0.5.8', {
+        'checksums': ['a8c7c19a2bafce898c95d0b2401ef052925db57b85058c7203f0122b3af7bbbd'],
+    }),
+    ('qqman', '0.1.4', {
+        'checksums': ['3ad01f82132bf75960ae0d8a81cae84eaf4a9ab262f183fc3d6439189e4a3aed'],
+    }),
+    ('rstantools', '2.0.0', {
+        'checksums': ['d200a4d8c62d8577fdba819bf770e7abb11c57c3332f4498e1d30ce824598b3a'],
+    }),
+    ('bayesplot', '1.7.1', {
+        'checksums': ['820ca9ca3258fc68333e75fd60898c0d0f08f513b66c161ca6159a54ad54006b'],
+    }),
+    ('dygraphs', '1.1.1.6', {
+        'checksums': ['c3d331f30012e721a048e04639f60ea738cd7e54e4f930ac9849b95f0f005208'],
+    }),
+    ('rsconnect', '0.8.16', {
+        'checksums': ['3f728c6a5153dca28f69b9355ae9d18c5f7e70d12495c0c047eef673c1053116'],
+    }),
+    ('shinystan', '2.5.0', {
+        'checksums': ['45f9c552a31035c5de8658bb9e5d72da7ec1f88fbddb520d15fe701c677154a1'],
+    }),
+    ('brms', '2.12.0', {
+        'checksums': ['fa21505dca65d027f1cf1c573258de5f3c51ca8b94abd6dcf9123a3a27a72999'],
+    }),
+    ('drgee', '1.1.10', {
+        'checksums': ['e684f07f7dfec922380d4202922c11094f859721f77b31ff38b0d35d0f42c743'],
+    }),
+    ('stdReg', '3.4.0', {
+        'checksums': ['b423df43e9c4bb8ffafe2de88b93fdcf3a90f964f136580ea1b849a83dba7400'],
+    }),
+    ('mcmcse', '1.4-1', {
+        'checksums': ['6b181f56d60ddf55c9c08a2468ef9ffe3ec8a1b16cfa9a7742c3872597f85d17'],
+    }),
+    ('copCAR', '2.0-3', {
+        'checksums': ['e626380d3f11ca6c756381f2423ef3661efb52667147114253416cc6151a71b8'],
+    }),
+    ('batchmeans', '1.0-4', {
+        'checksums': ['8694573009d9070a76007281407d3314da78902e122a9d8aec1f819d3bbe562c'],
+    }),
+    ('ngspatial', '1.2-2', {
+        'checksums': ['3fa79e45d3a502a58c1454593ec83dfc73144e92b34c14f617a6126557dd0d26'],
+    }),
+    ('BIGL', '1.4.3', {
+        'checksums': ['7ef7edd5c1852409f1da176e810a9a2a7f0b9441e0e6459d4d16179f3eb000f4'],
+    }),
+    ('drugCombo', '1.1.1', {
+        'checksums': ['9fdc3a7cf63552c32f1c7573258fc4ceacdaf5c475fe79aa4ca8c9226b9f8a38'],
+    }),
+    ('betareg', '3.1-3', {
+        'checksums': ['cc19387ec516492d11cf59cdfa07e1733950a2af8196c1e155bc95939bc76246'],
+    }),
+    ('unmarked', '1.0.1', {
+        'checksums': ['a3bb9bdc7a4a79ea38482df3f8cbb6e9082332a0d894eeb4b3dc816344cec0e4'],
+    }),
+    ('maxlike', '0.1-8', {
+        'checksums': ['90aaab9602f259cbfae61fe96e105cc4a0c2a385b42380f85c14f5d544107251'],
+    }),
+    ('coxme', '2.2-16', {
+        'checksums': ['a0ce4b5649c4c1abbfe2c2bf23089744d1f66eb8368dea16e74e090f366a5111'],
+    }),
+    ('AICcmodavg', '2.3-0', {
+        'checksums': ['4d6bcff3c549be9dcefdd849b239659618fdaf9ba0d27b9d0589620d104e5e24'],
+    }),
+    ('pacman', '0.5.1', {
+        'checksums': ['9ec9a72a15eda5b8f727adc877a07c4b36f8372fe7ed80a1bc6c2068dab3ef7c'],
+    }),
+    ('spaa', '0.2.2', {
+        'checksums': ['a5a54454d4a7af473ce797875f849bd893005cb04325bf3e0dbddb19fe8d7198'],
+    }),
+    ('maxnet', '0.1.2', {
+        'checksums': ['dfa02ca1031b369415d8b16863ca5fd115c7bf96b1f8fc24f91719b017f5cce5'],
+    }),
+    ('ENMeval', '0.3.0', {
+        'checksums': ['1c924098a27c82a9bf75408173b47429c40cc41cae3aba18c86ba217bb45ba60'],
+    }),
+    ('plotmo', '3.5.7', {
+        'checksums': ['aa366a49a63cabfd5d799a1524e23a4faed022f10ee60f8407d70ab70731b38c'],
+    }),
+    ('earth', '5.1.2', {
+        'checksums': ['326f98e8c29365ca3cd5584cf2bd6529358f5ef81664cbd494162f92b6c3488d'],
+    }),
+    ('mda', '0.5-2', {
+        'checksums': ['344f2053215ddf535d1554b4539e9b09067dac878887cc3eb995cef421fc00c3'],
+    }),
+    ('biomod2', '3.4.6', {
+        'checksums': ['41fd7745f4d0af3f799e9cf4fa5484a427de6854db84c6476fde7a7414787d5b'],
+    }),
+    ('ncdf4', '1.17', {
+        'checksums': ['db95c4729d3187d1a56dfd019958216f442be6221bd15e23cd597e6129219af6'],
+    }),
+    ('mapdata', '2.3.0', {
+        'checksums': ['1edc180990387b6b1cd4e43a9505ebeb98e6115e4205c4f32f05b397c781dd76'],
+    }),
+    ('wavelets', '0.3-0.2', {
+        'checksums': ['22d1d6bff71574a37b047ee5c31d17d52e321d2dd54db1a221f2d7267536e01c'],
+    }),
+    ('biwavelet', '0.20.19', {
+        'checksums': ['2b9f99e4f56cee87ee2db53abcece205ff592887a9c9cf298c875a1ea594b25d'],
+    }),
+    ('wavethresh', '4.6.8', {
+        'checksums': ['93b369c6eabcc0187b860b31d84a9d7c72c4a2ed5b23c1520c93bd7bea22e7db'],
+    }),
+    ('splancs', '2.01-40', {
+        'checksums': ['79744381ebc4a361740a36dca3c9fca9ae015cfe0bd585b7856a664a3da74363'],
+    }),
+    ('RandomFieldsUtils', '0.5.3', {
+        'checksums': ['ea823cba2e254a9f534efb4b772c0aeef2039ee9ef99744e077b969a87f8031d'],
+    }),
+    ('RandomFields', '3.3.8', {
+        'checksums': ['8a08e2fdae428e354a29fb6818ae781cc56235a6849a0d29574dc756f73199d0'],
+    }),
+    ('geoR', '1.8-1', {
+        'checksums': ['990647804590b925a50f72897b24bbabd331cebef0be1696a60528b2f79d6fd3'],
+    }),
+    ('intervals', '0.15.2', {
+        'checksums': ['0bd23b0ce817ddd851238233d8a5420bf3a6d29e75fd361418cbc50118777c57'],
+    }),
+    ('spacetime', '1.2-3', {
+        'checksums': ['ca7c0b962d5da0741f6dd85b271d693598756e0eeeb364ada828dbb6d1b9b25b'],
+    }),
+    ('gstat', '2.0-6', {
+        'checksums': ['6711e68aa2444cf2927879a03a976d8caeca5eac98d806b19a6a7178b90bfcab'],
+    }),
+    ('rgeos', '0.5-3', {
+        'checksums': ['357454e110ae19a665d5af5ffd7d670d2d7471566dd638dc614365c29b68600b'],
+    }),
+    ('repr', '1.1.0', {
+        'checksums': ['743fe018f9e3e54067a970bc38b6b8c0c0498b43f88d179ac4a959c2013a5f96'],
+    }),
+    ('IRdisplay', '0.7.0', {
+        'checksums': ['91eac9acdb92ed0fdc58e5da284aa4bb957ada5eef504fd89bec136747999089'],
+    }),
+    ('pbdZMQ', '0.3-3.1', {
+        'checksums': ['9e034745cd9c1bdf510a2ec8e7060501abc92ec86020c430ed7e36f5d5cf1523'],
+    }),
+    ('IRkernel', '1.1.1', {
+        'checksums': ['f5a129168f44bdda6da8cc907189a2737f692d427529515d87312a17dbd806f8'],
+    }),
+    # language server support
+    ('collections', '0.3.5', {
+        'checksums': ['bf76ab5c6a8082b6bb70b9bf3bdb30658e823e3b7b28cf7be7e8a87d117a7114'],
+    }),
+    ('xmlparsedata', '1.0.4', {
+        'checksums': ['387b13c25bea9ddc0a39b817c17c199b86ab9acafa328daae2233a9ca577fb9c'],
+    }),
+    ('cyclocomp', '1.1.0', {
+        'checksums': ['cdbf65f87bccac53c1527a2f1269ec7840820c18503a7bb854910b30b71e7e3e'],
+    }),
+    ('lintr', '2.0.1', {
+        'checksums': ['fe0723757b653ef83ec7a5005d0a7524cd917d646d35a5627ee639158881ce93'],
+    }),
+    ('styler', '1.3.2', {
+        'checksums': ['3fcf574382c607c2147479bad4f9fa8b823f54fb1462d19ec4a330e135a44ff1'],
+    }),
+    ('mockery', '0.4.2', {
+        'checksums': ['988e249c366ee7faf277de004084cf5ca24b5c8a8c6e3842f1b1362ce2f7ea9b'],
+    }),
+    ('languageserver', '0.3.8', {
+        'checksums': ['371db6976d6066d654c9d31f911dba667c1f8ceb4ab67da34d44037b66f3ca9b'],
+    }),
+]
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb b/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb
index 44aacee1e37451c02c5dca5d045a3f475bf0aad0..fb9b2a4ee5787a8c8ed54519573aaa64ad78aa1a 100644
--- a/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb
+++ b/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb
@@ -30,7 +30,7 @@ dependencies = [
     ('libpng', '1.6.37'),  # for plotting in R
     ('libjpeg-turbo', '2.0.5'),  # for plottting in R
     ('LibTIFF', '4.1.0'),
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
     ('Tk', '8.6.10'),  # for tcltk
     ('cURL', '7.71.1'),  # for RCurl
     ('libxml2', '2.9.10'),  # for XML
@@ -469,8 +469,8 @@ exts_list = [
     ('pkgbuild', '1.0.7', {
         'checksums': ['29bb38a38202ba780d2d46aeca0a6e2f052653e4a83891ec38d19bebd131a971'],
     }),
-    ('rstudioapi', '0.11', {
-        'checksums': ['13e07fb7e2eba8cf1d885db2721901d676d219a1042d7ef5d166125e4905306b'],
+    ('rstudioapi', '0.13', {
+        'checksums': ['aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b'],
     }),
     ('pkgload', '1.0.2', {
         'checksums': ['3186564e690fb05eabe76e1ac0bfd4312562c3ac8794b29f8850399515dcf27c'],
@@ -2544,6 +2544,28 @@ exts_list = [
     ('IRkernel', '1.1.1', {
         'checksums': ['f5a129168f44bdda6da8cc907189a2737f692d427529515d87312a17dbd806f8'],
     }),
+    # language server support
+    ('collections', '0.3.5', {
+        'checksums': ['bf76ab5c6a8082b6bb70b9bf3bdb30658e823e3b7b28cf7be7e8a87d117a7114'],
+    }),
+    ('xmlparsedata', '1.0.4', {
+        'checksums': ['387b13c25bea9ddc0a39b817c17c199b86ab9acafa328daae2233a9ca577fb9c'],
+    }),
+    ('cyclocomp', '1.1.0', {
+        'checksums': ['cdbf65f87bccac53c1527a2f1269ec7840820c18503a7bb854910b30b71e7e3e'],
+    }),
+    ('lintr', '2.0.1', {
+        'checksums': ['fe0723757b653ef83ec7a5005d0a7524cd917d646d35a5627ee639158881ce93'],
+    }),
+    ('styler', '1.3.2', {
+        'checksums': ['3fcf574382c607c2147479bad4f9fa8b823f54fb1462d19ec4a330e135a44ff1'],
+    }),
+    ('mockery', '0.4.2', {
+        'checksums': ['988e249c366ee7faf277de004084cf5ca24b5c8a8c6e3842f1b1362ce2f7ea9b'],
+    }),
+    ('languageserver', '0.3.8', {
+        'checksums': ['371db6976d6066d654c9d31f911dba667c1f8ceb4ab67da34d44037b66f3ca9b'],
+    }),
 ]
 
 moduleclass = 'lang'
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb
index bb1380f27880d1b901e537c791faebbe506bc8d3..7037c78bff8437068491567a8832a1878eb47879 100644
--- a/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb
+++ b/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb
@@ -33,7 +33,7 @@ patches = [
 ]
 
 builddependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('CubeLib', '4.5'),
     ('CubeWriter', '4.5'),
     # Unwinding/sampling support (optional):
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb
index 30b2e861dff7a9dcee4fe4bfc79de7ef2ac7132a..a654979fef2bcd3fbb7b26bbc8e18c5d916e231a 100644
--- a/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb
+++ b/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb
@@ -33,7 +33,7 @@ patches = [
 ]
 
 builddependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('CubeLib', '4.5'),
     ('CubeWriter', '4.5'),
     # Unwinding/sampling support (optional):
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb
index 807d8fed2ffd9dd1dd569760feb0d5600dabfda8..1dd32b425e26a853984b4c775d2176860f59cbd1 100644
--- a/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb
+++ b/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb
@@ -33,7 +33,7 @@ patches = [
 ]
 
 builddependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('CubeLib', '4.5'),
     ('CubeWriter', '4.5'),
     # Unwinding/sampling support (optional):
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb
index 56fbb9367c43e92f4409311c0133a28dc96459b9..79c00c01536bd236ca672c9a78aeebb827ad6f59 100644
--- a/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb
+++ b/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb
@@ -33,7 +33,7 @@ patches = [
 ]
 
 builddependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('CubeLib', '4.5'),
     ('CubeWriter', '4.5'),
     # Unwinding/sampling support (optional):
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb
index bee2e759d062b0d5683cd65cfef67800217b5dbf..eb958fb47f5ac34bbe54a24869875ab2e0970bf2 100644
--- a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb
+++ b/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb
@@ -33,7 +33,7 @@ patches = [
 ]
 
 builddependencies = [
-    ('CUDA', '11.0', '', True),
+    ('CUDA', '11.0', '', SYSTEM),
     ('CubeLib', '4.5'),
     ('CubeWriter', '4.5'),
     # Unwinding/sampling support (optional):
diff --git a/Golden_Repo/s/Shapely/Shapely-1.7.1-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/s/Shapely/Shapely-1.7.1-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..47db47fc91daae2c2c102039da8f217b7a6dd211
--- /dev/null
+++ b/Golden_Repo/s/Shapely/Shapely-1.7.1-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,28 @@
+easyblock = 'PythonPackage'
+
+name = 'Shapely'
+version = '1.7.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/Toblerity/Shapely'
+description = """Shapely is a BSD-licensed Python package for manipulation and analysis of planar geometric objects.
+It is based on the widely deployed GEOS (the engine of PostGIS) and JTS (from which GEOS is ported) libraries."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = [PYPI_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['1641724c1055459a7e2b8bbe47ba25bdc89554582e62aec23cb3f3ca25f9b129']
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('GEOS', '3.8.1', versionsuffix),
+]
+
+download_dep_fail = True
+use_pip = True
+sanity_pip_check = True
+
+moduleclass = 'math'
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
index db5df775129fe326c2bd8acd9acac539ca559687..9a55c28c37c3eafc4ca9b2049a1237e2c1823d32 100644
--- a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -24,8 +24,8 @@ builddependencies = [
     ('pybind11', '2.5.0', versionsuffix),
 ]
 dependencies = [
-    ('CUDA', local_cudaver, '', True),
-    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True),
+    ('CUDA', local_cudaver, '', SYSTEM),
+    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, SYSTEM),
     ('NCCL', '2.8.3-1', '-CUDA-%s' % local_cudaver),
     ('Python', '3.8.5'),
     ('h5py', '2.10.0', '-serial%s' % versionsuffix),
@@ -42,6 +42,7 @@ dependencies = [
     ('nsync', '1.24.0'),
     ('SQLite', '3.32.3'),
     ('PCRE', '8.44'),
+    ('protobuf-python', '3.13.0', versionsuffix),
     ('libpng', '1.6.37'),
     ('snappy', '1.1.8'),
     ('SWIG', '4.0.2', versionsuffix),
diff --git a/Golden_Repo/t/torchvision/torchvision-0.8.1-gcccoremkl-9.3.0-2020.2.254-GPU-Python-3.8.5.eb b/Golden_Repo/t/torchvision/torchvision-0.8.1-gcccoremkl-9.3.0-2020.2.254-GPU-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2c61fff6031bd155a08070990ce903dd2f036f35
--- /dev/null
+++ b/Golden_Repo/t/torchvision/torchvision-0.8.1-gcccoremkl-9.3.0-2020.2.254-GPU-Python-3.8.5.eb
@@ -0,0 +1,44 @@
+easyblock = 'PythonPackage'
+
+name = 'torchvision'
+version = '0.8.1'
+versionsuffix = '-Python-%(pyver)s'
+
+
+homepage = 'http://pytorch.org/'
+description = """The torchvision package consists of popular datasets, model architectures, and common image
+transformations for computer vision."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+download_dep_fail = True
+
+source_urls = [
+    'https://github.com/pytorch/vision/archive',
+]
+sources = [
+    'v%(version)s.tar.gz'
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('SciPy-Stack', '2020', versionsuffix),
+    ('PyTorch', '1.7.0', versionsuffix),
+    ('Pillow-SIMD', '7.0.0.post3', versionsuffix),
+]
+
+options = {'modulename': 'torchvision'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+# Add a property
+modluafooter = """
+add_property("arch","gpu")
+"""
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/u/UDUNITS/UDUNITS-2.2.26-GCCcore-9.3.0.eb b/Golden_Repo/u/UDUNITS/UDUNITS-2.2.26-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eb012fc637df01c285b2f77756b239865731ed90
--- /dev/null
+++ b/Golden_Repo/u/UDUNITS/UDUNITS-2.2.26-GCCcore-9.3.0.eb
@@ -0,0 +1,42 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild
+#
+# Copyright:: Copyright 2012-2013 University of Luxembourg, Ghent University
+# Authors::   Fotis Georgatos <fotis@cern.ch>, Kenneth Hoste (Ghent University)
+# License::   MIT/GPL
+# $Id$
+#
+# This work implements a part of the HPCBIOS project and is a component of the policy:
+# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-97.html
+##
+
+easyblock = 'ConfigureMake'
+
+name = 'UDUNITS'
+version = '2.2.26'
+
+homepage = 'http://www.unidata.ucar.edu/software/udunits/'
+description = """UDUNITS supports conversion of unit specifications between formatted and binary forms,
+ arithmetic manipulation of units, and conversion of values between compatible scales of measurement.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'opt': True, 'pic': True}
+
+sources = [SOURCELOWER_TAR_GZ]
+source_urls = ['ftp://ftp.unidata.ucar.edu/pub/udunits']
+
+builddependencies = [('binutils', '2.34')]
+dependencies = [('expat', '2.2.9')]
+
+sanity_check_paths = {
+    'files': ['bin/udunits2', 'include/converter.h', 'include/udunits2.h', 'include/udunits.h',
+              'lib/libudunits2.a', 'lib/libudunits2.%s' % SHLIB_EXT],
+    'dirs': ['share'],
+}
+
+parallel = 1
+
+moduleclass = 'phys'
diff --git a/Golden_Repo/v/VTK/VTK-8.2.0-gpsmpi-9.3.0-Python-3.8.5.eb b/Golden_Repo/v/VTK/VTK-8.2.0-gpsmpi-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ab774b4ddadf39423d3e94b72405d2595ec59411
--- /dev/null
+++ b/Golden_Repo/v/VTK/VTK-8.2.0-gpsmpi-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,184 @@
+easyblock = 'CMakeMake'
+
+name = 'VTK'
+version = '8.2.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'http://www.vtk.org'
+description = """The Visualization Toolkit (VTK) is an open-source, freely available software system for
+ 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several
+ interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization
+ algorithms including: scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques
+ such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s']
+sources = [
+    SOURCE_TAR_GZ,
+    '%(name)sData-%(version)s.tar.gz',
+]
+patches = ['VTK-8.2.0_python_3.8_compatibility.patch', ('vtk-version.egg-info', '.')]
+checksums = [
+    '34c3dc775261be5e45a8049155f7228b6bd668106c72a3c435d95730d17d57bb',  # VTK-8.2.0.tar.gz
+    'd1ff312f7a63d90d8b7033a99109801f16a462ae411d648642838aae04bcc21e',  # VTKData-8.2.0.tar.gz
+    'a7586f60501de145d4c31e48aa0589547d9fe7a39f96ab31dae8e82aa5fb4403',  # VTK-8.2.0_python_3.8_compatibility.patch
+    '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b',  # vtk-version.egg-info
+]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('HDF5', '1.10.6'),
+    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('mpi4py', '3.0.3', versionsuffix),
+    ('libxc', '3.0.1'),
+    ('netCDF', '4.7.4'),
+    ('X11', '20200222'),
+    ('OpenGL', '2020'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_BUILD_TYPE=Release "
+configopts += "-DCMAKE_INSTALL_LIBDIR=lib "
+
+configopts += "-DVTK_USE_SYSTEM_MPI4PY=ON "
+configopts += "-DVTK_USE_SYSTEM_LZMA=ON "
+configopts += "-DVTK_USE_SYSTEM_HDF5=ON "
+configopts += "-DVTK_USE_SYSTEM_NETCDF=ON "
+
+configopts += "-DBUILD_SHARED_LIBS=ON "
+configopts += "-DBUILD_TESTING=OFF "
+
+configopts += "-DVTK_SMP_IMPLEMENTATION_TYPE=OPENMP "
+configopts += "-DVTK_Group_MPI:BOOL=ON "
+configopts += "-DVTK_Group_Web:BOOL=ON "
+
+configopts += '-DOpenGL_GL_PREFERENCE=GLVND '  # "GLVND" or "LEGACY"
+configopts += "-DOPENGL_EGL_INCLUDE_DIR=$EBROOTOPENGL/include "
+configopts += "-DOPENGL_GLX_INCLUDE_DIR=$EBROOTOPENGL/include "
+configopts += "-DOPENGL_INCLUDE_DIR=$EBROOTOPENGL/include "
+configopts += "-DOPENGL_egl_LIBRARY=$EBROOTOPENGL/lib/libEGL.so.1 "
+configopts += "-DOPENGL_glx_LIBRARY=$EBROOTOPENGL/lib/libGLX.so.0 "
+configopts += "-DOPENGL_opengl_LIBRARY=$EBROOTOPENGL/lib/libOpenGL.so.0 "
+configopts += "-DOPENGL_glu_LIBRARY=$EBROOTOPENGL/lib/libGLU.so "
+
+configopts += "-DVTK_WRAP_PYTHON=ON "
+configopts += "-DVTK_PYTHON_VERSION=%(pyshortver)s "
+configopts += "-DPYTHON_EXECUTABLE:PATH=$EBROOTPYTHON/bin/python%(pyshortver)s "
+configopts += "-DPYTHON_INCLUDE_DIR:PATH=$EBROOTPYTHON/include/python%(pyshortver)s "
+configopts += "-DPYTHON_LIBRARY:PATH=$EBROOTPYTHON/lib/libpython%%(pyshortver)s.%s " % SHLIB_EXT
+
+configopts += "-DHDF5_INCLUDE_DIRS=$EBROOTHDF5/include "
+
+configopts += "-DModule_vtkAcceleratorsVTKm:BOOL=ON "
+# configopts += "-DModule_vtkDomainsMicroscopy:BOOL=OFF "
+# configopts += "-DModule_vtkDomainsParallelChemistry:BOOL=OFF "
+# configopts += "-DModule_vtkFiltersOpenTurns:BOOL=OFF "
+# configopts += "-DModule_vtkFiltersParallelDIY2:BOOL=OFF "
+# configopts += "-DModule_vtkFiltersParallelFlowPaths:BOOL=OFF "
+configopts += "-DModule_vtkFiltersParallelGeometry:BOOL=ON "
+configopts += "-DModule_vtkFiltersParallelMPI:BOOL=ON "
+configopts += "-DModule_vtkFiltersParallelStatistics:BOOL=ON "
+# configopts += "-DModule_vtkFiltersParallelVerdict:BOOL=OFF "
+# configopts += "-DModule_vtkFiltersReebGraph:BOOL=OFF "
+# configopts += "-DModule_vtkGUISupportQt:BOOL=OFF "
+# configopts += "-DModule_vtkGUISupportQtOpenGL:BOOL=OFF "
+# configopts += "-DModule_vtkGUISupportQtSQL:BOOL=OFF "
+# configopts += "-DModule_vtkGUISupportQtWebkit:BOOL=OFF "
+# configopts += "-DModule_vtkGeovisGDAL:BOOL=OFF "
+# configopts += "-DModule_vtkIOADIOS:BOOL=OFF "
+# configopts += "-DModule_vtkIOFFMPEG:BOOL=OFF "
+# configopts += "-DModule_vtkIOGDAL:BOOL=OFF "
+# configopts += "-DModule_vtkIOGeoJSON:BOOL=OFF "
+# configopts += "-DModule_vtkIOLAS:BOOL=OFF "
+# configopts += "-DModule_vtkIOMPIImage:BOOL=ON "
+# configopts += "-DModule_vtkIOMPIParallel:BOOL=ON "
+# configopts += "-DModule_vtkIOMotionFX:BOOL=OFF "
+# configopts += "-DModule_vtkIOMySQL:BOOL=OFF "
+# configopts += "-DModule_vtkIOODBC:BOOL=OFF "
+# configopts += "-DModule_vtkIOPDAL:BOOL=OFF "
+# configopts += "-DModule_vtkIOParallelExodus:BOOL=OFF "
+# configopts += "-DModule_vtkIOParallelLSDyna:BOOL=OFF "
+# configopts += "-DModule_vtkIOParallelNetCDF:BOOL=OFF "
+# configopts += "-DModule_vtkIOParallelXdmf3:BOOL=OFF "
+# configopts += "-DModule_vtkIOPostgreSQL:BOOL=OFF "
+# configopts += "-DModule_vtkIOTRUCHAS:BOOL=OFF "
+# configopts += "-DModule_vtkIOVPIC:BOOL=OFF "
+# configopts += "-DModule_vtkIOXdmf2:BOOL=OFF "
+# configopts += "-DModule_vtkIOXdmf3:BOOL=OFF "
+# configopts += "-DModule_vtkImagingOpenGL2:BOOL=OFF "
+# configopts += "-DModule_vtkInfovisBoost:BOOL=OFF "
+# configopts += "-DModule_vtkInfovisBoostGraphAlg:BOOL=OFF
+configopts += "-DModule_vtkParallelMPI:BOOL=ON "
+configopts += "-DModule_vtkPython:BOOL=ON "
+# configopts += "-DModule_vtkPythonInterpreter:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingExternal:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingFreeTypeFontConfig:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingLICOpenGL2:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingMatplotlib:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOSPRay:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOpenVR:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOptiX:BOOL=OFF "
+configopts += "-DModule_vtkRenderingParallel:BOOL=ON "
+configopts += "-DModule_vtkRenderingParallelLIC:BOOL=ON "
+# configopts += "-DModule_vtkRenderingQt:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingSceneGraph:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingTk:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingVolumeAMR:BOOL=OFF "
+# configopts += "-DModule_vtkTclTk:BOOL=OFF "
+# configopts += "-DModule_vtkTestingCore:BOOL=OFF "
+# configopts += "-DModule_vtkTestingGenericBridge:BOOL=OFF "
+# configopts += "-DModule_vtkTestingIOSQL:BOOL=OFF "
+# configopts += "-DModule_vtkTestingRendering:BOOL=OFF "
+# configopts += "-DModule_vtkUtilitiesBenchmarks:BOOL=OFF "
+# configopts += "-DModule_vtkUtilitiesEncodeString:BOOL=OFF "
+# configopts += "-DModule_vtkVPIC:BOOL=OFF "
+configopts += "-DModule_vtkVTKm:BOOL=ON "
+# configopts += "-DModule_vtkViewsGeovis:BOOL=OFF "
+# configopts += "-DModule_vtkViewsQt:BOOL=OFF "
+# configopts += "-DModule_vtkWebCore:BOOL=OFF "
+# configopts += "-DModule_vtkWebGLExporter:BOOL=OFF "
+# configopts += "-DModule_vtkWebPython:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingJava:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingPythonCore:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingTools:BOOL=OFF "
+# configopts += "-DModule_vtkdiy2:BOOL=OFF "
+# configopts += "-DModule_vtkkissfft:BOOL=OFF "
+# configopts += "-DModule_vtkmpi4py:BOOL=OFF "
+# configopts += "-DModule_vtkpegtl:BOOL=OFF "
+# configopts += "-DModule_vtkxdmf2:BOOL=OFF "
+# configopts += "-DModule_vtkxdmf3:BOOL=OFF "
+# configopts += "-DModule_vtkzfp:BOOL=OFF "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+# Install a egg-info file so VTK is more python friendly, required for mayavi
+local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info'
+local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info'
+postinstallcmds = [
+    'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest),
+]
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+sanity_check_paths = {
+    'files': ['bin/vtk%s-%%(version_major_minor)s' % x for x in
+              ['WrapPythonInit', 'WrapPython', 'WrapHierarchy']] +
+             ['bin/pvtkpython', 'bin/vtkpython'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/', 'include/vtk-%(version_major_minor)s'],
+}
+
+sanity_check_commands = [
+    ('python', "-c 'import %(namelower)s'"),
+    ('python', "-c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'"),
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/v/VTK/VTK-8.2.0_python_3.8_compatibility.patch b/Golden_Repo/v/VTK/VTK-8.2.0_python_3.8_compatibility.patch
new file mode 100644
index 0000000000000000000000000000000000000000..60134b1fee16d4856ded561d40795e9a7e521540
--- /dev/null
+++ b/Golden_Repo/v/VTK/VTK-8.2.0_python_3.8_compatibility.patch
@@ -0,0 +1,176 @@
+From 257b9d7b18d5f3db3fe099dc18f230e23f7dfbab Mon Sep 17 00:00:00 2001
+From: David Gobbi <david.gobbi@gmail.com>
+Date: Tue, 20 Aug 2019 17:02:24 -0600
+Subject: [PATCH] Compatibility for Python 3.8
+
+The PyTypeObject struct was modified in Python 3.8, this change is
+required to avoid compile errors.
+---
+ .../PythonInterpreter/vtkPythonStdStreamCaptureHelper.h   | 6 ++++++
+ Wrapping/PythonCore/PyVTKMethodDescriptor.cxx             | 2 +-
+ Wrapping/PythonCore/PyVTKNamespace.cxx                    | 2 +-
+ Wrapping/PythonCore/PyVTKReference.cxx                    | 8 ++++----
+ Wrapping/PythonCore/PyVTKTemplate.cxx                     | 2 +-
+ Wrapping/PythonCore/vtkPythonCompatibility.h              | 8 +++++++-
+ Wrapping/Tools/vtkWrapPythonClass.c                       | 2 +-
+ Wrapping/Tools/vtkWrapPythonEnum.c                        | 2 +-
+ Wrapping/Tools/vtkWrapPythonType.c                        | 2 +-
+ 9 files changed, 23 insertions(+), 11 deletions(-)
+
+diff --git a/Utilities/PythonInterpreter/vtkPythonStdStreamCaptureHelper.h b/Utilities/PythonInterpreter/vtkPythonStdStreamCaptureHelper.h
+index b1c12c83de..14ccfbe928 100644
+--- a/Utilities/PythonInterpreter/vtkPythonStdStreamCaptureHelper.h
++++ b/Utilities/PythonInterpreter/vtkPythonStdStreamCaptureHelper.h
+@@ -140,6 +140,12 @@ static PyTypeObject vtkPythonStdStreamCaptureHelperType = {
+ #if PY_VERSION_HEX >= 0x03040000
+   0, // tp_finalize
+ #endif
++#if PY_VERSION_HEX >= 0x03080000
++  0, // tp_vectorcall
++#if PY_VERSION_HEX < 0x03090000
++  0, // tp_print
++#endif
++#endif
+ };
+ 
+ static PyObject* vtkWrite(PyObject* self, PyObject* args)
+diff --git a/Wrapping/PythonCore/PyVTKMethodDescriptor.cxx b/Wrapping/PythonCore/PyVTKMethodDescriptor.cxx
+index 2b0d443537..3840038498 100644
+--- a/Wrapping/PythonCore/PyVTKMethodDescriptor.cxx
++++ b/Wrapping/PythonCore/PyVTKMethodDescriptor.cxx
+@@ -186,7 +186,7 @@ PyTypeObject PyVTKMethodDescriptor_Type = {
+   sizeof(PyMethodDescrObject),           // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKMethodDescriptor_Delete,          // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+diff --git a/Wrapping/PythonCore/PyVTKNamespace.cxx b/Wrapping/PythonCore/PyVTKNamespace.cxx
+index 71ee2a3516..5cf5bfbe6b 100644
+--- a/Wrapping/PythonCore/PyVTKNamespace.cxx
++++ b/Wrapping/PythonCore/PyVTKNamespace.cxx
+@@ -49,7 +49,7 @@ PyTypeObject PyVTKNamespace_Type = {
+   0,                                     // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKNamespace_Delete,                 // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+diff --git a/Wrapping/PythonCore/PyVTKReference.cxx b/Wrapping/PythonCore/PyVTKReference.cxx
+index 943ac71080..b7104091c0 100644
+--- a/Wrapping/PythonCore/PyVTKReference.cxx
++++ b/Wrapping/PythonCore/PyVTKReference.cxx
+@@ -1010,7 +1010,7 @@ PyTypeObject PyVTKReference_Type = {
+   sizeof(PyVTKReference),                // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKReference_Delete,                 // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+@@ -1067,7 +1067,7 @@ PyTypeObject PyVTKNumberReference_Type = {
+   sizeof(PyVTKReference),                // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKReference_Delete,                 // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+@@ -1124,7 +1124,7 @@ PyTypeObject PyVTKStringReference_Type = {
+   sizeof(PyVTKReference),                // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKReference_Delete,                 // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+@@ -1181,7 +1181,7 @@ PyTypeObject PyVTKTupleReference_Type = {
+   sizeof(PyVTKReference),                // tp_basicsize
+   0,                                     // tp_itemsize
+   PyVTKReference_Delete,                 // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+diff --git a/Wrapping/PythonCore/PyVTKTemplate.cxx b/Wrapping/PythonCore/PyVTKTemplate.cxx
+index be200985b3..340fe7953b 100644
+--- a/Wrapping/PythonCore/PyVTKTemplate.cxx
++++ b/Wrapping/PythonCore/PyVTKTemplate.cxx
+@@ -268,7 +268,7 @@ PyTypeObject PyVTKTemplate_Type = {
+   0,                                     // tp_basicsize
+   0,                                     // tp_itemsize
+   nullptr,                               // tp_dealloc
+-  nullptr,                               // tp_print
++  0,                                     // tp_vectorcall_offset
+   nullptr,                               // tp_getattr
+   nullptr,                               // tp_setattr
+   nullptr,                               // tp_compare
+diff --git a/Wrapping/PythonCore/vtkPythonCompatibility.h b/Wrapping/PythonCore/vtkPythonCompatibility.h
+index 4a767844a6..be208faeef 100644
+--- a/Wrapping/PythonCore/vtkPythonCompatibility.h
++++ b/Wrapping/PythonCore/vtkPythonCompatibility.h
+@@ -64,7 +64,13 @@
+ #endif
+ 
+ // PyTypeObject compatibility
+-#if PY_VERSION_HEX >= 0x03040000
++#if PY_VERSION_HEX >= 0x03090000
++#define VTK_WRAP_PYTHON_SUPPRESS_UNINITIALIZED \
++  0, 0, 0, 0,
++#elif PY_VERSION_HEX >= 0x03080000
++#define VTK_WRAP_PYTHON_SUPPRESS_UNINITIALIZED \
++  0, 0, 0, 0, 0,
++#elif PY_VERSION_HEX >= 0x03040000
+ #define VTK_WRAP_PYTHON_SUPPRESS_UNINITIALIZED \
+   0, 0, 0,
+ #else
+diff --git a/Wrapping/Tools/vtkWrapPythonClass.c b/Wrapping/Tools/vtkWrapPythonClass.c
+index b1e45f8e80..4d558ea081 100644
+--- a/Wrapping/Tools/vtkWrapPythonClass.c
++++ b/Wrapping/Tools/vtkWrapPythonClass.c
+@@ -521,7 +521,7 @@ void vtkWrapPython_GenerateObjectType(
+     "  sizeof(PyVTKObject), // tp_basicsize\n"
+     "  0, // tp_itemsize\n"
+     "  PyVTKObject_Delete, // tp_dealloc\n"
+-    "  nullptr, // tp_print\n"
++    "  0, // tp_vectorcall_offset\n"
+     "  nullptr, // tp_getattr\n"
+     "  nullptr, // tp_setattr\n"
+     "  nullptr, // tp_compare\n"
+diff --git a/Wrapping/Tools/vtkWrapPythonEnum.c b/Wrapping/Tools/vtkWrapPythonEnum.c
+index b933702242..1249362854 100644
+--- a/Wrapping/Tools/vtkWrapPythonEnum.c
++++ b/Wrapping/Tools/vtkWrapPythonEnum.c
+@@ -145,7 +145,7 @@ void vtkWrapPython_GenerateEnumType(
+     "  sizeof(PyIntObject), // tp_basicsize\n"
+     "  0, // tp_itemsize\n"
+     "  nullptr, // tp_dealloc\n"
+-    "  nullptr, // tp_print\n"
++    "  0, // tp_vectorcall_offset\n"
+     "  nullptr, // tp_getattr\n"
+     "  nullptr, // tp_setattr\n"
+     "  nullptr, // tp_compare\n"
+diff --git a/Wrapping/Tools/vtkWrapPythonType.c b/Wrapping/Tools/vtkWrapPythonType.c
+index 744cb1b9d3..0a1375e541 100644
+--- a/Wrapping/Tools/vtkWrapPythonType.c
++++ b/Wrapping/Tools/vtkWrapPythonType.c
+@@ -709,7 +709,7 @@ void vtkWrapPython_GenerateSpecialType(
+     "  sizeof(PyVTKSpecialObject), // tp_basicsize\n"
+     "  0, // tp_itemsize\n"
+     "  Py%s_Delete, // tp_dealloc\n"
+-    "  nullptr, // tp_print\n"
++    "  0, // tp_vectorcall_offset\n"
+     "  nullptr, // tp_getattr\n"
+     "  nullptr, // tp_setattr\n"
+     "  nullptr, // tp_compare\n"
+-- 
+2.24.1
+
diff --git a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb
index da015d63ed316562930d1cec1ebdc2e926c6f4c1..585047becdcc0b838c0c31fa9351e8b38c505587 100644
--- a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb
+++ b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb
@@ -22,7 +22,7 @@ builddependencies = [
 
 dependencies = [
     ('Python', '3.8.5'),
-    ('Java', '1.8', '', True),
+    ('Java', '1.8', '', SYSTEM),
 ]
 
 use_pip = True
diff --git a/README.md b/README.md
index db2aad9a0d653a2d151166348f59e6d34c97aa65..8b54f8407b3f17d9a15e16c445e037bc0811c3f2 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,15 @@
 This is the repo to store all the EasyBuild configuration files, including easyconfigs.
 
 Each stage is in a separate branch, containing all the relevant files for that stage
+
+
+This repository uses [autopep8](https://github.com/hhatto/autopep8) and [pre-commit](https://pre-commit.com). For that, you need to run this on your machine:
+
+```sh
+pip3 install --user autopep8
+pip3 install --user pre-commit
+pre-commit install
+```
+
+After those steps, `pre-commit` will call `autopep8` on each commit, and make small changes pass the pep8 test without needing to do a manual `eb --check-style` and checking each little mistake.
+