diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 04d7f42a69ff22c0b3f82aa43e88e19d91d80d7f..59b7beb8b53b6d8e0d9e698e00201e8458c7a482 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,6 @@
-default:
-  tags: [ public-docker ]
-  image: $CI_REGISTRY/easybuild-docker/easybuild-docker/rocky8-eb-test:latest
+stages:
+  - test
+  - deploy
 
 workflow:
   rules:
@@ -14,7 +14,12 @@ workflow:
         TARGET_BRANCH: '2023'
 
 check_style:
+  stage: test
+  tags: [ public-docker ]
+  image: $CI_REGISTRY/easybuild-docker/easybuild-docker/rocky8-eb-test:latest
   script:
+    - git config --global --add safe.directory $CI_PROJECT_DIR
+    - ml purge && ml EasyBuild # to load latest EasyBuild dev version
     - ml --version && which -a eb && eb --version && eb --show-system-info
     - export SYSTEMNAME="juwelsbooster" # Make this the default for packages like NVHPC
     - export EASYBUILD_INCLUDE_EASYBLOCKS="$CI_PROJECT_DIR/Custom_EasyBlocks/*.py,$CI_PROJECT_DIR/Custom_EasyBlocks/generic/*.py"
@@ -66,7 +71,11 @@ check_style:
 
 full_check_style:
   when: manual
+  stage: test
+  tags: [ public-docker ]
+  image: $CI_REGISTRY/easybuild-docker/easybuild-docker/rocky8-eb-test:latest
   script:
+    - ml purge && ml EasyBuild # to load latest EasyBuild dev version
     - export SYSTEMNAME="juwelsbooster" # Make this the default for packages like NVHPC
     - export EASYBUILD_INCLUDE_EASYBLOCKS="$CI_PROJECT_DIR/Custom_EasyBlocks/*.py,$CI_PROJECT_DIR/Custom_EasyBlocks/generic/*.py"
     - export EASYBUILD_INCLUDE_MODULE_NAMING_SCHEMES="$CI_PROJECT_DIR/Custom_MNS/*.py"
@@ -104,3 +113,73 @@ full_check_style:
     - fi
     - done
     - if [ -n "$faulty" ]; then echo "Faulty EasyConfigs... $faulty"; exit 1; fi
+
+sync_repo_on_HPC:
+  stage: deploy
+  tags:
+    - jacamar
+    - shell
+  script:
+    - cd /p/fastdata/zam/swmanage/EasyBuild/$TARGET_BRANCH
+    - hostname
+    - echo 'Pulling branch '$TARGET_BRANCH
+    - git pull https://$GITLAB_USER:$GITLAB_TOKEN@gitlab.jsc.fz-juelich.de/software-team/easybuild.git $TARGET_BRANCH
+  rules:
+    - if: '$CI_PROJECT_NAMESPACE == "software-team" && $CI_COMMIT_BRANCH == $TARGET_BRANCH'
+
+update_acls:
+  stage: deploy
+  parallel:
+    matrix:
+      - SYSTEM:
+        - juwels
+        - juwels_booster
+        - jurecadc
+        - jusuf
+        - hdfml
+  tags:
+    - jacamar
+    - ${SYSTEM}
+    - shell
+  needs: ['sync_repo_on_HPC']
+  script:
+    - hostname
+    - ml Stages/$TARGET_BRANCH
+    - pushd /p/fastdata/zam/swmanage/EasyBuild/$STAGE/bin
+    - ./setacls -c ../acls.yml --force -m
+  rules:
+    - if: '$CI_PROJECT_NAMESPACE == "software-team" && $CI_COMMIT_BRANCH == $TARGET_BRANCH'
+      changes:
+      - 'acls.yml'
+
+push_public_mirror:
+  stage: deploy
+  tags:
+    - jacamar
+    - juwels_booster
+    - shell
+  needs: ['sync_repo_on_HPC']
+  script:
+    - hostname
+    - ml Stages/$TARGET_BRANCH
+    - cd /p/project/cswmanage/easybuilders-JSC/$TARGET_BRANCH
+    - git pull
+    - ./filter.sh
+    - git add -A
+    - git commit -a -m "Sync"
+    - git push https://$GITHUB_USER:$GITHUB_TOKEN@github.com/easybuilders/JSC.git
+  rules:
+    - if: '$CI_PROJECT_NAMESPACE == "software-team" && $CI_COMMIT_BRANCH == $TARGET_BRANCH'
+  when: manual
+
+pull_public_mirror:
+  stage: deploy
+  tags:
+    - jacamar
+    - shell
+  script:
+    - hostname
+    - cd /p/usersoftware/swmanage/user_installations/$TARGET_BRANCH/
+    - git pull
+  rules:
+    - if: '$CI_PROJECT_NAMESPACE == "software-team" && $CI_COMMIT_BRANCH == $TARGET_BRANCH'
diff --git a/Custom_EasyBlocks/cp2k.py b/Custom_EasyBlocks/cp2k.py
index f2901e2f18590d898c1bbdcfa110aac9ce597404..e37865712693e1f2ff462fa5f875ed4042c5ac07 100644
--- a/Custom_EasyBlocks/cp2k.py
+++ b/Custom_EasyBlocks/cp2k.py
@@ -106,6 +106,7 @@ class EB_CP2K(EasyBlock):
             'typeopt': [True, "Enable optimization", CUSTOM],
             'dbcsr_version': ['2.0.1',"DBCSR version used",CUSTOM],
             'libvori_version': ['-210412',"libvori version used",CUSTOM],
+            'spglib_version': ['1.16.2',"spglib version used",CUSTOM],
         }
         return EasyBlock.extra_options(extra_vars)
 
@@ -133,15 +134,18 @@ class EB_CP2K(EasyBlock):
             cpstringb="cp -r %s../dbcsr-%s/.cp2k %sexts/dbcsr/" %(self.cfg['start_dir'],self.cfg['dbcsr_version'],self.cfg['start_dir'])
 
         vorbis="cd  %s../libvori%s/ && mkdir build && cd build && cmake .. && gmake && cp libvori.a %s/ " %(self.cfg['start_dir'],self.cfg['libvori_version'], self.cfg['start_dir'])
+        spglib="cd  %s../spglib-%s/ && mkdir build && cd build && cmake .. && gmake && cp libsymspg.* %s/  "  %(self.cfg['start_dir'],self.cfg['spglib_version'],self.cfg['start_dir'])   
 #       run_cmd(cpstring)
         self.log.info(cpstring) 
 #       self.log.info(cpstringb) 
         self.log.info(vorbis) 
+        self.log.info(spglib) 
         os.system(cpstring)
         if self.cfg['dbcsr_version'] == '2.1.0':
             os.system(cpstringb)
 
         os.system(vorbis)
+        os.system(spglib)
 
         # correct start dir, if needed
         # recent CP2K versions have a 'cp2k' dir in the unpacked 'cp2k' dir
@@ -260,6 +264,8 @@ class EB_CP2K(EasyBlock):
 
         options['LIBS'] = "-Wl,--start-group %s -Wl,--end-group" % options['LIBS']
         options['LIBS'] = "%s %slibvori.a " % (options['LIBS'], self.cfg['start_dir'])
+        # spglib 
+        options['LIBS'] = "%s %slibsymspg.a " % (options['LIBS'], self.cfg['start_dir'])
 
         # specify correct location for 'data' directory in final installation
         options['DATA_DIR'] = os.path.join(self.installdir, 'data')
diff --git a/Custom_EasyBlocks/hypre.py b/Custom_EasyBlocks/hypre.py
new file mode 100644
index 0000000000000000000000000000000000000000..9ec0f109db8b8f6240c25c49afc5690202a31b22
--- /dev/null
+++ b/Custom_EasyBlocks/hypre.py
@@ -0,0 +1,116 @@
+##
+# Copyright 2009-2022 Ghent University
+#
+# This file is part of EasyBuild,
+# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
+# with support of Ghent University (http://ugent.be/hpc),
+# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be),
+# Flemish Research Foundation (FWO) (http://www.fwo.be/en)
+# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en).
+#
+# https://github.com/easybuilders/easybuild
+#
+# EasyBuild is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation v2.
+#
+# EasyBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with EasyBuild.  If not, see <http://www.gnu.org/licenses/>.
+##
+"""
+EasyBuild support for Hypre, implemented as an easyblock
+@author: Kenneth Hoste (Ghent University)
+@author: Mikael OEhman (Chalmers University of Technology)
+@author: Alex Domingo (Vrije Universiteit Brussel)
+@author: Simon Branford (University of Birmingham)
+"""
+import os
+
+from easybuild.easyblocks.generic.configuremake import ConfigureMake
+from easybuild.tools.build_log import EasyBuildError
+from easybuild.tools.config import build_option
+from easybuild.tools.modules import get_software_root
+from easybuild.tools.systemtools import get_shared_lib_ext
+from easybuild.framework.easyconfig import CUSTOM
+from easybuild.framework.easyblock import EasyBlock
+
+class EB_Hypre(ConfigureMake):
+    """Support for building Hypre."""
+
+    @staticmethod
+    def extra_options():
+        """Add extra easyconfig parameters custom to CHARMM."""
+        extra_vars = {
+            'disable_cuda': [False, "Force disabling CUDA", CUSTOM]
+        }
+        return EasyBlock.extra_options(extra_vars)
+
+
+    def __init__(self, *args, **kwargs):
+        """Easyblock constructor."""
+
+        super(EB_Hypre, self).__init__(*args, **kwargs)
+
+        self.config_shared = False
+        self.config_static = False
+
+    def configure_step(self):
+        """Configure Hypre build after setting extra configure options."""
+
+        if '--enable-shared' in self.cfg['configopts']:
+            self.config_shared = True
+            ext_libs = 'LIB%s'
+        else:
+            self.config_static = True
+            ext_libs = '%s_STATIC_LIBS'
+
+        # Use BLAS/LAPACK from EB
+        for dep in ["BLAS", "LAPACK"]:
+            blas_libs = ' '.join(os.getenv(ext_libs % dep).split(','))
+            blas_libs = blas_libs.replace('-l', '')  # Remove any '-l' as those are prepended for shared builds
+            self.cfg.update('configopts', '--with-%s-libs="%s"' % (dep.lower(), blas_libs))
+            self.cfg.update('configopts', '--with-%s-lib-dirs="%s"' % (dep.lower(),
+                                                                       os.getenv('%s_LIB_DIR' % dep)))
+
+        # Use MPI implementation from EB
+        self.cfg.update('configopts', '--with-MPI-include=%s' % os.getenv('MPI_INC_DIR'))
+
+        if (get_software_root('CUDA') and not(self.cfg['disable_cuda'])):
+            self.cfg.update('configopts', '--with-cuda')
+
+            cuda_cc = build_option('cuda_compute_capabilities') or self.cfg['cuda_compute_capabilities']
+            if not cuda_cc:
+                raise EasyBuildError('List of CUDA compute capabilities must be specified, either via '
+                                     'cuda_compute_capabilities easyconfig parameter or via '
+                                     '--cuda-compute-capabilities')
+
+            cuda_cc_string = ' '.join([x.replace('.', '') for x in cuda_cc])
+            self.cfg.update('configopts', '--with-gpu-arch="%s"' % cuda_cc_string)
+        else:
+            self.cfg.update('configopts', '--with-cuda=NO')
+
+
+        super(EB_Hypre, self).configure_step()
+
+    def sanity_check_step(self):
+        """Custom sanity check for Hypre."""
+
+        # Add static and shared libs depending on configopts
+        hypre_libs = list()
+        if self.config_shared:
+            shlib_ext = get_shared_lib_ext()
+            hypre_libs.append(os.path.join('lib', 'libHYPRE.%s' % shlib_ext))
+        if self.config_static:
+            hypre_libs.append(os.path.join('lib', 'libHYPRE.a'))
+
+        custom_paths = {
+            'files': hypre_libs,
+            'dirs': ['include']
+        }
+
+        super(EB_Hypre, self).sanity_check_step(custom_paths=custom_paths) 
diff --git a/Custom_EasyBlocks/juliapackage.py b/Custom_EasyBlocks/juliapackage.py
index 58cf4cd4b285828e0e936c14f9c31a1806565a50..f0c334623cb0b3bfd1e96f732e90edaa9a406b85 100644
--- a/Custom_EasyBlocks/juliapackage.py
+++ b/Custom_EasyBlocks/juliapackage.py
@@ -147,7 +147,10 @@ class JuliaPackage(ExtensionEasyBlock):
         Custom sanity check for Julia packages
         """
         #NOTE: we don't use Pkg.status with arguments as only supported for Julia >=v1.1
-        cmd = "unset EBJULIA_USER_DEPOT_PATH && unset EBJULIA_ADMIN_DEPOT_PATH && export JULIA_DEPOT_PATH=%s && export JULIA_PROJECT=%s && julia --eval 'using Pkg; Pkg.status()'" % (self.depot, self.projectdir)
+        # if juliaver >= 1.1:
+        cmd = "unset EBJULIA_USER_DEPOT_PATH && unset EBJULIA_ADMIN_DEPOT_PATH && export JULIA_DEPOT_PATH=%s && export JULIA_PROJECT=%s && julia --eval 'using Pkg; Pkg.status(\"%s\")'" % (self.depot, self.projectdir, self.package_name)
+        # else:
+        #    cmd = "unset EBJULIA_USER_DEPOT_PATH && unset EBJULIA_ADMIN_DEPOT_PATH && export JULIA_DEPOT_PATH=%s && export JULIA_PROJECT=%s && julia --eval 'using Pkg; Pkg.status()'" % (self.depot, self.projectdir)
         cmdttdouterr, _ = run_cmd(cmd, log_all=True, simple=False, regexp=False)
         self.log.error("Julia package %s sanity returned %s" % (self.name, cmdttdouterr))
         return len(parse_log_for_error(cmdttdouterr, regExp="%s\s+v%s" % (self.package_name, self.version))) != 0
diff --git a/Custom_EasyBlocks/petsc.py b/Custom_EasyBlocks/petsc.py
new file mode 100644
index 0000000000000000000000000000000000000000..e6a38b75cadd5053742febcdbe559ba2105551f1
--- /dev/null
+++ b/Custom_EasyBlocks/petsc.py
@@ -0,0 +1,437 @@
+##
+# Copyright 2009-2023 Ghent University
+#
+# This file is part of EasyBuild,
+# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
+# with support of Ghent University (http://ugent.be/hpc),
+# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be),
+# Flemish Research Foundation (FWO) (http://www.fwo.be/en)
+# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en).
+#
+# https://github.com/easybuilders/easybuild
+#
+# EasyBuild is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation v2.
+#
+# EasyBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with EasyBuild.  If not, see <http://www.gnu.org/licenses/>.
+##
+"""
+EasyBuild support for PETSc, implemented as an easyblock
+
+@author: Kenneth Hoste (Ghent University)
+"""
+import os
+import re
+from distutils.version import LooseVersion
+
+import easybuild.tools.environment as env
+import easybuild.tools.toolchain as toolchain
+from easybuild.easyblocks.generic.configuremake import ConfigureMake
+from easybuild.framework.easyconfig import BUILD, CUSTOM
+from easybuild.tools.build_log import EasyBuildError
+from easybuild.tools.filetools import symlink, apply_regex_substitutions
+from easybuild.tools.modules import get_software_root, get_software_version
+from easybuild.tools.run import run_cmd
+from easybuild.tools.systemtools import get_shared_lib_ext
+from easybuild.tools.py2vs3 import string_type
+
+NO_MPI_CXX_EXT_FLAGS = '-DOMPI_SKIP_MPICXX -DMPICH_SKIP_MPICXX'
+
+
+class EB_PETSc(ConfigureMake):
+    """Support for building and installing PETSc"""
+
+    def __init__(self, *args, **kwargs):
+        """Initialize PETSc specific variables."""
+        super(EB_PETSc, self).__init__(*args, **kwargs)
+
+        self.petsc_arch = ""
+        self.petsc_subdir = ""
+        self.prefix_inc = ''
+        self.prefix_lib = ''
+        self.prefix_bin = ''
+
+        self.with_python = False
+
+        if self.cfg['sourceinstall']:
+            self.prefix_inc = self.petsc_subdir
+            self.prefix_lib = os.path.join(self.petsc_subdir, self.petsc_arch)
+            self.build_in_installdir = True
+
+        if LooseVersion(self.version) >= LooseVersion("3.9"):
+            self.prefix_bin = os.path.join(self.prefix_inc, 'lib', 'petsc')
+
+    @staticmethod
+    def extra_options():
+        """Add extra config options specific to PETSc."""
+        extra_vars = {
+            'sourceinstall': [False, "Indicates whether a source installation should be performed", CUSTOM],
+            'shared_libs': [False, "Build shared libraries", CUSTOM],
+            'with_papi': [False, "Enable PAPI support", CUSTOM],
+            'papi_inc': ['/usr/include', "Path for PAPI include files", CUSTOM],
+            'papi_lib': ['/usr/lib64/libpapi.so', "Path for PAPI library", CUSTOM],
+            'runtest': ['test', "Make target to test build", BUILD],
+            'test_parallel': [
+                None,
+                "Number of parallel PETSc tests launched. If unset, 'parallel' will be used",
+                CUSTOM
+            ],
+            'download_deps_static': [[], "Dependencies that should be downloaded and installed static", CUSTOM],
+            'download_deps_shared': [[], "Dependencies that should be downloaded and installed shared", CUSTOM],
+            'download_deps': [[], "Dependencies that should be downloaded and installed", CUSTOM]
+        }
+        return ConfigureMake.extra_options(extra_vars)
+
+    def prepare_step(self, *args, **kwargs):
+        """Prepare build environment."""
+
+        super(EB_PETSc, self).prepare_step(*args, **kwargs)
+
+        # build with Python support if Python is loaded as a non-build (runtime) dependency
+        build_deps = self.cfg.dependencies(build_only=True)
+        if get_software_root('Python') and not any(x['name'] == 'Python' for x in build_deps):
+            self.with_python = True
+            self.log.info("Python included as runtime dependency, so enabling Python support")
+
+    def configure_step(self):
+        """
+        Configure PETSc by setting configure options and running configure script.
+
+        Configure procedure is much more concise for older versions (< v3).
+        """
+        if LooseVersion(self.version) >= LooseVersion("3"):
+            # make the install dir first if we are doing a download install, then keep it for the rest of the way
+            deps = self.cfg["download_deps"] + self.cfg["download_deps_static"] + self.cfg["download_deps_shared"]
+            if deps:
+                self.log.info("Creating the installation directory before the configure.")
+                self.make_installdir()
+                self.cfg["keeppreviousinstall"] = True
+                for dep in set(deps):
+                    self.cfg.update('configopts', '--download-%s=1' % dep)
+                for dep in self.cfg["download_deps_static"]:
+                    self.cfg.update('configopts', '--download-%s-shared=0' % dep)
+                for dep in self.cfg["download_deps_shared"]:
+                    self.cfg.update('configopts', '--download-%s-shared=1' % dep)
+
+            # compilers
+            self.cfg.update('configopts', '--with-cc="%s"' % os.getenv('CC'))
+            self.cfg.update('configopts', '--with-cxx="%s" --with-c++-support' % os.getenv('CXX'))
+            self.cfg.update('configopts', '--with-fc="%s"' % os.getenv('F90'))
+
+            # compiler flags
+            # Don't build with MPI c++ bindings as this leads to a hard dependency
+            # on libmpi and libmpi_cxx even for C code and non-MPI code
+            cxxflags = os.getenv('CXXFLAGS') + ' ' + NO_MPI_CXX_EXT_FLAGS
+            if LooseVersion(self.version) >= LooseVersion("3.5"):
+                self.cfg.update('configopts', '--CFLAGS="%s"' % os.getenv('CFLAGS'))
+                self.cfg.update('configopts', '--CXXFLAGS="%s"' % cxxflags)
+                self.cfg.update('configopts', '--FFLAGS="%s"' % os.getenv('F90FLAGS'))
+            else:
+                self.cfg.update('configopts', '--with-cflags="%s"' % os.getenv('CFLAGS'))
+                self.cfg.update('configopts', '--with-cxxflags="%s"' % cxxflags)
+                self.cfg.update('configopts', '--with-fcflags="%s"' % os.getenv('F90FLAGS'))
+
+            if not self.toolchain.comp_family() == toolchain.GCC:  # @UndefinedVariable
+                self.cfg.update('configopts', '--with-gnu-compilers=0')
+
+            # MPI
+            if self.toolchain.options.get('usempi', None):
+                self.cfg.update('configopts', '--with-mpi=1')
+
+            # build options
+            self.cfg.update('configopts', '--with-build-step-np=%s' % self.cfg['parallel'])
+            self.cfg.update('configopts', '--with-shared-libraries=%d' % self.cfg['shared_libs'])
+            self.cfg.update('configopts', '--with-debugging=%d' % self.toolchain.options['debug'])
+            self.cfg.update('configopts', '--with-pic=%d' % self.toolchain.options['pic'])
+            self.cfg.update('configopts', '--with-x=0 --with-windows-graphics=0')
+
+            # PAPI support
+            if self.cfg['with_papi']:
+                papi_inc = self.cfg['papi_inc']
+                papi_inc_file = os.path.join(papi_inc, "papi.h")
+                papi_lib = self.cfg['papi_lib']
+                if os.path.isfile(papi_inc_file) and os.path.isfile(papi_lib):
+                    self.cfg.update('configopts', '--with-papi=1')
+                    self.cfg.update('configopts', '--with-papi-include=%s' % papi_inc)
+                    self.cfg.update('configopts', '--with-papi-lib=%s' % papi_lib)
+                else:
+                    raise EasyBuildError("PAPI header (%s) and/or lib (%s) not found, can not enable PAPI support?",
+                                         papi_inc_file, papi_lib)
+
+            # Python extensions_step
+            if self.with_python:
+
+                # enable numpy support, but only if numpy is available
+                (_, ec) = run_cmd("python -c 'import numpy'", log_all=True, simple=False)
+                if ec == 0:
+                    self.cfg.update('configopts', '--with-numpy=1')
+
+                # enable mpi4py support, but only if mpi4py is available
+                (_, ec) = run_cmd("python -c 'import mpi4py'", log_all=True, simple=False)
+                if ec == 0:
+                    with_mpi4py_opt = '--with-mpi4py'
+                    if self.cfg['shared_libs'] and with_mpi4py_opt not in self.cfg['configopts']:
+                        self.cfg.update('configopts', '%s=1' % with_mpi4py_opt)
+
+            # FFTW, ScaLAPACK (and BLACS for older PETSc versions)
+            deps = ["ScaLAPACK"] #FFTW
+            if LooseVersion(self.version) < LooseVersion("3.5"):
+                deps.append("BLACS")
+            for dep in deps:
+                libdir = os.getenv('%s_LIB_DIR' % dep.upper())
+                libs = os.getenv('%s_STATIC_LIBS' % dep.upper())
+                if libdir and libs:
+                    with_arg = "--with-%s" % dep.lower()
+                    self.cfg.update('configopts', '%s=1' % with_arg)
+                    self.cfg.update('configopts', '%s-lib=[%s/%s]' % (with_arg, libdir, libs))
+
+                    inc = os.getenv('%s_INC_DIR' % dep.upper())
+                    if inc:
+                        self.cfg.update('configopts', '%s-include=%s' % (with_arg, inc))
+                else:
+                    self.log.info("Missing inc/lib info, so not enabling %s support." % dep)
+
+
+
+
+
+
+            # BLAS, LAPACK libraries
+            bl_libdir = os.getenv('BLAS_LAPACK_LIB_DIR')
+            bl_libs = os.getenv('BLAS_LAPACK_STATIC_LIBS')
+            if bl_libdir and bl_libs:
+                self.cfg.update('configopts', '--with-blas-lapack-lib=[%s/%s]' % (bl_libdir, bl_libs))
+            else:
+                raise EasyBuildError("One or more environment variables for BLAS/LAPACK not defined?")
+
+            # additional dependencies
+            # filter out deps handled seperately
+            sep_deps = ['BLACS', 'BLAS', 'CMake', 'LAPACK', 'numpy', #'FFTW'
+                        'mpi4py', 'papi', 'ScaLAPACK', 'SciPy-bundle', 'SuiteSparse']
+            # SCOTCH has to be treated separately since they add weird postfixes
+            # to library names from SCOTCH 7.0.1 or PETSc version 3.17.
+            if (LooseVersion(self.version) >= LooseVersion("3.17")):
+                sep_deps.append('SCOTCH')
+            depfilter = [d['name'] for d in self.cfg.builddependencies()] + sep_deps
+
+            deps = [dep['name'] for dep in self.cfg.dependencies() if not dep['name'] in depfilter]
+            for dep in deps:
+                if isinstance(dep, string_type):
+                    dep = (dep, dep)
+                deproot = get_software_root(dep[0])
+                if deproot:
+                    if (LooseVersion(self.version) >= LooseVersion("3.5")) and (dep[1] == "SCOTCH"):
+                        withdep = "--with-pt%s" % dep[1].lower()  # --with-ptscotch is the configopt PETSc >= 3.5
+                    else:
+                        withdep = "--with-%s" % dep[1].lower()
+                    self.cfg.update('configopts', '%s=1 %s-dir=%s' % (withdep, withdep, deproot))
+
+            # SCOTCH has to be treated separately since they add weird postfixes
+            # to library names from SCOTCH 7.0.1 or PETSc version 3.17.
+            scotch = get_software_root('SCOTCH')
+            scotch_ver = get_software_version('SCOTCH')
+            if (scotch and LooseVersion(scotch_ver) >= LooseVersion("7.0")):
+                withdep = "--with-ptscotch"
+                scotch_inc = [os.path.join(scotch, "include")]
+                inc_spec = "-include=[%s]" % ','.join(scotch_inc)
+
+                # For some reason there is a v3 suffix added to libptscotchparmetis
+                # which is the reason for this new code.
+                req_scotch_libs = ['libesmumps.a', 'libptesmumps.a', 'libptscotch.a',
+                                   'libptscotcherr.a', 'libptscotchparmetisv3.a', 'libscotch.a',
+                                   'libscotcherr.a']
+                scotch_libs = [os.path.join(scotch, "lib", x) for x in req_scotch_libs]
+                lib_spec = "-lib=[%s]" % ','.join(scotch_libs)
+                self.cfg.update('configopts', ' '.join([withdep + spec for spec in ['=1', inc_spec, lib_spec]]))
+
+            # SuiteSparse options changed in PETSc 3.5,
+            suitesparse = get_software_root('SuiteSparse')
+            if suitesparse:
+                if LooseVersion(self.version) >= LooseVersion("3.5"):
+                    withdep = "--with-suitesparse"
+                    # specified order of libs matters!
+                    ss_libs = ["UMFPACK", "KLU", "CHOLMOD", "BTF", "CCOLAMD", "COLAMD", "CAMD", "AMD"]
+                    # More libraries added after version 3.17
+                    if LooseVersion(self.version) >= LooseVersion("3.17"):
+                        # specified order of libs matters!
+                        ss_libs = ["UMFPACK", "KLU", "SPQR", "CHOLMOD", "BTF", "CCOLAMD",
+                                   "COLAMD", "CSparse", "CXSparse", "LDL", "RBio",
+                                   "SLIP_LU", "CAMD", "AMD"]
+
+                    suitesparse_inc = [os.path.join(suitesparse, x, "Include")
+                                       for x in ss_libs]
+                    suitesparse_inc.append(os.path.join(suitesparse, "SuiteSparse_config"))
+                    inc_spec = "-include=[%s]" % ','.join(suitesparse_inc)
+
+                    suitesparse_libs = [os.path.join(suitesparse, x, "Lib", "lib%s.a" % x.replace("_", "").lower())
+                                        for x in ss_libs]
+                    suitesparse_libs.append(os.path.join(suitesparse, "SuiteSparse_config", "libsuitesparseconfig.a"))
+                    lib_spec = "-lib=[%s]" % ','.join(suitesparse_libs)
+                else:
+                    # CHOLMOD and UMFPACK are part of SuiteSparse (PETSc < 3.5)
+                    withdep = "--with-umfpack"
+                    inc_spec = "-include=%s" % os.path.join(suitesparse, "UMFPACK", "Include")
+                    # specified order of libs matters!
+                    umfpack_libs = [os.path.join(suitesparse, x, "Lib", "lib%s.a" % x.lower())
+                                    for x in ["UMFPACK", "CHOLMOD", "COLAMD", "AMD"]]
+                    lib_spec = "-lib=[%s]" % ','.join(umfpack_libs)
+
+                self.cfg.update('configopts', ' '.join([withdep + spec for spec in ['=1', inc_spec, lib_spec]]))
+
+            # set PETSC_DIR for configure (env) and build_step
+            env.setvar('PETSC_DIR', self.cfg['start_dir'])
+            self.cfg.update('buildopts', 'PETSC_DIR=%s' % self.cfg['start_dir'])
+
+            if self.cfg['sourceinstall']:
+                # run configure without --prefix (required)
+                cmd = "%s ./configure %s" % (self.cfg['preconfigopts'], self.cfg['configopts'])
+                (out, _) = run_cmd(cmd, log_all=True, simple=False)
+            else:
+                out = super(EB_PETSc, self).configure_step()
+
+            # check for errors in configure
+            error_regexp = re.compile("ERROR")
+            if error_regexp.search(out):
+                raise EasyBuildError("Error(s) detected in configure output!")
+
+            if self.cfg['sourceinstall']:
+                # figure out PETSC_ARCH setting
+                petsc_arch_regex = re.compile(r"^\s*PETSC_ARCH:\s*(\S+)$", re.M)
+                res = petsc_arch_regex.search(out)
+                if res:
+                    self.petsc_arch = res.group(1)
+                    self.cfg.update('buildopts', 'PETSC_ARCH=%s' % self.petsc_arch)
+                else:
+                    raise EasyBuildError("Failed to determine PETSC_ARCH setting.")
+
+            self.petsc_subdir = '%s-%s' % (self.name.lower(), self.version)
+
+        else:  # old versions (< 3.x)
+
+            self.cfg.update('configopts', '--prefix=%s' % self.installdir)
+            self.cfg.update('configopts', '--with-shared=1')
+
+            # additional dependencies
+            for dep in ["SCOTCH"]:
+                deproot = get_software_root(dep)
+                if deproot:
+                    withdep = "--with-%s" % dep.lower()
+                    self.cfg.update('configopts', '%s=1 %s-dir=%s' % (withdep, withdep, deproot))
+
+            cmd = "./config/configure.py %s" % self.get_cfg('configopts')
+            run_cmd(cmd, log_all=True, simple=True)
+
+        # Make sure to set test_parallel before self.cfg['parallel'] is set to None
+        if self.cfg['test_parallel'] is None and self.cfg['parallel']:
+            self.cfg['test_parallel'] = self.cfg['parallel']
+
+        # PETSc > 3.5, make does not accept -j
+        # to control parallel build, we need to specify MAKE_NP=... as argument to 'make' command
+        if LooseVersion(self.version) >= LooseVersion("3.5"):
+            self.cfg.update('buildopts', "MAKE_NP=%s" % self.cfg['parallel'])
+            self.cfg['parallel'] = None
+
+    # default make should be fine
+
+    def test_step(self):
+        """
+        Test the compilation
+        """
+
+        # Each PETSc test may use multiple threads, so running "self.cfg['parallel']" of them may lead to
+        # some oversubscription every now and again. Not a big deal, but if needed a reduced parallelism
+        # can be specified with test_parallel - and it takes priority
+        paracmd = ''
+        self.log.info("In test_step: %s" % self.cfg['test_parallel'])
+        if self.cfg['test_parallel'] is not None:
+            paracmd = "-j %s" % self.cfg['test_parallel']
+
+        if self.cfg['runtest']:
+            cmd = "%s make %s %s %s" % (self.cfg['pretestopts'], paracmd, self.cfg['runtest'], self.cfg['testopts'])
+            (out, _) = run_cmd(cmd, log_all=True, simple=False)
+
+            return out
+
+    def install_step(self):
+        """
+        Install using make install (for non-source installations),
+        or by symlinking files (old versions, < 3).
+        """
+        if LooseVersion(self.version) >= LooseVersion("3"):
+            if not self.cfg['sourceinstall']:
+                super(EB_PETSc, self).install_step()
+                petsc_root = self.installdir
+            else:
+                petsc_root = os.path.join(self.installdir, self.petsc_subdir)
+            # Remove MPI-CXX flags added during configure to prevent them from being passed to consumers of PETsc
+            petsc_variables_path = os.path.join(petsc_root, 'lib', 'petsc', 'conf', 'petscvariables')
+            if os.path.isfile(petsc_variables_path):
+                fix = (r'^(CXX_FLAGS|CXX_LINKER_FLAGS|CONFIGURE_OPTIONS)( = .*)%s(.*)$' % NO_MPI_CXX_EXT_FLAGS,
+                       r'\1\2\3')
+                apply_regex_substitutions(petsc_variables_path, [fix])
+
+        else:  # old versions (< 3.x)
+
+            for fn in ['petscconf.h', 'petscconfiginfo.h', 'petscfix.h', 'petscmachineinfo.h']:
+                includedir = os.path.join(self.installdir, 'include')
+                bmakedir = os.path.join(self.installdir, 'bmake', 'linux-gnu-c-opt')
+                symlink(os.path.join(bmakedir, fn), os.path.join(includedir, fn))
+
+    def make_module_req_guess(self):
+        """Specify PETSc custom values for PATH, CPATH and LD_LIBRARY_PATH."""
+
+        guesses = super(EB_PETSc, self).make_module_req_guess()
+
+        guesses.update({
+            'CPATH': [os.path.join(self.prefix_lib, 'include'), os.path.join(self.prefix_inc, 'include')],
+            'LD_LIBRARY_PATH': [os.path.join(self.prefix_lib, 'lib')],
+            'PATH': [os.path.join(self.prefix_bin, 'bin')],
+            # see https://www.mcs.anl.gov/petsc/documentation/faq.html#sparse-matrix-ascii-format
+            'PYTHONPATH': [os.path.join('lib', 'petsc', 'bin')],
+        })
+
+        return guesses
+
+    def make_module_extra(self):
+        """Set PETSc specific environment variables (PETSC_DIR, PETSC_ARCH)."""
+        txt = super(EB_PETSc, self).make_module_extra()
+
+        if self.cfg['sourceinstall']:
+            txt += self.module_generator.set_environment('PETSC_DIR', os.path.join(self.installdir, self.petsc_subdir))
+            txt += self.module_generator.set_environment('PETSC_ARCH', self.petsc_arch)
+        else:
+            txt += self.module_generator.set_environment('PETSC_DIR', self.installdir)
+
+        return txt
+
+    def sanity_check_step(self):
+        """Custom sanity check for PETSc"""
+
+        if self.cfg['shared_libs']:
+            libext = get_shared_lib_ext()
+        else:
+            libext = 'a'
+
+        custom_paths = {
+            'files': [os.path.join(self.prefix_lib, 'lib', 'libpetsc.%s' % libext)],
+            'dirs': [os.path.join(self.prefix_bin, 'bin'), os.path.join(self.prefix_inc, 'include'),
+                     os.path.join(self.prefix_lib, 'include')]
+        }
+        if LooseVersion(self.version) < LooseVersion('3.6'):
+            custom_paths['dirs'].append(os.path.join(self.prefix_lib, 'conf'))
+        else:
+            custom_paths['dirs'].append(os.path.join(self.prefix_lib, 'lib', 'petsc', 'conf'))
+
+        custom_commands = []
+        if self.with_python:
+            custom_commands.append("python -m PetscBinaryIO --help")
+
+        super(EB_PETSc, self).sanity_check_step(custom_paths=custom_paths, custom_commands=custom_commands)
+
diff --git a/Custom_EasyBlocks/psmpi.py b/Custom_EasyBlocks/psmpi.py
index f9001ee72743f1d69ff3e053f9b1beec60d372cc..419364518739b864645bf158e3db669546142122 100644
--- a/Custom_EasyBlocks/psmpi.py
+++ b/Custom_EasyBlocks/psmpi.py
@@ -60,6 +60,7 @@ class EB_psmpi(EB_MPICH):
             'threaded': [False, "Enable multithreaded build (which is slower)", CUSTOM],
             'pscom_allin_path': [None, "Enable pscom integration by giving its source path", CUSTOM],
             'cuda': [False, "Enable CUDA awareness", CUSTOM],
+            'msa': [False, "Enable MSA awareness", CUSTOM],
         })
         return extra_vars
 
@@ -88,6 +89,10 @@ class EB_psmpi(EB_MPICH):
             self.log.info("Enabling CUDA-Awareness...")
             self.cfg.update('configopts', ' --with-cuda')
 
+        if self.cfg['msa']:
+            self.log.info("Enabling MSA-Awareness...")
+            self.cfg.update('configopts', ' --with-msa-awareness')
+
         # Set confset
         comp_fam = self.toolchain.comp_family()
         if comp_fam in comp_opts:
diff --git a/Custom_EasyBlocks/tensorflow.py b/Custom_EasyBlocks/tensorflow.py
new file mode 100644
index 0000000000000000000000000000000000000000..239634a2c3f6457e31d2bd255cf8534f626c6617
--- /dev/null
+++ b/Custom_EasyBlocks/tensorflow.py
@@ -0,0 +1,1174 @@
+##
+# Copyright 2017-2023 Ghent University
+#
+# This file is part of EasyBuild,
+# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
+# with support of Ghent University (http://ugent.be/hpc),
+# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be),
+# Flemish Research Foundation (FWO) (http://www.fwo.be/en)
+# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en).
+#
+# https://github.com/easybuilders/easybuild
+#
+# EasyBuild is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation v2.
+#
+# EasyBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with EasyBuild.  If not, see <http://www.gnu.org/licenses/>.
+##
+"""
+EasyBuild support for building and installing TensorFlow, implemented as an easyblock
+
+@author: Kenneth Hoste (HPC-UGent)
+@author: Ake Sandgren (Umea University)
+@author: Damian Alvarez (Forschungzentrum Juelich GmbH)
+@author: Alexander Grund (TU Dresden)
+"""
+import glob
+import os
+import re
+import stat
+import tempfile
+
+import easybuild.tools.environment as env
+import easybuild.tools.toolchain as toolchain
+from easybuild.easyblocks.generic.pythonpackage import PythonPackage, det_python_version
+from easybuild.easyblocks.python import EXTS_FILTER_PYTHON_PACKAGES
+from easybuild.framework.easyconfig import CUSTOM
+from easybuild.tools import run, LooseVersion
+from easybuild.tools.build_log import EasyBuildError, print_warning
+from easybuild.tools.config import build_option, IGNORE
+from easybuild.tools.filetools import adjust_permissions, apply_regex_substitutions, copy_file, mkdir, resolve_path
+from easybuild.tools.filetools import is_readable, read_file, which, write_file, remove_file
+from easybuild.tools.modules import get_software_root, get_software_version, get_software_libdir
+from easybuild.tools.run import run_cmd
+from easybuild.tools.systemtools import X86_64, get_cpu_architecture, get_os_name, get_os_version
+
+
+CPU_DEVICE = 'cpu'
+GPU_DEVICE = 'gpu'
+
+# Wrapper for Intel(MPI) compilers, where required environment variables
+# are hardcoded to make sure they are present;
+# this is required because Bazel resets the environment in which
+# compiler commands are executed...
+INTEL_COMPILER_WRAPPER = """#!/bin/bash
+
+export CPATH='%(cpath)s'
+
+# Only relevant for Intel compilers.
+export INTEL_LICENSE_FILE='%(intel_license_file)s'
+
+# Only relevant for MPI compiler wrapper (mpiicc/mpicc etc),
+# not for regular compiler.
+export I_MPI_ROOT='%(intel_mpi_root)s'
+
+# Exclude location of this wrapper from $PATH to avoid other potential
+# wrappers calling this wrapper.
+export PATH=$(echo $PATH | tr ':' '\n' | grep -v "^%(wrapper_dir)s$" | tr '\n' ':')
+
+%(compiler_path)s "$@"
+"""
+
+
+def split_tf_libs_txt(valid_libs_txt):
+    """Split the VALID_LIBS entry from the TF file into single names"""
+    entries = valid_libs_txt.split(',')
+    # Remove double quotes and whitespace
+    result = [entry.strip().strip('"') for entry in entries]
+    # Remove potentially trailing empty element due to trailing comma in the txt
+    if not result[-1]:
+        result.pop()
+    return result
+
+
+def get_system_libs_from_tf(source_dir):
+    """Return the valid values for TF_SYSTEM_LIBS from the TensorFlow source directory"""
+    syslibs_path = os.path.join(source_dir, 'third_party', 'systemlibs', 'syslibs_configure.bzl')
+    result = []
+    if os.path.exists(syslibs_path):
+        txt = read_file(syslibs_path)
+        valid_libs_match = re.search(r'VALID_LIBS\s*=\s*\[(.*?)\]', txt, re.DOTALL)
+        if not valid_libs_match:
+            raise EasyBuildError('VALID_LIBS definition not found in %s', syslibs_path)
+        result = split_tf_libs_txt(valid_libs_match.group(1))
+    return result
+
+
+def get_system_libs_for_version(tf_version, as_valid_libs=False):
+    """
+    Determine valid values for $TF_SYSTEM_LIBS for the given TF version
+
+    If as_valid_libs=False (default) then returns 2 dictioniaries:
+        1: Mapping of <EB name> to <TF name>
+        2: Mapping of <package name> to <TF name> (for python extensions)
+    else returns a string formated like the VALID_LIBS variable in third_party/systemlibs/syslibs_configure.bzl
+        Those can be used to check/diff against third_party/systemlibs/syslibs_configure.bzl by running:
+            python -c 'from easybuild.easyblocks.tensorflow import get_system_libs_for_version; \
+                        print(get_system_libs_for_version("2.1.0", as_valid_libs=True))'
+    """
+    tf_version = LooseVersion(tf_version)
+
+    def is_version_ok(version_range):
+        """Return True if the TF version to be installed matches the version_range"""
+        min_version, max_version = version_range.split(':')
+        result = True
+        if min_version and tf_version < LooseVersion(min_version):
+            result = False
+        if max_version and tf_version >= LooseVersion(max_version):
+            result = False
+        return result
+
+    # For these lists check third_party/systemlibs/syslibs_configure.bzl --> VALID_LIBS
+    # Also verify third_party/systemlibs/<name>.BUILD or third_party/systemlibs/<name>/BUILD.system
+    # if it does something "strange" (e.g. link hardcoded headers)
+
+    # Software which is added as a dependency in the EC
+    available_system_libs = {
+        # Format: (<EB name>, <version range>): <TF name>
+        #         <version range> is '<min version>:<exclusive max version>'
+        ('Abseil', '2.9.0:'): 'com_google_absl',
+        ('cURL', '2.0.0:'): 'curl',
+        ('double-conversion', '2.0.0:'): 'double_conversion',
+        ('flatbuffers', '2.0.0:'): 'flatbuffers',
+        ('giflib', '2.0.0:2.1.0'): 'gif_archive',
+        ('giflib', '2.1.0:'): 'gif',
+        ('hwloc', '2.0.0:'): 'hwloc',
+        ('ICU', '2.0.0:'): 'icu',
+        ('JsonCpp', '2.0.0:'): 'jsoncpp_git',
+        ('libjpeg-turbo', '2.0.0:2.2.0'): 'jpeg',
+        ('libjpeg-turbo', '2.2.0:'): 'libjpeg_turbo',
+        ('libpng', '2.0.0:2.1.0'): 'png_archive',
+        ('libpng', '2.1.0:'): 'png',
+        ('LMDB', '2.0.0:'): 'lmdb',
+        ('NASM', '2.0.0:'): 'nasm',
+        ('nsync', '2.0.0:'): 'nsync',
+        ('PCRE', '2.0.0:2.6.0'): 'pcre',
+        ('protobuf', '2.0.0:'): 'com_google_protobuf',
+        ('pybind11', '2.2.0:'): 'pybind11',
+        ('snappy', '2.0.0:'): 'snappy',
+        ('SQLite', '2.0.0:'): 'org_sqlite',
+        ('SWIG', '2.0.0:2.4.0'): 'swig',
+        ('zlib', '2.0.0:2.2.0'): 'zlib_archive',
+        ('zlib', '2.2.0:'): 'zlib',
+    }
+    # Software recognized by TF but which is always disabled (usually because no EC is known)
+    # Format: <TF name>: <version range>
+    unused_system_libs = {
+        'boringssl': '2.0.0:',
+        'com_github_googleapis_googleapis': '2.0.0:2.5.0',
+        'com_github_googlecloudplatform_google_cloud_cpp': '2.0.0:',  # Not used due to $TF_NEED_GCP=0
+        'com_github_grpc_grpc': '2.2.0:',
+        'com_googlesource_code_re2': '2.0.0:',
+        'grpc': '2.0.0:2.2.0',
+    }
+    # Python packages installed as extensions or in the Python module
+    # Will be checked for availabilitly
+    # Format: (<package name>, <version range>): <TF name>
+    python_system_libs = {
+        ('absl', '2.0.0:'): 'absl_py',
+        ('astor', '2.0.0:'): 'astor_archive',
+        ('astunparse', '2.2.0:'): 'astunparse_archive',
+        ('cython', '2.0.0:'): 'cython',  # Part of Python EC
+        ('dill', '2.4.0:'): 'dill_archive',
+        ('enum', '2.0.0:2.8.0'): 'enum34_archive',  # Part of Python3
+        ('flatbuffers', '2.4.0:'): 'flatbuffers',
+        ('functools', '2.0.0:'): 'functools32_archive',  # Part of Python3
+        ('gast', '2.0.0:'): 'gast_archive',
+        ('google.protobuf', '2.0.0:'): 'com_google_protobuf',
+        ('keras_applications', '2.0.0:2.2.0'): 'keras_applications_archive',
+        ('opt_einsum', '2.0.0:'): 'opt_einsum_archive',
+        ('pasta', '2.0.0:'): 'pasta',
+        ('six', '2.0.0:'): 'six_archive',  # Part of Python EC
+        ('tblib', '2.4.0:'): 'tblib_archive',
+        ('termcolor', '2.0.0:'): 'termcolor_archive',
+        ('typing_extensions', '2.4.0:'): 'typing_extensions_archive',
+        ('wrapt', '2.0.0:'): 'wrapt',
+    }
+
+    dependency_mapping = dict((dep_name, tf_name)
+                              for (dep_name, version_range), tf_name in available_system_libs.items()
+                              if is_version_ok(version_range))
+    python_mapping = dict((pkg_name, tf_name)
+                          for (pkg_name, version_range), tf_name in python_system_libs.items()
+                          if is_version_ok(version_range))
+
+    if as_valid_libs:
+        tf_names = [tf_name for tf_name, version_range in unused_system_libs.items()
+                    if is_version_ok(version_range)]
+        tf_names.extend(dependency_mapping.values())
+        tf_names.extend(python_mapping.values())
+        result = '\n'.join(['    "%s",' % name for name in sorted(tf_names)])
+    else:
+        result = dependency_mapping, python_mapping
+    return result
+
+
+def get_bazel_version():
+    """Get the Bazel version as a LooseVersion. Error if not found"""
+    version = get_software_version('Bazel')
+    if version is None:
+        raise EasyBuildError('Failed to determine Bazel version - is it listed as a (build) dependency?')
+    return LooseVersion(version)
+
+
+class EB_TensorFlow(PythonPackage):
+    """Support for building/installing TensorFlow."""
+
+    @staticmethod
+    def extra_options():
+        extra_vars = {
+            'path_filter': [[], "List of patterns to be filtered out in paths in $CPATH and $LIBRARY_PATH", CUSTOM],
+            'with_jemalloc': [None, "Make TensorFlow use jemalloc (usually enabled by default). " +
+                                    "Unsupported starting at TensorFlow 1.12!", CUSTOM],
+            'with_mkl_dnn': [None, "Make TensorFlow use Intel MKL-DNN / oneDNN and configure with --config=mkl "
+                                   "(enabled by default where supported for TensorFlow versions before 2.4.0)",
+                             CUSTOM],
+            'with_xla': [None, "Enable XLA JIT compiler for possible runtime optimization of models", CUSTOM],
+            'test_script': [None, "Script to test TensorFlow installation with", CUSTOM],
+            'test_targets': [[], "List of Bazel targets which should be run during the test step", CUSTOM],
+            'test_tag_filters_cpu': ['', "Comma-separated list of tags to filter for during the CPU test step", CUSTOM],
+            'test_tag_filters_gpu': ['', "Comma-separated list of tags to filter for during the GPU test step", CUSTOM],
+            'testopts_gpu': ['', 'Test options for the GPU test step', CUSTOM],
+            'test_max_parallel': [None, "Maximum number of test jobs to run in parallel (GPU tests are limited by " +
+                                  "the number of GPUs). Use None (default) to automatically determine a value", CUSTOM],
+            'jvm_max_memory': [4096, "Maximum amount of memory in MB used for the JVM running Bazel." +
+                               "Use None to not set a specific limit (uses a default value).", CUSTOM],
+        }
+
+        return PythonPackage.extra_options(extra_vars)
+
+    def __init__(self, *args, **kwargs):
+        """Initialize TensorFlow easyblock."""
+        super(EB_TensorFlow, self).__init__(*args, **kwargs)
+
+        with self.cfg.disable_templating():
+            self.cfg['exts_defaultclass'] = 'PythonPackage'
+
+            self.cfg['exts_default_options']['download_dep_fail'] = True
+            self.cfg['exts_default_options']['use_pip'] = True
+            self.cfg['exts_filter'] = EXTS_FILTER_PYTHON_PACKAGES
+
+        self.system_libs_info = None
+
+        self.test_script = None
+
+        # locate test script (if specified)
+        if self.cfg['test_script']:
+            # try to locate test script via obtain_file (just like sources & patches files)
+            self.test_script = self.obtain_file(self.cfg['test_script'])
+            if self.test_script and os.path.exists(self.test_script):
+                self.log.info("Test script found: %s", self.test_script)
+            else:
+                raise EasyBuildError("Specified test script %s not found!", self.cfg['test_script'])
+
+    def python_pkg_exists(self, name):
+        """Check if the given python package exists/can be imported"""
+        cmd = self.python_cmd + " -c 'import %s'" % name
+        out, ec = run_cmd(cmd, log_ok=False)
+        self.log.debug('Existence check for %s returned %s with output: %s', name, ec, out)
+        return ec == 0
+
+    def handle_jemalloc(self):
+        """Figure out whether jemalloc support should be enabled or not."""
+        if self.cfg['with_jemalloc'] is None:
+            if LooseVersion(self.version) > LooseVersion('1.6'):
+                # jemalloc bundled with recent versions of TensorFlow does not work on RHEL 6 or derivatives,
+                # so disable it automatically if with_jemalloc was left unspecified
+                os_name = get_os_name().replace(' ', '')
+                rh_based_os = any(os_name.startswith(x) for x in ['centos', 'redhat', 'rhel', 'sl'])
+                if rh_based_os and get_os_version().startswith('6.'):
+                    self.log.info("Disabling jemalloc since bundled jemalloc does not work on RHEL 6 and derivatives")
+                    self.cfg['with_jemalloc'] = False
+
+            # if the above doesn't disable jemalloc support, then enable it by default
+            if self.cfg['with_jemalloc'] is None:
+                self.log.info("Enabling jemalloc support by default, since it was left unspecified")
+                self.cfg['with_jemalloc'] = True
+
+        else:
+            # if with_jemalloc was specified, stick to that
+            self.log.info("with_jemalloc was specified as %s, so sticking to it", self.cfg['with_jemalloc'])
+
+    def write_wrapper(self, wrapper_dir, compiler, i_mpi_root):
+        """Helper function to write a compiler wrapper."""
+        wrapper_txt = INTEL_COMPILER_WRAPPER % {
+            'compiler_path': which(compiler),
+            'intel_mpi_root': i_mpi_root,
+            'cpath': os.getenv('CPATH'),
+            'intel_license_file': os.getenv('INTEL_LICENSE_FILE', os.getenv('LM_LICENSE_FILE')),
+            'wrapper_dir': wrapper_dir,
+        }
+        wrapper = os.path.join(wrapper_dir, compiler)
+        write_file(wrapper, wrapper_txt)
+        if self.dry_run:
+            self.dry_run_msg("Wrapper for '%s' was put in place: %s", compiler, wrapper)
+        else:
+            adjust_permissions(wrapper, stat.S_IXUSR)
+            self.log.info("Using wrapper script for '%s': %s", compiler, which(compiler))
+
+    def verify_system_libs_info(self):
+        """Verifies that the stored info about $TF_SYSTEM_LIBS is complete"""
+        available_libs_src = set(get_system_libs_from_tf(self.start_dir))
+        available_libs_eb = set(split_tf_libs_txt(get_system_libs_for_version(self.version, as_valid_libs=True)))
+        # If available_libs_eb is empty it is not an error e.g. it is not worth trying to make all old ECs work
+        # So we just log it so it can be verified manually if required
+        if not available_libs_eb:
+            self.log.warning('TensorFlow EasyBlock does not have any information for $TF_SYSTEM_LIBS stored. ' +
+                             'This means most dependencies will be downloaded at build time by TensorFlow.\n' +
+                             'Available $TF_SYSTEM_LIBS according to the TensorFlow sources: %s',
+                             sorted(available_libs_src))
+            return
+        # Those 2 sets should be equal. We determine the differences here to report better errors
+        missing_libs = available_libs_src - available_libs_eb
+        unknown_libs = available_libs_eb - available_libs_src
+        if missing_libs or unknown_libs:
+            if not available_libs_src:
+                msg = 'Failed to determine available $TF_SYSTEM_LIBS from the source'
+            else:
+                msg = 'Values for $TF_SYSTEM_LIBS in the TensorFlow EasyBlock are incomplete.\n'
+                if missing_libs:
+                    # Libs available according to TF sources but not listed in this EasyBlock
+                    msg += 'Missing entries for $TF_SYSTEM_LIBS: %s\n' % missing_libs
+                if unknown_libs:
+                    # Libs listed in this EasyBlock but not present in the TF sources -> Removed?
+                    msg += 'Unrecognized entries for $TF_SYSTEM_LIBS: %s\n' % unknown_libs
+                msg += 'The EasyBlock needs to be updated to fully work with TensorFlow version %s' % self.version
+            if build_option('strict') == run.ERROR:
+                raise EasyBuildError(msg)
+            else:
+                print_warning(msg)
+
+    def get_system_libs(self):
+        """
+        Get list of dependencies for $TF_SYSTEM_LIBS
+
+        Returns a tuple of lists: $TF_SYSTEM_LIBS names, include paths, library paths
+        """
+        dependency_mapping, python_mapping = get_system_libs_for_version(self.version)
+        # Some TF dependencies require both a (usually C++) dependency and a Python package
+        deps_with_python_pkg = set(tf_name for tf_name in dependency_mapping.values()
+                                   if tf_name in python_mapping.values())
+
+        system_libs = []
+        cpaths = []
+        libpaths = []
+        ignored_system_deps = []
+
+        # Check direct dependencies
+        dep_names = set(dep['name'] for dep in self.cfg.dependencies())
+        for dep_name, tf_name in sorted(dependency_mapping.items(), key=lambda i: i[0].lower()):
+            if dep_name in dep_names:
+                if tf_name in deps_with_python_pkg:
+                    pkg_name = next(cur_pkg_name for cur_pkg_name, cur_tf_name in python_mapping.items()
+                                    if cur_tf_name == tf_name)
+                    # Simply ignore. Error reporting is done in the other loop
+                    if not self.python_pkg_exists(pkg_name):
+                        continue
+                system_libs.append(tf_name)
+                # When using cURL (which uses the system OpenSSL), we also need to use "boringssl"
+                # which essentially resolves to using OpenSSL as the API and library names are compatible
+                if dep_name == 'cURL':
+                    system_libs.append('boringssl')
+                sw_root = get_software_root(dep_name)
+                # Dependency might be filtered via --filter-deps. In that case assume globally installed version
+                if not sw_root:
+                    continue
+                incpath = os.path.join(sw_root, 'include')
+                if os.path.exists(incpath):
+                    cpaths.append(incpath)
+                    if dep_name == 'JsonCpp' and LooseVersion(self.version) < LooseVersion('2.3'):
+                        # Need to add the install prefix or patch the sources:
+                        # https://github.com/tensorflow/tensorflow/issues/42303
+                        cpaths.append(sw_root)
+                    if dep_name == 'protobuf':
+                        if LooseVersion(self.version) < LooseVersion('2.4'):
+                            # Need to set INCLUDEDIR as TF wants to symlink files from there:
+                            # https://github.com/tensorflow/tensorflow/issues/37835
+                            env.setvar('INCLUDEDIR', incpath)
+                        else:
+                            env.setvar('PROTOBUF_INCLUDE_PATH', incpath)
+                libpath = get_software_libdir(dep_name)
+                if libpath:
+                    libpaths.append(os.path.join(sw_root, libpath))
+            else:
+                ignored_system_deps.append('%s (Dependency %s)' % (tf_name, dep_name))
+
+        for pkg_name, tf_name in sorted(python_mapping.items(), key=lambda i: i[0].lower()):
+            if self.python_pkg_exists(pkg_name):
+                # If it is in deps_with_python_pkg we already added it
+                if tf_name not in deps_with_python_pkg:
+                    system_libs.append(tf_name)
+            else:
+                ignored_system_deps.append('%s (Python package %s)' % (tf_name, pkg_name))
+
+        # If we use OpenSSL (potentially as a wrapper) somewhere in the chain we must tell TF to use it too
+        openssl_root = get_software_root('OpenSSL')
+        if openssl_root:
+            if 'boringssl' not in system_libs:
+                system_libs.append('boringssl')
+            incpath = os.path.join(openssl_root, 'include')
+            if os.path.exists(incpath):
+                cpaths.append(incpath)
+            libpath = get_software_libdir(dep_name)
+            if libpath:
+                libpaths.append(os.path.join(openssl_root, libpath))
+
+        if ignored_system_deps:
+            print_warning('%d TensorFlow dependencies have not been resolved by EasyBuild. Check the log for details.',
+                          len(ignored_system_deps))
+            self.log.warning('For the following $TF_SYSTEM_LIBS dependencies TensorFlow will download a copy ' +
+                             'because an EB dependency was not found: \n%s\n' +
+                             'EC Dependencies: %s\n' +
+                             'Installed Python packages: %s\n',
+                             ', '.join(ignored_system_deps),
+                             ', '.join(dep_names),
+                             ', '.join(self.get_installed_python_packages()))
+        else:
+            self.log.info("All known TensorFlow $TF_SYSTEM_LIBS dependencies resolved via EasyBuild!")
+
+        return system_libs, cpaths, libpaths
+
+    def setup_build_dirs(self):
+        """Setup temporary build directories"""
+        # This is either the builddir (for standalone builds) or the extension sub folder when TF is an extension
+        # Either way this folder only contains the folder with the sources and hence we can use fixed names
+        # for the subfolders
+        parent_dir = os.path.dirname(self.start_dir)
+        # Path where Bazel will store its output, build artefacts etc.
+        self.output_user_root_dir = os.path.join(parent_dir, 'bazel-root')
+        # Folder where wrapper binaries can be placed, where required. TODO: Replace by --action_env cmds
+        self.wrapper_dir = os.path.join(parent_dir, 'wrapper_bin')
+
+    def configure_step(self):
+        """Custom configuration procedure for TensorFlow."""
+
+        # Bazel seems to not be able to handle a large amount of parallel jobs, e.g. 176 on some Power machines,
+        # and will hang forever building the TensorFlow package.
+        # So limit to something high but still reasonable while allowing ECs to overwrite it
+        if self.cfg['maxparallel'] is None:
+            # Seemingly Bazel around 3.x got better, so double the max there
+            bazel_max = 64 if get_bazel_version() < '3.0.0' else 128
+            self.cfg['parallel'] = min(self.cfg['parallel'], bazel_max)
+
+        binutils_root = get_software_root('binutils')
+        if not binutils_root:
+            raise EasyBuildError("Failed to determine installation prefix for binutils")
+        self.binutils_bin_path = os.path.join(binutils_root, 'bin')
+
+        # filter out paths from CPATH and LIBRARY_PATH. This is needed since bazel will pull some dependencies that
+        # might conflict with dependencies on the system and/or installed with EB. For example: protobuf
+        path_filter = self.cfg['path_filter']
+        if path_filter:
+            self.log.info("Filtering $CPATH and $LIBRARY_PATH with path filter %s", path_filter)
+            for var in ['CPATH', 'LIBRARY_PATH']:
+                path = os.getenv(var).split(os.pathsep)
+                self.log.info("$%s old value was %s" % (var, path))
+                filtered_path = os.pathsep.join([p for fil in path_filter for p in path if fil not in p])
+                env.setvar(var, filtered_path)
+
+        self.setup_build_dirs()
+
+        use_wrapper = False
+        if self.toolchain.comp_family() == toolchain.INTELCOMP:
+            # put wrappers for Intel C/C++ compilers in place (required to make sure license server is found)
+            # cfr. https://github.com/bazelbuild/bazel/issues/663
+            for compiler in ('icc', 'icpc'):
+                self.write_wrapper(self.wrapper_dir, compiler, 'NOT-USED-WITH-ICC')
+            use_wrapper = True
+
+        use_mpi = self.toolchain.options.get('usempi', False)
+        mpi_home = ''
+        if use_mpi:
+            impi_root = get_software_root('impi')
+            if impi_root:
+                # put wrappers for Intel MPI compiler wrappers in place
+                # (required to make sure license server and I_MPI_ROOT are found)
+                for compiler in (os.getenv('MPICC'), os.getenv('MPICXX')):
+                    self.write_wrapper(self.wrapper_dir, compiler, os.getenv('I_MPI_ROOT'))
+                use_wrapper = True
+                # set correct value for MPI_HOME
+                mpi_home = os.path.join(impi_root, 'intel64')
+            else:
+                self.log.debug("MPI module name: %s", self.toolchain.MPI_MODULE_NAME[0])
+                mpi_home = get_software_root(self.toolchain.MPI_MODULE_NAME[0])
+
+            self.log.debug("Derived value for MPI_HOME: %s", mpi_home)
+
+        if use_wrapper:
+            env.setvar('PATH', os.pathsep.join([self.wrapper_dir, os.getenv('PATH')]))
+
+        self.prepare_python()
+
+        self.verify_system_libs_info()
+        self.system_libs_info = self.get_system_libs()
+
+        # Options passed to the target (build/test), e.g. --config arguments
+        self.target_opts = []
+
+        cuda_root = get_software_root('CUDA')
+        cudnn_root = get_software_root('cuDNN')
+        opencl_root = get_software_root('OpenCL')
+        tensorrt_root = get_software_root('TensorRT')
+        nccl_root = get_software_root('NCCL')
+
+        self._with_cuda = bool(cuda_root)
+
+        config_env_vars = {
+            'CC_OPT_FLAGS': os.getenv('CXXFLAGS'),
+            'MPI_HOME': mpi_home,
+            'PYTHON_BIN_PATH': self.python_cmd,
+            'PYTHON_LIB_PATH': os.path.join(self.installdir, self.pylibdir),
+            'TF_CUDA_CLANG': '0',
+            'TF_DOWNLOAD_CLANG': '0',  # Still experimental in TF 2.1.0
+            'TF_ENABLE_XLA': ('0', '1')[bool(self.cfg['with_xla'])],  # XLA JIT support
+            'TF_NEED_CUDA': ('0', '1')[self._with_cuda],
+            'TF_NEED_OPENCL': ('0', '1')[bool(opencl_root)],
+            'TF_NEED_ROCM': '0',
+            'TF_NEED_TENSORRT': '0',
+            'TF_SET_ANDROID_WORKSPACE': '0',
+            'TF_SYSTEM_LIBS': ','.join(self.system_libs_info[0]),
+        }
+        if LooseVersion(self.version) < LooseVersion('1.10'):
+            config_env_vars['TF_NEED_S3'] = '0'  # Renamed to TF_NEED_AWS in 1.9.0-rc2 and 1.10, not 1.9.0
+        # Options removed in 1.12.0
+        if LooseVersion(self.version) < LooseVersion('1.12'):
+            self.handle_jemalloc()
+            config_env_vars.update({
+                'TF_NEED_AWS': '0',  # Amazon AWS Platform
+                'TF_NEED_GCP': '0',  # Google Cloud Platform
+                'TF_NEED_GDR': '0',
+                'TF_NEED_HDFS': '0',  # Hadoop File System
+                'TF_NEED_JEMALLOC': ('0', '1')[self.cfg['with_jemalloc']],
+                'TF_NEED_KAFKA': '0',  # Amazon Kafka Platform
+                'TF_NEED_VERBS': '0',
+            })
+        elif self.cfg['with_jemalloc'] is True:
+            print_warning('Jemalloc is not supported in TensorFlow %s, the EC option with_jemalloc has no effect',
+                          self.version)
+        # Disable support of some features via config switch introduced in 1.12.1
+        if LooseVersion(self.version) >= LooseVersion('1.12.1'):
+            self.target_opts += ['--config=noaws', '--config=nogcp', '--config=nohdfs']
+            # Removed in 2.1
+            if LooseVersion(self.version) < LooseVersion('2.1'):
+                self.target_opts.append('--config=nokafka')
+        # MPI support removed in 2.1
+        if LooseVersion(self.version) < LooseVersion('2.1'):
+            config_env_vars['TF_NEED_MPI'] = ('0', '1')[bool(use_mpi)]
+        # SYCL support removed in 2.4
+        if LooseVersion(self.version) < LooseVersion('2.4'):
+            config_env_vars['TF_NEED_OPENCL_SYCL'] = '0'
+
+        if self._with_cuda:
+            cuda_version = get_software_version('CUDA')
+            cuda_maj_min_ver = '.'.join(cuda_version.split('.')[:2])
+
+            # $GCC_HOST_COMPILER_PATH should be set to path of the actual compiler (not the MPI compiler wrapper)
+            if use_mpi:
+                compiler_path = which(os.getenv('CC_SEQ'))
+            else:
+                compiler_path = which(os.getenv('CC'))
+
+            # list of CUDA compute capabilities to use can be specifed in two ways (where (2) overrules (1)):
+            # (1) in the easyconfig file, via the custom cuda_compute_capabilities;
+            # (2) in the EasyBuild configuration, via --cuda-compute-capabilities configuration option;
+            ec_cuda_cc = self.cfg['cuda_compute_capabilities']
+            cfg_cuda_cc = build_option('cuda_compute_capabilities')
+            cuda_cc = cfg_cuda_cc or ec_cuda_cc or []
+
+            if cfg_cuda_cc and ec_cuda_cc:
+                warning_msg = "cuda_compute_capabilities specified in easyconfig (%s) are overruled by " % ec_cuda_cc
+                warning_msg += "--cuda-compute-capabilities configuration option (%s)" % cfg_cuda_cc
+                print_warning(warning_msg)
+            elif not cuda_cc:
+                warning_msg = "No CUDA compute capabilities specified, so using TensorFlow default "
+                warning_msg += "(which may not be optimal for your system).\nYou should use "
+                warning_msg += "the --cuda-compute-capabilities configuration option or the cuda_compute_capabilities "
+                warning_msg += "easyconfig parameter to specify a list of CUDA compute capabilities to compile with."
+                print_warning(warning_msg)
+
+            # TensorFlow 1.12.1 requires compute capability >= 3.5
+            # see https://github.com/tensorflow/tensorflow/pull/25767
+            if LooseVersion(self.version) >= LooseVersion('1.12.1'):
+                faulty_comp_caps = [x for x in cuda_cc if LooseVersion(x) < LooseVersion('3.5')]
+                if faulty_comp_caps:
+                    error_msg = "TensorFlow >= 1.12.1 requires CUDA compute capabilities >= 3.5, "
+                    error_msg += "found one or more older ones: %s"
+                    raise EasyBuildError(error_msg, ', '.join(faulty_comp_caps))
+
+            if cuda_cc:
+                self.log.info("Compiling with specified list of CUDA compute capabilities: %s", ', '.join(cuda_cc))
+
+            config_env_vars.update({
+                'CUDA_TOOLKIT_PATH': cuda_root,
+                'GCC_HOST_COMPILER_PATH': compiler_path,
+                # This is the binutils bin folder: https://github.com/tensorflow/tensorflow/issues/39263
+                'GCC_HOST_COMPILER_PREFIX': self.binutils_bin_path,
+                'TF_CUDA_COMPUTE_CAPABILITIES': ','.join(cuda_cc),
+                'TF_CUDA_VERSION': cuda_maj_min_ver,
+            })
+
+            # for recent TensorFlow versions, $TF_CUDA_PATHS and $TF_CUBLAS_VERSION must also be set
+            if LooseVersion(self.version) >= LooseVersion('1.14'):
+
+                # figure out correct major/minor version for CUBLAS from cublas_api.h
+                cublas_api_header_glob_pattern = os.path.join(cuda_root, 'targets', '*', 'include', 'cublas_api.h')
+                matches = glob.glob(cublas_api_header_glob_pattern)
+                if len(matches) == 1:
+                    cublas_api_header_path = matches[0]
+                    cublas_api_header_txt = read_file(cublas_api_header_path)
+                else:
+                    raise EasyBuildError("Failed to isolate path to cublas_api.h: %s", matches)
+
+                cublas_ver_parts = []
+                for key in ['CUBLAS_VER_MAJOR', 'CUBLAS_VER_MINOR', 'CUBLAS_VER_PATCH']:
+                    regex = re.compile("^#define %s ([0-9]+)" % key, re.M)
+                    res = regex.search(cublas_api_header_txt)
+                    if res:
+                        cublas_ver_parts.append(res.group(1))
+                    else:
+                        raise EasyBuildError("Failed to find pattern '%s' in %s", regex.pattern, cublas_api_header_path)
+
+                config_env_vars.update({
+                    'TF_CUDA_PATHS': cuda_root,
+                    'TF_CUBLAS_VERSION': '.'.join(cublas_ver_parts),
+                })
+
+            if cudnn_root:
+                cudnn_version = get_software_version('cuDNN')
+                cudnn_maj_min_patch_ver = '.'.join(cudnn_version.split('.')[:3])
+
+                config_env_vars.update({
+                    'CUDNN_INSTALL_PATH': cudnn_root,
+                    'TF_CUDNN_VERSION': cudnn_maj_min_patch_ver,
+                })
+            else:
+                raise EasyBuildError("TensorFlow has a strict dependency on cuDNN if CUDA is enabled")
+            if nccl_root:
+                nccl_version = get_software_version('NCCL')
+                # Ignore the PKG_REVISION identifier if it exists (i.e., report 2.4.6 for 2.4.6-1 or 2.4.6-2)
+                nccl_version = nccl_version.split('-')[0]
+
+                if nccl_version == "default":
+                    nccl_major = ''
+                    nccl_minor = ''
+                    nccl_patch = ''
+                    with open(nccl_root+'/include/nccl.h', 'r') as nccl_header:
+                        for line in nccl_header.readlines():
+                            if '#define NCCL_MAJOR' in line:
+                                nccl_major = line[line.rfind(' ')+1:-1]
+                            if '#define NCCL_MINOR' in line:
+                                nccl_minor = line[line.rfind(' ')+1:-1]
+                            if '#define NCCL_PATCH' in line:
+                                nccl_patch = line[line.rfind(' ')+1:-1]
+                    if nccl_major and nccl_minor and nccl_patch != '':
+                        nccl_version = nccl_major + '.' + nccl_minor + '.' + nccl_patch
+                config_env_vars.update({
+                    'NCCL_INSTALL_PATH': nccl_root,
+                })
+            else:
+                nccl_version = '1.3'  # Use simple downloadable version
+            config_env_vars.update({
+                'TF_NCCL_VERSION': nccl_version,
+            })
+            if tensorrt_root:
+                tensorrt_version = get_software_version('TensorRT')
+                config_env_vars.update({
+                    'TF_NEED_TENSORRT': '1',
+                    'TENSORRT_INSTALL_PATH': tensorrt_root,
+                    'TF_TENSORRT_VERSION': tensorrt_version,
+                })
+
+        configure_py_contents = read_file('configure.py')
+        for key, val in sorted(config_env_vars.items()):
+            if key.startswith('TF_') and key not in configure_py_contents:
+                self.log.warn('Did not find %s option in configure.py. Setting might not have any effect', key)
+            env.setvar(key, val)
+
+        # configure.py (called by configure script) already calls bazel to determine the bazel version
+        # Since 2.3.0 `bazel --version` is used which doesn't extract bazel, prior it did
+        # Hence make sure it doesn't extract into $HOME/.cache/bazel
+        if LooseVersion(self.version) < LooseVersion('2.3.0'):
+            regex_subs = [(r"('bazel', '--batch')",
+                           r"\1, '--output_user_root=%s'" % self.output_user_root_dir)]
+            apply_regex_substitutions('configure.py', regex_subs)
+
+        cmd = self.cfg['preconfigopts'] + './configure ' + self.cfg['configopts']
+        run_cmd(cmd, log_all=True, simple=True)
+
+    def patch_crosstool_files(self):
+        """Patches the CROSSTOOL files to include EasyBuild provided compiler paths"""
+        inc_paths, lib_paths = [], []
+
+        gcc_root = get_software_root('GCCcore') or get_software_root('GCC')
+        if gcc_root:
+            gcc_lib64 = os.path.join(gcc_root, 'lib64')
+            lib_paths.append(gcc_lib64)
+
+            gcc_ver = get_software_version('GCCcore') or get_software_version('GCC')
+
+            # figure out location of GCC include files
+            # make sure we don't pick up the nvptx-none directory by looking for a specific include file
+            res = glob.glob(os.path.join(gcc_root, 'lib', 'gcc', '*', gcc_ver, 'include', 'immintrin.h'))
+            if res and len(res) == 1:
+                gcc_lib_inc = os.path.dirname(res[0])
+                inc_paths.append(gcc_lib_inc)
+            else:
+                raise EasyBuildError("Failed to pinpoint location of GCC include files: %s", res)
+
+            # make sure include-fixed directory is where we expect it to be
+            gcc_lib_inc_fixed = os.path.join(os.path.dirname(gcc_lib_inc), 'include-fixed')
+            if os.path.exists(gcc_lib_inc_fixed):
+                inc_paths.append(gcc_lib_inc_fixed)
+            else:
+                self.log.info("Derived directory %s does not exist, so discarding it", gcc_lib_inc_fixed)
+
+            # also check on location of include/c++/<gcc version> directory
+            gcc_cplusplus_inc = os.path.join(gcc_root, 'include', 'c++', gcc_ver)
+            if os.path.exists(gcc_cplusplus_inc):
+                inc_paths.append(gcc_cplusplus_inc)
+            else:
+                raise EasyBuildError("Derived directory %s does not exist", gcc_cplusplus_inc)
+        else:
+            raise EasyBuildError("Failed to determine installation prefix for GCC")
+
+        cuda_root = get_software_root('CUDA')
+        if cuda_root:
+            inc_paths.append(os.path.join(cuda_root, 'include'))
+            lib_paths.append(os.path.join(cuda_root, 'lib64'))
+
+        # fix hardcoded locations of compilers & tools
+        cxx_inc_dirs = ['cxx_builtin_include_directory: "%s"' % resolve_path(p) for p in inc_paths]
+        cxx_inc_dirs += ['cxx_builtin_include_directory: "%s"' % p for p in inc_paths]
+        regex_subs = [
+            (r'-B/usr/bin/', '-B%s %s' % (self.binutils_bin_path, ' '.join('-L%s/' % p for p in lib_paths))),
+            (r'(cxx_builtin_include_directory:).*', ''),
+            (r'^toolchain {', 'toolchain {\n' + '\n'.join(cxx_inc_dirs)),
+        ]
+        for tool in ['ar', 'cpp', 'dwp', 'gcc', 'gcov', 'ld', 'nm', 'objcopy', 'objdump', 'strip']:
+            path = which(tool)
+            if path:
+                regex_subs.append((os.path.join('/usr', 'bin', tool), path))
+            else:
+                raise EasyBuildError("Failed to determine path to '%s'", tool)
+
+        # -fPIE/-pie and -fPIC are not compatible, so patch out hardcoded occurences of -fPIE/-pie if -fPIC is used
+        if self.toolchain.options.get('pic', None):
+            regex_subs.extend([('-fPIE', '-fPIC'), ('"-pie"', '"-fPIC"')])
+
+        # patch all CROSSTOOL* scripts to fix hardcoding of locations of binutils/GCC binaries
+        for path, dirnames, filenames in os.walk(os.getcwd()):
+            for filename in filenames:
+                if filename.startswith('CROSSTOOL'):
+                    full_path = os.path.join(path, filename)
+                    self.log.info("Patching %s", full_path)
+                    apply_regex_substitutions(full_path, regex_subs)
+
+    def build_step(self):
+        """Custom build procedure for TensorFlow."""
+
+        bazel_version = get_bazel_version()
+
+        # pre-create target installation directory
+        mkdir(os.path.join(self.installdir, self.pylibdir), parents=True)
+
+        # This seems to be no longer required since at least 2.0, likely also for older versions
+        if LooseVersion(self.version) < LooseVersion('2.0'):
+            self.patch_crosstool_files()
+
+        # Options passed to the bazel command
+        self.bazel_opts = [
+            '--output_user_root=%s' % self.output_user_root_dir,
+        ]
+        # Increase time to wait for bazel to start, available since 4.0+
+        if bazel_version >= '4.0.0':
+            self.bazel_opts.append('--local_startup_timeout_secs=300')  # 5min
+
+        # Environment variables and values needed for Bazel actions.
+        action_env = {}
+        # A value of None is interpreted as using the invoking environments value
+        INHERIT = None  # For better readability
+
+        jvm_max_memory = self.cfg['jvm_max_memory']
+        if jvm_max_memory:
+            jvm_startup_memory = min(512, int(jvm_max_memory))
+            self.bazel_opts.extend([
+                '--host_jvm_args=-Xms%sm' % jvm_startup_memory,
+                '--host_jvm_args=-Xmx%sm' % jvm_max_memory
+            ])
+
+        if self.toolchain.options.get('debug', None):
+            self.target_opts.append('--strip=never')
+            self.target_opts.append('--compilation_mode=dbg')
+            self.target_opts.append('--copt="-Og"')
+        else:
+            # build with optimization enabled
+            # cfr. https://docs.bazel.build/versions/master/user-manual.html#flag--compilation_mode
+            self.target_opts.append('--compilation_mode=opt')
+
+            # select 'opt' config section (this is *not* the same as --compilation_mode=opt!)
+            # https://docs.bazel.build/versions/master/user-manual.html#flag--config
+            self.target_opts.append('--config=opt')
+
+        # make Bazel print full command line + make it verbose on failures
+        # https://docs.bazel.build/versions/master/user-manual.html#flag--subcommands
+        # https://docs.bazel.build/versions/master/user-manual.html#flag--verbose_failures
+        self.target_opts.extend(['--subcommands', '--verbose_failures'])
+
+        self.target_opts.append('--jobs=%s' % self.cfg['parallel'])
+
+        if self.toolchain.options.get('pic', None):
+            self.target_opts.append('--copt="-fPIC"')
+
+        # include install location of Python packages in $PYTHONPATH,
+        # and specify that value of $PYTHONPATH should be passed down into Bazel build environment;
+        # this is required to make sure that Python packages included as extensions are found at build time;
+        # see also https://github.com/tensorflow/tensorflow/issues/22395
+        pythonpath = os.getenv('PYTHONPATH', '')
+        env.setvar('PYTHONPATH', os.pathsep.join([os.path.join(self.installdir, self.pylibdir), pythonpath]))
+
+        # Make TF find our modules. LD_LIBRARY_PATH gets automatically added by configure.py
+        cpaths, libpaths = self.system_libs_info[1:]
+        if cpaths:
+            action_env['CPATH'] = ':'.join(cpaths)
+        if libpaths:
+            action_env['LIBRARY_PATH'] = ':'.join(libpaths)
+        action_env['PYTHONPATH'] = INHERIT
+        # Also export $EBPYTHONPREFIXES to handle the multi-deps python setup
+        # See https://github.com/easybuilders/easybuild-easyblocks/pull/1664
+        if 'EBPYTHONPREFIXES' in os.environ:
+            action_env['EBPYTHONPREFIXES'] = INHERIT
+
+        # Ignore user environment for Python
+        action_env['PYTHONNOUSERSITE'] = '1'
+
+        # TF 2 (final) sets this in configure
+        if LooseVersion(self.version) < LooseVersion('2.0'):
+            if self._with_cuda:
+                self.target_opts.append('--config=cuda')
+
+        # note: using --config=mkl results in a significantly different build, with a different
+        # threading model (which may lead to thread oversubscription and significant performance loss,
+        # see https://github.com/easybuilders/easybuild-easyblocks/issues/2577) and different
+        # runtime behavior w.r.t. GPU vs CPU execution of functions like tf.matmul
+        # (see https://github.com/easybuilders/easybuild-easyconfigs/issues/14120),
+        # so make sure you really know you want to use this!
+
+        # auto-enable use of MKL-DNN/oneDNN and --config=mkl when possible if with_mkl_dnn is left unspecified;
+        # only do this for TensorFlow versions older than 2.4.0, since more recent versions
+        # oneDNN is used automatically for x86_64 systems (and mkl-dnn is no longer a dependency);
+        if self.cfg['with_mkl_dnn'] is None and LooseVersion(self.version) < LooseVersion('2.4.0'):
+            cpu_arch = get_cpu_architecture()
+            if cpu_arch == X86_64:
+                # Supported on x86 since forever
+                self.cfg['with_mkl_dnn'] = True
+                self.log.info("Auto-enabled use of MKL-DNN on %s CPU architecture", cpu_arch)
+            else:
+                self.log.info("Not enabling use of MKL-DNN on %s CPU architecture", cpu_arch)
+
+        # if mkl-dnn is listed as a dependency it is used
+        mkl_root = get_software_root('mkl-dnn')
+        if mkl_root:
+            self.target_opts.append('--config=mkl')
+            env.setvar('TF_MKL_ROOT', mkl_root)
+        elif self.cfg['with_mkl_dnn']:
+            # this makes TensorFlow use mkl-dnn (cfr. https://github.com/01org/mkl-dnn),
+            # and download it if needed
+            self.target_opts.append('--config=mkl')
+
+        # Use the same configuration (i.e. environment) for compiling and using host tools
+        # This means that our action_envs are (almost) always passed
+        # Fully removed in Bazel 6.0 and limited effect after at least 3.7 (see --host_action_env)
+        if bazel_version < '6.0.0':
+            self.target_opts.append('--distinct_host_configuration=false')
+
+        for key, value in sorted(action_env.items()):
+            option = key
+            if value is not None:
+                option += "='%s'" % value
+
+            self.target_opts.append('--action_env=' + option)
+            if bazel_version >= '3.7.0':
+                # Since Bazel 3.7 action_env only applies to the "target" environment, not the "host" environment
+                # As we are not cross-compiling we need both be the same -> Duplicate the setting to host_action_env
+                # See https://github.com/bazelbuild/bazel/commit/a463d9095386b22c121d20957222dbb44caef7d4
+                self.target_opts.append('--host_action_env=' + option)
+
+        # Compose final command
+        cmd = (
+            [self.cfg['prebuildopts']]
+            + ['bazel']
+            + self.bazel_opts
+            + ['build']
+            + self.target_opts
+            + [self.cfg['buildopts']]
+            # specify target of the build command as last argument
+            + ['//tensorflow/tools/pip_package:build_pip_package']
+        )
+
+        run_cmd(' '.join(cmd), log_all=True, simple=True, log_ok=True)
+
+        # run generated 'build_pip_package' script to build the .whl
+        cmd = "bazel-bin/tensorflow/tools/pip_package/build_pip_package %s" % self.builddir
+        run_cmd(cmd, log_all=True, simple=True, log_ok=True)
+
+    def test_step(self):
+        """Run TensorFlow unit tests"""
+        # IMPORTANT: This code allows experiments with running TF tests but may change
+        test_targets = self.cfg['test_targets']
+        if not test_targets:
+            self.log.info('No targets selected for tests. Set e.g. test_targets = ["//tensorflow/python/..."] '
+                          'to run TensorFlow tests.')
+            return
+        # Allow a string as the test_targets (useful for C&P testing from TF sources)
+        if not isinstance(test_targets, list):
+            test_targets = test_targets.split(' ')
+
+        test_opts = self.target_opts
+        test_opts.append('--test_output=errors')  # (Additionally) show logs from failed tests
+        test_opts.append('--build_tests_only')  # Don't build tests which won't be executed
+
+        # determine number of cores/GPUs to use for tests
+        max_num_test_jobs = int(self.cfg['test_max_parallel'] or self.cfg['parallel'])
+        if self._with_cuda:
+            if not which('nvidia-smi', on_error=IGNORE):
+                print_warning('Could not find nvidia-smi. Assuming a system without GPUs and skipping GPU tests!')
+                num_gpus_to_use = 0
+            elif os.environ.get('CUDA_VISIBLE_DEVICES') == '-1':
+                print_warning('GPUs explicitely disabled via CUDA_VISIBLE_DEVICES. Skipping GPU tests!')
+                num_gpus_to_use = 0
+            else:
+                # determine number of available GPUs via nvidia-smi command, fall back to just 1 GPU
+                # Note: Disable logging to also disable the error handling in run_cmd and do it explicitly below
+                (out, ec) = run_cmd("nvidia-smi --list-gpus", log_ok=False, log_all=False, regexp=False)
+                try:
+                    if ec != 0:
+                        raise RuntimeError("nvidia-smi returned exit code %s with output:\n%s" % (ec, out))
+                    else:
+                        self.log.info('nvidia-smi succeeded with output:\n%s' % out)
+                        gpu_ct = sum(line.startswith('GPU ') for line in out.strip().split('\n'))
+                except (RuntimeError, ValueError) as err:
+                    self.log.warning("Failed to get the number of GPUs on this system: %s", err)
+                    gpu_ct = 0
+
+                if gpu_ct == 0:
+                    print_warning('No GPUs found. Skipping GPU tests!')
+
+                num_gpus_to_use = min(max_num_test_jobs, gpu_ct)
+
+            # Can (likely) only run 1 test per GPU but don't need to limit CPU tests
+            num_test_jobs = {
+                CPU_DEVICE: max_num_test_jobs,
+                GPU_DEVICE: num_gpus_to_use,
+            }
+        else:
+            num_test_jobs = {
+                CPU_DEVICE: max_num_test_jobs,
+                GPU_DEVICE: 0,
+            }
+
+        cfg_testopts = {
+            CPU_DEVICE: self.cfg['testopts'],
+            GPU_DEVICE: self.cfg['testopts_gpu'],
+        }
+
+        devices = [CPU_DEVICE]
+        # Skip GPU tests if not build with CUDA or no test jobs set (e.g. due to no GPUs available)
+        if self._with_cuda and num_test_jobs[GPU_DEVICE]:
+            devices.append(GPU_DEVICE)
+
+        for device in devices:
+            # Determine tests to run
+            test_tag_filters_name = 'test_tag_filters_' + device
+            test_tag_filters = self.cfg[test_tag_filters_name]
+            if not test_tag_filters:
+                self.log.info('Skipping %s test because %s is not set', device, test_tag_filters_name)
+                continue
+            else:
+                self.log.info('Starting %s test', device)
+
+            current_test_opts = test_opts[:]
+            current_test_opts.append('--local_test_jobs=%s' % num_test_jobs[device])
+
+            # Add both build and test tag filters as done by the TF CI scripts
+            current_test_opts.extend("--%s_tag_filters='%s'" % (step, test_tag_filters) for step in ('test', 'build'))
+
+            # Disable all GPUs for the CPU tests, by setting $CUDA_VISIBLE_DEVICES to -1,
+            # otherwise TensorFlow will still use GPUs and fail.
+            # Only tests explicitely marked with the 'gpu' tag can run with GPUs visible;
+            # see https://github.com/tensorflow/tensorflow/issues/45664
+            if device == CPU_DEVICE:
+                current_test_opts.append("--test_env=CUDA_VISIBLE_DEVICES='-1'")
+            else:
+                # Propagate those environment variables to the GPU tests if they are set
+                important_cuda_env_vars = (
+                    'CUDA_CACHE_DISABLE',
+                    'CUDA_CACHE_MAXSIZE',
+                    'CUDA_CACHE_PATH',
+                    'CUDA_FORCE_PTX_JIT',
+                    'CUDA_DISABLE_PTX_JIT'
+                )
+                current_test_opts.extend(
+                    '--test_env=' + var_name
+                    for var_name in important_cuda_env_vars
+                    if var_name in os.environ
+                )
+
+                # These are used by the `parallel_gpu_execute` helper script from TF
+                current_test_opts.append('--test_env=TF_GPU_COUNT=%s' % num_test_jobs[GPU_DEVICE])
+                current_test_opts.append('--test_env=TF_TESTS_PER_GPU=1')
+
+            # Append user specified options last
+            current_test_opts.append(cfg_testopts[device])
+
+            # Compose final command
+            cmd = ' '.join(
+                [self.cfg['pretestopts']]
+                + ['bazel']
+                + self.bazel_opts
+                + ['test']
+                + current_test_opts
+                + ['--']
+                # specify targets to test as last argument
+                + test_targets
+            )
+
+            stdouterr, ec = run_cmd(cmd, log_ok=False, simple=False)
+            if ec:
+                fail_msg = 'Tests on %s (cmd: %s) failed with exit code %s and output:\n%s' % (
+                    device, cmd, ec, stdouterr)
+                self.log.warning(fail_msg)
+                # Try to enhance error message
+                failed_tests = []
+                failed_test_logs = dict()
+                # Bazel outputs failed tests like "//tensorflow/c:kernels_test   FAILED in[...]"
+                for match in re.finditer(r'^(//[a-zA-Z_/:]+)\s+FAILED', stdouterr, re.MULTILINE):
+                    test_name = match.group(1)
+                    failed_tests.append(test_name)
+                    # Logs are in a folder named after the test, e.g. tensorflow/c/kernels_test
+                    test_folder = test_name[2:].replace(':', '/')
+                    # Example file names:
+                    # <prefix>/k8-opt/testlogs/tensorflow/c/kernels_test/test.log
+                    # <prefix>/k8-opt/testlogs/tensorflow/c/kernels_test/shard_1_of_4/test_attempts/attempt_1.log
+                    test_log_re = re.compile(r'.*\n(.*\n)?\s*(/.*/testlogs/%s/(/[^/]*)?test.log)' % test_folder)
+                    log_match = test_log_re.match(stdouterr, match.end())
+                    if log_match:
+                        failed_test_logs[test_name] = log_match.group(2)
+                # When TF logs are found enhance the below error by additionally logging the details about failed tests
+                for test_name, log_path in failed_test_logs.items():
+                    if os.path.exists(log_path):
+                        self.log.warning('Test %s failed with output\n%s', test_name,
+                                         read_file(log_path, log_error=False))
+                if failed_tests:
+                    failed_tests = sorted(set(failed_tests))  # Make unique to not count retries
+                    fail_msg = 'At least %s %s tests failed:\n%s' % (
+                        len(failed_tests), device, ', '.join(failed_tests))
+                self.report_test_failure(fail_msg)
+            else:
+                self.log.info('Tests on %s succeeded with output:\n%s', device, stdouterr)
+
+    def install_step(self):
+        """Custom install procedure for TensorFlow."""
+        # find .whl file that was built, and install it using 'pip install'
+        if ("-rc" in self.version):
+            whl_version = self.version.replace("-rc", "rc")
+        else:
+            whl_version = self.version
+
+        whl_paths = glob.glob(os.path.join(self.builddir, 'tensorflow-%s-*.whl' % whl_version))
+        if not whl_paths:
+            whl_paths = glob.glob(os.path.join(self.builddir, 'tensorflow-*.whl'))
+        if len(whl_paths) == 1:
+            # --ignore-installed is required to ensure *this* wheel is installed
+            cmd = "pip install --ignore-installed --prefix=%s %s" % (self.installdir, whl_paths[0])
+
+            # if extensions are listed, assume they will provide all required dependencies,
+            # so use --no-deps to prevent pip from downloading & installing them
+            if self.cfg['exts_list']:
+                cmd += ' --no-deps'
+
+            run_cmd(cmd, log_all=True, simple=True, log_ok=True)
+        else:
+            raise EasyBuildError("Failed to isolate built .whl in %s: %s", whl_paths, self.builddir)
+
+        # Fix for https://github.com/tensorflow/tensorflow/issues/6341 on Python < 3.3
+        # If the site-packages/google/__init__.py file is missing, make it an empty file.
+        # This fixes the "No module named google.protobuf" error that sometimes shows up during sanity_check
+        # For Python >= 3.3 the logic is reversed: The __init__.py must not exist.
+        # See e.g. http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html
+        google_protobuf_dir = os.path.join(self.installdir, self.pylibdir, 'google', 'protobuf')
+        google_init_file = os.path.join(self.installdir, self.pylibdir, 'google', '__init__.py')
+        if LooseVersion(det_python_version(self.python_cmd)) < LooseVersion('3.3'):
+            if os.path.isdir(google_protobuf_dir) and not is_readable(google_init_file):
+                self.log.debug("Creating (empty) missing %s", google_init_file)
+                write_file(google_init_file, '')
+        else:
+            if os.path.exists(google_init_file):
+                self.log.debug("Removing %s for Python >= 3.3", google_init_file)
+                remove_file(google_init_file)
+
+        # Fix cuda header paths
+        # This is needed for building custom TensorFlow ops
+        if LooseVersion(self.version) < LooseVersion('1.14'):
+            pyshortver = '.'.join(get_software_version('Python').split('.')[:2])
+            regex_subs = [(r'#include "cuda/include/', r'#include "')]
+            base_path = os.path.join(self.installdir, 'lib', 'python%s' % pyshortver, 'site-packages', 'tensorflow',
+                                     'include', 'tensorflow')
+            for header in glob.glob(os.path.join(base_path, 'stream_executor', 'cuda', 'cuda*.h')) + glob.glob(
+                    os.path.join(base_path, 'core', 'util', 'cuda*.h')):
+                apply_regex_substitutions(header, regex_subs)
+
+    def sanity_check_step(self):
+        """Custom sanity check for TensorFlow."""
+        if self.python_cmd is None:
+            self.prepare_python()
+
+        custom_paths = {
+            'files': ['bin/tensorboard'],
+            'dirs': [self.pylibdir],
+        }
+
+        custom_commands = [
+            "%s -c 'import tensorflow'" % self.python_cmd,
+            # tf_should_use importsweakref.finalize, which requires backports.weakref for Python < 3.4
+            "%s -c 'from tensorflow.python.util import tf_should_use'" % self.python_cmd,
+        ]
+        res = super(EB_TensorFlow, self).sanity_check_step(custom_paths=custom_paths, custom_commands=custom_commands)
+
+        # test installation using MNIST tutorial examples
+        if self.cfg['runtest']:
+            pythonpath = os.getenv('PYTHONPATH', '')
+            env.setvar('PYTHONPATH', os.pathsep.join([os.path.join(self.installdir, self.pylibdir), pythonpath]))
+
+            mnist_pys = []
+
+            if LooseVersion(self.version) < LooseVersion('2.0'):
+                mnist_pys.append('mnist_with_summaries.py')
+
+            if LooseVersion(self.version) < LooseVersion('1.13'):
+                # mnist_softmax.py was removed in TensorFlow 1.13.x
+                mnist_pys.append('mnist_softmax.py')
+
+            for mnist_py in mnist_pys:
+                datadir = tempfile.mkdtemp(suffix='-tf-%s-data' % os.path.splitext(mnist_py)[0])
+                logdir = tempfile.mkdtemp(suffix='-tf-%s-logs' % os.path.splitext(mnist_py)[0])
+                mnist_py = os.path.join(self.start_dir, 'tensorflow', 'examples', 'tutorials', 'mnist', mnist_py)
+                cmd = "%s %s --data_dir %s --log_dir %s" % (self.python_cmd, mnist_py, datadir, logdir)
+                run_cmd(cmd, log_all=True, simple=True, log_ok=True)
+
+            # run test script (if any)
+            if self.test_script:
+                # copy test script to build dir before running it, to avoid that a file named 'tensorflow.py'
+                # (a customized TensorFlow easyblock for example) breaks 'import tensorflow'
+                test_script = os.path.join(self.builddir, os.path.basename(self.test_script))
+                copy_file(self.test_script, test_script)
+
+                run_cmd("python %s" % test_script, log_all=True, simple=True, log_ok=True)
+
+        return res
diff --git a/Custom_Hooks/eb_hooks.py b/Custom_Hooks/eb_hooks.py
index 618d0a26ecc170b0af990b2a1e3921a64f3359a5..3f94d59a14766fc9dc6c1d917ced2de0b5d8a711 100644
--- a/Custom_Hooks/eb_hooks.py
+++ b/Custom_Hooks/eb_hooks.py
@@ -66,6 +66,7 @@ VETOED_INSTALLATIONS = {
         'impi', 'impi-settings',
         'BullMPI', 'BullMPI-settings'
     ],
+    'jureca_spr': ['BullMPI', 'BullMPI-settings'],
     'jusuf': ['impi', 'impi-settings', 'BullMPI', 'BullMPI-settings'],
     'hdfml': ['BullMPI', 'BullMPI-settings'],
     'deep': ['BullMPI', 'BullMPI-settings'],
diff --git a/Custom_MNS/flexible_custom_hierarchical_mns.py b/Custom_MNS/flexible_custom_hierarchical_mns.py
index 8e102c05052bdc84e624c70376f2e6a451ed74a0..ab4e2e24a6db6a021a93c4e6b841b0b56ca2fbf3 100644
--- a/Custom_MNS/flexible_custom_hierarchical_mns.py
+++ b/Custom_MNS/flexible_custom_hierarchical_mns.py
@@ -50,7 +50,7 @@ COMP_RELEVANT_VERSIONS = {
 # Allow to reuse the stacks from other MPIs
 SWAPPABLE_MPIS = {
     'BullMPI': ('OpenMPI', None),
-    'impi': ('psmpi', '5.6'),
+    'impi': ('psmpi', '5'),
 }
 
 # MPI relevant version numbers
diff --git a/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..816bcaaffc5cb6de487b1a1443071f3b7042a4ac
--- /dev/null
+++ b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb
@@ -0,0 +1,163 @@
+easyblock = 'CMakeMake'
+
+name = 'ADIOS2'
+version = '2.8.3'
+
+homepage = 'https://www.olcf.ornl.gov/center-projects/adios/'
+description = """The Adaptable IO System (ADIOS) provides a simple,
+flexible way for scientists to describe the data in their code that may
+need to be written, read, or processed outside of the running
+simulation."""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': False}
+
+github_account = 'ornladios'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = [
+    {'v2.8.3.tar.gz': '4906ab1899721c41dd918dddb039ba2848a1fb0cf84f3a563a1179b9d6ee0d9f'},
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('zlib', '1.2.12'),
+    ('bzip2', '1.0.8'),
+    ('Szip', '2.1.1'),
+    ('SZ', '2.1.12.5'),
+    ('zfp', '0.5.5'),
+    ('Blosc', '1.21.3'),
+    ('HDF5', '1.12.2'),
+    ('mpi4py', '3.1.4'),
+    ('libpng', '1.6.37'),
+    ('ZeroMQ', '4.3.4'),
+    ('nlohmann_json', '3.10.5'),
+    ('pybind11', '2.9.2'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE=ON "
+
+configopts += "-DADIOS2_USE_Fortran=ON "
+configopts += "-DADIOS2_USE_MPI=ON "
+
+# Examples/Testing
+configopts += "-DADIOS2_BUILD_EXAMPLES=OFF "
+configopts += "-DADIOS2_BUILD_EXAMPLES_EXPERIMENTAL=OFF "
+configopts += "-DADIOS2_BUILD_TESTING=OFF "
+
+# Compression
+configopts += "-DADIOS2_USE_BZip2=ON "
+configopts += "-DBZIP2_DIR=${EBROOTBZIP2} "
+
+configopts += "-DADIOS2_USE_PNG=ON "
+configopts += "-DPNG_DIR=${EBROOTLIBPNG} "
+
+configopts += "-DADIOS2_USE_SZ=ON "
+configopts += "-DSZ_DIR=${EBROOTSZ} "
+
+configopts += "-DADIOS2_USE_ZFP=ON "
+configopts += "-DZFP_DIR=${EBROOTZFP} "
+
+configopts += "-DADIOS2_USE_Blosc=ON "
+configopts += "-DBLOSC_DIR=${EBROOTBLOSC} "
+
+configopts += "-DZLIB_DIR=${EBROOTZLIB} "
+configopts += "-DADIOS2_USE_MGARD=OFF "
+
+# HDF5
+configopts += "-DADIOS2_USE_HDF5=ON "
+configopts += "-DHDF5_DIR=${EBROOTHDF5} "
+
+# ZeroMQ
+configopts += "-DADIOS2_USE_ZeroMQ=ON "
+configopts += "-DZeroMQ_DIR=${EBROOTZEROMQ} "
+
+# Python
+configopts += "-DADIOS2_USE_Python=ON "
+configopts += "-DPython_DIR=${EBROOTPYTHON} "
+
+# System Virtual Shared Memory
+configopts += "-DADIOS2_USE_SysVShMem=ON "
+
+# Strong Staging Coupler
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#ssc-strong-staging-coupler
+configopts += "-DADIOS2_USE_SSC=ON "
+
+# Sustainable Staging Transport
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#sst-sustainable-staging-transport
+configopts += "-DADIOS2_USE_SST=ON "
+# Can optionally use LibFabric for RDMA transport: if -DLIBFABRIC_ROOT=<path> is set.
+
+# DataMan
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#dataman-for-wide-area-network-data-staging
+configopts += "-DADIOS2_USE_DataMan=ON "
+
+# DataSpaces (mind. version 1.8)
+configopts += "-DADIOS2_USE_DataSpaces=OFF "
+
+# external libs
+configopts += "-DADIOS2_USE_EXTERNAL_PYBIND11=ON "
+configopts += "-Dpybind11_DIR=${EBROOTPYBIND11} "
+configopts += "-DADIOS2_USE_EXTERNAL_NLOHMANN_JSON=ON "
+configopts += "-Dnlohmann_json_DIR=${EBROOTNLOHMANNMINJSON} "
+
+# more options
+configopts += "-DADIOS2_USE_IME=OFF "
+configopts += "-DADIOS2_USE_Profiling=OFF "
+configopts += "-DADIOS2_USE_Table=OFF "
+# configopts += "-DADIOS2_USE_Endian_Reverse=ON "
+
+runtest = False
+
+# create pkgconfig files
+postinstallcmds = [
+    'ln -s %(installdir)s/lib64 %(installdir)s/lib',
+    'mkdir %(installdir)s/lib/pkgconfig',
+    """echo -e "Name: adios2
+Description: ADIOS2 I/O library
+Version: %(version)s
+Requires: bzip2, zfp, sz, libpng, blosc
+Libs: $(%(installdir)s/bin/adios2-config --c-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --c-flags)" > %(installdir)s/lib/pkgconfig/adios2.pc""",
+    """echo -e "Name: adios2_cxx
+Description: ADIOS2 I/O library (C++)
+Version: %(version)s
+Libs: $(%(installdir)s/bin/adios2-config --cxx-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --cxx-flags)" > %(installdir)s/lib/pkgconfig/adios2_cxx.pc""",
+    """echo -e "Name: adios2_f
+Description: ADIOS2 I/O library (Fortran)
+Version: %(version)s
+Libs: $(%(installdir)s/bin/adios2-config --fortran-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --fortran-flags)" > %(installdir)s/lib/pkgconfig/adios2_f.pc""",
+]
+
+sanity_check_paths = {
+    'files': [
+        'bin/adios2-config', 'bin/bpls', 'bin/bp4dbg',
+        'include/adios2.h', 'include/adios2_c.h', 'include/adios2/fortran/adios2.mod',
+        'lib64/libadios2_core.so', 'lib64/libadios2_core_mpi.so', 'lib64/cmake/adios2/adios2-config.cmake',
+        'lib64/libadios2_c.so', 'lib64/libadios2_c_mpi.so', 'lib64/libadios2_cxx11.so',
+        'lib64/libadios2_cxx11_mpi.so', 'lib64/libadios2_fortran.so', 'lib64/libadios2_fortran_mpi.so'
+    ],
+    'dirs': ['bin', 'include', 'lib']
+}
+
+# modextrapaths = {
+#     'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+# }
+
+modextravars = {
+    'ADIOS2_PKGCONFIG_LIBS': 'adios2',
+    'ADIOS2_CXX_PKGCONFIG_LIBS': 'adios2_cxx',
+    'ADIOS2_FORTRAN_PKGCONFIG_LIBS': 'adios2_f',
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gpsmkl-2022a.eb b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cfae237b72d033e5a0ca02c85f3eb338cdc3e283
--- /dev/null
+++ b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gpsmkl-2022a.eb
@@ -0,0 +1,163 @@
+easyblock = 'CMakeMake'
+
+name = 'ADIOS2'
+version = '2.8.3'
+
+homepage = 'https://www.olcf.ornl.gov/center-projects/adios/'
+description = """The Adaptable IO System (ADIOS) provides a simple,
+flexible way for scientists to describe the data in their code that may
+need to be written, read, or processed outside of the running
+simulation."""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': False}
+
+github_account = 'ornladios'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = [
+    {'v2.8.3.tar.gz': '4906ab1899721c41dd918dddb039ba2848a1fb0cf84f3a563a1179b9d6ee0d9f'},
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('zlib', '1.2.12'),
+    ('bzip2', '1.0.8'),
+    ('Szip', '2.1.1'),
+    ('SZ', '2.1.12.5'),
+    ('zfp', '0.5.5'),
+    ('Blosc', '1.21.3'),
+    ('HDF5', '1.12.2'),
+    ('mpi4py', '3.1.4'),
+    ('libpng', '1.6.37'),
+    ('ZeroMQ', '4.3.4'),
+    ('nlohmann_json', '3.10.5'),
+    ('pybind11', '2.9.2'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE=ON "
+
+configopts += "-DADIOS2_USE_Fortran=ON "
+configopts += "-DADIOS2_USE_MPI=ON "
+
+# Examples/Testing
+configopts += "-DADIOS2_BUILD_EXAMPLES=OFF "
+configopts += "-DADIOS2_BUILD_EXAMPLES_EXPERIMENTAL=OFF "
+configopts += "-DADIOS2_BUILD_TESTING=OFF "
+
+# Compression
+configopts += "-DADIOS2_USE_BZip2=ON "
+configopts += "-DBZIP2_DIR=${EBROOTBZIP2} "
+
+configopts += "-DADIOS2_USE_PNG=ON "
+configopts += "-DPNG_DIR=${EBROOTLIBPNG} "
+
+configopts += "-DADIOS2_USE_SZ=ON "
+configopts += "-DSZ_DIR=${EBROOTSZ} "
+
+configopts += "-DADIOS2_USE_ZFP=ON "
+configopts += "-DZFP_DIR=${EBROOTZFP} "
+
+configopts += "-DADIOS2_USE_Blosc=ON "
+configopts += "-DBLOSC_DIR=${EBROOTBLOSC} "
+
+configopts += "-DZLIB_DIR=${EBROOTZLIB} "
+configopts += "-DADIOS2_USE_MGARD=OFF "
+
+# HDF5
+configopts += "-DADIOS2_USE_HDF5=ON "
+configopts += "-DHDF5_DIR=${EBROOTHDF5} "
+
+# ZeroMQ
+configopts += "-DADIOS2_USE_ZeroMQ=ON "
+configopts += "-DZeroMQ_DIR=${EBROOTZEROMQ} "
+
+# Python
+configopts += "-DADIOS2_USE_Python=ON "
+configopts += "-DPython_DIR=${EBROOTPYTHON} "
+
+# System Virtual Shared Memory
+configopts += "-DADIOS2_USE_SysVShMem=ON "
+
+# Strong Staging Coupler
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#ssc-strong-staging-coupler
+configopts += "-DADIOS2_USE_SSC=ON "
+
+# Sustainable Staging Transport
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#sst-sustainable-staging-transport
+configopts += "-DADIOS2_USE_SST=ON "
+# Can optionally use LibFabric for RDMA transport: if -DLIBFABRIC_ROOT=<path> is set.
+
+# DataMan
+# https://adios2.readthedocs.io/en/latest/engines/engines.html#dataman-for-wide-area-network-data-staging
+configopts += "-DADIOS2_USE_DataMan=ON "
+
+# DataSpaces (mind. version 1.8)
+configopts += "-DADIOS2_USE_DataSpaces=OFF "
+
+# external libs
+configopts += "-DADIOS2_USE_EXTERNAL_PYBIND11=ON "
+configopts += "-Dpybind11_DIR=${EBROOTPYBIND11} "
+configopts += "-DADIOS2_USE_EXTERNAL_NLOHMANN_JSON=ON "
+configopts += "-Dnlohmann_json_DIR=${EBROOTNLOHMANNMINJSON} "
+
+# more options
+configopts += "-DADIOS2_USE_IME=OFF "
+configopts += "-DADIOS2_USE_Profiling=OFF "
+configopts += "-DADIOS2_USE_Table=OFF "
+# configopts += "-DADIOS2_USE_Endian_Reverse=ON "
+
+runtest = False
+
+# create pkgconfig files
+postinstallcmds = [
+    'ln -s %(installdir)s/lib64 %(installdir)s/lib',
+    'mkdir %(installdir)s/lib/pkgconfig',
+    """echo -e "Name: adios2
+Description: ADIOS2 I/O library
+Version: %(version)s
+Requires: bzip2, zfp, sz, libpng, blosc
+Libs: $(%(installdir)s/bin/adios2-config --c-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --c-flags)" > %(installdir)s/lib/pkgconfig/adios2.pc""",
+    """echo -e "Name: adios2_cxx
+Description: ADIOS2 I/O library (C++)
+Version: %(version)s
+Libs: $(%(installdir)s/bin/adios2-config --cxx-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --cxx-flags)" > %(installdir)s/lib/pkgconfig/adios2_cxx.pc""",
+    """echo -e "Name: adios2_f
+Description: ADIOS2 I/O library (Fortran)
+Version: %(version)s
+Libs: $(%(installdir)s/bin/adios2-config --fortran-libs)
+Cflags: $(%(installdir)s/bin/adios2-config --fortran-flags)" > %(installdir)s/lib/pkgconfig/adios2_f.pc""",
+]
+
+sanity_check_paths = {
+    'files': [
+        'bin/adios2-config', 'bin/bpls', 'bin/bp4dbg',
+        'include/adios2.h', 'include/adios2_c.h', 'include/adios2/fortran/adios2.mod',
+        'lib64/libadios2_core.so', 'lib64/libadios2_core_mpi.so', 'lib64/cmake/adios2/adios2-config.cmake',
+        'lib64/libadios2_c.so', 'lib64/libadios2_c_mpi.so', 'lib64/libadios2_cxx11.so',
+        'lib64/libadios2_cxx11_mpi.so', 'lib64/libadios2_fortran.so', 'lib64/libadios2_fortran_mpi.so'
+    ],
+    'dirs': ['bin', 'include', 'lib']
+}
+
+# modextrapaths = {
+#     'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+# }
+
+modextravars = {
+    'ADIOS2_PKGCONFIG_LIBS': 'adios2',
+    'ADIOS2_CXX_PKGCONFIG_LIBS': 'adios2_cxx',
+    'ADIOS2_FORTRAN_PKGCONFIG_LIBS': 'adios2_f',
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..639db5be50e738c04e224e2b2576f2c0dee0dd7b
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb
@@ -0,0 +1,60 @@
+easyblock = 'ConfigureMake'
+
+name = 'ARPACK-NG'
+
+version = '3.8.0'
+
+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'
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'opt': True, 'optarch': True, 'pic': True, 'usempi': True}
+source_urls = ['https://github.com/opencollab/arpack-ng/releases/tag/']
+sources = ["%(version)s.tar.gz"]
+
+patches = [
+    'ARPACK-NG-%(version)s-install-arpack-examples_gpsmkl.patch'
+]
+
+checksums = [
+    'ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d',  # 3.8.0.tar.gz
+    # ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch
+    'edf121fcaf5f2bf17c8395d5c4aae35d106eb3746b29561927f53ed6d3769707',
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0')
+]
+
+preconfigopts = 'sh bootstrap &&'
+
+configopts = '--enable-mpi --with-pic --enable-static --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"'
+
+postinstallcmds = [
+    "cp -r EXAMPLES %(installdir)s/EXAMPLES",
+    "cp -r PARPACK/EXAMPLES/MPI %(installdir)s/EXAMPLES/PARPACK",
+]
+
+sanity_check_paths = {
+    'files': ["lib/libarpack.a", "lib/libarpack.%s" % SHLIB_EXT, "lib/libparpack.a", "lib/libparpack.%s" % SHLIB_EXT],
+    'dirs': []
+}
+
+modextravars = {
+    'ARPACK_ROOT': '%(installdir)s',
+    'PARPACK_ROOT': '%(installdir)s',
+    'ARPACK_LIB': '%(installdir)s/lib',
+    'PARPACK_LIB': '%(installdir)s/lib'
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5dbaa878d3512cbce6ca945aa68e9475c27ab265
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb
@@ -0,0 +1,44 @@
+easyblock = 'ConfigureMake'
+name = 'ARPACK-NG'
+version = '3.8.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 has been installed in $EBROOTARPACKMINNG.
+
+"""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+toolchainopts = {'opt': True, 'optarch': True, 'pic': True}
+source_urls = ['https://github.com/opencollab/arpack-ng/archive/']
+sources = ["%(version)s.tar.gz"]
+
+checksums = ['ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0')
+]
+
+# 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"'
+
+sanity_check_paths = {
+    'files': ["lib/libarpack.%s" % SHLIB_EXT, ],
+    'dirs': []
+}
+
+modextravars = {
+    'ARPACK_ROOT': '%(installdir)s',
+    'ARPACK_LIB': '%(installdir)s/lib',
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8ec3b0762eea851e0e27c6c0f1c003a43ae8fefb
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch
@@ -0,0 +1,538 @@
+--- arpack-ng-3.8.0/PARPACK_CHANGES	2021-06-30 09:57:39.220219000 +0200
++++ arpack-ng-3.8.0-ok/PARPACK_CHANGES	2021-06-30 10:25:30.148960874 +0200
+@@ -334,4 +334,6 @@
+ 36. 09/18/2016 p*apps.f and p*aitr.f contain condition to fetch machine epsilon.
+     When different p*aupd call use communicator with different number of CPU these
+     conditions cause deadlock. Variables inside conditions are moved to global
+-    to be reset each first iteration
+\ No newline at end of file
++    to be reset each first iteration
++
++
+--- arpack-ng-3.8.0/EXAMPLES/BAND/Makefile_band_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/BAND/Makefile_band_intel	2021-06-30 10:36:04.492823000 +0200
+@@ -0,0 +1,159 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cnbdr1_OBJECTS = cnbdr1.o cnband.o
++cnbdr2_OBJECTS = cnbdr2.o cnband.o
++cnbdr3_OBJECTS = cnbdr3.o cnband.o
++cnbdr4_OBJECTS = cnbdr4.o cnband.o
++dnbdr1_OBJECTS = dnbdr1.o dnband.o
++dnbdr2_OBJECTS = dnbdr2.o dnband.o
++dnbdr3_OBJECTS = dnbdr3.o dnband.o
++dnbdr4_OBJECTS = dnbdr4.o dnband.o
++dnbdr5_OBJECTS = dnbdr5.o dnband.o
++dnbdr6_OBJECTS = dnbdr6.o dnband.o
++dsbdr1_OBJECTS = dsbdr1.o dsband.o
++dsbdr2_OBJECTS = dsbdr2.o dsband.o
++dsbdr3_OBJECTS = dsbdr3.o dsband.o
++dsbdr4_OBJECTS = dsbdr4.o dsband.o
++dsbdr5_OBJECTS = dsbdr5.o dsband.o
++dsbdr6_OBJECTS = dsbdr6.o dsband.o
++snbdr1_OBJECTS = snbdr1.o snband.o
++snbdr2_OBJECTS = snbdr2.o snband.o
++snbdr3_OBJECTS = snbdr3.o snband.o
++snbdr4_OBJECTS = snbdr4.o snband.o
++snbdr5_OBJECTS = snbdr5.o snband.o
++snbdr6_OBJECTS = snbdr6.o snband.o
++ssbdr1_OBJECTS = ssbdr1.o ssband.o
++ssbdr2_OBJECTS = ssbdr2.o ssband.o
++ssbdr3_OBJECTS = ssbdr3.o ssband.o
++ssbdr4_OBJECTS = ssbdr4.o ssband.o
++ssbdr5_OBJECTS = ssbdr5.o ssband.o
++ssbdr6_OBJECTS = ssbdr6.o ssband.o
++znbdr1_OBJECTS = znbdr1.o znband.o
++znbdr2_OBJECTS = znbdr2.o znband.o
++znbdr3_OBJECTS = znbdr3.o znband.o
++znbdr4_OBJECTS = znbdr4.o znband.o
++
++all : cnbdr1 cnbdr2 cnbdr3 cnbdr4 \
++	dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \
++	dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \
++	snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \
++	ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \
++	znbdr1 znbdr2 znbdr3 znbdr4
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cnbdr1 : $(cnbdr1_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr2 : $(cnbdr2_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr3 : $(cnbdr3_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr4 : $(cnbdr4_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr1 : $(dnbdr1_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr2 : $(dnbdr2_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr3 : $(dnbdr3_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr4 : $(dnbdr4_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr5 : $(dnbdr5_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr6 : $(dnbdr6_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr1 : $(dsbdr1_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr2 : $(dsbdr2_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr3 : $(dsbdr3_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr4 : $(dsbdr4_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr5 : $(dsbdr5_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr6 : $(dsbdr6_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr1 : $(snbdr1_OBJECTS)
++	$(F77LD) -o $@ $(snbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr2 : $(snbdr2_OBJECTS)
++	$(F77LD) -o $@ $(snbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr3 : $(snbdr3_OBJECTS)
++	$(F77LD) -o $@ $(snbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr4 : $(snbdr4_OBJECTS)
++	$(F77LD) -o $@ $(snbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr5 : $(snbdr5_OBJECTS)
++	$(F77LD) -o $@ $(snbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr6 : $(snbdr6_OBJECTS)
++	$(F77LD) -o $@ $(snbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr1 : $(ssbdr1_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr2 : $(ssbdr2_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr3 : $(ssbdr3_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr4 : $(ssbdr4_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr5 : $(ssbdr5_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr6 : $(ssbdr6_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr1 : $(znbdr1_OBJECTS)
++	$(F77LD) -o $@ $(znbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr2 : $(znbdr2_OBJECTS)
++	$(F77LD) -o $@ $(znbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr3 : $(znbdr3_OBJECTS)
++	$(F77LD) -o $@ $(znbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr4 : $(znbdr4_OBJECTS)
++	$(F77LD) -o $@ $(znbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/COMPLEX/Makefile_complex_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/COMPLEX/Makefile_complex_intel	2021-06-30 10:36:04.496200000 +0200
+@@ -0,0 +1,59 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cndrv1_OBJECTS = cndrv1.o
++cndrv2_OBJECTS = cndrv2.o
++cndrv3_OBJECTS = cndrv3.o
++cndrv4_OBJECTS = cndrv4.o
++zndrv1_OBJECTS = zndrv1.o
++zndrv2_OBJECTS = zndrv2.o
++zndrv3_OBJECTS = zndrv3.o
++zndrv4_OBJECTS = zndrv4.o
++
++all : cndrv1 cndrv2 cndrv3 cndrv4 \
++	zndrv1 zndrv2 zndrv3 zndrv4
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cndrv1 : $(cndrv1_OBJECTS)
++	$(F77LD) -o $@ $(cndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv2 : $(cndrv2_OBJECTS)
++	$(F77LD) -o $@ $(cndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv3 : $(cndrv3_OBJECTS)
++	$(F77LD) -o $@ $(cndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv4 : $(cndrv4_OBJECTS)
++	$(F77LD) -o $@ $(cndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv1 : $(zndrv1_OBJECTS)
++	$(F77LD) -o $@ $(zndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv2 : $(zndrv2_OBJECTS)
++	$(F77LD) -o $@ $(zndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv3 : $(zndrv3_OBJECTS)
++	$(F77LD) -o $@ $(zndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv4 : $(zndrv4_OBJECTS)
++	$(F77LD) -o $@ $(zndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/NONSYM/Makefile_nonsym_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/NONSYM/Makefile_nonsym_intel	2021-06-30 10:36:04.539153000 +0200
+@@ -0,0 +1,75 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dndrv1_OBJECTS = dndrv1.o
++dndrv2_OBJECTS = dndrv2.o
++dndrv3_OBJECTS = dndrv3.o
++dndrv4_OBJECTS = dndrv4.o
++dndrv5_OBJECTS = dndrv5.o
++dndrv6_OBJECTS = dndrv6.o
++sndrv1_OBJECTS = sndrv1.o
++sndrv2_OBJECTS = sndrv2.o
++sndrv3_OBJECTS = sndrv3.o
++sndrv4_OBJECTS = sndrv4.o
++sndrv5_OBJECTS = sndrv5.o
++sndrv6_OBJECTS = sndrv6.o
++
++all : dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6 \
++	sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++dndrv1 : $(dndrv1_OBJECTS)
++	$(F77LD) -o $@ $(dndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv2 : $(dndrv2_OBJECTS)
++	$(F77LD) -o $@ $(dndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv3 : $(dndrv3_OBJECTS)
++	$(F77LD) -o $@ $(dndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv4 : $(dndrv4_OBJECTS)
++	$(F77LD) -o $@ $(dndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv5 : $(dndrv5_OBJECTS)
++	$(F77LD) -o $@ $(dndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv6 : $(dndrv6_OBJECTS)
++	$(F77LD) -o $@ $(dndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv1 : $(sndrv1_OBJECTS)
++	$(F77LD) -o $@ $(sndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv2 : $(sndrv2_OBJECTS)
++	$(F77LD) -o $@ $(sndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv3 : $(sndrv3_OBJECTS)
++	$(F77LD) -o $@ $(sndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv4 : $(sndrv4_OBJECTS)
++	$(F77LD) -o $@ $(sndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv5 : $(sndrv5_OBJECTS)
++	$(F77LD) -o $@ $(sndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv6 : $(sndrv6_OBJECTS)
++	$(F77LD) -o $@ $(sndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/PARPACK/EXAMPLES/MPI/Makefile_parpack_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/PARPACK/EXAMPLES/MPI/Makefile_parpack_intel	2021-06-30 10:37:57.095101000 +0200
+@@ -0,0 +1,51 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++PARPACKLIB = -L$(ARPACK_LIB) -lparpack -larpack
++
++pcndrv1_OBJECTS = pcndrv1.o
++pdndrv1_OBJECTS = pdndrv1.o
++pdndrv3_OBJECTS = pdndrv3.o
++psndrv1_OBJECTS = psndrv1.o
++psndrv3_OBJECTS = psndrv3.o
++pzndrv1_OBJECTS = pzndrv1.o
++
++all : pcndrv1 pdndrv1 pdndrv3 \
++	psndrv1 psndrv3 pzndrv1
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++pcndrv1 : $(pcndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pcndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pdndrv1 : $(pdndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pdndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pdndrv3 : $(pdndrv3_OBJECTS)
++	$(F77LD) -o $@ $(pdndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++psndrv1 : $(psndrv1_OBJECTS)
++	$(F77LD) -o $@ $(psndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++psndrv3 : $(psndrv3_OBJECTS)
++	$(F77LD) -o $@ $(psndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pzndrv1 : $(pzndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pzndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SIMPLE/Makefile_simple_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SIMPLE/Makefile_simple_intel	2021-06-30 10:36:04.541931000 +0200
+@@ -0,0 +1,51 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cnsimp_OBJECTS = cnsimp.o
++dnsimp_OBJECTS = dnsimp.o
++dssimp_OBJECTS = dssimp.o
++snsimp_OBJECTS = snsimp.o
++sssimp_OBJECTS = sssimp.o
++znsimp_OBJECTS = znsimp.o
++
++all : cnsimp dnsimp dssimp \
++	snsimp sssimp znsimp 
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cnsimp : $(cnsimp_OBJECTS)
++	$(F77LD) -o $@ $(cnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnsimp : $(dnsimp_OBJECTS)
++	$(F77LD) -o $@ $(dnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dssimp : $(dssimp_OBJECTS)
++	$(F77LD) -o $@ $(dssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snsimp : $(snsimp_OBJECTS)
++	$(F77LD) -o $@ $(snsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sssimp : $(sssimp_OBJECTS)
++	$(F77LD) -o $@ $(sssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znsimp : $(znsimp_OBJECTS)
++	$(F77LD) -o $@ $(znsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SVD/Makefile_svd_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SVD/Makefile_svd_intel	2021-06-30 10:36:04.546102000 +0200
+@@ -0,0 +1,36 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dsvd_OBJECTS = dsvd.o
++ssvd_OBJECTS = ssvd.o
++
++all : dsvd \
++	ssvd 
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++
++dsvd : $(dsvd_OBJECTS)
++	$(F77LD) -o $@ $(dsvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssvd : $(ssvd_OBJECTS)
++	$(F77LD) -o $@ $(ssvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SYM/Makefile_sym_intel	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SYM/Makefile_sym_intel	2021-06-30 10:36:04.549670000 +0200
+@@ -0,0 +1,75 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dsdrv1_OBJECTS = dsdrv1.o
++dsdrv2_OBJECTS = dsdrv2.o
++dsdrv3_OBJECTS = dsdrv3.o
++dsdrv4_OBJECTS = dsdrv4.o
++dsdrv5_OBJECTS = dsdrv5.o
++dsdrv6_OBJECTS = dsdrv6.o
++ssdrv1_OBJECTS = ssdrv1.o
++ssdrv2_OBJECTS = ssdrv2.o
++ssdrv3_OBJECTS = ssdrv3.o
++ssdrv4_OBJECTS = ssdrv4.o
++ssdrv5_OBJECTS = ssdrv5.o
++ssdrv6_OBJECTS = ssdrv6.o
++
++all : dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6 \
++	ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++dsdrv1 : $(dsdrv1_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv2 : $(dsdrv2_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv3 : $(dsdrv3_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv4 : $(dsdrv4_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv5 : $(dsdrv5_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv6 : $(dsdrv6_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv1 : $(ssdrv1_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv2 : $(ssdrv2_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv3 : $(ssdrv3_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv4 : $(ssdrv4_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv5 : $(ssdrv5_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv6 : $(ssdrv6_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch
new file mode 100644
index 0000000000000000000000000000000000000000..cb08b9ea9053080a2e005fe6cd8b7e318625133b
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch
@@ -0,0 +1,538 @@
+--- arpack-ng-3.8.0/PARPACK_CHANGES	2021-06-30 09:57:39.220219000 +0200
++++ arpack-ng-3.8.0-ok/PARPACK_CHANGES	2021-06-30 10:25:30.148960874 +0200
+@@ -334,4 +334,6 @@
+ 36. 09/18/2016 p*apps.f and p*aitr.f contain condition to fetch machine epsilon.
+     When different p*aupd call use communicator with different number of CPU these
+     conditions cause deadlock. Variables inside conditions are moved to global
+-    to be reset each first iteration
+\ No newline at end of file
++    to be reset each first iteration
++
++
+--- arpack-ng-3.8.0/EXAMPLES/BAND/Makefile_band	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/BAND/Makefile_band	2021-06-30 10:36:04.461587000 +0200
+@@ -0,0 +1,159 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cnbdr1_OBJECTS = cnbdr1.o cnband.o
++cnbdr2_OBJECTS = cnbdr2.o cnband.o
++cnbdr3_OBJECTS = cnbdr3.o cnband.o
++cnbdr4_OBJECTS = cnbdr4.o cnband.o
++dnbdr1_OBJECTS = dnbdr1.o dnband.o
++dnbdr2_OBJECTS = dnbdr2.o dnband.o
++dnbdr3_OBJECTS = dnbdr3.o dnband.o
++dnbdr4_OBJECTS = dnbdr4.o dnband.o
++dnbdr5_OBJECTS = dnbdr5.o dnband.o
++dnbdr6_OBJECTS = dnbdr6.o dnband.o
++dsbdr1_OBJECTS = dsbdr1.o dsband.o
++dsbdr2_OBJECTS = dsbdr2.o dsband.o
++dsbdr3_OBJECTS = dsbdr3.o dsband.o
++dsbdr4_OBJECTS = dsbdr4.o dsband.o
++dsbdr5_OBJECTS = dsbdr5.o dsband.o
++dsbdr6_OBJECTS = dsbdr6.o dsband.o
++snbdr1_OBJECTS = snbdr1.o snband.o
++snbdr2_OBJECTS = snbdr2.o snband.o
++snbdr3_OBJECTS = snbdr3.o snband.o
++snbdr4_OBJECTS = snbdr4.o snband.o
++snbdr5_OBJECTS = snbdr5.o snband.o
++snbdr6_OBJECTS = snbdr6.o snband.o
++ssbdr1_OBJECTS = ssbdr1.o ssband.o
++ssbdr2_OBJECTS = ssbdr2.o ssband.o
++ssbdr3_OBJECTS = ssbdr3.o ssband.o
++ssbdr4_OBJECTS = ssbdr4.o ssband.o
++ssbdr5_OBJECTS = ssbdr5.o ssband.o
++ssbdr6_OBJECTS = ssbdr6.o ssband.o
++znbdr1_OBJECTS = znbdr1.o znband.o
++znbdr2_OBJECTS = znbdr2.o znband.o
++znbdr3_OBJECTS = znbdr3.o znband.o
++znbdr4_OBJECTS = znbdr4.o znband.o
++
++all : cnbdr1 cnbdr2 cnbdr3 cnbdr4 \
++	dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \
++	dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \
++	snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \
++	ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \
++	znbdr1 znbdr2 znbdr3 znbdr4
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cnbdr1 : $(cnbdr1_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr2 : $(cnbdr2_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr3 : $(cnbdr3_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cnbdr4 : $(cnbdr4_OBJECTS)
++	$(F77LD) -o $@ $(cnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr1 : $(dnbdr1_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr2 : $(dnbdr2_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr3 : $(dnbdr3_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr4 : $(dnbdr4_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr5 : $(dnbdr5_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnbdr6 : $(dnbdr6_OBJECTS)
++	$(F77LD) -o $@ $(dnbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr1 : $(dsbdr1_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr2 : $(dsbdr2_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr3 : $(dsbdr3_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr4 : $(dsbdr4_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr5 : $(dsbdr5_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsbdr6 : $(dsbdr6_OBJECTS)
++	$(F77LD) -o $@ $(dsbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr1 : $(snbdr1_OBJECTS)
++	$(F77LD) -o $@ $(snbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr2 : $(snbdr2_OBJECTS)
++	$(F77LD) -o $@ $(snbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr3 : $(snbdr3_OBJECTS)
++	$(F77LD) -o $@ $(snbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr4 : $(snbdr4_OBJECTS)
++	$(F77LD) -o $@ $(snbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr5 : $(snbdr5_OBJECTS)
++	$(F77LD) -o $@ $(snbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snbdr6 : $(snbdr6_OBJECTS)
++	$(F77LD) -o $@ $(snbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr1 : $(ssbdr1_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr2 : $(ssbdr2_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr3 : $(ssbdr3_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr4 : $(ssbdr4_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr5 : $(ssbdr5_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssbdr6 : $(ssbdr6_OBJECTS)
++	$(F77LD) -o $@ $(ssbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr1 : $(znbdr1_OBJECTS)
++	$(F77LD) -o $@ $(znbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr2 : $(znbdr2_OBJECTS)
++	$(F77LD) -o $@ $(znbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr3 : $(znbdr3_OBJECTS)
++	$(F77LD) -o $@ $(znbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znbdr4 : $(znbdr4_OBJECTS)
++	$(F77LD) -o $@ $(znbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/COMPLEX/Makefile_complex	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/COMPLEX/Makefile_complex	2021-06-30 10:36:04.494505000 +0200
+@@ -0,0 +1,59 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cndrv1_OBJECTS = cndrv1.o
++cndrv2_OBJECTS = cndrv2.o
++cndrv3_OBJECTS = cndrv3.o
++cndrv4_OBJECTS = cndrv4.o
++zndrv1_OBJECTS = zndrv1.o
++zndrv2_OBJECTS = zndrv2.o
++zndrv3_OBJECTS = zndrv3.o
++zndrv4_OBJECTS = zndrv4.o
++
++all : cndrv1 cndrv2 cndrv3 cndrv4 \
++	zndrv1 zndrv2 zndrv3 zndrv4
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cndrv1 : $(cndrv1_OBJECTS)
++	$(F77LD) -o $@ $(cndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv2 : $(cndrv2_OBJECTS)
++	$(F77LD) -o $@ $(cndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv3 : $(cndrv3_OBJECTS)
++	$(F77LD) -o $@ $(cndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++cndrv4 : $(cndrv4_OBJECTS)
++	$(F77LD) -o $@ $(cndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv1 : $(zndrv1_OBJECTS)
++	$(F77LD) -o $@ $(zndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv2 : $(zndrv2_OBJECTS)
++	$(F77LD) -o $@ $(zndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv3 : $(zndrv3_OBJECTS)
++	$(F77LD) -o $@ $(zndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++zndrv4 : $(zndrv4_OBJECTS)
++	$(F77LD) -o $@ $(zndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/NONSYM/Makefile_nonsym	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/NONSYM/Makefile_nonsym	2021-06-30 10:36:04.498741000 +0200
+@@ -0,0 +1,75 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dndrv1_OBJECTS = dndrv1.o
++dndrv2_OBJECTS = dndrv2.o
++dndrv3_OBJECTS = dndrv3.o
++dndrv4_OBJECTS = dndrv4.o
++dndrv5_OBJECTS = dndrv5.o
++dndrv6_OBJECTS = dndrv6.o
++sndrv1_OBJECTS = sndrv1.o
++sndrv2_OBJECTS = sndrv2.o
++sndrv3_OBJECTS = sndrv3.o
++sndrv4_OBJECTS = sndrv4.o
++sndrv5_OBJECTS = sndrv5.o
++sndrv6_OBJECTS = sndrv6.o
++
++all : dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6 \
++	sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++dndrv1 : $(dndrv1_OBJECTS)
++	$(F77LD) -o $@ $(dndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv2 : $(dndrv2_OBJECTS)
++	$(F77LD) -o $@ $(dndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv3 : $(dndrv3_OBJECTS)
++	$(F77LD) -o $@ $(dndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv4 : $(dndrv4_OBJECTS)
++	$(F77LD) -o $@ $(dndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv5 : $(dndrv5_OBJECTS)
++	$(F77LD) -o $@ $(dndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dndrv6 : $(dndrv6_OBJECTS)
++	$(F77LD) -o $@ $(dndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv1 : $(sndrv1_OBJECTS)
++	$(F77LD) -o $@ $(sndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv2 : $(sndrv2_OBJECTS)
++	$(F77LD) -o $@ $(sndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv3 : $(sndrv3_OBJECTS)
++	$(F77LD) -o $@ $(sndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv4 : $(sndrv4_OBJECTS)
++	$(F77LD) -o $@ $(sndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv5 : $(sndrv5_OBJECTS)
++	$(F77LD) -o $@ $(sndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sndrv6 : $(sndrv6_OBJECTS)
++	$(F77LD) -o $@ $(sndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/PARPACK/EXAMPLES/MPI/Makefile_parpack	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/PARPACK/EXAMPLES/MPI/Makefile_parpack	2021-06-30 10:37:57.093198000 +0200
+@@ -0,0 +1,51 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++PARPACKLIB = -L$(ARPACK_LIB) -lparpack -larpack
++
++pcndrv1_OBJECTS = pcndrv1.o
++pdndrv1_OBJECTS = pdndrv1.o
++pdndrv3_OBJECTS = pdndrv3.o
++psndrv1_OBJECTS = psndrv1.o
++psndrv3_OBJECTS = psndrv3.o
++pzndrv1_OBJECTS = pzndrv1.o
++
++all : pcndrv1 pdndrv1 pdndrv3 \
++	psndrv1 psndrv3 pzndrv1
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++pcndrv1 : $(pcndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pcndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pdndrv1 : $(pdndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pdndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pdndrv3 : $(pdndrv3_OBJECTS)
++	$(F77LD) -o $@ $(pdndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++psndrv1 : $(psndrv1_OBJECTS)
++	$(F77LD) -o $@ $(psndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++psndrv3 : $(psndrv3_OBJECTS)
++	$(F77LD) -o $@ $(psndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++pzndrv1 : $(pzndrv1_OBJECTS)
++	$(F77LD) -o $@ $(pzndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SIMPLE/Makefile_simple	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SIMPLE/Makefile_simple	2021-06-30 10:36:04.541054000 +0200
+@@ -0,0 +1,51 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++cnsimp_OBJECTS = cnsimp.o
++dnsimp_OBJECTS = dnsimp.o
++dssimp_OBJECTS = dssimp.o
++snsimp_OBJECTS = snsimp.o
++sssimp_OBJECTS = sssimp.o
++znsimp_OBJECTS = znsimp.o
++
++all : cnsimp dnsimp dssimp \
++	snsimp sssimp znsimp 
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++cnsimp : $(cnsimp_OBJECTS)
++	$(F77LD) -o $@ $(cnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dnsimp : $(dnsimp_OBJECTS)
++	$(F77LD) -o $@ $(dnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dssimp : $(dssimp_OBJECTS)
++	$(F77LD) -o $@ $(dssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++snsimp : $(snsimp_OBJECTS)
++	$(F77LD) -o $@ $(snsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++sssimp : $(sssimp_OBJECTS)
++	$(F77LD) -o $@ $(sssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++znsimp : $(znsimp_OBJECTS)
++	$(F77LD) -o $@ $(znsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SVD/Makefile_svd	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SVD/Makefile_svd	2021-06-30 10:36:04.545031000 +0200
+@@ -0,0 +1,36 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dsvd_OBJECTS = dsvd.o
++ssvd_OBJECTS = ssvd.o
++
++all : dsvd \
++	ssvd 
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++
++dsvd : $(dsvd_OBJECTS)
++	$(F77LD) -o $@ $(dsvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssvd : $(ssvd_OBJECTS)
++	$(F77LD) -o $@ $(ssvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
+--- arpack-ng-3.8.0/EXAMPLES/SYM/Makefile_sym	1970-01-01 01:00:00.000000000 +0100
++++ arpack-ng-3.8.0-ok/EXAMPLES/SYM/Makefile_sym	2021-06-30 10:36:04.548174000 +0200
+@@ -0,0 +1,75 @@
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++#
++CC = mpicc
++CFLAGS = -g -O2
++CPP = mpicc -E
++CPPFLAGS = 
++
++F77 = mpif77
++FFLAGS = -g -O2
++F77LD = $(F77)
++FGREP = /bin/grep -F
++
++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread
++
++ARPACKLIB = -L$(ARPACK_LIB) -larpack
++
++dsdrv1_OBJECTS = dsdrv1.o
++dsdrv2_OBJECTS = dsdrv2.o
++dsdrv3_OBJECTS = dsdrv3.o
++dsdrv4_OBJECTS = dsdrv4.o
++dsdrv5_OBJECTS = dsdrv5.o
++dsdrv6_OBJECTS = dsdrv6.o
++ssdrv1_OBJECTS = ssdrv1.o
++ssdrv2_OBJECTS = ssdrv2.o
++ssdrv3_OBJECTS = ssdrv3.o
++ssdrv4_OBJECTS = ssdrv4.o
++ssdrv5_OBJECTS = ssdrv5.o
++ssdrv6_OBJECTS = ssdrv6.o
++
++all : dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6 \
++	ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6
++
++.SUFFIXES: .f .o 
++.f.o:
++	$(F77) -c -o $@ $<
++
++dsdrv1 : $(dsdrv1_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv2 : $(dsdrv2_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv3 : $(dsdrv3_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv4 : $(dsdrv4_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv5 : $(dsdrv5_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++dsdrv6 : $(dsdrv6_OBJECTS)
++	$(F77LD) -o $@ $(dsdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv1 : $(ssdrv1_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv2 : $(ssdrv2_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv3 : $(ssdrv3_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv4 : $(ssdrv4_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv5 : $(ssdrv5_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++ssdrv6 : $(ssdrv6_OBJECTS)
++	$(F77LD) -o $@ $(ssdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS)
++
++
diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eaa66876668de0ab0cc40e9b9f9847d02aca59ab
--- /dev/null
+++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb
@@ -0,0 +1,62 @@
+easyblock = 'ConfigureMake'
+
+name = 'ARPACK-NG'
+
+version = '3.8.0'
+
+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'
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+
+toolchainopts = {'opt': True, 'optarch': True, 'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/opencollab/arpack-ng/archive/']
+
+sources = ["%(version)s.tar.gz"]
+
+patches = [
+    'ARPACK-NG-%(version)s-install-arpack-examples.patch'
+]
+
+checksums = [
+    'ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d',  # 3.8.0.tar.gz
+    'bd5a1d29d8ca0ac8ab87e2f78d06d4fd13ee8ae22ad9b12d36512f20eeb86f62',  # ARPACK-NG-3.8.0-install-arpack-examples.patch
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0')
+]
+
+preconfigopts = 'sh bootstrap &&'
+
+configopts = '--enable-mpi --with-pic --enable-static --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"'
+
+postinstallcmds = [
+    "cp -r EXAMPLES %(installdir)s/EXAMPLES",
+    "cp -r PARPACK/EXAMPLES/MPI %(installdir)s/EXAMPLES/PARPACK",
+]
+
+sanity_check_paths = {
+    'files': ["lib/libarpack.a", "lib/libarpack.%s" % SHLIB_EXT, "lib/libparpack.a", "lib/libparpack.%s" % SHLIB_EXT],
+    'dirs': []
+}
+
+modextravars = {
+    'ARPACK_ROOT': '%(installdir)s',
+    'PARPACK_ROOT': '%(installdir)s',
+    'ARPACK_LIB': '%(installdir)s/lib',
+    'PARPACK_LIB': '%(installdir)s/lib'
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/a/ArviZ/ArviZ-0.14.0-foss-2022a.eb b/Golden_Repo/a/ArviZ/ArviZ-0.14.0-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aee267ecf90ab9348058a13c3cdc835f4eed281e
--- /dev/null
+++ b/Golden_Repo/a/ArviZ/ArviZ-0.14.0-foss-2022a.eb
@@ -0,0 +1,43 @@
+easyblock = 'PythonBundle'
+
+name = 'ArviZ'
+version = '0.14.0'
+
+homepage = 'https://github.com/arviz-devs/arviz'
+description = "Exploratory analysis of Bayesian models with Python"
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('netcdf4-python', '1.6.1'),
+    ('xarray', '2022.9.0', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('typing-extensions', '4.3.0'),
+    ('h5py', '3.7.0'),
+]
+
+exts_list = [
+    ('xarray-einstats', '0.5.1', {
+        'checksums': ['45283e8b471ac54ac2957bc14e311f681b84dabc50c85959b9931e6f5cc60bcb'],
+    }),
+    ('daft', '0.1.2', {
+        'checksums': ['3e77e0389ca539a5741a906bcdcaae462b68261d06b960b0c04498b695d312e5'],
+    }),
+    ('h5netcdf', '1.1.0', {
+        'checksums': ['932c3b573bed7370ebfc9e802cd60f1a4da5236efb11b36eeff897324d76bf56'],
+    }),
+    (name, version, {
+        'sources': ['%(namelower)s-%(version)s.tar.gz'],
+        'checksums': ['a5d7148c76ab9b50fa56f2c09c71b83b1e407aa6e1aa7581b03e9a91866e91ef'],
+    }),
+]
+
+download_dep_fail = True
+use_pip = True
+
+sanity_pip_check = True
+
+moduleclass = 'math'
diff --git a/Golden_Repo/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb b/Golden_Repo/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fb96f2a98977b6b27b07179872c94899ae66c5ee
--- /dev/null
+++ b/Golden_Repo/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb
@@ -0,0 +1,51 @@
+# #
+# EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2012-2014 Uni.Lu/LCSB, NTUA
+# Authors::   Fotis Georgatos <fotis@cern.ch>, Kenneth Hoste (UGent)
+# License::   MIT/GPL
+# $Id$
+#
+# This work implements a part of the HPCBIOS project and is a component of
+# the policy: https://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-94.html
+# #
+
+easyblock = 'ConfigureMake'
+
+name = 'BLAST+'
+version = '2.13.0'
+
+homepage = 'https://blast.ncbi.nlm.nih.gov/'
+description = """Basic Local Alignment Search Tool, or BLAST, is an algorithm
+ for comparing primary biological sequence information, such as the amino-acid
+ sequences of different proteins or the nucleotides of DNA sequences."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+source_urls = ['https://ftp.ncbi.nlm.nih.gov/blast/executables/%(namelower)s/%(version)s/']
+sources = ['ncbi-blast-%(version)s+-src.tar.gz']
+checksums = ['89553714d133daf28c477f83d333794b3c62e4148408c072a1b4620e5ec4feb2']
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('bzip2', '1.0.8'),
+    ('PCRE', '8.45'),
+    ('Boost', '1.79.0'),
+    ('GMP', '6.2.1'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('LMDB', '0.9.29'),
+]
+
+configopts = "--with-64 --with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 "
+configopts += "--with-pcre=$EBROOTPCRE --with-boost=$EBROOTBOOST "
+configopts += "--with-gmp=$EBROOTGMP --with-png=$EBROOTLIBPNG "
+configopts += "--with-jpeg=$EBROOTLIBJPEGMINTURBO --with-lmdb=$EBROOTLMDB"
+
+sanity_check_paths = {
+    'files': ['bin/blastn', 'bin/blastp', 'bin/blastx'],
+    'dirs': [],
+}
+
+moduleclass = 'bio'
diff --git a/Golden_Repo/b/bokeh/bokeh-2.4.2-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/b/bokeh/bokeh-2.4.2-gcccoremkl-11.3.0-2022.1.0.eb
index 1400045dd75b5e533334b0014e51a5af683109b8..647e5db04ebccd6d78b931f17f96d896716a8a17 100644
--- a/Golden_Repo/b/bokeh/bokeh-2.4.2-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/b/bokeh/bokeh-2.4.2-gcccoremkl-11.3.0-2022.1.0.eb
@@ -20,8 +20,8 @@ dependencies = [
 use_pip = True
 
 exts_list = [
-    ('tornado', '6.1', {
-        'checksums': ['33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791'],
+    ('tornado', '6.2', {
+        'checksums': ['9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13'],
     }),
     (name, version, {
         'checksums': ['f0a4b53364ed3b7eb936c5cb1a4f4132369e394c7ae0a8ef420459410958033d'],
diff --git a/Golden_Repo/c/CDO/CDO-2.1.1-gompi-2022a.eb b/Golden_Repo/c/CDO/CDO-2.1.1-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e4e2011e14fd567636e38c5311d78054949f20a6
--- /dev/null
+++ b/Golden_Repo/c/CDO/CDO-2.1.1-gompi-2022a.eb
@@ -0,0 +1,55 @@
+# updated to version 2.1.1
+# updated to version 2.0.6, based on the previous 2.0.5 version
+# J. Sassmannshausen (Imperial College London, UK)
+# Alex Domingo (Vrije Universiteit Brussel, BE)
+# Maxim Masterov (SURF, NL)
+
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '2.1.1'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'cstd': 'c++17', 'usempi': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/27654/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['c29d084ccbda931d71198409fb2d14f99930db6e7a3654b3c0243ceb304755d9']
+
+builddependencies = [
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('cURL', '7.83.0'),
+    ('ecCodes', '2.27.0'),
+    ('FFTW', '3.3.10'),
+    ('HDF5', '1.12.2'),
+    ('libxml2', '2.9.13'),
+    ('netCDF', '4.9.0'),
+    ('PROJ', '9.0.0'),
+    ('Szip', '2.1.1'),
+    ('UDUNITS', '2.2.28'),
+    ('util-linux', '2.38'),
+]
+
+# Build libcdi
+configopts = "--enable-cdi-lib "
+
+# Use dependencies from EasyBuild
+configopts += "--with-curl=$EBROOTCURL --with-eccodes=$EBROOTECCODES --with-fftw3 --with-hdf5=$EBROOTHDF5 "
+configopts += "--with-netcdf=$EBROOTNETCDF --with-proj=$EBROOTPROJ --with-szlib=$EBROOTSZIP "
+configopts += "--with-udunits2=$EBROOTUDUNITS --with-util-linux-uuid=$EBROOTUTILMINLINUX "
+
+sanity_check_paths = {
+    'files': ['bin/cdo', 'lib/libcdi.a', 'lib/libcdi.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+sanity_check_commands = [
+    "cdo --version  2>&1 | grep 'CDI library version : %(version)s'"]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/c/CDO/CDO-2.1.1-gpsmpi-2022a.eb b/Golden_Repo/c/CDO/CDO-2.1.1-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f26f3eab818eb893f4a5807be01ba6cdcd01bc84
--- /dev/null
+++ b/Golden_Repo/c/CDO/CDO-2.1.1-gpsmpi-2022a.eb
@@ -0,0 +1,55 @@
+# updated to version 2.1.1
+# updated to version 2.0.6, based on the previous 2.0.5 version
+# J. Sassmannshausen (Imperial College London, UK)
+# Alex Domingo (Vrije Universiteit Brussel, BE)
+# Maxim Masterov (SURF, NL)
+
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '2.1.1'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'cstd': 'c++17', 'usempi': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/27654/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['c29d084ccbda931d71198409fb2d14f99930db6e7a3654b3c0243ceb304755d9']
+
+builddependencies = [
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('cURL', '7.83.0'),
+    ('ecCodes', '2.27.0'),
+    ('FFTW', '3.3.10'),
+    ('HDF5', '1.12.2'),
+    ('libxml2', '2.9.13'),
+    ('netCDF', '4.9.0'),
+    ('PROJ', '9.0.0'),
+    ('Szip', '2.1.1'),
+    ('UDUNITS', '2.2.28'),
+    ('util-linux', '2.38'),
+]
+
+# Build libcdi
+configopts = "--enable-cdi-lib "
+
+# Use dependencies from EasyBuild
+configopts += "--with-curl=$EBROOTCURL --with-eccodes=$EBROOTECCODES --with-fftw3 --with-hdf5=$EBROOTHDF5 "
+configopts += "--with-netcdf=$EBROOTNETCDF --with-proj=$EBROOTPROJ --with-szlib=$EBROOTSZIP "
+configopts += "--with-udunits2=$EBROOTUDUNITS --with-util-linux-uuid=$EBROOTUTILMINLINUX "
+
+sanity_check_paths = {
+    'files': ['bin/cdo', 'lib/libcdi.a', 'lib/libcdi.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+sanity_check_commands = [
+    "cdo --version  2>&1 | grep 'CDI library version : %(version)s'"]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/c/CDO/CDO-2.1.1-ipsmpi-2022a.eb b/Golden_Repo/c/CDO/CDO-2.1.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..303c4f1e0d8e5b649e046fec5f76f4b28c0efcbb
--- /dev/null
+++ b/Golden_Repo/c/CDO/CDO-2.1.1-ipsmpi-2022a.eb
@@ -0,0 +1,61 @@
+# updated to version 2.1.1 based on 2.0.6
+# updated to version 2.0.6, based on the previous 2.0.5 version
+# J. Sassmannshausen (Imperial College London, UK)
+# Alex Domingo (Vrije Universiteit Brussel, BE)
+# Maxim Masterov (SURF, NL)
+
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '2.1.1'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'cstd': 'c++17', 'usempi': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/27654']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['c29d084ccbda931d71198409fb2d14f99930db6e7a3654b3c0243ceb304755d9']
+
+builddependencies = [
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('cURL', '7.83.0'),
+    ('ecCodes', '2.27.0'),
+    ('FFTW', '3.3.10'),
+    ('HDF5', '1.12.2'),
+    ('libxml2', '2.9.13'),
+    ('netCDF', '4.9.0'),
+    ('PROJ', '9.0.0'),
+    ('Szip', '2.1.1'),
+    ('UDUNITS', '2.2.28'),
+    ('util-linux', '2.38'),
+]
+
+# select icx and icpx instead of icp and icpc and
+# replace -fp-model source by -fp-model=precise (as source is not an option for Intel oneAPI compiler)
+preconfigopts = 'FC=ifx CC=icx CXX=icpx MPICH_CC=icx MPICH_CXX=icpx '
+preconfigopts += 'CFLAGS="-O2 -march=core-avx2 -ftz -fp-speculation=safe -fp-model=precise -fPIC" '
+preconfigopts += 'CXXFLAGS="-O2 -march=core-avx2 -ftz -fp-speculation=safe -fp-model=precise -fPIC" '
+
+# Build libcdi
+configopts = "--enable-cdi-lib "
+
+# Use dependencies from EasyBuild
+configopts += '--with-curl=$EBROOTCURL --with-eccodes=$EBROOTECCODES --with-fftw3 --with-hdf5=$EBROOTHDF5 '
+configopts += '--with-netcdf=$EBROOTNETCDF --with-proj=$EBROOTPROJ --with-szlib=$EBROOTSZIP '
+configopts += '--with-udunits2=$EBROOTUDUNITS --with-util-linux-uuid=$EBROOTUTILMINLINUX '
+
+sanity_check_paths = {
+    'files': ['bin/cdo', 'lib/libcdi.a', 'lib/libcdi.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+sanity_check_commands = [
+    "cdo --version  2>&1 | grep 'CDI library version : %(version)s'"]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/c/CP2K/CP2K-2023.1-intel-para-2022a.eb b/Golden_Repo/c/CP2K/CP2K-2023.1-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f7abfa87403f3ed6ec5dd67d6ea1626f94d9ec31
--- /dev/null
+++ b/Golden_Repo/c/CP2K/CP2K-2023.1-intel-para-2022a.eb
@@ -0,0 +1,98 @@
+name = 'CP2K'
+version = '2023.1'
+
+homepage = 'http://www.cp2k.org/'
+description = """CP2K is a freely available (GPL) program, written in Fortran 95, to perform atomistic and molecular
+ simulations of solid state, liquid, molecular and biological systems. It provides a general framework for different
+ methods such as e.g. density functional theory (DFT) using a mixed Gaussian and plane waves approach (GPW), and
+ classical pair and many-body potentials. 
+ The default eigensolver is set to Scalapack. This setting can be overridden by specifiying 
+ PREFERRED_DIAG_LIBRARY ELPA in the global section of the cp2k input. Note, that application-dependent 
+ - in particular for small basis sizes - the use of the ELPA eigensolver library can cause dead-locks:
+ the program might be killed with a corresponding message from the MPI library ( parastation mpi) 
+ or even hang (openmpi). The user is advised to check whether the particular application is prone to 
+ deadlocks if ELPA is switched on.
+ The Libvori library for  Voronoi integration and the BQB compressed volumetric trajectory data is included
+ (https://brehm-research.de/voronoi, https://brehm-research.de/bqb).
+ Tree-Monte-Carlo is disfunctional; this is the hybrid MPI/OpenMP version of CP2K.
+"""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'pic': True, 'openmp': True}
+
+# which dbcsr_version
+dbcsr_version = '2.5.0'
+libvori_version = '-220621'
+spglib_version = '1.16.2'
+local_libvori_version = '-220621'
+
+sources = [
+    'cp2k/archive/v%(version)s.tar.gz',
+    'dbcsr/archive/refs/tags/v%s.tar.gz' % dbcsr_version,
+    'libvori%s.tar.gz' % local_libvori_version,
+    'spglib-1.16.2.tar.gz',
+]
+source_urls = [
+    'https://github.com/cp2k/',
+    'https://github.com/cp2k/',
+    'https://www.brehm-research.de/files/',
+]
+
+patches = [
+    'CP2K-2023.1_fftw3_lib.patch',
+    'CP2K-2023.1_elpa.patch',
+    'CP2K-2023.1_dbcsr.patch',
+]
+
+checksums = [
+    'b837f3f8329e92b98959edfd198dc83447737098844a5102e19c83748af9ec2e',
+    '24138461cf0b347ab6df0fba192bca6a026f22c3f0bc29abdae2df9e830809ca',
+    '1cfa98c564814bddacf1c0e7f11582137d758668f6307e6eb392c72317984c14',
+    '5723789bee7371ebba91d78c729d2a608f198fad5e1c95eebe18fda9f2914ec8',
+    '1b7674b0046d329f9913ed99e92b53481e878a04a4856c817228d4816d0ea624',
+    '33c765f5e119541d943c0d9386059e1ef6f82ca1f2e9490adeca6b86656b5b2d',
+    'c480c46d31290056079f6a9d5fa17454d34169d1a7850af22378dd794257c3b7'
+]
+
+dependencies = [
+    ('libxc', '5.2.3', '', ('intel-compilers', '2022.1.0')),
+    ('FFTW', '3.3.10', ''),
+    ('Libint', '2.7.2', '_cp2k_lmax5', ('intel-compilers', '2022.1.0')),
+    ('ELPA', '2022.11.001.rc1'),
+    ('libxsmm', '1.17', '', ('intel-compilers', '2022.1.0')),
+    ('PLUMED', '2.8.1'),
+]
+
+builddependencies = [
+    ('flex', '2.6.4'),
+    ('CMake', '3.23.1'),
+    ('Python', '3.10.4', '', ('GCCcore', '11.3.0')),
+]
+
+# Add PLUMED support
+plumed = True
+
+# Disable CUDA
+cuda = False
+
+# explicit unrolled loops up to __MAX_CONTR, 4 gives excessive compiler times
+configopts = '-D__MAX_CONTR=3'
+
+# popt or psmp
+type = 'psmp'
+
+# run tests separately (2 nodes of juwels approx 1 hour)
+runtest = False
+
+
+# additional DFLAGS
+extradflags = '-D__MKL -D__LIBVORI -D__SPGLIB'
+
+# regression test reports failures
+ignore_regtest_fails = False
+
+modextravars = {
+    'CP2K_DATA_DIR': '%(installdir)s/data',
+}
+
+moduleclass = 'chem'
diff --git a/Golden_Repo/c/Cartopy/Cartopy-0.21.0-GCCcore-11.3.0.eb b/Golden_Repo/c/Cartopy/Cartopy-0.21.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..22767d1d172235076f5d3e3f4d0b1e70adfca461
--- /dev/null
+++ b/Golden_Repo/c/Cartopy/Cartopy-0.21.0-GCCcore-11.3.0.eb
@@ -0,0 +1,51 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+# Updated: Denis Kristak
+easyblock = 'PythonBundle'
+
+name = 'Cartopy'
+version = '0.21.0'
+
+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."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Fiona', '1.8.22'),
+    ('GDAL', '3.5.0'),
+    ('GEOS', '3.11.1'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('Shapely', '1.8.5.post1'),
+    ('lxml', '4.9.1'),
+    ('Pillow-SIMD', '9.2.0'),
+    ('PROJ', '9.0.0'),
+    ('PyYAML', '6.0'),
+    ('pyproj', '3.4.0'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# owslib 0.26.0 requires pyproj < 3.3.0
+exts_list = [
+    ('OWSLib', '0.27.2', {
+        'checksums': ['e102aa2444dfe0c8439ab1e1776cc0fa47cea28c09b8a28212c893c6017c179b'],
+    }),
+    ('pyepsg', '0.4.0', {
+        'checksums': ['2d08fad1e7a8b47a90a4e43da485ba95705923425aefc4e2a3efa540dbd470d7'],
+    }),
+    ('pykdtree', '1.3.6', {
+        'checksums': ['780b693d0555b857d7aab31e35d4293bf4ebdb9dec7a45ba4bb23b4400f626dc'],
+    }),
+    ('pyshp', '2.3.1', {
+        'modulename': 'shapefile',
+        'checksums': ['4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1'],
+    }),
+    (name, version, {
+        'checksums': ['ce1d3a28a132e94c89ac33769a50f81f65634ab2bd40556317e15bd6cad1ce42'],
+    }),
+]
+
+moduleclass = 'geo'
diff --git a/Golden_Repo/c/Cartopy/Cartopy-0.20.3-foss-2022a.eb b/Golden_Repo/c/Cartopy/Cartopy-0.21.0-foss-2022a.eb
similarity index 100%
rename from Golden_Repo/c/Cartopy/Cartopy-0.20.3-foss-2022a.eb
rename to Golden_Repo/c/Cartopy/Cartopy-0.21.0-foss-2022a.eb
diff --git a/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..21eaff1368daa7838ce3493da7863aa81997a027
--- /dev/null
+++ b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb
@@ -0,0 +1,41 @@
+easyblock = 'CMakeMake'
+
+name = 'Catalyst'
+version = '2.0.0-rc3'
+
+homepage = "https://gitlab.kitware.com/paraview/catalyst/"
+description = """
+Catalyst is an API specification developed for simulations
+(and other scientific data producers)
+to analyze and visualize data in situ.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = [('https://gitlab.kitware.com/paraview/catalyst/-/archive/v%(version)s/')]
+sources = [('catalyst-v%(version)s.tar.gz')]
+checksums = ['8862bd0a4d0be2176b4272f9affda1ea4e5092087acbb99a2fe2621c33834e05']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = []
+
+separate_build_dir = True
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCATALYST_BUILD_TOOLS=ON '
+configopts += '-DCATALYST_USE_MPI=ON '
+
+# postinstallcmds = []
+
+sanity_check_paths = {
+    'files': ['lib/libcatalyst.so'],
+    'dirs': ['include/', 'lib'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1dde871ba337a511525a8b718aefa3fefb6b9e36
--- /dev/null
+++ b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb
@@ -0,0 +1,41 @@
+easyblock = 'CMakeMake'
+
+name = 'Catalyst'
+version = '2.0.0-rc3'
+
+homepage = "https://gitlab.kitware.com/paraview/catalyst/"
+description = """
+Catalyst is an API specification developed for simulations
+(and other scientific data producers)
+to analyze and visualize data in situ.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = [('https://gitlab.kitware.com/paraview/catalyst/-/archive/v%(version)s/')]
+sources = [('catalyst-v%(version)s.tar.gz')]
+checksums = ['8862bd0a4d0be2176b4272f9affda1ea4e5092087acbb99a2fe2621c33834e05']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = []
+
+separate_build_dir = True
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCATALYST_BUILD_TOOLS=ON '
+configopts += '-DCATALYST_USE_MPI=ON '
+
+# postinstallcmds = []
+
+sanity_check_paths = {
+    'files': ['lib/libcatalyst.so'],
+    'dirs': ['include/', 'lib'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/c/Colmap/Colmap-3.8-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/c/Colmap/Colmap-3.8-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1bea63bc85f7c8367e0e92af2092008e8fb1e452
--- /dev/null
+++ b/Golden_Repo/c/Colmap/Colmap-3.8-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,50 @@
+easyblock = 'CMakeMake'
+
+name = 'Colmap'
+version = '3.8'
+
+homepage = 'https://colmap.github.io'
+description = """COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline
+with a graphical and command-line interface.
+"""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'cstd': 'c++14'}
+
+github_account = 'colmap'
+source_urls = [GITHUB_SOURCE]
+sources = ['%(version)s.tar.gz']
+checksums = ['02288f8f61692fe38049d65608ed832b31246e7792692376afb712fa4cef8775']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Eigen', '3.4.0'),
+    ('Boost', '1.79.0'),
+    ('gflags', '2.2.2'),
+    ('glog', '0.6.0'),
+    ('SuiteSparse', '5.13.0', '-nompi'),
+    ('CGAL', '5.5.1'),
+    ('ceres-solver', '2.1.0'),
+    ('FreeImage', '3.18.0'),
+    ('FLANN', '1.9.2'),
+    ('SQLite', '3.38.3'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('OpenGL', '2022a'),
+    ('Qt5', '5.15.5'),
+]
+
+configopts = "-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF "
+configopts += "-DCUDA_ENABLED=ON "
+configopts += "-DCMAKE_CUDA_ARCHITECTURES=all-major "
+configopts += "-DCUDA_NVCC_FLAGS='--std c++14' "
+
+sanity_check_paths = {
+    'files': ['bin/colmap', 'lib/colmap/libcolmap.a'],
+    'dirs': [],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/c/CubeGUI/CubeGUI-4.8.1-GCCcore-11.3.0.eb b/Golden_Repo/c/CubeGUI/CubeGUI-4.8.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aef19002e498f888b4228c72d3840318c0dea55e
--- /dev/null
+++ b/Golden_Repo/c/CubeGUI/CubeGUI-4.8.1-GCCcore-11.3.0.eb
@@ -0,0 +1,60 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2018-2022 Juelich Supercomputing Centre, Germany
+# Authors::   Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'CubeGUI'
+version = '4.8.1'
+
+homepage = 'https://www.scalasca.org/software/cube-4.x/download.html'
+description = """
+Cube, which is used as performance report explorer for Scalasca and Score-P,
+is a generic tool for displaying a multi-dimensional performance space
+consisting of the dimensions (i) performance metric, (ii) call path, and
+(iii) system resource. Each dimension can be represented as a tree, where
+non-leaf nodes of the tree can be collapsed or expanded to achieve the
+desired level of granularity.
+
+This module provides the Cube graphical report explorer.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/cubegui/tags/cubegui-%(version)s']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['a8a2a62b4e587c012d3d32385bed7c500db14232419795e0f4272d1dcefc55bc']
+
+builddependencies = [
+    # use same binutils version that was used when building GCCcore
+    ('binutils', '2.38'),
+    ('CubeLib', '4.8.1'),
+]
+
+dependencies = [
+    ('Qt5', '5.15.5'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/cube', 'bin/cubegui-config',
+              ('lib/libcube4gui.a', 'lib64/libcube4gui.a'),
+              ('lib/libcube4gui.%s' % SHLIB_EXT, 'lib64/libcube4gui.%s' % SHLIB_EXT)],
+    'dirs': ['include/cubegui', 'lib/cube-plugins'],
+}
+
+# CubeGUI (and other Qt apps that use OpenGl) crash from time to time
+# or don't show any output when using Qt's WebEngine with the default
+# KNOB_MAX_WORKER_THREADS value of 65535. Even with a value of 10 this
+# behavior doesn't vanish. Thus, don't use WebEngine at all, although
+# it makes nicer output.
+configopts = '--without-web-engine'
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/c/CubeLib/CubeLib-4.8.1-GCCcore-11.3.0.eb b/Golden_Repo/c/CubeLib/CubeLib-4.8.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..36411f277582f528eb9cca3e31a51431723095e9
--- /dev/null
+++ b/Golden_Repo/c/CubeLib/CubeLib-4.8.1-GCCcore-11.3.0.eb
@@ -0,0 +1,58 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2018-2022 Juelich Supercomputing Centre, Germany
+# Authors::   Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'CubeLib'
+version = '4.8.1'
+
+homepage = 'https://www.scalasca.org/software/cube-4.x/download.html'
+description = """
+Cube, which is used as performance report explorer for Scalasca and Score-P,
+is a generic tool for displaying a multi-dimensional performance space
+consisting of the dimensions (i) performance metric, (ii) call path, and
+(iii) system resource. Each dimension can be represented as a tree, where
+non-leaf nodes of the tree can be collapsed or expanded to achieve the
+desired level of granularity.
+
+This module provides the Cube general purpose C++ library component and
+command-line tools.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/cubelib/tags/cubelib-%(version)s']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = [
+    'e4d974248963edab48c5d0fc5831146d391b0ae4632cccafe840bf5f12cd80a9',  # cubelib-4.8.1.tar.gz
+]
+
+builddependencies = [
+    # use same binutils version that was used when building GCCcore
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+]
+
+configopts = '--enable-shared'
+
+sanity_check_paths = {
+    'files': ['bin/cubelib-config',
+              ('lib/libcube4.a', 'lib64/libcube4.a'),
+              ('lib/libcube4.%s' % SHLIB_EXT, 'lib64/libcube4.%s' % SHLIB_EXT)],
+    'dirs': ['include/cubelib'],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/c/CubeWriter/CubeWriter-4.8.1-GCCcore-11.3.0.eb b/Golden_Repo/c/CubeWriter/CubeWriter-4.8.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..da37ae465ca99f7fed980a0ddbcec45fe03e26c7
--- /dev/null
+++ b/Golden_Repo/c/CubeWriter/CubeWriter-4.8.1-GCCcore-11.3.0.eb
@@ -0,0 +1,57 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2018-2022 Juelich Supercomputing Centre, Germany
+# Authors::   Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'CubeWriter'
+version = '4.8.1'
+
+homepage = 'https://www.scalasca.org/software/cube-4.x/download.html'
+description = """
+Cube, which is used as performance report explorer for Scalasca and Score-P,
+is a generic tool for displaying a multi-dimensional performance space
+consisting of the dimensions (i) performance metric, (ii) call path, and
+(iii) system resource. Each dimension can be represented as a tree, where
+non-leaf nodes of the tree can be collapsed or expanded to achieve the
+desired level of granularity.
+
+This module provides the Cube high-performance C writer library component.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/cubew/tags/cubew-%(version)s']
+sources = ['cubew-%(version)s.tar.gz']
+checksums = [
+    '42cbd743d87c16e805c8e28e79292ab33de259f2cfba46f2682cb35c1bc032d6',  # cubew-4.8.1.tar.gz
+]
+
+builddependencies = [
+    # use same binutils version that was used when building GCCcore
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+]
+
+configopts = '--enable-shared'
+
+sanity_check_paths = {
+    'files': ['bin/cubew-config',
+              ('lib/libcube4w.a', 'lib64/libcube4w.a'),
+              ('lib/libcube4w.%s' % SHLIB_EXT, 'lib64/libcube4w.%s' % SHLIB_EXT)],
+    'dirs': ['include/cubew'],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/c/cirq/Cirq-1.0.0-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/c/cirq/Cirq-1.0.0-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..83e70b11dd275137bb88315273cf6e7b2c7ea3fe
--- /dev/null
+++ b/Golden_Repo/c/cirq/Cirq-1.0.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,133 @@
+easyblock = 'PythonBundle'
+
+name = 'Cirq'
+version = '1.0.0'
+
+homepage = 'https://github.com/quantumlib/cirq'
+description = """A python framework for creating, editing,
+and invoking Noisy Intermediate Scale Quantum (NISQ) circuits."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05'),
+    ('sympy', '1.11.1', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('protobuf-python', '3.19.4'),
+    ('networkx', '2.8.4'),
+    ('tqdm', '4.64.0'),
+    ('PyQuil', '3.3.3'),
+]
+
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'use_pip_for_deps': False,
+    'sanity_pip_check': True,
+}
+
+
+exts_list = [
+    ('pyasn1-modules', '0.2.8', {
+        'checksums': ['905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e'],
+    }),
+    ('cachetools', '4.2.4', {
+        'checksums': ['89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693'],
+    }),
+    ('rsa', '4.9', {
+        'checksums': ['e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21'],
+    }),
+    ('grpcio', '1.54.0', {
+        'modulename': 'grpc',
+        'source_tmpl': '%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl',
+        'checksums': ['48cb7af77238ba16c77879009003f6b22c23425e5ee59cb2c4c103ec040638a5'],
+    }),
+    ('grpcio-status', '1.48.2', {
+        'modulename': 'grpc',
+        'checksums': ['53695f45da07437b7c344ee4ef60d370fd2850179f5a28bb26d8e2aa1102ec11'],
+    }),
+    ('googleapis-common-protos', '1.56.4', {
+        'modulename': 'google',
+        'checksums': ['c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417'],
+    }),
+    ('google_auth', '1.35.0', {
+        'modulename': 'google.auth',
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258'],
+    }),
+    ('google-api-core', '1.32.0', {
+        'modulename': 'google',
+        'checksums': ['101c3c4cf8e7d53badd1dbca7071464353a04b17319a3dbb3a94eaa893da091c'],
+    }),
+    ('proto-plus', '1.22.2', {
+        'modulename': 'proto',
+        'checksums': ['0e8cda3d5a634d9895b75c573c9352c16486cb75deb0e078b5fda34db4243165'],
+    }),
+    ('duet', '0.2.8', {
+        'source_tmpl': 'duet-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['db3193de2218ffd53a137f2ba5cdd3af988558613891fe5280c52708133d5ed6'],
+    }),
+    ('cirq-web', version, {
+        'source_tmpl': 'cirq_web-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['e3ebc6043b5a6a2a4ba57a71ea9ea5bc487732527b4512961e4c4ce90b2f5744'],
+    }),
+    ('cirq-pasqal', version, {
+        'source_tmpl': 'cirq_pasqal-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['1243aae6514aadb6a5e2f729da3d99904d20631e7d2a7fbaef69c7377a9158b5'],
+    }),
+    ('cirq-core', version, {
+        'modulename': False,
+        'source_tmpl': 'cirq_core-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['a1df552e99ab339121c40c7bf4d18ba542bba151dd8b5ac8c4c33b7b9d46ba10'],
+    }),
+    ('cirq-ionq', version, {
+        'source_tmpl': 'cirq_ionq-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['31ff254a5b514736f79a92a186d473b3e40550c94ad36aeebddea1cb840fb065'],
+    }),
+    ('cirq-rigetti', version, {
+        'source_tmpl': 'cirq_rigetti-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['a0ff2ac5dea2b175ced45ade23bd2bfc2f1d8d280b6a003b1dcdddfdd579c0bd'],
+    }),
+    ('cirq-aqt', version, {
+        'source_tmpl': 'cirq_aqt-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['db7af0b40ceded8a5951f74f36e2235a873df519078e069a6e4d00fda4acd82d'],
+    }),
+    ('cirq-google', version, {
+        'source_tmpl': 'cirq_google-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['8fd1df0fd97d1ee076c01a2b2ab86aac966692890fb2793a45ef2393a6ccc4ab'],
+    }),
+    ('cirq', version, {
+        'source_tmpl': 'cirq-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['8d61feba1c8d2a37d82a53e2500fb2430ad8e0ca7c3e2562fbd554bea0d9d7f7'],
+    }),
+]
+
+
+# This easyconfig cirq=1.0.0 works with Stage 2023's protobuf==3.19.4, but requires
+# different  versions of the following packages than the ones provided by:
+# 1) TensorFlow:
+# different: google-auth==2.16.0, grpcio==1.51.1, cachetools=='5.2.1'
+# same: pyasn1-modules=='0.2.8', rsa==4.9
+# 2) tensorboard:
+# different: google-auth==2.11.1, grpcio==1.49.1, cachetools=='5.2.0'
+# same: pyasn1-modules=='0.2.8', rsa==4.9
+
+# Therefore we make Cirq conflict with TensorFLow or tensorboard if they are loaded simultaneously
+modluafooter = """
+conflict("TensorFlow", "tensorboard")
+"""
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/d/DWave/DWave-6.3.0-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/d/DWave/DWave-6.3.0-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..181adbb8bfb4929cfde68cbdad5da09bde4c9e0e
--- /dev/null
+++ b/Golden_Repo/d/DWave/DWave-6.3.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,142 @@
+easyblock = 'PythonBundle'
+
+name = 'DWave'
+version = '6.3.0'
+
+homepage = 'https://docs.ocean.dwavesys.com'
+description = """Ocean software is a suite of tools D-Wave Systems for solving hard problems with quantum computers."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('networkx', '2.8.4'),
+    ('Flask', '2.2.2'),
+]
+
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+exts_list = [
+    ('wrapt', '1.14.1', {
+        'checksums': ['380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d'],
+    }),
+    ('PySocks', '1.7.1', {
+        'modulename': 'socks',
+        'checksums': ['3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0'],
+    }),
+    ('blinker', '1.6.2', {
+        'checksums': ['4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213'],
+    }),
+    ('Deprecated', '1.2.13', {
+        'checksums': ['43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d'],
+    }),
+    ('rectangle_packer', '2.0.1', {
+        'modulename': 'rpack',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86'
+                    '_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['06c6f1d55f12c38e11659125d86e23430e4296ccff3584b3084e4d89197f4b62'],
+    }),
+    ('fasteners', '0.18', {
+        'checksums': ['cb7c13ef91e0c7e4fe4af38ecaf6b904ec3f5ce0dda06d34924b6b74b869d953'],
+    }),
+    ('plucky', '0.4.3', {
+        'checksums': ['5bc75d43ae6b40f1b7ba42000b37e4934fa6bd2d6a6cd4e47461f803a404c194'],
+    }),
+    ('homebase', '1.0.1', {
+        'checksums': ['9ee008df4298b420852d815e6df488822229c4bd8d571bcd0a454e04232c635e'],
+    }),
+    ('diskcache', '5.6.1', {
+        'checksums': ['e4c978532feff5814c4cc00fe1e11e40501985946643d73220d41ee7737c72c3'],
+    }),
+    ('penaltymodel', '1.0.2', {
+        'checksums': ['551e1a04ebf4ae18613cac52e37b6fa8c1959972756705354cdccee66a3ef461'],
+    }),
+    ('dwave_samplers', '1.0.0', {
+        'modulename': 'dwave.samplers',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['37955b2fda93c0fccbac63491a3c5ae0b7dbbd27a834e41698d5391db187afd1'],
+    }),
+    ('dwave_networkx', '0.8.13', {
+        'modulename': 'dwave_networkx',
+        'checksums': ['01247c2ce63f9e6097497333968757ce097d2809b81fd9f5686652a56674e96c'],
+    }),
+    ('dwavebinarycsp', '0.2.0', {
+        'checksums': ['7a5cf530e4a7c1288055c9b9fd0d3032175b06d19da7642fe5724dc85050ea1e'],
+    }),
+    ('pyqubo', '1.4.0', {
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['8a3e69633f060c2a8c7cce949e5476e4a295820c842f0be79bd716fb013521e8'],
+    }),
+    ('minorminer', '0.2.11', {
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['e5a39b7e01281e2443f0a3d40a783ac200ebd0a04f5fdd647e35650969ce4d2a'],
+    }),
+    ('dwave_preprocessing', '0.5.4', {
+        'modulename': 'dwave.preprocessing',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['0a7ce755267decdf725daddd233e6f80a69e31d2b6c12a22006b5ba47e338272'],
+    }),
+    ('dwave-tabu', '0.5.0', {
+        'modulename': 'tabu',
+        'checksums': ['dcc73883ec491dea2656c8239dc66e9c9871e7f75852be57ea4cec6bccd48d54'],
+    }),
+    ('dwave-system', '1.18.0', {
+        'modulename': 'dwave.system',
+        'checksums': ['c35e0d4bab57a8e725cdc929a8de869b773113021b7431904875d391118e3fb7'],
+    }),
+    ('dwave-hybrid', '0.6.10', {
+        'modulename': 'hybrid',
+        'checksums': ['35ab1a892444754fd61c8ef7ebb965fda30cc5f04b8f415ff5e07581bb155afc'],
+    }),
+    ('dwave-inspector', '0.4.1', {
+        'modulename': 'dwave.inspector',
+        'checksums': ['fead5b8600dc724691b1a30bb47a6520ffe8c92a458239bec2de30c0cf464de3'],
+    }),
+    ('pydantic', '1.10.4', {  # also on PyQuil, pulled here to avoid bokeh/distributed/dask vs ipython tornado issue
+        'checksums': ['b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648'],
+    }),
+    ('dwave-cloud-client', '0.10.4', {
+        'modulename': 'dwave.cloud',
+        'checksums': ['3288f395eaa34bb0873ad08cbe1653acba960791487ae58d5f7ef3830e7f131b'],
+    }),
+    ('dwave-neal', '0.6.0', {
+        'modulename': 'neal',
+        'checksums': ['8ce51fee3339195df1ab69920fdb5afc496b5fd945e487fad3547c983d90c564'],
+    }),
+    ('dimod', '0.12.3', {
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['a269638fc526480274728fd299aed9d7e0c5fcbe18483d23195503dcce436f4a'],
+    }),
+    ('dwave-greedy', '0.3.0', {
+        'modulename': 'greedy',
+        'checksums': ['806c02d6c3f260ef5bf063d4932f43dfb52a0ea00f9db0b0d34d9b15691a011a'],
+    }),
+    ('dwave-ocean-sdk', version, {
+        'modulename': 'dwave.system',
+        'checksums': ['0a5a069a576f4a8c8e34223c3d4353e4a4dfbe4d3061264e6e9c35c6b0d423af'],
+    }),
+    ('dwave-drivers', '0.4.4', {
+        'modulename': 'dwave.drivers',
+        'pip_no_index': True,
+        'source_tmpl': 'dwave_drivers-%(version)s-py3-none-any.whl',
+        'source_urls': ['https://pypi.dwavesys.com/simple/%(name)s'],
+        'checksums': ['8e5b37e97be7610c00005e5f8a3c10f27f7cec4bd2b88c80f9c6fef8172a3c3f'],
+    }),
+    ('dwave-inspectorapp', '0.3.1', {
+        'modulename': 'dwave.inspector',
+        'pip_no_index': True,
+        'source_tmpl': 'dwave_inspectorapp-%(version)s-py3-none-any.whl',
+        'source_urls': ['https://pypi.dwavesys.com/simple/%(name)s'],
+        'checksums': ['8dd10718c27373912fefe54d8c9eb518b89caed7ac554c7c4d757e8afe864939'],
+    }),
+]
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/d/dask/dask-2022.10.2-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/d/dask/dask-2022.12.0-gcccoremkl-11.3.0-2022.1.0.eb
similarity index 91%
rename from Golden_Repo/d/dask/dask-2022.10.2-gcccoremkl-11.3.0-2022.1.0.eb
rename to Golden_Repo/d/dask/dask-2022.12.0-gcccoremkl-11.3.0-2022.1.0.eb
index d60920e8d99b343404d8bdab3d2678622e2aba11..4224d15d49cbee27409ae07d0c4e380d0360f39f 100644
--- a/Golden_Repo/d/dask/dask-2022.10.2-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/d/dask/dask-2022.12.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -1,7 +1,7 @@
 easyblock = 'PythonBundle'
 
 name = 'dask'
-version = '2022.10.2'
+version = '2022.12.0'
 
 homepage = 'https://dask.org/'
 description = """Dask natively scales Python. Dask provides advanced parallelism for analytics, enabling performance
@@ -44,10 +44,10 @@ exts_list = [
         'checksums': ['3f4219469c55453cfe4737e564b67c2a149109dabf7f242478948b895f61106f'],
     }),
     (name, version, {
-        'checksums': ['42cb43f601709575fa46ce09e74bea83fdd464187024f56954e09d9b428ceaab'],
+        'checksums': ['159acc4a65f2ea042b453f12dee66fd515a159f4b3b9ca0d08c18cae485a2be0'],
     }),
     ('distributed', version, {
-        'checksums': ['53f0a5bf6efab9a5ab3345cd913f6d3f3d4ea444ee2edbea331c7fef96fd67d0'],
+        'checksums': ['d93707757f7fa3b2b803e43f6c14c41c3e453e9714bca8bf3013d3bf083c18ce'],
     }),
     ('dask-mpi', '2022.4.0', {
         'checksums': ['0a04f1d7d35a06cdff506593330d4414ea242c9172498ce191f5742eac499e17'],
diff --git a/Golden_Repo/d/dill/dill-0.3.6-GCCcore-11.3.0.eb b/Golden_Repo/d/dill/dill-0.3.6-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..377eb58517a1ec09df52b4765453a6cfe1288e96
--- /dev/null
+++ b/Golden_Repo/d/dill/dill-0.3.6-GCCcore-11.3.0.eb
@@ -0,0 +1,27 @@
+# This easyconfig was created by Simon Branford of the BEAR Software team at the University of Birmingham.
+easyblock = 'PythonPackage'
+
+name = 'dill'
+version = '0.3.6'
+
+homepage = 'https://pypi.org/project/dill/'
+description = """dill extends python's pickle module for serializing and de-serializing python objects to the majority
+ of the built-in python types. Serialization is the process of converting an object to a byte stream, and the inverse
+ of which is converting a byte stream back to on python object hierarchy."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+checksums = ['e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373']
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+]
+
+use_pip = True
+download_dep_fail = True
+sanity_pip_check = True
+
+moduleclass = 'data'
diff --git a/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-11.3.0-2022.1.0.eb
deleted file mode 100644
index 7f93f1c3b73d9ea6ba84d7a898d5eaa666c30a93..0000000000000000000000000000000000000000
--- a/Golden_Repo/d/distributed/distributed-2.30.1-gcccoremkl-11.3.0-2022.1.0.eb
+++ /dev/null
@@ -1,43 +0,0 @@
-easyblock = 'Bundle'
-
-name = 'distributed'
-version = '2022.10.2'
-
-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': 'foss', 'version': '2022a'}
-
-
-# this is a bundle of Python packages
-exts_defaultclass = 'PythonPackage'
-
-dependencies = [
-    ('Python', '3.10.4'),
-    ('dask', '2022.10.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-    ('bokeh', '2.4.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-]
-
-
-exts_default_options = {
-    'source_urls': [PYPI_SOURCE],
-    'sanity_pip_check': True,
-}
-
-exts_list = [
-    (name, version, {
-        'source_urls': ['https://pypi.python.org/packages/source/d/distributed'],
-        'checksums': ['53f0a5bf6efab9a5ab3345cd913f6d3f3d4ea444ee2edbea331c7fef96fd67d0'],
-    }),
-]
-
-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/e/ELPA/ELPA-2022.11.001.rc1-foss-2022a.eb b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..04ad4280c84d1afbb14756acd629dde63c529a73
--- /dev/null
+++ b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-foss-2022a.eb
@@ -0,0 +1,42 @@
+name = 'ELPA'
+version = '2022.11.001.rc1'
+
+homepage = 'https://elpa.rzg.mpg.de'
+description = """Eigenvalue SoLvers for Petaflop-Applications."""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+source_urls = ['https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/new_release_%(version)s/']
+sources = ['elpa-new_release_%(version)s.tar.gz']
+patches = ['%(name)s-%(version)s_fix_hardcoded_perl_path.patch']
+checksums = [
+    {'elpa-new_release_2022.11.001.rc1.tar.gz': 'dfd5fa9cc6da8af4c4c0505feaf3b212df7380a3a58ce34181d0c750c20d018d'},
+    {'ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch':
+     '1088c190a9ccfa3d88ce760bcf9de9300288cd1e4606ff79c2b66f5189a0ac72'},
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('Python', '3.10.4'),
+    ('Perl', '5.34.1'),
+]
+
+preconfigopts = './autogen.sh && '
+preconfigopts += 'export LDFLAGS="-lm $LDFLAGS" && '
+preconfigopts += 'autoreconf && '
+configopts = '--without-threading-support-check-during-build '
+with_single = False
+maxparallel = 1
+modextravars = {
+    'ELPA_ROOT': '%(installdir)s',
+    'ELPAROOT': '%(installdir)s',
+    'ELPA_INCLUDE': '%(installdir)s/include/elpa-%(version)s/',
+    'ELPA_INCLUDE_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/',
+    'ELPA_LIB': '%(installdir)s/lib',
+    'ELPA_LIB_OPENMP': '%(installdir)s/lib',
+    'ELPA_MODULES': '%(installdir)s/include/elpa-%(version)s/modules',
+    'ELPA_MODULES_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/modules',
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-gpsmkl-2022a.eb b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0908512fdef8a9be9ba094a904b788a0df2923ac
--- /dev/null
+++ b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-gpsmkl-2022a.eb
@@ -0,0 +1,79 @@
+name = 'ELPA'
+version = '2022.11.001.rc1'
+
+homepage = 'https://elpa.rzg.mpg.de'
+description = """Eigenvalue SoLvers for Petaflop-Applications. ELPA has been installed as module in
+$EBROOTELPA ($ELPA_ROOT is also defined). This installation
+contains the pure MPI version and the hybrid MPI/OpenMP version.
+Notice: If you want to use OpenMP threads you have to set
+export ELPA_DEFAULT_omp=<number of threads per MPI process>
+in your batch job and start MPI with MPI_INIT_THREAD(MPI_THREAD_MULTIPLE,....
+
+Several assembly kernels have been compiled. They can be chosen at runtime when calling the library or
+with the environment variables REAL_ELPA_KERNEL or COMPLEX_ELPA_KERNEL.
+
+An example is
+export REAL_ELPA_KERNEL=REAL_ELPA_KERNEL_GENERIC
+which chooses the generic real kernel for elpa2.
+Starting with version 2019.11.001 the legacy interface is no longer available.
+"""
+
+usage = """You can get an overview over the available kernels by loading ELPA and then submitting a batch job with
+
+srun --ntasks=1 $EBROOTELPA/bin/elpa2_print_kernels
+
+Programs using this ELPA library have to be compiled with
+
+-I$ELPA_INCLUDE[_OPENMP]/ -I$ELPA_INCLUDE[_OPENMP]/elpa -I$ELPA_MODULES[_OPENMP]
+
+and linked with
+
+-L$EBROOTELPA/lib -lelpa[_openmp]
+-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_gf_lp64
+-lmkl_sequential[-lmkl_gnu_thread]
+-lmkl_core -lgomp -lpthread -lm -ldl -lstdc++
+"""
+
+examples = 'Examples can be found in $EBROOTELPA/examples'
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+source_urls = ['https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/new_release_%(version)s/']
+sources = ["elpa-new_release_%(version)s.tar.gz"]
+patches = ['%(name)s-%(version)s_fix_hardcoded_perl_path.patch']
+checksums = [
+    {'elpa-new_release_2022.11.001.rc1.tar.gz': 'dfd5fa9cc6da8af4c4c0505feaf3b212df7380a3a58ce34181d0c750c20d018d'},
+    {'ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch':
+     '1088c190a9ccfa3d88ce760bcf9de9300288cd1e4606ff79c2b66f5189a0ac72'},
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    # remove_xcompiler script requires 'python' command,
+    ('Python', '3.10.4'),
+    ('Perl', '5.34.1'),
+]
+
+preconfigopts = './autogen.sh && '
+preconfigopts += 'export LDFLAGS="-lm $LDFLAGS" && '
+preconfigopts += 'autoreconf && '
+
+configopts = '--without-threading-support-check-during-build '
+
+with_single = False
+
+maxparallel = 1
+
+modextravars = {
+    'ELPA_ROOT': '%(installdir)s',
+    'ELPAROOT': '%(installdir)s',
+    'ELPA_INCLUDE': '%(installdir)s/include/elpa-%(version)s/',
+    'ELPA_INCLUDE_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/',
+    'ELPA_LIB': '%(installdir)s/lib',
+    'ELPA_LIB_OPENMP': '%(installdir)s/lib',
+    'ELPA_MODULES': '%(installdir)s/include/elpa-%(version)s/modules',
+    'ELPA_MODULES_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/modules',
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-intel-para-2022a.eb b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..966537c00da53dd193ccc31d6c6dce13b42784da
--- /dev/null
+++ b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1-intel-para-2022a.eb
@@ -0,0 +1,78 @@
+name = 'ELPA'
+version = '2022.11.001.rc1'
+
+homepage = 'https://elpa.rzg.mpg.de'
+description = """Eigenvalue SoLvers for Petaflop-Applications. ELPA has been installed as module in
+$EBROOTELPA ($ELPA_ROOT is also defined). This installation
+contains the pure MPI version and the hybrid MPI/OpenMP version.
+Notice: If you want to use OpenMP threads you have to set
+export ELPA_DEFAULT_omp=<number of threads per MPI process>
+in your batch job and start MPI with MPI_INIT_THREAD(MPI_THREAD_MULTIPLE,....
+
+Several assembly kernels have been compiled. They can be chosen at runtime when calling the library or
+with the environment variables REAL_ELPA_KERNEL or COMPLEX_ELPA_KERNEL.
+
+An example is
+export REAL_ELPA_KERNEL=REAL_ELPA_KERNEL_GENERIC
+which chooses the generic real kernel for elpa2.
+Starting with version 2019.11.001 the legacy interface is no longer available.
+"""
+
+usage = """You can get an overview over the available kernels by loading ELPA and then submitting a batch job with
+
+srun --ntasks=1 $EBROOTELPA/bin/elpa2_print_kernels
+
+Programs using this ELPA library have to be compiled with
+
+-I$ELPA_INCLUDE[_OPENMP]/ -I$ELPA_INCLUDE[_OPENMP]/elpa -I$ELPA_MODULES[_OPENMP]
+
+and linked with
+
+-L$EBROOTELPA/lib -lelpa[_openmp]
+-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64
+-lmkl_sequential[-lmkl_intel_thread]
+-lmkl_core -liomp5 -lpthread -lstdc++
+"""
+
+examples = 'Examples can be found in $EBROOTELPA/examples'
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+source_urls = ['https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/new_release_%(version)s/']
+sources = ["elpa-new_release_%(version)s.tar.gz"]
+patches = ['%(name)s-%(version)s_fix_hardcoded_perl_path.patch']
+checksums = [
+    {'elpa-new_release_2022.11.001.rc1.tar.gz': 'dfd5fa9cc6da8af4c4c0505feaf3b212df7380a3a58ce34181d0c750c20d018d'},
+    {'ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch':
+     '1088c190a9ccfa3d88ce760bcf9de9300288cd1e4606ff79c2b66f5189a0ac72'},
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    # remove_xcompiler script requires 'python' command,
+    ('Python', '3.10.4'),
+    ('Perl', '5.34.1'),
+]
+
+preconfigopts = './autogen.sh && '
+preconfigopts += 'autoreconf && '
+
+configopts = '--without-threading-support-check-during-build '
+
+with_single = False
+
+maxparallel = 1
+
+modextravars = {
+    'ELPA_ROOT': '%(installdir)s',
+    'ELPAROOT': '%(installdir)s',
+    'ELPA_INCLUDE': '%(installdir)s/include/elpa-%(version)s/',
+    'ELPA_INCLUDE_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/',
+    'ELPA_LIB': '%(installdir)s/lib',
+    'ELPA_LIB_OPENMP': '%(installdir)s/lib',
+    'ELPA_MODULES': '%(installdir)s/include/elpa-%(version)s/modules',
+    'ELPA_MODULES_OPENMP': '%(installdir)s/include/elpa_openmp-%(version)s/modules',
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch
new file mode 100644
index 0000000000000000000000000000000000000000..bf7cb71c89992a0c537487a64a844938112cab18
--- /dev/null
+++ b/Golden_Repo/e/ELPA/ELPA-2022.11.001.rc1_fix_hardcoded_perl_path.patch
@@ -0,0 +1,40 @@
+--- elpa-new_release_2022.11.001.rc1/fdep/fortran_dependencies.pl	2023-02-09 09:33:15.571125000 +0100
++++ elpa-new_release_2022.11.001.rc1_ok/fdep/fortran_dependencies.pl	2023-02-09 09:35:04.768695000 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/bin/env perl
+ #
+ # Copyright 2015 Lorenz Hüdepohl
+ #
+--- elpa-new_release_2022.11.001.rc1/test_project_1stage/fdep/fortran_dependencies.pl	2023-02-09 09:32:46.109982000 +0100
++++ elpa-new_release_2022.11.001.rc1_ok/test_project_1stage/fdep/fortran_dependencies.pl	2023-02-09 09:35:23.783036000 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/bin/env perl
+ 
+ use strict;
+ 
+--- elpa-new_release_2022.11.001.rc1/test_project_2stage/fdep/fortran_dependencies.pl	2023-02-09 09:33:16.418735000 +0100
++++ elpa-new_release_2022.11.001.rc1_ok/test_project_2stage/fdep/fortran_dependencies.pl	2023-02-09 09:35:45.256102000 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/bin/env perl
+ 
+ use strict;
+ 
+--- elpa-new_release_2022.11.001.rc1/test_project_C/fdep/fortran_dependencies.pl	2023-02-09 09:33:18.588180000 +0100
++++ elpa-new_release_2022.11.001.rc1_ok/test_project_C/fdep/fortran_dependencies.pl	2023-02-09 09:36:05.544582000 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/bin/env perl
+ 
+ use strict;
+ 
+--- elpa-new_release_2022.11.001.rc1/test_project_C_2stage/fdep/fortran_dependencies.pl	2023-02-09 09:32:39.459260000 +0100
++++ elpa-new_release_2022.11.001.rc1_ok/test_project_C_2stage/fdep/fortran_dependencies.pl	2023-02-09 09:36:23.381596000 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/bin/env perl
+ 
+ use strict;
+ 
diff --git a/Golden_Repo/e/ESMF/ESMF-6.1.1_libopts.patch b/Golden_Repo/e/ESMF/ESMF-6.1.1_libopts.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0d03f780590a4db90e7626da4e1a12552d6d42e0
--- /dev/null
+++ b/Golden_Repo/e/ESMF/ESMF-6.1.1_libopts.patch
@@ -0,0 +1,11 @@
+--- esmf/build/common.mk.orig	2013-11-26 16:58:50.958274359 +0100
++++ esmf/build/common.mk	2013-11-26 16:59:02.339274158 +0100
+@@ -896,7 +896,7 @@
+ endif
+ ESMF_SL_LIBS_TO_MAKE  = libesmf
+ ESMF_SL_LIBLINKER     = $(ESMF_CXXCOMPILER)
+-ESMF_SL_LIBOPTS      +=
++ESMF_SL_LIBOPTS      += $(ESMF_CXXCOMPILEOPTS)
+ ESMF_SL_LIBLIBS      +=
+ 
+ # - Shared objects
diff --git a/Golden_Repo/e/ESMF/ESMF-8.4.1-intel-para-2022a.eb b/Golden_Repo/e/ESMF/ESMF-8.4.1-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2c07155636da0dce0f8bc1da9d47e15488386cba
--- /dev/null
+++ b/Golden_Repo/e/ESMF/ESMF-8.4.1-intel-para-2022a.eb
@@ -0,0 +1,53 @@
+name = 'ESMF'
+version = '8.4.1'
+
+homepage = 'https://www.earthsystemcog.org/projects/esmf/'
+description = """The Earth System Modeling Framework (ESMF) is a suite of software tools for developing
+ high-performance, multi-component Earth science modeling applications."""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'usempi': True, 'openmp': True, 'cstd': 'c++11', 'pic': True}
+
+source_urls = ['https://github.com/esmf-org/esmf/archive/']
+sources = ['v%(version)s.tar.gz']
+patches = ['ESMF-6.1.1_libopts.patch']
+checksums = [
+    {'v8.4.1.tar.gz': '1b54cee91aacaa9df400bd284614cbb0257e175f6f3ec9977a2d991ed8aa1af6'},
+    {'ESMF-6.1.1_libopts.patch': '3851627f07c32a7da55d99072d619942bd3a1d9dd002e1557716158e7aacdaf4'},
+]
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('netCDF-C++4', '4.3.1'),
+    ('libarchive', '3.6.1'),
+    ('PnetCDF', '1.12.3'),
+]
+
+
+# ESMF ignores xxFLAGS
+preconfigopts = 'export ESMF_BOPT="O" && '
+preconfigopts += 'export ESMF_OPTLEVEL="2" && '
+preconfigopts += 'export ESMF_PNETCDF="standard && '
+preconfigopts += 'export ESMF_PNETCDF_INCLUDE=$EBROOTPNETCDF/include && '
+preconfigopts += 'export ESMF_PNETCDF_LIBPATH=$EBROOTPNETCDF/lib && '
+preconfigopts += 'export ESMF_PNETCDF_LIBS=-lpnetcdf && '
+
+preinstallopts = 'export ESMF_CXXLINKOPTS="-lmpifort" && '
+preinstallopts += 'export ESMF_NETCDF_LIBS="$ESMF_NETCDF_LIBS -L${PNETCDF}/lib -lpnetcdf" &&'
+preinstallopts += 'export ESMF_PNETCDF_INCLUDE=$EBROOTPNETCDF/include && '
+preinstallopts += 'export ESMF_PNETCDF_LIBPATH=$EBROOTPNETCDF/lib && '
+preinstallopts += 'export ESMF_PNETCDF_LIBS=-lpnetcdf && '
+
+
+# disable errors from GCC 10 on mismatches between actual and dummy argument lists (GCC 9 behaviour)
+# prebuildopts = 'ESMF_F90COMPILEOPTS="${ESMF_F90COMPILEOPTS} -fallow-argument-mismatch"'
+
+buildopts = 'ESMF_NETCDF_INCLUDE=$EBROOTNETCDFMINFORTRAN/include '
+
+# too parallel causes the build to become really slow
+maxparallel = 16
+
+moduleclass = 'geo'
diff --git a/Golden_Repo/e/Embree/Embree-3.13.5-GCC-11.3.0.eb b/Golden_Repo/e/Embree/Embree-3.13.5-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..403a9b8158dd994dafd5a8c49750f1d84f4cf0a8
--- /dev/null
+++ b/Golden_Repo/e/Embree/Embree-3.13.5-GCC-11.3.0.eb
@@ -0,0 +1,59 @@
+easyblock = 'CMakeMake'
+
+name = 'Embree'
+version = '3.13.5'
+
+homepage = 'https://www.embree.org/'
+description = """
+Embree is a collection of high-performance ray tracing kernels, developed at Intel. The target user of Embree are
+graphics application engineers that want to improve the performance of their application by leveraging the optimized ray
+tracing kernels of Embree. The kernels are optimized for photo-realistic rendering on the latest Intel processors with
+support for SSE, AVX, AVX2, and AVX512.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'optarch': True, 'pic': True}
+
+source_urls = ['https://github.com/embree/embree/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['b8c22d275d9128741265537c559d0ea73074adbf2f2b66b0a766ca52c52d665b']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+    ('ispc', '1.18.1', '', SYSTEM),
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('freeglut', '3.4.0'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('ImageMagick', '7.1.0-37'),
+    ('OpenEXR', '3.1.5'),
+]
+
+separate_build_dir = True
+
+configopts = '-DCMAKE_BUILD_TYPE=Release '
+configopts += '-DEMBREE_ISPC_SUPPORT=ON '
+configopts += '-DEMBREE_TASKING_SYSTEM=INTERNAL '
+# Select highest supported ISA (SSE2, SSE4.2, AVX, AVX2, AVX512KNL, AVX512SKX, or NONE)
+configopts += '-DEMBREE_MAX_ISA=AVX2 '
+configopts += '-DEMBREE_GEOMETRY_HAIR:BOOL=ON '
+configopts += '-DEMBREE_GEOMETRY_LINES:BOOL=OFF '
+configopts += '-DEMBREE_GEOMETRY_QUADS:BOOL=OFF '
+configopts += '-DEMBREE_GEOMETRY_SUBDIV:BOOL=OFF '
+configopts += '-DEMBREE_TUTORIALS=OFF '
+
+sanity_check_paths = {
+    'dirs': ['include/embree3'],
+    'files': ['lib64/libembree3.so']
+}
+
+modextrapaths = {
+    'CMAKE_MODULE_PATH': 'lib64/cmake/embree-%(version)s/'
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gompi-2022a.eb b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3641581f22c451665d0fe098c9550ae503c827fe
--- /dev/null
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gompi-2022a.eb
@@ -0,0 +1,46 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.27.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'usempi': False}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['ede5b3ffd503967a5eac89100e8ead5e16a881b7585d02f033584ed0c4269c99']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('JasPer', '2.0.33'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.12'),
+    ('libaec', '1.0.6'),
+]
+
+# Python bindings are provided by a separate package 'eccodes-python'
+configopts = "-DENABLE_NETCDF=ON -DENABLE_PNG=ON -DENABLE_PYTHON=OFF "
+configopts += "-DENABLE_JPG=ON -DENABLE_JPG_LIBJASPER=ON "
+configopts += "-DENABLE_ECCODES_THREADS=ON"  # multi-threading with pthreads
+
+local_exes = ['%s_%s' % (a, b)
+              for a in ['bufr', 'grib', 'gts', 'metar']
+              for b in ['compare', 'copy', 'dump', 'filter', 'get', 'ls']]
+local_exes += ['codes_%s' % c for c in ['count', 'info', 'split_file']]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_exes] +
+             ['lib/libeccodes_f90.%s' % SHLIB_EXT,
+                 'lib/libeccodes.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gpsmpi-2022a.eb b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5b634e318befb3dc27b3b6db0bce7fec9084a79d
--- /dev/null
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-gpsmpi-2022a.eb
@@ -0,0 +1,46 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.27.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': False}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['ede5b3ffd503967a5eac89100e8ead5e16a881b7585d02f033584ed0c4269c99']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('JasPer', '2.0.33'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.12'),
+    ('libaec', '1.0.6'),
+]
+
+# Python bindings are provided by a separate package 'eccodes-python'
+configopts = "-DENABLE_NETCDF=ON -DENABLE_PNG=ON -DENABLE_PYTHON=OFF "
+configopts += "-DENABLE_JPG=ON -DENABLE_JPG_LIBJASPER=ON "
+configopts += "-DENABLE_ECCODES_THREADS=ON"  # multi-threading with pthreads
+
+local_exes = ['%s_%s' % (a, b)
+              for a in ['bufr', 'grib', 'gts', 'metar']
+              for b in ['compare', 'copy', 'dump', 'filter', 'get', 'ls']]
+local_exes += ['codes_%s' % c for c in ['count', 'info', 'split_file']]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_exes] +
+             ['lib/libeccodes_f90.%s' % SHLIB_EXT,
+                 'lib/libeccodes.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.27.0-ipsmpi-2022a.eb b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8eeaa2d145beda3070a4561be64f77b66449a6d7
--- /dev/null
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-ipsmpi-2022a.eb
@@ -0,0 +1,46 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.27.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': False}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['ede5b3ffd503967a5eac89100e8ead5e16a881b7585d02f033584ed0c4269c99']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('JasPer', '2.0.33'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.12'),
+    ('libaec', '1.0.6'),
+]
+
+# Python bindings are provided by a separate package 'eccodes-python'
+configopts = "-DENABLE_NETCDF=ON -DENABLE_PNG=ON -DENABLE_PYTHON=OFF "
+configopts += "-DENABLE_JPG=ON -DENABLE_JPG_LIBJASPER=ON "
+configopts += "-DENABLE_ECCODES_THREADS=ON"  # multi-threading with pthreads
+
+local_exes = ['%s_%s' % (a, b)
+              for a in ['bufr', 'grib', 'gts', 'metar']
+              for b in ['compare', 'copy', 'dump', 'filter', 'get', 'ls']]
+local_exes += ['codes_%s' % c for c in ['count', 'info', 'split_file']]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_exes] +
+             ['lib/libeccodes_f90.%s' % SHLIB_EXT,
+                 'lib/libeccodes.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.27.0-npsmpic-2022a.eb b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..01855f1c4d53014f6b838b1c24f54b68f87c45f9
--- /dev/null
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-npsmpic-2022a.eb
@@ -0,0 +1,46 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.27.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'usempi': False}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['ede5b3ffd503967a5eac89100e8ead5e16a881b7585d02f033584ed0c4269c99']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('JasPer', '2.0.33'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.12'),
+    ('libaec', '1.0.6'),
+]
+
+# Python bindings are provided by a separate package 'eccodes-python'
+configopts = "-DENABLE_NETCDF=ON -DENABLE_PNG=ON -DENABLE_PYTHON=OFF "
+configopts += "-DENABLE_JPG=ON -DENABLE_JPG_LIBJASPER=ON "
+configopts += "-DENABLE_ECCODES_THREADS=ON"  # multi-threading with pthreads
+
+local_exes = ['%s_%s' % (a, b)
+              for a in ['bufr', 'grib', 'gts', 'metar']
+              for b in ['compare', 'copy', 'dump', 'filter', 'get', 'ls']]
+local_exes += ['codes_%s' % c for c in ['count', 'info', 'split_file']]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_exes] +
+             ['lib/libeccodes_f90.%s' % SHLIB_EXT,
+                 'lib/libeccodes.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.27.0-nvompic-2022a.eb b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d3cdd55db8d2b34044eccf72a5d4e166c44d5004
--- /dev/null
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.27.0-nvompic-2022a.eb
@@ -0,0 +1,46 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.27.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'usempi': False}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+checksums = ['ede5b3ffd503967a5eac89100e8ead5e16a881b7585d02f033584ed0c4269c99']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('JasPer', '2.0.33'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.12'),
+    ('libaec', '1.0.6'),
+]
+
+# Python bindings are provided by a separate package 'eccodes-python'
+configopts = "-DENABLE_NETCDF=ON -DENABLE_PNG=ON -DENABLE_PYTHON=OFF "
+configopts += "-DENABLE_JPG=ON -DENABLE_JPG_LIBJASPER=ON "
+configopts += "-DENABLE_ECCODES_THREADS=ON"  # multi-threading with pthreads
+
+local_exes = ['%s_%s' % (a, b)
+              for a in ['bufr', 'grib', 'gts', 'metar']
+              for b in ['compare', 'copy', 'dump', 'filter', 'get', 'ls']]
+local_exes += ['codes_%s' % c for c in ['count', 'info', 'split_file']]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_exes] +
+             ['lib/libeccodes_f90.%s' % SHLIB_EXT,
+                 'lib/libeccodes.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/f/FFTW/FFTW-3.3.10-gompi-2022a.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d7216713592fd0ce1c9bad6ce5f6ac605fcfed8b
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-gompi-2022a.eb
@@ -0,0 +1,38 @@
+name = 'FFTW'
+
+version = '3.3.10'
+
+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."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = ['fftw-3.3.10.tar.gz']
+
+checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
+
+# 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
+
+# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
+# because 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/FFTW/FFTW-3.3.10-gpsmpi-2022a.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2b9e218ce8528dc8914187d3d3e324a6576feb8b
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-gpsmpi-2022a.eb
@@ -0,0 +1,38 @@
+name = 'FFTW'
+
+version = '3.3.10'
+
+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."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = ['fftw-3.3.10.tar.gz']
+
+checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
+
+# 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
+
+# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
+# because 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/FFTW/FFTW-3.3.10-npsmpic-2022a.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eadc9df33171e8b526cc5ad5d6bfcf6e93a2e47f
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-npsmpic-2022a.eb
@@ -0,0 +1,38 @@
+name = 'FFTW'
+
+version = '3.3.10'
+
+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."""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = ['fftw-3.3.10.tar.gz']
+
+checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
+
+# 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
+
+# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
+# because 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/FFTW/FFTW-3.3.10-nvompic-2022a.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c2f648e1b05b1615f4f5449071bceebb42cae6db
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-nvompic-2022a.eb
@@ -0,0 +1,38 @@
+name = 'FFTW'
+
+version = '3.3.10'
+
+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."""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = ['fftw-3.3.10.tar.gz']
+
+checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
+
+# 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
+
+# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
+# because 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/FLANN/FLANN-1.9.2-GCCcore-11.3.0.eb b/Golden_Repo/f/FLANN/FLANN-1.9.2-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1a94c389f29b89b87c2a4a130458464225462e0d
--- /dev/null
+++ b/Golden_Repo/f/FLANN/FLANN-1.9.2-GCCcore-11.3.0.eb
@@ -0,0 +1,43 @@
+# Contribution from the NIHR Biomedical Research Centre
+# Guy's and St Thomas' NHS Foundation Trust and King's College London
+# uploaded by J. Sassmannshausen
+# updated by J. H. Goebbert
+easyblock = 'CMakeMake'
+
+name = 'FLANN'
+version = '1.9.2'
+
+homepage = 'https://github.com/mariusmuja/flann/'
+description = "FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces."
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'openmp': True}
+
+source_urls = ['https://github.com/mariusmuja/flann/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = [
+    {'1.9.2.tar.gz': 'e26829bb0017f317d9cc45ab83ddcb8b16d75ada1ae07157006c1e7d601c8824'},
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1')
+]
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('lz4', '1.9.3'),
+]
+
+configopts = "-DUSE_OPENMP=ON -DUSE_MPI=ON -DBUILD_PYTHON_BINDINGS=ON -DBUILD_C_BINDINGS=ON"
+
+modextrapaths = {'PYTHONPATH': ['share/flann/python']}
+
+sanity_check_paths = {
+    'files': ['lib/libflann_cpp_s.a', 'lib/libflann_s.a',
+              'lib/libflann_cpp.%s' % SHLIB_EXT, 'lib/libflann.%s' % SHLIB_EXT],
+    'dirs': ['include/flann', 'lib/pkgconfig', 'share/flann/python'],
+}
+sanity_check_commands = ["python -c 'import pyflann'"]
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/f/FreeSurfer/FreeSurfer-7.3.2-GCCcore-11.3.0.eb b/Golden_Repo/f/FreeSurfer/FreeSurfer-7.3.2-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3bb710dfda15007b6b5c926b01f0520bd5921714
--- /dev/null
+++ b/Golden_Repo/f/FreeSurfer/FreeSurfer-7.3.2-GCCcore-11.3.0.eb
@@ -0,0 +1,38 @@
+# For using $FASTDATA_jsc to determine license path. The local prefix is to appease the checker
+import os as local_os
+
+name = 'FreeSurfer'
+version = '7.3.2'
+
+homepage = 'http://surfer.nmr.mgh.harvard.edu/fswiki/FreeSurferWiki'
+description = """
+FreeSurfer is a set of tools for analysis and visualization of structural and functional brain imaging data.
+FreeSurfer contains a fully automatic structural imaging stream for processing cross sectional and longitudinal data.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [
+    'https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/%(version)s/'
+]
+sources = ['%(namelower)s-linux-centos8_x86_64-%(version)s.tar.gz']
+patches = ['freesurfer732-tcsh.patch']
+checksums = [
+    '1448e64000b02a06aaad81548a4c8f92faf575f8320e67bdcd15a430ad10879b',  # freesurfer-linux-centos8_x86_64-7.3.2.tar.gz
+    'f560f19575a176e4be12edf3eea32b699810b4bd5ca7ea91008e8517eb3f790e',  # freesurfer732-tcsh.patch
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('nvidia-driver', 'default', '', SYSTEM),
+    ('VirtualGL', '3.1beta1'),
+    ('protobuf', '3.19.4'),
+    ('tcsh', '6.24.01')
+]
+
+# If FASTDATA_jsc is not defined then assume we are on CI and hence the path is relative to the repo
+local_licdir = local_os.environ.get('FASTDATA_jsc')
+local_licdir = local_os.path.join(local_licdir, 'swmanage', 'EasyBuild', '2023') if local_licdir else '.'
+license_text = open(f'{local_licdir}/Golden_Repo/f/FreeSurfer/license_text.txt', 'r').read()
+
+moduleclass = 'bio'
diff --git a/Golden_Repo/f/FreeSurfer/freesurfer732-tcsh.patch b/Golden_Repo/f/FreeSurfer/freesurfer732-tcsh.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0ffc5f97435efad5e77c3ab5705135bbabab38b6
--- /dev/null
+++ b/Golden_Repo/f/FreeSurfer/freesurfer732-tcsh.patch
@@ -0,0 +1,2196 @@
+diff --color -rupN freesurfer-orig/bin/annot2std freesurfer-patched/bin/annot2std
+--- freesurfer-orig/bin/annot2std	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/annot2std	2022-11-18 09:37:06.263695864 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # annot2std
+ #
+diff --color -rupN freesurfer-orig/bin/aparc2feat freesurfer-patched/bin/aparc2feat
+--- freesurfer-orig/bin/aparc2feat	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/aparc2feat	2022-11-18 09:37:04.035683570 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # aparc2feat
+diff --color -rupN freesurfer-orig/bin/aparc_stats_aseg freesurfer-patched/bin/aparc_stats_aseg
+--- freesurfer-orig/bin/aparc_stats_aseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/aparc_stats_aseg	2022-11-18 09:37:06.239695731 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ # This script runs Cortical Parcellation, Surface Anatomical Stats and Aparc2aseg using a given .gcs file.
+ set RunIt = 1
+ set ProgName = `basename $0`;
+diff --color -rupN freesurfer-orig/bin/aparcstatsdiff freesurfer-patched/bin/aparcstatsdiff
+--- freesurfer-orig/bin/aparcstatsdiff	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/aparcstatsdiff	2022-11-18 09:37:03.915682909 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ if ( "x$1" == "x" || \
+      "x$2" == "x" || \
+diff --color -rupN freesurfer-orig/bin/apas2aseg freesurfer-patched/bin/apas2aseg
+--- freesurfer-orig/bin/apas2aseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/apas2aseg	2022-11-18 09:37:05.943694098 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # apas2aseg
+ 
+ set VERSION = 'apas2aseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/aseg2feat freesurfer-patched/bin/aseg2feat
+--- freesurfer-orig/bin/aseg2feat	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/aseg2feat	2022-11-18 09:37:05.359690875 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # aseg2feat
+diff --color -rupN freesurfer-orig/bin/asegstatsdiff freesurfer-patched/bin/asegstatsdiff
+--- freesurfer-orig/bin/asegstatsdiff	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/asegstatsdiff	2022-11-18 09:37:06.331696239 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set subject1=$1
+ set subject2=$2
+diff --color -rupN freesurfer-orig/bin/bblabel freesurfer-patched/bin/bblabel
+--- freesurfer-orig/bin/bblabel	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/bblabel	2022-11-18 09:37:05.807693347 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # bblabel
+diff --color -rupN freesurfer-orig/bin/bbmask freesurfer-patched/bin/bbmask
+--- freesurfer-orig/bin/bbmask	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/bbmask	2022-11-18 09:37:05.319690654 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # bbmask
+ 
+ set VERSION = 'bbmask 7.3.2';
+diff --color -rupN freesurfer-orig/bin/bbregister freesurfer-patched/bin/bbregister
+--- freesurfer-orig/bin/bbregister	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/bbregister	2022-11-18 09:37:04.635686880 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # bbregister
+diff --color -rupN freesurfer-orig/bin/beta2sxa freesurfer-patched/bin/beta2sxa
+--- freesurfer-orig/bin/beta2sxa	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/beta2sxa	2022-11-18 09:37:05.267690367 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # thalseg
+ 
+ set VERSION = 'beta2sxa 7.3.2';
+diff --color -rupN freesurfer-orig/bin/biasfield freesurfer-patched/bin/biasfield
+--- freesurfer-orig/bin/biasfield	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/biasfield	2022-11-18 09:37:04.907688381 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # biasfield
+diff --color -rupN freesurfer-orig/bin/bmedits2surf freesurfer-patched/bin/bmedits2surf
+--- freesurfer-orig/bin/bmedits2surf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/bmedits2surf	2022-11-18 09:37:05.491691603 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # bmedits2surf
+ 
+ set VERSION = 'bmedits2surf 7.3.2';
+diff --color -rupN freesurfer-orig/bin/bugr freesurfer-patched/bin/bugr
+--- freesurfer-orig/bin/bugr	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/bugr	2022-11-18 09:37:03.727681871 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # bugr
+diff --color -rupN freesurfer-orig/bin/cblumwmgyri freesurfer-patched/bin/cblumwmgyri
+--- freesurfer-orig/bin/cblumwmgyri	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/cblumwmgyri	2022-11-18 09:37:06.307696107 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # cblumwmgyri
+ 
+ set VERSION = 'cblumwmgyri 7.3.2';
+diff --color -rupN freesurfer-orig/bin/checkMCR.sh freesurfer-patched/bin/checkMCR.sh
+--- freesurfer-orig/bin/checkMCR.sh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/checkMCR.sh	2022-11-18 09:37:05.491691603 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # Eugenio: note that when I used v80, I used to look for libdctprocess.so, 
+ # but not I look for libmwlaunchermain.so instead (which is not present in v80)
+diff --color -rupN freesurfer-orig/bin/clear_fs_env.csh freesurfer-patched/bin/clear_fs_env.csh
+--- freesurfer-orig/bin/clear_fs_env.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/clear_fs_env.csh	2022-11-18 09:37:06.231695687 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # clear_fs_env.csh
+diff --color -rupN freesurfer-orig/bin/compute_interrater_variability.csh freesurfer-patched/bin/compute_interrater_variability.csh
+--- freesurfer-orig/bin/compute_interrater_variability.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/compute_interrater_variability.csh	2022-11-18 09:37:04.647686947 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # compute_interrater_variability
+ #
+diff --color -rupN freesurfer-orig/bin/compute_label_volumes.csh freesurfer-patched/bin/compute_label_volumes.csh
+--- freesurfer-orig/bin/compute_label_volumes.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/compute_label_volumes.csh	2022-11-18 09:37:06.467696990 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # compute_all_label_volumes
+ #
+diff --color -rupN freesurfer-orig/bin/conf2hires freesurfer-patched/bin/conf2hires
+--- freesurfer-orig/bin/conf2hires	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/conf2hires	2022-11-18 09:37:04.847688050 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # conf2hires - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/cp-dicom freesurfer-patched/bin/cp-dicom
+--- freesurfer-orig/bin/cp-dicom	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/cp-dicom	2022-11-18 09:37:04.711687299 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # cp-dicom
+diff --color -rupN freesurfer-orig/bin/dcmdir-info-mgh freesurfer-patched/bin/dcmdir-info-mgh
+--- freesurfer-orig/bin/dcmdir-info-mgh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/dcmdir-info-mgh	2022-11-18 09:37:03.979683261 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # dcmdir-info-mgh
+diff --color -rupN freesurfer-orig/bin/dcmsplit freesurfer-patched/bin/dcmsplit
+--- freesurfer-orig/bin/dcmsplit	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/dcmsplit	2022-11-18 09:37:04.919688447 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # dcmsplit
+ 
+ if(-e $FREESURFER_HOME/sources.csh) then
+diff --color -rupN freesurfer-orig/bin/dcmunpack freesurfer-patched/bin/dcmunpack
+--- freesurfer-orig/bin/dcmunpack	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/dcmunpack	2022-11-18 09:37:04.971688734 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # dcmunpack
+ # 
+ 
+diff --color -rupN freesurfer-orig/bin/deface_subject freesurfer-patched/bin/deface_subject
+--- freesurfer-orig/bin/deface_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/deface_subject	2022-11-18 09:37:04.887688271 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # deface_subject
+diff --color -rupN freesurfer-orig/bin/defect2seg freesurfer-patched/bin/defect2seg
+--- freesurfer-orig/bin/defect2seg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/defect2seg	2022-11-18 09:37:04.519686241 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # defect2seg - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/dmri_bset freesurfer-patched/bin/dmri_bset
+--- freesurfer-orig/bin/dmri_bset	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/dmri_bset	2022-11-18 09:37:05.351690831 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # dmri_bset
+diff --color -rupN freesurfer-orig/bin/dt_recon freesurfer-patched/bin/dt_recon
+--- freesurfer-orig/bin/dt_recon	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/dt_recon	2022-11-18 09:37:05.567692023 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ umask 002;
+ 
+diff --color -rupN freesurfer-orig/bin/epidewarp.fsl freesurfer-patched/bin/epidewarp.fsl
+--- freesurfer-orig/bin/epidewarp.fsl	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/epidewarp.fsl	2022-11-18 09:37:04.863688138 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # epidewarp.fsl
+diff --color -rupN freesurfer-orig/bin/exvivo-hemi-proc freesurfer-patched/bin/exvivo-hemi-proc
+--- freesurfer-orig/bin/exvivo-hemi-proc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/exvivo-hemi-proc	2022-11-18 09:37:04.943688580 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # thalseg - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/feat2segstats freesurfer-patched/bin/feat2segstats
+--- freesurfer-orig/bin/feat2segstats	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/feat2segstats	2022-11-18 09:37:06.315696151 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # feat2segstats
+diff --color -rupN freesurfer-orig/bin/feat2surf freesurfer-patched/bin/feat2surf
+--- freesurfer-orig/bin/feat2surf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/feat2surf	2022-11-18 09:37:04.559686461 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # reg-feat2anat
+diff --color -rupN freesurfer-orig/bin/fix_subject freesurfer-patched/bin/fix_subject
+--- freesurfer-orig/bin/fix_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject	2022-11-18 09:37:05.615692288 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # fix_subject
+diff --color -rupN freesurfer-orig/bin/fix_subject_corrected freesurfer-patched/bin/fix_subject_corrected
+--- freesurfer-orig/bin/fix_subject_corrected	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject_corrected	2022-11-18 09:37:06.555697475 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fix_subject_corrected
+diff --color -rupN freesurfer-orig/bin/fix_subject_corrected-lh freesurfer-patched/bin/fix_subject_corrected-lh
+--- freesurfer-orig/bin/fix_subject_corrected-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject_corrected-lh	2022-11-18 09:37:04.195684453 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fix_subject_corrected-lh
+diff --color -rupN freesurfer-orig/bin/fix_subject_corrected-rh freesurfer-patched/bin/fix_subject_corrected-rh
+--- freesurfer-orig/bin/fix_subject_corrected-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject_corrected-rh	2022-11-18 09:37:03.663681518 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fix_subject_corrected-rh
+diff --color -rupN freesurfer-orig/bin/fix_subject-lh freesurfer-patched/bin/fix_subject-lh
+--- freesurfer-orig/bin/fix_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject-lh	2022-11-18 09:37:05.403691118 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # fix_subject-lh
+diff --color -rupN freesurfer-orig/bin/fix_subject-rh freesurfer-patched/bin/fix_subject-rh
+--- freesurfer-orig/bin/fix_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fix_subject-rh	2022-11-18 09:37:05.171689838 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # fix_subject-rh
+diff --color -rupN freesurfer-orig/bin/fscalc freesurfer-patched/bin/fscalc
+--- freesurfer-orig/bin/fscalc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fscalc	2022-11-18 09:37:04.595686660 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fscalc
+ 
+ set VERSION = 'fscalc 7.3.2';
+diff --color -rupN freesurfer-orig/bin/fscalc.fsl freesurfer-patched/bin/fscalc.fsl
+--- freesurfer-orig/bin/fscalc.fsl	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fscalc.fsl	2022-11-18 09:37:05.483691559 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # This is a utility that extends fslmaths so that an format that can
+ # be read/written by freesurfer can be used. It operates in the same
+diff --color -rupN freesurfer-orig/bin/fs-check-version freesurfer-patched/bin/fs-check-version
+--- freesurfer-orig/bin/fs-check-version	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fs-check-version	2022-11-18 09:37:04.623686814 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fs-check-version - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/fsdcmdecompress freesurfer-patched/bin/fsdcmdecompress
+--- freesurfer-orig/bin/fsdcmdecompress	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsdcmdecompress	2022-11-18 09:37:05.791693259 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fsdcmdecompress - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/fsfirst.fsl freesurfer-patched/bin/fsfirst.fsl
+--- freesurfer-orig/bin/fsfirst.fsl	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsfirst.fsl	2022-11-18 09:37:05.759693083 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fsfirst.fsl
+ 
+ if(-e $FREESURFER_HOME/sources.csh) then
+diff --color -rupN freesurfer-orig/bin/fslregister freesurfer-patched/bin/fslregister
+--- freesurfer-orig/bin/fslregister	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fslregister	2022-11-18 09:37:05.095689418 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fslregister
+diff --color -rupN freesurfer-orig/bin/fsl_rigid_register freesurfer-patched/bin/fsl_rigid_register
+--- freesurfer-orig/bin/fsl_rigid_register	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsl_rigid_register	2022-11-18 09:37:05.983694319 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fsl_rigid_register
+diff --color -rupN freesurfer-orig/bin/fsr-checkxopts freesurfer-patched/bin/fsr-checkxopts
+--- freesurfer-orig/bin/fsr-checkxopts	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsr-checkxopts	2022-11-18 09:37:04.587686615 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fsr-checkxopts
+diff --color -rupN freesurfer-orig/bin/fsr-coreg freesurfer-patched/bin/fsr-coreg
+--- freesurfer-orig/bin/fsr-coreg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsr-coreg	2022-11-18 09:37:04.067683747 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fsr-coreg 
+ 
+ #  In theory, it would be better to resample all modes into an
+diff --color -rupN freesurfer-orig/bin/fsr-getxopts freesurfer-patched/bin/fsr-getxopts
+--- freesurfer-orig/bin/fsr-getxopts	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsr-getxopts	2022-11-18 09:37:04.095683902 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # fsr-getxopts
+diff --color -rupN freesurfer-orig/bin/fsr-import freesurfer-patched/bin/fsr-import
+--- freesurfer-orig/bin/fsr-import	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsr-import	2022-11-18 09:37:04.867688161 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fsr-import
+ 
+ if(-e $FREESURFER_HOME/sources.csh) then
+diff --color -rupN freesurfer-orig/bin/fs_time freesurfer-patched/bin/fs_time
+--- freesurfer-orig/bin/fs_time	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fs_time	2022-11-18 09:37:04.439685799 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fs_time
+ 
+ # Check whether FS_TIME_ALLOW exists, if not assume it is ok
+diff --color -rupN freesurfer-orig/bin/fsxvfb freesurfer-patched/bin/fsxvfb
+--- freesurfer-orig/bin/fsxvfb	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fsxvfb	2022-11-18 09:37:04.899688337 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # fsxvfb - a simple application of the virtual frame buffer (vrb) for
+ # X This can run graphical commands in a "headless" way, ie, without
+diff --color -rupN freesurfer-orig/bin/fvcompare freesurfer-patched/bin/fvcompare
+--- freesurfer-orig/bin/fvcompare	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/fvcompare	2022-11-18 09:37:04.667687057 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fvcompare
+ 
+ set VERSION = 'fvcompare 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gca-apply freesurfer-patched/bin/gca-apply
+--- freesurfer-orig/bin/gca-apply	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gca-apply	2022-11-18 09:37:04.787687719 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gca-apply
+ 
+ set VERSION = 'gca-apply 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gcainit freesurfer-patched/bin/gcainit
+--- freesurfer-orig/bin/gcainit	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gcainit	2022-11-18 09:37:05.331690721 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gcainit
+ 
+ set VERSION = 'gcainit 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gcaprepone freesurfer-patched/bin/gcaprepone
+--- freesurfer-orig/bin/gcaprepone	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gcaprepone	2022-11-18 09:37:04.815687874 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gcaprepone
+ 
+ set VERSION = 'gcaprepone 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gcatrain freesurfer-patched/bin/gcatrain
+--- freesurfer-orig/bin/gcatrain	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gcatrain	2022-11-18 09:37:04.579686571 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gcatrain
+ 
+ set VERSION = 'gcatrain 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gcatrainskull freesurfer-patched/bin/gcatrainskull
+--- freesurfer-orig/bin/gcatrainskull	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gcatrainskull	2022-11-18 09:37:05.931694032 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gcatrainskull
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/getfullpath freesurfer-patched/bin/getfullpath
+--- freesurfer-orig/bin/getfullpath	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/getfullpath	2022-11-18 09:37:04.927688491 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # getfullpath
+diff --color -rupN freesurfer-orig/bin/get_label_thickness freesurfer-patched/bin/get_label_thickness
+--- freesurfer-orig/bin/get_label_thickness	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/get_label_thickness	2022-11-18 09:37:04.907688381 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ # script to get the thickness values for the vertices found in a label file.
+ # inputs:  label file and ascii thickness file
+diff --color -rupN freesurfer-orig/bin/grad_unwarp freesurfer-patched/bin/grad_unwarp
+--- freesurfer-orig/bin/grad_unwarp	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/grad_unwarp	2022-11-18 09:37:05.095689418 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # grad_unwarp - convert, unwarp, and resample dicom files
+diff --color -rupN freesurfer-orig/bin/groupstats freesurfer-patched/bin/groupstats
+--- freesurfer-orig/bin/groupstats	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/groupstats	2022-11-18 09:37:04.015683460 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # groupstats
+ 
+ set VERSION = 'groupstats 7.3.2';
+diff --color -rupN freesurfer-orig/bin/groupstatsdiff freesurfer-patched/bin/groupstatsdiff
+--- freesurfer-orig/bin/groupstatsdiff	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/groupstatsdiff	2022-11-18 09:37:03.843682511 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # groupstatsdiff
+ 
+ set VERSION = 'groupstatsdiff 7.3.2';
+diff --color -rupN freesurfer-orig/bin/gtmseg freesurfer-patched/bin/gtmseg
+--- freesurfer-orig/bin/gtmseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/gtmseg	2022-11-18 09:37:04.527686284 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # gtmseg
+ 
+ set VERSION = 'gtmseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/help_xml_validate freesurfer-patched/bin/help_xml_validate
+--- freesurfer-orig/bin/help_xml_validate	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/help_xml_validate	2022-11-18 09:37:04.855688094 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ # $srcdir is defined in make check runtime environment
+ set SRCDIR=$PWD
+diff --color -rupN freesurfer-orig/bin/inflate_subject freesurfer-patched/bin/inflate_subject
+--- freesurfer-orig/bin/inflate_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject	2022-11-18 09:37:05.519691758 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # inflate_subject
+diff --color -rupN freesurfer-orig/bin/inflate_subject3 freesurfer-patched/bin/inflate_subject3
+--- freesurfer-orig/bin/inflate_subject3	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject3	2022-11-18 09:37:04.319685137 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # inflate_subject3
+diff --color -rupN freesurfer-orig/bin/inflate_subject-lh freesurfer-patched/bin/inflate_subject-lh
+--- freesurfer-orig/bin/inflate_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject-lh	2022-11-18 09:37:03.755682026 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # inflate_subject-lh
+diff --color -rupN freesurfer-orig/bin/inflate_subject_new-rh freesurfer-patched/bin/inflate_subject_new-rh
+--- freesurfer-orig/bin/inflate_subject_new-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject_new-rh	2022-11-18 09:37:04.711687299 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # inflate_subject_new-rh
+diff --color -rupN freesurfer-orig/bin/inflate_subject-rh freesurfer-patched/bin/inflate_subject-rh
+--- freesurfer-orig/bin/inflate_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject-rh	2022-11-18 09:37:05.319690654 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # inflate_subject-rh
+diff --color -rupN freesurfer-orig/bin/inflate_subject_sc freesurfer-patched/bin/inflate_subject_sc
+--- freesurfer-orig/bin/inflate_subject_sc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/inflate_subject_sc	2022-11-18 09:37:06.019694517 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # inflate_subject_sc
+diff --color -rupN freesurfer-orig/bin/isanalyze freesurfer-patched/bin/isanalyze
+--- freesurfer-orig/bin/isanalyze	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/isanalyze	2022-11-18 09:37:04.095683902 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # isanalyze - checks whether the passed file is an analyze file
+diff --color -rupN freesurfer-orig/bin/IsLTA freesurfer-patched/bin/IsLTA
+--- freesurfer-orig/bin/IsLTA	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/IsLTA	2022-11-18 09:37:04.447685843 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # IsLTA
+ 
+ set VERSION = 'IsLTA 7.3.2';
+diff --color -rupN freesurfer-orig/bin/isnifti freesurfer-patched/bin/isnifti
+--- freesurfer-orig/bin/isnifti	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/isnifti	2022-11-18 09:37:03.831682445 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # isnifti - checks whether the passed file is a nifti file
+diff --color -rupN freesurfer-orig/bin/isolate_labels.csh freesurfer-patched/bin/isolate_labels.csh
+--- freesurfer-orig/bin/isolate_labels.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/isolate_labels.csh	2022-11-18 09:37:04.043683615 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # isolate_labels
+ #
+diff --color -rupN freesurfer-orig/bin/isolate_labels_keeporigval.csh freesurfer-patched/bin/isolate_labels_keeporigval.csh
+--- freesurfer-orig/bin/isolate_labels_keeporigval.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/isolate_labels_keeporigval.csh	2022-11-18 09:37:04.935688535 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # isolate_labels
+ #
+diff --color -rupN freesurfer-orig/bin/jkgcatrain freesurfer-patched/bin/jkgcatrain
+--- freesurfer-orig/bin/jkgcatrain	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/jkgcatrain	2022-11-18 09:37:03.975683239 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # jkgcatrain
+ 
+ set VERSION = 'jkgcatrain 7.3.2';
+diff --color -rupN freesurfer-orig/bin/label_child freesurfer-patched/bin/label_child
+--- freesurfer-orig/bin/label_child	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/label_child	2022-11-18 09:37:04.719687344 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # label_child
+diff --color -rupN freesurfer-orig/bin/label_elderly_subject freesurfer-patched/bin/label_elderly_subject
+--- freesurfer-orig/bin/label_elderly_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/label_elderly_subject	2022-11-18 09:37:03.703681739 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # label_elderly_subject
+diff --color -rupN freesurfer-orig/bin/labels_disjoint freesurfer-patched/bin/labels_disjoint
+--- freesurfer-orig/bin/labels_disjoint	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/labels_disjoint	2022-11-18 09:37:04.391685534 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # set echo=1
+ 
+diff --color -rupN freesurfer-orig/bin/labels_intersect freesurfer-patched/bin/labels_intersect
+--- freesurfer-orig/bin/labels_intersect	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/labels_intersect	2022-11-18 09:37:05.995694384 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # set echo=1
+ 
+diff --color -rupN freesurfer-orig/bin/label_subject freesurfer-patched/bin/label_subject
+--- freesurfer-orig/bin/label_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/label_subject	2022-11-18 09:37:04.587686615 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # label_subject
+diff --color -rupN freesurfer-orig/bin/label_subject_flash freesurfer-patched/bin/label_subject_flash
+--- freesurfer-orig/bin/label_subject_flash	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/label_subject_flash	2022-11-18 09:37:05.707692796 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # label_subject_flash
+diff --color -rupN freesurfer-orig/bin/label_subject_mixed freesurfer-patched/bin/label_subject_mixed
+--- freesurfer-orig/bin/label_subject_mixed	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/label_subject_mixed	2022-11-18 09:37:03.975683239 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # label_subject_mixed
+diff --color -rupN freesurfer-orig/bin/labels_union freesurfer-patched/bin/labels_union
+--- freesurfer-orig/bin/labels_union	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/labels_union	2022-11-18 09:37:04.739687454 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # set echo=1
+ 
+diff --color -rupN freesurfer-orig/bin/long_create_base_sigma freesurfer-patched/bin/long_create_base_sigma
+--- freesurfer-orig/bin/long_create_base_sigma	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/long_create_base_sigma	2022-11-18 09:37:06.087694892 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # long_create_base_sigma
+ #
+diff --color -rupN freesurfer-orig/bin/long_create_orig freesurfer-patched/bin/long_create_orig
+--- freesurfer-orig/bin/long_create_orig	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/long_create_orig	2022-11-18 09:37:06.007694451 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # long_create_orig
+ #
+diff --color -rupN freesurfer-orig/bin/longmc freesurfer-patched/bin/longmc
+--- freesurfer-orig/bin/longmc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/longmc	2022-11-18 09:37:05.247690257 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # longmc - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/lpcregister freesurfer-patched/bin/lpcregister
+--- freesurfer-orig/bin/lpcregister	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/lpcregister	2022-11-18 09:37:04.587686615 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # lpcregister
+diff --color -rupN freesurfer-orig/bin/make_average_subcort freesurfer-patched/bin/make_average_subcort
+--- freesurfer-orig/bin/make_average_subcort	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_average_subcort	2022-11-18 09:37:05.763693105 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # thalseg
+ 
+ set VERSION = 'make_average_subcort 7.3.2';
+diff --color -rupN freesurfer-orig/bin/make_average_subject freesurfer-patched/bin/make_average_subject
+--- freesurfer-orig/bin/make_average_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_average_subject	2022-11-18 09:37:05.691692707 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # make_average_subject
+diff --color -rupN freesurfer-orig/bin/make_average_surface freesurfer-patched/bin/make_average_surface
+--- freesurfer-orig/bin/make_average_surface	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_average_surface	2022-11-18 09:37:06.535697365 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # make_average_surface
+diff --color -rupN freesurfer-orig/bin/make_average_volume freesurfer-patched/bin/make_average_volume
+--- freesurfer-orig/bin/make_average_volume	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_average_volume	2022-11-18 09:37:04.515686218 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # make_average_volume
+diff --color -rupN freesurfer-orig/bin/make_cortex_label freesurfer-patched/bin/make_cortex_label
+--- freesurfer-orig/bin/make_cortex_label	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_cortex_label	2022-11-18 09:37:03.923682952 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # make_cortex_label
+diff --color -rupN freesurfer-orig/bin/make_folding_atlas freesurfer-patched/bin/make_folding_atlas
+--- freesurfer-orig/bin/make_folding_atlas	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make_folding_atlas	2022-11-18 09:37:04.975688757 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # make_folding_atlas
+ 
+ set VERSION = 'make_folding_atlas 7.3.2';
+diff --color -rupN freesurfer-orig/bin/make-segvol-table freesurfer-patched/bin/make-segvol-table
+--- freesurfer-orig/bin/make-segvol-table	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/make-segvol-table	2022-11-18 09:37:04.595686660 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # make-segvol-table - creates a table of volumes of subcortical
+diff --color -rupN freesurfer-orig/bin/map_all_labels freesurfer-patched/bin/map_all_labels
+--- freesurfer-orig/bin/map_all_labels	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/map_all_labels	2022-11-18 09:37:05.115689529 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # map_all_labels
+diff --color -rupN freesurfer-orig/bin/map_all_labels-lh freesurfer-patched/bin/map_all_labels-lh
+--- freesurfer-orig/bin/map_all_labels-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/map_all_labels-lh	2022-11-18 09:37:04.735687433 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # map_all_labels-lh
+diff --color -rupN freesurfer-orig/bin/map_central_sulcus freesurfer-patched/bin/map_central_sulcus
+--- freesurfer-orig/bin/map_central_sulcus	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/map_central_sulcus	2022-11-18 09:37:06.251695798 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # map_central_sulcus
+diff --color -rupN freesurfer-orig/bin/meanval freesurfer-patched/bin/meanval
+--- freesurfer-orig/bin/meanval	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/meanval	2022-11-18 09:37:05.307690588 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # meanval
+ 
+ set VERSION = 'meanval 7.3.2';
+diff --color -rupN freesurfer-orig/bin/mergeseg freesurfer-patched/bin/mergeseg
+--- freesurfer-orig/bin/mergeseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mergeseg	2022-11-18 09:37:03.827682423 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # mergeseg
+ 
+ set VERSION = 'mergeseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/mideface freesurfer-patched/bin/mideface
+--- freesurfer-orig/bin/mideface	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mideface	2022-11-18 09:37:05.799693303 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # midefacer - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/minc2seqinfo freesurfer-patched/bin/minc2seqinfo
+--- freesurfer-orig/bin/minc2seqinfo	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/minc2seqinfo	2022-11-18 09:37:05.247690257 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # Name: minc2seqinfo
+ #
+diff --color -rupN freesurfer-orig/bin/mkheadsurf freesurfer-patched/bin/mkheadsurf
+--- freesurfer-orig/bin/mkheadsurf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mkheadsurf	2022-11-18 09:37:04.015683460 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mkheadsurf
+diff --color -rupN freesurfer-orig/bin/mksubjdirs freesurfer-patched/bin/mksubjdirs
+--- freesurfer-orig/bin/mksubjdirs	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mksubjdirs	2022-11-18 09:37:04.715687321 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mksubjdirs
+diff --color -rupN freesurfer-orig/bin/mmppsp freesurfer-patched/bin/mmppsp
+--- freesurfer-orig/bin/mmppsp	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mmppsp	2022-11-18 09:37:06.055694716 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # mmppsp - multimodal post-prob surface placement using samseg post probs
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/mni152reg freesurfer-patched/bin/mni152reg
+--- freesurfer-orig/bin/mni152reg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mni152reg	2022-11-18 09:37:04.603686704 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # mni152reg
+ 
+ set VERSION = 'mni152reg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/morph_only_subject freesurfer-patched/bin/morph_only_subject
+--- freesurfer-orig/bin/morph_only_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_only_subject	2022-11-18 09:37:04.423685711 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_only_subject
+diff --color -rupN freesurfer-orig/bin/morph_only_subject-lh freesurfer-patched/bin/morph_only_subject-lh
+--- freesurfer-orig/bin/morph_only_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_only_subject-lh	2022-11-18 09:37:05.167689816 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_only_subject-lh
+diff --color -rupN freesurfer-orig/bin/morph_only_subject-rh freesurfer-patched/bin/morph_only_subject-rh
+--- freesurfer-orig/bin/morph_only_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_only_subject-rh	2022-11-18 09:37:04.247684740 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_only_subject-rh
+diff --color -rupN freesurfer-orig/bin/morph_rgb-lh freesurfer-patched/bin/morph_rgb-lh
+--- freesurfer-orig/bin/morph_rgb-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_rgb-lh	2022-11-18 09:37:03.847682533 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_rgb-lh
+diff --color -rupN freesurfer-orig/bin/morph_rgb-rh freesurfer-patched/bin/morph_rgb-rh
+--- freesurfer-orig/bin/morph_rgb-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_rgb-rh	2022-11-18 09:37:05.447691361 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_rgb-rh
+diff --color -rupN freesurfer-orig/bin/morph_subject freesurfer-patched/bin/morph_subject
+--- freesurfer-orig/bin/morph_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_subject	2022-11-18 09:37:05.095689418 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # morph_subject
+diff --color -rupN freesurfer-orig/bin/morph_subject-lh freesurfer-patched/bin/morph_subject-lh
+--- freesurfer-orig/bin/morph_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_subject-lh	2022-11-18 09:37:04.975688757 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # morph_subject-lh
+diff --color -rupN freesurfer-orig/bin/morph_subject-rh freesurfer-patched/bin/morph_subject-rh
+--- freesurfer-orig/bin/morph_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_subject-rh	2022-11-18 09:37:05.731692928 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # morph_subject-rh
+diff --color -rupN freesurfer-orig/bin/morph_tables-lh freesurfer-patched/bin/morph_tables-lh
+--- freesurfer-orig/bin/morph_tables-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_tables-lh	2022-11-18 09:37:05.335690743 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_tables-lh
+diff --color -rupN freesurfer-orig/bin/morph_tables-rh freesurfer-patched/bin/morph_tables-rh
+--- freesurfer-orig/bin/morph_tables-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/morph_tables-rh	2022-11-18 09:37:06.067694782 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # morph_tables-rh
+diff --color -rupN freesurfer-orig/bin/mpr2mni305 freesurfer-patched/bin/mpr2mni305
+--- freesurfer-orig/bin/mpr2mni305	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mpr2mni305	2022-11-18 09:37:04.219684585 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # Register an image to an average subject  which 
+ # itself has been registered to the MNI average_305 subject.
+diff --color -rupN freesurfer-orig/bin/mri_add_new_tp freesurfer-patched/bin/mri_add_new_tp
+--- freesurfer-orig/bin/mri_add_new_tp	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_add_new_tp	2022-11-18 09:37:05.827693457 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_add_new_tp
+diff --color -rupN freesurfer-orig/bin/mri_align_long.csh freesurfer-patched/bin/mri_align_long.csh
+--- freesurfer-orig/bin/mri_align_long.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_align_long.csh	2022-11-18 09:37:06.187695445 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_align_long.csh
+diff --color -rupN freesurfer-orig/bin/mri_create_t2combined freesurfer-patched/bin/mri_create_t2combined
+--- freesurfer-orig/bin/mri_create_t2combined	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_create_t2combined	2022-11-18 09:37:05.691692707 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set bin=mri_create_t2combined
+ 
+diff --color -rupN freesurfer-orig/bin/mri_cvs_check freesurfer-patched/bin/mri_cvs_check
+--- freesurfer-orig/bin/mri_cvs_check	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/bin/mri_cvs_check	2022-11-18 09:37:04.559686461 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ 
+ # mri_cvs_check
+diff --color -rupN freesurfer-orig/bin/mri_cvs_data_copy freesurfer-patched/bin/mri_cvs_data_copy
+--- freesurfer-orig/bin/mri_cvs_data_copy	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/bin/mri_cvs_data_copy	2022-11-18 09:37:06.003694429 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ 
+ # mri_cvs_data_copy
+diff --color -rupN freesurfer-orig/bin/mri_cvs_register freesurfer-patched/bin/mri_cvs_register
+--- freesurfer-orig/bin/mri_cvs_register	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/bin/mri_cvs_register	2022-11-18 09:37:05.295690522 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ 
+ # mri_cvs_register
+diff --color -rupN freesurfer-orig/bin/mri-func2sph freesurfer-patched/bin/mri-func2sph
+--- freesurfer-orig/bin/mri-func2sph	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri-func2sph	2022-11-18 09:37:03.843682511 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri-func2sph
+diff --color -rupN freesurfer-orig/bin/mri-funcvits freesurfer-patched/bin/mri-funcvits
+--- freesurfer-orig/bin/mri-funcvits	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri-funcvits	2022-11-18 09:37:04.815687874 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri-funcvits
+diff --color -rupN freesurfer-orig/bin/mri_glmfit-sim freesurfer-patched/bin/mri_glmfit-sim
+--- freesurfer-orig/bin/mri_glmfit-sim	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_glmfit-sim	2022-11-18 09:37:05.719692862 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ set VERSION = 'mri_glmfit-sim 7.3.2';
+ setenv LANG en_US.UTF-8
+ 
+diff --color -rupN freesurfer-orig/bin/mri_mergelabels freesurfer-patched/bin/mri_mergelabels
+--- freesurfer-orig/bin/mri_mergelabels	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_mergelabels	2022-11-18 09:37:03.971683217 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_mergelabels
+diff --color -rupN freesurfer-orig/bin/mri_motion_correct2 freesurfer-patched/bin/mri_motion_correct2
+--- freesurfer-orig/bin/mri_motion_correct2	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_motion_correct2	2022-11-18 09:37:04.739687454 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_motion_correct2
+diff --color -rupN freesurfer-orig/bin/mri_motion_correct.fsl freesurfer-patched/bin/mri_motion_correct.fsl
+--- freesurfer-orig/bin/mri_motion_correct.fsl	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_motion_correct.fsl	2022-11-18 09:37:06.303696085 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_motion_correct.fsl
+diff --color -rupN freesurfer-orig/bin/mri_nu_correct.mni freesurfer-patched/bin/mri_nu_correct.mni
+--- freesurfer-orig/bin/mri_nu_correct.mni	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_nu_correct.mni	2022-11-18 09:37:04.571686527 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri_nu_correct.mni
+diff --color -rupN freesurfer-orig/bin/mri_reorient_LR.csh freesurfer-patched/bin/mri_reorient_LR.csh
+--- freesurfer-orig/bin/mri_reorient_LR.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri_reorient_LR.csh	2022-11-18 09:37:06.007694451 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # mri_reorient_LR
+ #
+diff --color -rupN freesurfer-orig/bin/mris_compute_lgi freesurfer-patched/bin/mris_compute_lgi
+--- freesurfer-orig/bin/mris_compute_lgi	2022-08-04 06:51:43.000000000 +0200
++++ freesurfer-patched/bin/mris_compute_lgi	2022-11-18 09:37:04.747687498 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mris_compute_lgi
+diff --color -rupN freesurfer-orig/bin/mri-sph2surf freesurfer-patched/bin/mri-sph2surf
+--- freesurfer-orig/bin/mri-sph2surf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mri-sph2surf	2022-11-18 09:37:04.799687785 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mri-sph2surf
+diff --color -rupN freesurfer-orig/bin/mris_preproc freesurfer-patched/bin/mris_preproc
+--- freesurfer-orig/bin/mris_preproc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mris_preproc	2022-11-18 09:37:04.391685534 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mris_preproc
+diff --color -rupN freesurfer-orig/bin/mris_volsmooth freesurfer-patched/bin/mris_volsmooth
+--- freesurfer-orig/bin/mris_volsmooth	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/mris_volsmooth	2022-11-18 09:37:05.515691736 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # mris_volsmooth
+diff --color -rupN freesurfer-orig/bin/ms_refine_subject freesurfer-patched/bin/ms_refine_subject
+--- freesurfer-orig/bin/ms_refine_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/ms_refine_subject	2022-11-18 09:37:06.555697475 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # ms_refine_subject
+diff --color -rupN freesurfer-orig/bin/orientLAS freesurfer-patched/bin/orientLAS
+--- freesurfer-orig/bin/orientLAS	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/orientLAS	2022-11-18 09:37:06.555697475 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # orientLAS
+ #
+diff --color -rupN freesurfer-orig/bin/parc_atlas_jackknife_test freesurfer-patched/bin/parc_atlas_jackknife_test
+--- freesurfer-orig/bin/parc_atlas_jackknife_test	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/parc_atlas_jackknife_test	2022-11-18 09:37:04.563686483 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # parc_atlas_jackknife_test
+@@ -291,7 +291,7 @@ foreach test_subj ($ALL_SUBJECTS)
+             if (-e ${sphere_reg}) rm -f ${sphere_reg}
+             if ($PBS) then
+                 set cmdf=(${WD}/${hemi}.${test_subj}${reg_append}.cmd)
+-                echo "#! /bin/tcsh -ef" > ${cmdf}
++                echo "#!/usr/bin/env/tcsh -ef" > ${cmdf}
+                 echo "limit filesize 10megabytes" >> ${cmdf}
+                 echo "${cmd} |& tee -a ${LF}" >> ${cmdf}
+                 chmod a+x ${cmdf}
+diff --color -rupN freesurfer-orig/bin/pctsurfcon freesurfer-patched/bin/pctsurfcon
+--- freesurfer-orig/bin/pctsurfcon	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/pctsurfcon	2022-11-18 09:37:05.459691427 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # pctsurfcon
+diff --color -rupN freesurfer-orig/bin/polyorder freesurfer-patched/bin/polyorder
+--- freesurfer-orig/bin/polyorder	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/polyorder	2022-11-18 09:37:04.207684519 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # polyorder
+ 
+ set VERSION = 'polyorder 7.3.2';
+diff --color -rupN freesurfer-orig/bin/print_unique_labels.csh freesurfer-patched/bin/print_unique_labels.csh
+--- freesurfer-orig/bin/print_unique_labels.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/print_unique_labels.csh	2022-11-18 09:37:04.015683460 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # print_unique_labels
+ #
+diff --color -rupN freesurfer-orig/bin/rbbr freesurfer-patched/bin/rbbr
+--- freesurfer-orig/bin/rbbr	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rbbr	2022-11-18 09:37:04.167684299 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # rbbr
+ 
+ set VERSION = 'rbbr 7.3.2';
+diff --color -rupN freesurfer-orig/bin/rca-base-init freesurfer-patched/bin/rca-base-init
+--- freesurfer-orig/bin/rca-base-init	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rca-base-init	2022-11-18 09:37:04.711687299 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # rca-base-init - initialize base subject for recon-all processing. Mostly, code was just
+ # cut out of recon-all, so there are some things that look funny (eg, DoCreateBaseSubj is
+ # explicitly set to 1 and checked eventhough that is what this script does). I wanted
+diff --color -rupN freesurfer-orig/bin/rca-long-tp-init freesurfer-patched/bin/rca-long-tp-init
+--- freesurfer-orig/bin/rca-long-tp-init	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rca-long-tp-init	2022-11-18 09:37:04.571686527 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # rca-long-tp-init - initialize long timepoint subject for recon-all
+ # processing. Mostly, code was just cut out of recon-all, so there are
+diff --color -rupN freesurfer-orig/bin/rcbf-prep freesurfer-patched/bin/rcbf-prep
+--- freesurfer-orig/bin/rcbf-prep	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rcbf-prep	2022-11-18 09:37:05.315690632 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # rcbf-prep
+ 
+ set VERSION = 'rcbf-prep 7.3.2';
+diff --color -rupN freesurfer-orig/bin/rebuild_gca_atlas.csh freesurfer-patched/bin/rebuild_gca_atlas.csh
+--- freesurfer-orig/bin/rebuild_gca_atlas.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rebuild_gca_atlas.csh	2022-11-18 09:37:05.187689926 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # rebuild_gca_atlas.csh
+diff --color -rupN freesurfer-orig/bin/recon-all freesurfer-patched/bin/recon-all
+--- freesurfer-orig/bin/recon-all	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/recon-all	2022-11-18 09:37:05.839693524 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/bin/reg2subject freesurfer-patched/bin/reg2subject
+--- freesurfer-orig/bin/reg2subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reg2subject	2022-11-18 09:37:03.903682842 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # reg2subject
+ 
+ set VERSION = 'reg2subject 7.3.2';
+diff --color -rupN freesurfer-orig/bin/reg-feat2anat freesurfer-patched/bin/reg-feat2anat
+--- freesurfer-orig/bin/reg-feat2anat	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reg-feat2anat	2022-11-18 09:37:04.067683747 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # reg-feat2anat
+diff --color -rupN freesurfer-orig/bin/register_child freesurfer-patched/bin/register_child
+--- freesurfer-orig/bin/register_child	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/register_child	2022-11-18 09:37:04.667687057 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # register_child
+diff --color -rupN freesurfer-orig/bin/register.csh freesurfer-patched/bin/register.csh
+--- freesurfer-orig/bin/register.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/register.csh	2022-11-18 09:37:05.731692928 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # register.csh
+diff --color -rupN freesurfer-orig/bin/register_subject freesurfer-patched/bin/register_subject
+--- freesurfer-orig/bin/register_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/register_subject	2022-11-18 09:37:04.419685688 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # register_subject
+diff --color -rupN freesurfer-orig/bin/register_subject_flash freesurfer-patched/bin/register_subject_flash
+--- freesurfer-orig/bin/register_subject_flash	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/register_subject_flash	2022-11-18 09:37:06.307696107 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # register_subject_flash
+diff --color -rupN freesurfer-orig/bin/register_subject_mixed freesurfer-patched/bin/register_subject_mixed
+--- freesurfer-orig/bin/register_subject_mixed	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/register_subject_mixed	2022-11-18 09:37:03.711681784 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # register_subject_mixed
+diff --color -rupN freesurfer-orig/bin/reinflate_subject freesurfer-patched/bin/reinflate_subject
+--- freesurfer-orig/bin/reinflate_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reinflate_subject	2022-11-18 09:37:05.059689220 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # reinflate_subject
+diff --color -rupN freesurfer-orig/bin/reinflate_subject-lh freesurfer-patched/bin/reinflate_subject-lh
+--- freesurfer-orig/bin/reinflate_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reinflate_subject-lh	2022-11-18 09:37:04.727687388 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # reinflate_subject-lh
+diff --color -rupN freesurfer-orig/bin/reinflate_subject-rh freesurfer-patched/bin/reinflate_subject-rh
+--- freesurfer-orig/bin/reinflate_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reinflate_subject-rh	2022-11-18 09:37:06.439696835 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # reinflate_subject-rh
+diff --color -rupN freesurfer-orig/bin/remove_talairach freesurfer-patched/bin/remove_talairach
+--- freesurfer-orig/bin/remove_talairach	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/remove_talairach	2022-11-18 09:37:04.207684519 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # remove_talairach
+diff --color -rupN freesurfer-orig/bin/renormalize_subject freesurfer-patched/bin/renormalize_subject
+--- freesurfer-orig/bin/renormalize_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/renormalize_subject	2022-11-18 09:37:05.183689904 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # renormalize_subject
+diff --color -rupN freesurfer-orig/bin/renormalize_subject_keep_editting freesurfer-patched/bin/renormalize_subject_keep_editting
+--- freesurfer-orig/bin/renormalize_subject_keep_editting	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/renormalize_subject_keep_editting	2022-11-18 09:37:06.067694782 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # renormalize_subject_keep_editting
+diff --color -rupN freesurfer-orig/bin/renormalize_T1_subject freesurfer-patched/bin/renormalize_T1_subject
+--- freesurfer-orig/bin/renormalize_T1_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/renormalize_T1_subject	2022-11-18 09:37:03.755682026 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # renormalize_T1_subject
+diff --color -rupN freesurfer-orig/bin/reregister_subject_mixed freesurfer-patched/bin/reregister_subject_mixed
+--- freesurfer-orig/bin/reregister_subject_mixed	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/reregister_subject_mixed	2022-11-18 09:37:05.891693811 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # reregister_subject_mixed
+diff --color -rupN freesurfer-orig/bin/rtview freesurfer-patched/bin/rtview
+--- freesurfer-orig/bin/rtview	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/rtview	2022-11-18 09:37:04.419685688 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # rtview
+ 
+ set VERSION = 'rtview 7.3.2';
+diff --color -rupN freesurfer-orig/bin/run_mris_preproc freesurfer-patched/bin/run_mris_preproc
+--- freesurfer-orig/bin/run_mris_preproc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/run_mris_preproc	2022-11-18 09:37:05.675692619 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # Script to create a cache of the preprocessed files needed by qdec.
+diff --color -rupN freesurfer-orig/bin/run-qdec-glm freesurfer-patched/bin/run-qdec-glm
+--- freesurfer-orig/bin/run-qdec-glm	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/run-qdec-glm	2022-11-18 09:37:05.195689970 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # run-qdec-glm
+diff --color -rupN freesurfer-orig/bin/samseg freesurfer-patched/bin/samseg
+--- freesurfer-orig/bin/samseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/samseg	2022-11-18 09:37:05.703692774 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # samseg
+ 
+ set VERSION = 'samseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/samseg2recon freesurfer-patched/bin/samseg2recon
+--- freesurfer-orig/bin/samseg2recon	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/samseg2recon	2022-11-18 09:37:06.219695621 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # samseg2recon - create and populate a subjects dir in a way that
+ # recon-all can be run on it.
+diff --color -rupN freesurfer-orig/bin/samseg-long freesurfer-patched/bin/samseg-long
+--- freesurfer-orig/bin/samseg-long	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/samseg-long	2022-11-18 09:37:04.783687697 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # samseg-long - sources
+ if(-e $FREESURFER_HOME/sources.csh) then
+   source $FREESURFER_HOME/sources.csh
+diff --color -rupN freesurfer-orig/bin/seg2filled freesurfer-patched/bin/seg2filled
+--- freesurfer-orig/bin/seg2filled	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/seg2filled	2022-11-18 09:37:06.195695489 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # seg2filled - creates a filled.mgz from an aseg-style
+ # segmentation. The original intent is to use a SAMSEG segmentation to
+diff --color -rupN freesurfer-orig/bin/seg2recon freesurfer-patched/bin/seg2recon
+--- freesurfer-orig/bin/seg2recon	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/seg2recon	2022-11-18 09:37:04.571686527 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ #
+ # seg2recon - create and populate a subjects dir given the seg and
+ # input vol in a way that recon-all can be run on it. This is similar
+diff --color -rupN freesurfer-orig/bin/segmentBS.sh freesurfer-patched/bin/segmentBS.sh
+--- freesurfer-orig/bin/segmentBS.sh	2022-08-04 06:40:23.000000000 +0200
++++ freesurfer-patched/bin/segmentBS.sh	2022-11-18 09:37:04.539686351 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
+ if ("$tcsh61706" != "") then
+diff --color -rupN freesurfer-orig/bin/segmentHA_T1_long.sh freesurfer-patched/bin/segmentHA_T1_long.sh
+--- freesurfer-orig/bin/segmentHA_T1_long.sh	2022-08-04 06:40:23.000000000 +0200
++++ freesurfer-patched/bin/segmentHA_T1_long.sh	2022-11-18 09:37:06.095694937 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
+ if ("$tcsh61706" != "") then
+diff --color -rupN freesurfer-orig/bin/segmentHA_T1.sh freesurfer-patched/bin/segmentHA_T1.sh
+--- freesurfer-orig/bin/segmentHA_T1.sh	2022-08-04 06:40:23.000000000 +0200
++++ freesurfer-patched/bin/segmentHA_T1.sh	2022-11-18 09:37:06.179695400 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
+ if ("$tcsh61706" != "") then
+diff --color -rupN freesurfer-orig/bin/segmentHA_T2.sh freesurfer-patched/bin/segmentHA_T2.sh
+--- freesurfer-orig/bin/segmentHA_T2.sh	2022-08-04 06:40:23.000000000 +0200
++++ freesurfer-patched/bin/segmentHA_T2.sh	2022-11-18 09:37:04.207684519 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
+ if ("$tcsh61706" != "") then
+diff --color -rupN freesurfer-orig/bin/segment_monkey freesurfer-patched/bin/segment_monkey
+--- freesurfer-orig/bin/segment_monkey	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_monkey	2022-11-18 09:37:04.815687874 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_monkey
+diff --color -rupN freesurfer-orig/bin/segment_subject freesurfer-patched/bin/segment_subject
+--- freesurfer-orig/bin/segment_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject	2022-11-18 09:37:04.775687653 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # segment_subject
+diff --color -rupN freesurfer-orig/bin/segment_subject_notal freesurfer-patched/bin/segment_subject_notal
+--- freesurfer-orig/bin/segment_subject_notal	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject_notal	2022-11-18 09:37:04.919688447 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_subject_notal
+diff --color -rupN freesurfer-orig/bin/segment_subject_notal2 freesurfer-patched/bin/segment_subject_notal2
+--- freesurfer-orig/bin/segment_subject_notal2	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject_notal2	2022-11-18 09:37:04.587686615 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_subject_notal2
+diff --color -rupN freesurfer-orig/bin/segment_subject_old_skull_strip freesurfer-patched/bin/segment_subject_old_skull_strip
+--- freesurfer-orig/bin/segment_subject_old_skull_strip	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject_old_skull_strip	2022-11-18 09:37:05.891693811 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_subject_old_skull_strip
+diff --color -rupN freesurfer-orig/bin/segment_subject_sc freesurfer-patched/bin/segment_subject_sc
+--- freesurfer-orig/bin/segment_subject_sc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject_sc	2022-11-18 09:37:04.391685534 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_subject_sc
+diff --color -rupN freesurfer-orig/bin/segment_subject_talmgh freesurfer-patched/bin/segment_subject_talmgh
+--- freesurfer-orig/bin/segment_subject_talmgh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segment_subject_talmgh	2022-11-18 09:37:03.751682004 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # segment_subject_talmgh
+diff --color -rupN freesurfer-orig/bin/segmentThalamicNuclei.sh freesurfer-patched/bin/segmentThalamicNuclei.sh
+--- freesurfer-orig/bin/segmentThalamicNuclei.sh	2022-08-04 06:40:23.000000000 +0200
++++ freesurfer-patched/bin/segmentThalamicNuclei.sh	2022-11-18 09:37:04.147684189 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
+ if ("$tcsh61706" != "") then
+diff --color -rupN freesurfer-orig/bin/segpons freesurfer-patched/bin/segpons
+--- freesurfer-orig/bin/segpons	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/segpons	2022-11-18 09:37:05.171689838 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # segpons
+ 
+ set VERSION = 'segpons 7.3.2';
+diff --color -rupN freesurfer-orig/bin/setlabelstat freesurfer-patched/bin/setlabelstat
+--- freesurfer-orig/bin/setlabelstat	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/setlabelstat	2022-11-18 09:37:04.735687433 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # setlabelstat
+diff --color -rupN freesurfer-orig/bin/sfa2fieldsign freesurfer-patched/bin/sfa2fieldsign
+--- freesurfer-orig/bin/sfa2fieldsign	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/sfa2fieldsign	2022-11-18 09:37:05.059689220 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # sfa2fieldsign
+ setenv FSLOUTPUTTYPE NIFTI
+ 
+diff --color -rupN freesurfer-orig/bin/skip_long_make_checks freesurfer-patched/bin/skip_long_make_checks
+--- freesurfer-orig/bin/skip_long_make_checks	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/skip_long_make_checks	2022-11-18 09:37:03.691681673 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ # if these are defined, then make check skips these long tests:
+ setenv SKIP_MRI_APARC2ASEG_TEST 1
+ setenv SKIP_MRIS_EXPAND_TEST 1
+diff --color -rupN freesurfer-orig/bin/sphere_subject freesurfer-patched/bin/sphere_subject
+--- freesurfer-orig/bin/sphere_subject	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/sphere_subject	2022-11-18 09:37:04.763687587 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # sphere_subject
+diff --color -rupN freesurfer-orig/bin/sphere_subject-lh freesurfer-patched/bin/sphere_subject-lh
+--- freesurfer-orig/bin/sphere_subject-lh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/sphere_subject-lh	2022-11-18 09:37:04.995688867 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # sphere_subject-lh
+diff --color -rupN freesurfer-orig/bin/sphere_subject-rh freesurfer-patched/bin/sphere_subject-rh
+--- freesurfer-orig/bin/sphere_subject-rh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/sphere_subject-rh	2022-11-18 09:37:03.711681784 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # sphere_subject-rh
+diff --color -rupN freesurfer-orig/bin/spmmat2register freesurfer-patched/bin/spmmat2register
+--- freesurfer-orig/bin/spmmat2register	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/spmmat2register	2022-11-18 09:37:05.295690522 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # spmmat2register
+diff --color -rupN freesurfer-orig/bin/spmregister freesurfer-patched/bin/spmregister
+--- freesurfer-orig/bin/spmregister	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/spmregister	2022-11-18 09:37:05.411691162 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # spmregister
+diff --color -rupN freesurfer-orig/bin/sratio freesurfer-patched/bin/sratio
+--- freesurfer-orig/bin/sratio	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/sratio	2022-11-18 09:37:04.927688491 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # sratio - signed ratio
+ #   +A/B if A>B
+ #   -B/A if B>A
+diff --color -rupN freesurfer-orig/bin/surfreg freesurfer-patched/bin/surfreg
+--- freesurfer-orig/bin/surfreg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/surfreg	2022-11-18 09:37:05.079689330 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # surfreg
+ 
+ set VERSION = 'surfreg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/talairach freesurfer-patched/bin/talairach
+--- freesurfer-orig/bin/talairach	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/talairach	2022-11-18 09:37:05.203690014 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # talairach
+diff --color -rupN freesurfer-orig/bin/talairach2 freesurfer-patched/bin/talairach2
+--- freesurfer-orig/bin/talairach2	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/talairach2	2022-11-18 09:37:06.207695555 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # talairach2
+diff --color -rupN freesurfer-orig/bin/talairach_avi freesurfer-patched/bin/talairach_avi
+--- freesurfer-orig/bin/talairach_avi	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/talairach_avi	2022-11-18 09:37:06.007694451 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # talairach_avi - align an image to the average_305 MNI (talairach) target
+diff --color -rupN freesurfer-orig/bin/talairach_mgh freesurfer-patched/bin/talairach_mgh
+--- freesurfer-orig/bin/talairach_mgh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/talairach_mgh	2022-11-18 09:37:06.503697188 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -ef
++#!/usr/bin/env/tcsh -ef
+ 
+ #
+ # talairach_mgh
+diff --color -rupN freesurfer-orig/bin/talsegprob freesurfer-patched/bin/talsegprob
+--- freesurfer-orig/bin/talsegprob	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/talsegprob	2022-11-18 09:37:05.447691361 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # talsegprob
+diff --color -rupN freesurfer-orig/bin/test_recon-all.csh freesurfer-patched/bin/test_recon-all.csh
+--- freesurfer-orig/bin/test_recon-all.csh	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/test_recon-all.csh	2022-11-18 09:37:05.571692045 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # Name:    test_recon-all.csh
+diff --color -rupN freesurfer-orig/bin/tkmeditfv freesurfer-patched/bin/tkmeditfv
+--- freesurfer-orig/bin/tkmeditfv	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/tkmeditfv	2022-11-18 09:37:04.711687299 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # tkmeditfv
+ 
+ set VERSION = 'tkmeditfv 7.3.2';
+diff --color -rupN freesurfer-orig/bin/tkregisterfv freesurfer-patched/bin/tkregisterfv
+--- freesurfer-orig/bin/tkregisterfv	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/tkregisterfv	2022-11-18 09:37:04.279684917 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # tkregisterfv
+ 
+ set VERSION = 'tkregisterfv 7.3.2';
+diff --color -rupN freesurfer-orig/bin/tksurferfv freesurfer-patched/bin/tksurferfv
+--- freesurfer-orig/bin/tksurferfv	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/tksurferfv	2022-11-18 09:37:05.063689241 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # tkmeditfv
+ 
+ set VERSION = 'tksurferfv 7.3.2';
+diff --color -rupN freesurfer-orig/bin/trac-all freesurfer-patched/bin/trac-all
+--- freesurfer-orig/bin/trac-all	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/trac-all	2022-11-18 09:37:06.507697211 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # trac-all
+diff --color -rupN freesurfer-orig/bin/trac-paths freesurfer-patched/bin/trac-paths
+--- freesurfer-orig/bin/trac-paths	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/trac-paths	2022-11-18 09:37:03.971683217 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # trac-paths
+diff --color -rupN freesurfer-orig/bin/trac-preproc freesurfer-patched/bin/trac-preproc
+--- freesurfer-orig/bin/trac-preproc	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/trac-preproc	2022-11-18 09:37:05.111689507 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # trac-preproc
+diff --color -rupN freesurfer-orig/bin/train-gcs-atlas freesurfer-patched/bin/train-gcs-atlas
+--- freesurfer-orig/bin/train-gcs-atlas	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/train-gcs-atlas	2022-11-18 09:37:04.783687697 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # train-gcs-atlas 
+ 
+ if(-e $FREESURFER_HOME/sources.csh) then
+diff --color -rupN freesurfer-orig/bin/unpackimadir freesurfer-patched/bin/unpackimadir
+--- freesurfer-orig/bin/unpackimadir	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/unpackimadir	2022-11-18 09:37:03.823682401 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # unpackimadir
+diff --color -rupN freesurfer-orig/bin/unpackmincdir freesurfer-patched/bin/unpackmincdir
+--- freesurfer-orig/bin/unpackmincdir	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/unpackmincdir	2022-11-18 09:37:04.603686704 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # Name: unpackmincdir
+ # Purpose: unpacks the functionals and anatomicals and copies others
+diff --color -rupN freesurfer-orig/bin/vertexvol freesurfer-patched/bin/vertexvol
+--- freesurfer-orig/bin/vertexvol	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vertexvol	2022-11-18 09:37:06.019694517 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ # Copyright © 2021 The General Hospital Corporation (Boston, MA) "MGH"
+ #
+diff --color -rupN freesurfer-orig/bin/vno_match_check freesurfer-patched/bin/vno_match_check
+--- freesurfer-orig/bin/vno_match_check	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vno_match_check	2022-11-18 09:37:05.167689816 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #set echo=1
+ 
+diff --color -rupN freesurfer-orig/bin/vol2segavg freesurfer-patched/bin/vol2segavg
+--- freesurfer-orig/bin/vol2segavg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vol2segavg	2022-11-18 09:37:06.179695400 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # vol2segavg
+ 
+ set VERSION = 'vol2segavg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/vol2subfield freesurfer-patched/bin/vol2subfield
+--- freesurfer-orig/bin/vol2subfield	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vol2subfield	2022-11-18 09:37:04.291684982 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # vol2subfield - 
+ 
+ if(-e $FREESURFER_HOME/sources.csh) then
+diff --color -rupN freesurfer-orig/bin/vol2symsurf freesurfer-patched/bin/vol2symsurf
+--- freesurfer-orig/bin/vol2symsurf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vol2symsurf	2022-11-18 09:37:03.703681739 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # vol2symsurf
+ 
+ set VERSION = 'vol2symsurf 7.3.2';
+diff --color -rupN freesurfer-orig/bin/vsm-smooth freesurfer-patched/bin/vsm-smooth
+--- freesurfer-orig/bin/vsm-smooth	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/vsm-smooth	2022-11-18 09:37:03.911682886 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # vsm-smooth
+ 
+ set VERSION = 'vsm-smooth 7.3.2';
+diff --color -rupN freesurfer-orig/bin/wfilemask freesurfer-patched/bin/wfilemask
+--- freesurfer-orig/bin/wfilemask	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/wfilemask	2022-11-18 09:37:03.979683261 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # wfilemask
+diff --color -rupN freesurfer-orig/bin/wm-anat-snr freesurfer-patched/bin/wm-anat-snr
+--- freesurfer-orig/bin/wm-anat-snr	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/wm-anat-snr	2022-11-18 09:37:04.519686241 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ set VERSION = 'wm-anat-snr 7.3.2';
+ set inputargs = ($argv);
+diff --color -rupN freesurfer-orig/bin/wmedits2surf freesurfer-patched/bin/wmedits2surf
+--- freesurfer-orig/bin/wmedits2surf	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/wmedits2surf	2022-11-18 09:37:04.763687587 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # wmedits2surf
+ 
+ set VERSION = 'wmedits2surf 7.3.2';
+diff --color -rupN freesurfer-orig/bin/wmsaseg freesurfer-patched/bin/wmsaseg
+--- freesurfer-orig/bin/wmsaseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/wmsaseg	2022-11-18 09:37:05.779693193 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # wmsaseg
+ 
+ set VERSION = 'wmsaseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/xcerebralseg freesurfer-patched/bin/xcerebralseg
+--- freesurfer-orig/bin/xcerebralseg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/xcerebralseg	2022-11-18 09:37:05.755693060 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # xcerebralseg
+ 
+ set VERSION = 'xcerebralseg 7.3.2';
+diff --color -rupN freesurfer-orig/bin/xcorr freesurfer-patched/bin/xcorr
+--- freesurfer-orig/bin/xcorr	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/xcorr	2022-11-18 09:37:04.651686969 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # xcorr
+ 
+ set VERSION = 'xcorr 7.3.2';
+diff --color -rupN freesurfer-orig/bin/xfmrot freesurfer-patched/bin/xfmrot
+--- freesurfer-orig/bin/xfmrot	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/xfmrot	2022-11-18 09:37:05.499691648 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ if ($#argv < 2 || $#argv > 3) then
+   echo "xfmrot <transform file> <input vector file> [<output vector file>]"
+diff --color -rupN freesurfer-orig/bin/xhemi-tal freesurfer-patched/bin/xhemi-tal
+--- freesurfer-orig/bin/xhemi-tal	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/xhemi-tal	2022-11-18 09:37:06.087694892 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # xhemi-tal
+diff --color -rupN freesurfer-orig/bin/xsanatreg freesurfer-patched/bin/xsanatreg
+--- freesurfer-orig/bin/xsanatreg	2022-08-04 06:51:40.000000000 +0200
++++ freesurfer-patched/bin/xsanatreg	2022-11-18 09:37:04.819687895 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # xsanatreg 
+diff --color -rupN freesurfer-orig/fsfast/bin/acorfunc-sess freesurfer-patched/fsfast/bin/acorfunc-sess
+--- freesurfer-orig/fsfast/bin/acorfunc-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/acorfunc-sess	2022-11-18 09:37:37.743870251 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # acorfunc-sess
+diff --color -rupN freesurfer-orig/fsfast/bin/autoreg-fsl freesurfer-patched/fsfast/bin/autoreg-fsl
+--- freesurfer-orig/fsfast/bin/autoreg-fsl	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/autoreg-fsl	2022-11-18 09:37:37.835870762 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # autoreg-fsl
+diff --color -rupN freesurfer-orig/fsfast/bin/check-sliceres-sess freesurfer-patched/fsfast/bin/check-sliceres-sess
+--- freesurfer-orig/fsfast/bin/check-sliceres-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/check-sliceres-sess	2022-11-18 09:37:37.767870384 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # check-sliceres-sess
+diff --color -rupN freesurfer-orig/fsfast/bin/fcseedcor freesurfer-patched/fsfast/bin/fcseedcor
+--- freesurfer-orig/fsfast/bin/fcseedcor	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/fcseedcor	2022-11-18 09:37:37.803870584 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fcseedcor
+ 
+ set VERSION = 'fcseedcor 7.3.2';
+diff --color -rupN freesurfer-orig/fsfast/bin/fsfast-gui-bug freesurfer-patched/fsfast/bin/fsfast-gui-bug
+--- freesurfer-orig/fsfast/bin/fsfast-gui-bug	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/fsfast-gui-bug	2022-11-18 09:37:37.767870384 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # recon-all
+ 
+ set VERSION = 'fsfast-gui-bug 7.3.2';
+diff --color -rupN freesurfer-orig/fsfast/bin/fsfeatffx freesurfer-patched/fsfast/bin/fsfeatffx
+--- freesurfer-orig/fsfast/bin/fsfeatffx	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/fsfeatffx	2022-11-18 09:37:37.787870495 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # fsfeatffx
+ #
+ 
+diff --color -rupN freesurfer-orig/fsfast/bin/functwf-sess freesurfer-patched/fsfast/bin/functwf-sess
+--- freesurfer-orig/fsfast/bin/functwf-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/functwf-sess	2022-11-18 09:37:37.835870762 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # functwf-sess
+diff --color -rupN freesurfer-orig/fsfast/bin/isxavg-re freesurfer-patched/fsfast/bin/isxavg-re
+--- freesurfer-orig/fsfast/bin/isxavg-re	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/isxavg-re	2022-11-18 09:37:37.851870851 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # isxavg-re
+diff --color -rupN freesurfer-orig/fsfast/bin/lrst-blk-sess freesurfer-patched/fsfast/bin/lrst-blk-sess
+--- freesurfer-orig/fsfast/bin/lrst-blk-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/lrst-blk-sess	2022-11-18 09:37:37.727870161 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # lrst-blk-sess
+diff --color -rupN freesurfer-orig/fsfast/bin/mcdat2mcextreg freesurfer-patched/fsfast/bin/mcdat2mcextreg
+--- freesurfer-orig/fsfast/bin/mcdat2mcextreg	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/mcdat2mcextreg	2022-11-18 09:37:37.779870451 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # mcdat2extreg
+ 
+ set VERSION = 'mcdat2mcextreg 7.3.2';
+diff --color -rupN freesurfer-orig/fsfast/bin/mkbrainmask freesurfer-patched/fsfast/bin/mkbrainmask
+--- freesurfer-orig/fsfast/bin/mkbrainmask	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/mkbrainmask	2022-11-18 09:37:37.783870473 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # mkbrainmask
+ 
+ set VERSION = 'mkbrainmask 7.3.2';
+diff --color -rupN freesurfer-orig/fsfast/bin/preproc-sess freesurfer-patched/fsfast/bin/preproc-sess
+--- freesurfer-orig/fsfast/bin/preproc-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/preproc-sess	2022-11-18 09:37:37.727870161 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # preproc-sess - runs preprocessing (mc, spatsmooth, mkbrainmask, inorm)
+diff --color -rupN freesurfer-orig/fsfast/bin/roixrunsum-sess freesurfer-patched/fsfast/bin/roixrunsum-sess
+--- freesurfer-orig/fsfast/bin/roixrunsum-sess	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/roixrunsum-sess	2022-11-18 09:37:37.791870517 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # roixrunsum-sess - cross-run summary of an ROI
+diff --color -rupN freesurfer-orig/fsfast/bin/vlrmerge freesurfer-patched/fsfast/bin/vlrmerge
+--- freesurfer-orig/fsfast/bin/vlrmerge	2022-08-04 06:51:42.000000000 +0200
++++ freesurfer-patched/fsfast/bin/vlrmerge	2022-11-18 09:37:37.775870429 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/tcsh -f
++#!/usr/bin/env tcsh
+ # vlrmerge
+ 
+ set VERSION = 'vlrmerge 7.3.2';
+diff --color -rupN freesurfer-orig/subjects/bert/scripts/recon-all.local-copy freesurfer-patched/subjects/bert/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/bert/scripts/recon-all.local-copy	2022-06-17 12:00:06.000000000 +0200
++++ freesurfer-patched/subjects/bert/scripts/recon-all.local-copy	2022-11-18 09:37:58.939988364 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/subjects/cvs_avg35/scripts/recon-all.local-copy freesurfer-patched/subjects/cvs_avg35/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/cvs_avg35/scripts/recon-all.local-copy	2012-03-13 17:54:03.000000000 +0100
++++ freesurfer-patched/subjects/cvs_avg35/scripts/recon-all.local-copy	2022-11-18 09:38:03.936016283 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/subjects/cvs_avg35_inMNI152/scripts/recon-all.local-copy freesurfer-patched/subjects/cvs_avg35_inMNI152/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/cvs_avg35_inMNI152/scripts/recon-all.local-copy	2012-09-10 22:29:20.000000000 +0200
++++ freesurfer-patched/subjects/cvs_avg35_inMNI152/scripts/recon-all.local-copy	2022-11-18 09:38:06.220029057 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/subjects/fsaverage/scripts/recon-all.local-copy freesurfer-patched/subjects/fsaverage/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/fsaverage/scripts/recon-all.local-copy	2010-12-30 23:40:05.000000000 +0100
++++ freesurfer-patched/subjects/fsaverage/scripts/recon-all.local-copy	2022-11-18 09:38:00.355996275 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/subjects/fsaverage/xhemi/scripts/recon-all.local-copy freesurfer-patched/subjects/fsaverage/xhemi/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/fsaverage/xhemi/scripts/recon-all.local-copy	2015-11-13 17:35:32.000000000 +0100
++++ freesurfer-patched/subjects/fsaverage/xhemi/scripts/recon-all.local-copy	2022-11-18 09:38:01.036000074 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
+diff --color -rupN freesurfer-orig/subjects/fsaverage_sym/scripts/recon-all.local-copy freesurfer-patched/subjects/fsaverage_sym/scripts/recon-all.local-copy
+--- freesurfer-orig/subjects/fsaverage_sym/scripts/recon-all.local-copy	2012-01-12 19:10:41.000000000 +0100
++++ freesurfer-patched/subjects/fsaverage_sym/scripts/recon-all.local-copy	2022-11-18 09:38:02.448007965 +0100
+@@ -1,4 +1,4 @@
+-#! /bin/tcsh -f
++#!/usr/bin/env tcsh
+ 
+ #
+ # recon-all
diff --git a/Golden_Repo/f/FreeSurfer/license_text.txt b/Golden_Repo/f/FreeSurfer/license_text.txt
new file mode 100644
index 0000000000000000000000000000000000000000..131a14abcc29e1185ea442083a1bda717215fd9e
--- /dev/null
+++ b/Golden_Repo/f/FreeSurfer/license_text.txt
@@ -0,0 +1,6 @@
+"""r.deepu@fz-juelich.de
+51392
+ *CsaBFnUlfG0.
+ FSk7cKa1irCLs"""
+
+
diff --git a/Golden_Repo/f/flatbuffers/flatbuffers-2.0.7-GCCcore-11.3.0.eb b/Golden_Repo/f/flatbuffers/flatbuffers-2.0.7-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..019f393bdd0b9b074c656d42dffadf26e4e0c0e2
--- /dev/null
+++ b/Golden_Repo/f/flatbuffers/flatbuffers-2.0.7-GCCcore-11.3.0.eb
@@ -0,0 +1,60 @@
+##
+# Author:    Robert Mijakovic <robert.mijakovic@lxp.lu>
+##
+easyblock = 'CMakeNinja'
+
+name = 'flatbuffers'
+version = '2.0.7'
+
+homepage = 'https://github.com/google/flatbuffers/'
+description = """FlatBuffers: Memory Efficient Serialization Library
+
+Includes the Flatbuffers compiler, C/C++ bindings and Python runtime library.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/google/flatbuffers/archive/v%(version)s/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['4c7986174dc3941220bf14feaacaad409c3e1526d9ad7f490366fede9a6f43fa']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Ninja', '1.10.2'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+]
+
+# Install into the same dir as the Python extension which is /lib
+configopts = '-DFLATBUFFERS_ENABLE_PCH=ON -DCMAKE_INSTALL_LIBDIR=lib'
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'download_dep_fail': True,
+    'use_pip': True,
+    'sanity_pip_check': True,
+}
+
+exts_list = [
+    ('flatbuffers', version, {
+        'sources': {
+            'download_filename': SOURCE_TAR_GZ,
+            'filename': '%(name)s-python-%(version)s.tar.gz',
+        },
+        'checksums': ['0ae7d69c5b82bf41962ca5fde9cc43033bc9501311d975fd5a25e8a7d29c1245'],
+    }),
+]
+
+sanity_check_paths = {
+    'files': ['include/flatbuffers/flatbuffers.h', 'bin/flatc', 'lib/libflatbuffers.a'],
+    'dirs': ['lib/cmake', 'lib/python%(pyshortver)s/site-packages'],
+}
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/g/GlobalArrays/GlobalArrays-5.8.2-intel-para-2022a.eb b/Golden_Repo/g/GlobalArrays/GlobalArrays-5.8.2-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..df5acdafb2eb8968af22dfcc3ae043729d02b687
--- /dev/null
+++ b/Golden_Repo/g/GlobalArrays/GlobalArrays-5.8.2-intel-para-2022a.eb
@@ -0,0 +1,60 @@
+easyblock = 'ConfigureMake'
+
+name = 'GlobalArrays'
+version = '5.8.2'
+
+homepage = 'https://hpc.pnl.gov/globalarrays'
+description = """
+              Global Arrays is a portable Non-Uniform Memory Access (NUMA) shared-memory programming environment 
+              for distributed and shared memory computers. It augments the message-passing model by providing a 
+              shared-memory like access to distributed dense arrays. This is also known as the 
+              Partitioned Global Address Space (PGAS) model.  ComEx is a successor to ARMCI and provides an 
+              ARMCI-compatible interface. New parallel runtime development takes place within ComEx 
+              including the MPI-only runtimes. DRA (Disk Resident Arrays) is a parallel I/O library that 
+              maintains dense two-dimensional arrays on disk. SF (Shared Files) is a parallel I/O library that 
+              allows noncollective I/O to a parallel file. EAF (Exclusive Access Files) is parallel I/O library 
+              that supports I/O to private files. TCGMSG is a simple, efficient, but obsolete message-passing library.
+              TCGMSG-MPI is a TCGMSG interface implementation on top of MPI and ARMCI.
+              MA is a dynamic memory allocator/manager for Fortran and C programs.
+              GA++ is a C++ binding for global arrays.
+             """
+
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'optarch': True, 'pic': True, 'usempi': True, 'opt': False}
+
+source_urls = ['https://github.com/GlobalArrays/ga/releases/download/v%(version)s']
+sources = ['ga.%(version)s.tgz']
+
+checksums = ['679570cb037f3f0ad14282c31ee795a9684a294c14ec9cf13ebcdc130c4474a5']
+
+# download contains configure already preconfigopts = './autogen.sh && mkdir build && pushd build'
+preconfigopts = ' mkdir build && pushd build && '
+configure_cmd = '../configure '
+configure_cmd += ' --enable-i8 --enable-shared --with-openib --with-mpi '
+configure_cmd += ' --with-blas8="-lmkl_intel_ilp64 -lmkl_sequential -lmkl_core" '
+configure_cmd += ' --with-lapack8="-lmkl_intel_ilp64 -lmkl_sequential -lmkl_core" '
+configure_cmd += ' --with-scalapack8="-lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64"'
+configure_cmd += ' LIBS="-libumad -libverbs -lpthread"'
+configure_cmd += ' MPIF77=mpif90 MPIF90=mpif90  MPICC=mpicc MPICXX=mpicxx'
+
+local_test = '%%(installdir)s/%s' % 'test'
+
+prebuildopts = 'pushd build &&'
+
+preinstallopts = 'pushd build && mkdir %s &&' % local_test
+preinstallopts += 'pushd global/testing && cp *.x %s/ && ' % local_test
+preinstallopts += 'popd && '
+
+
+pretestopts = 'pushd build && '
+runtest = 'checkprogs'
+
+maxparallel = 1
+
+sanity_check_paths = {
+    'files': ['bin/ga-config', 'lib/libarmci.so', 'lib/libga.so'],
+    'dirs': ['lib', 'include', 'bin']
+}
+
+moduleclass = 'chem'
diff --git a/Golden_Repo/h/Hypre/Hypre-2.27.0-intel-para-2022a-cpu.eb b/Golden_Repo/h/Hypre/Hypre-2.27.0-intel-para-2022a-cpu.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f9df5a49a66224477f0e5bcc8f500f104fa73fa4
--- /dev/null
+++ b/Golden_Repo/h/Hypre/Hypre-2.27.0-intel-para-2022a-cpu.eb
@@ -0,0 +1,30 @@
+name = "Hypre"
+version = "2.27.0"
+versionsuffix = "-cpu"
+
+homepage = "https://computation.llnl.gov/casc/linear_solvers/sls_hypre.html"
+
+description = """Hypre is a library for solving large, sparse linear 
+systems of equations on massively parallel computers.
+The problems of interest arise in the simulation codes being developed 
+at LLNL and elsewhere to study physical phenomena in the defense, 
+environmental, energy, and biological sciences.
+"""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+
+toolchainopts = {'pic': True, 'usempi': True, 'openmp': True}
+
+source_urls = ["https://github.com/hypre-space/hypre/archive/"]
+sources = ['v%(version)s.tar.gz']
+checksums = ['507a3d036bb1ac21a55685ae417d769dd02009bde7e09785d0ae7446b4ae1f98']
+
+start_dir = 'src'
+disable_cuda = True
+configopts = '--with-openmp '
+modextravars = {
+    'HYPRE_ROOT': '%(installdir)s',
+    'HYPRE_LIB': '%(installdir)s/lib',
+    'HYPRE_INCLUDE': '%(installdir)s/include/'
+}
+moduleclass = 'numlib'
diff --git a/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb b/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c615f7c6fd948d08b2d05eb1179a020164d5645c
--- /dev/null
+++ b/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb
@@ -0,0 +1,35 @@
+easyblock = 'PythonPackage'
+
+name = 'h5py'
+version = '3.7.0'
+
+homepage = 'https://www.h5py.org/'
+description = """HDF5 for Python (h5py) is a general-purpose Python interface to the Hierarchical Data Format library,
+ version 5. HDF5 is a versatile, mature scientific software library designed for the fast, flexible storage of enormous
+ amounts of data."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+sources = [SOURCE_TAR_GZ]
+checksums = ['3fcf37884383c5da64846ab510190720027dca0768def34dd8dcb659dbe5cbf3']
+
+builddependencies = [('pkgconfig', '1.5.5', '-python')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('HDF5', '1.12.2'),
+    ('mpi4py', '3.1.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+# h5py's setup.py will disable setup_requires if H5PY_SETUP_REQUIRES is set to 0
+# without this environment variable, pip will fetch the minimum numpy version h5py supports during install,
+# even though SciPy-bundle provides a newer version that satisfies h5py's install_requires dependency.
+preinstallopts = 'HDF5_MPI=ON HDF5_DIR="$EBROOTHDF5" H5PY_SETUP_REQUIRES=0 '
+
+moduleclass = 'data'
diff --git a/Golden_Repo/h/h5py/h5py-3.7.0-ipsmpi-2022a.eb b/Golden_Repo/h/h5py/h5py-3.7.0-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4118d6bc6bd10e07ff96df4592c90dbe80a30611
--- /dev/null
+++ b/Golden_Repo/h/h5py/h5py-3.7.0-ipsmpi-2022a.eb
@@ -0,0 +1,35 @@
+easyblock = 'PythonPackage'
+
+name = 'h5py'
+version = '3.7.0'
+
+homepage = 'https://www.h5py.org/'
+description = """HDF5 for Python (h5py) is a general-purpose Python interface to the Hierarchical Data Format library,
+ version 5. HDF5 is a versatile, mature scientific software library designed for the fast, flexible storage of enormous
+ amounts of data."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+sources = [SOURCE_TAR_GZ]
+checksums = ['3fcf37884383c5da64846ab510190720027dca0768def34dd8dcb659dbe5cbf3']
+
+builddependencies = [('pkgconfig', '1.5.5', '-python')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('HDF5', '1.12.2'),
+    ('mpi4py', '3.1.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+# h5py's setup.py will disable setup_requires if H5PY_SETUP_REQUIRES is set to 0
+# without this environment variable, pip will fetch the minimum numpy version h5py supports during install,
+# even though SciPy-bundle provides a newer version that satisfies h5py's install_requires dependency.
+preinstallopts = 'HDF5_MPI=ON HDF5_DIR="$EBROOTHDF5" H5PY_SETUP_REQUIRES=0 '
+
+moduleclass = 'data'
diff --git a/Golden_Repo/i/IPython/IPython-8.14.0-GCCcore-11.3.0.eb b/Golden_Repo/i/IPython/IPython-8.14.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e64c9a24e19def8c2ab3eb81e143913fe9b12c54
--- /dev/null
+++ b/Golden_Repo/i/IPython/IPython-8.14.0-GCCcore-11.3.0.eb
@@ -0,0 +1,198 @@
+easyblock = 'PythonBundle'
+
+name = 'IPython'
+version = '8.14.0'
+
+homepage = 'https://ipython.org/index.html'
+description = """IPython provides a rich architecture for interactive computing with:
+ Powerful interactive shells (terminal and Qt-based).
+ A browser-based notebook with support for code, text, mathematical expressions, inline plots and other rich media.
+ Support for interactive data visualization and use of GUI toolkits.
+ Flexible, embeddable interpreters to load into your own projects.
+ Easy to use, high performance tools for parallel computing."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('ZeroMQ', '4.3.4'),
+    ('lxml', '4.9.1'),
+    ('BeautifulSoup', '4.10.0'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+use_pip = True
+
+exts_list = [
+    ('hatchling', '1.13.0', {
+        'checksums': ['f8d275a2cc720735286b7c2e2bc35da05761e6d3695c2fa416550395f10c53c7'],
+    }),
+    ('hatch_nodejs_version', '0.3.1', {
+        'checksums': ['0e55fd713d92c5c1ccfee778efecaa780fd8bcd276d4ca7aff9f6791f6f76d9c'],
+    }),
+    ('ipython_genutils', '0.2.0', {
+        'checksums': ['eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8'],
+    }),
+    ('ipython', version, {
+        'modulename': 'IPython',
+        'checksums': ['1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1'],
+    }),
+    ('pickleshare', '0.7.5', {
+        'checksums': ['87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca'],
+    }),
+    ('prompt_toolkit', '3.0.38', {
+        'checksums': ['23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b'],
+    }),
+    ('traitlets', '5.9.0', {
+        'checksums': ['f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9'],
+    }),
+    ('parso', '0.8.3', {
+        'checksums': ['8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0'],
+    }),
+    ('jedi', '0.18.2', {
+        'checksums': ['bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612'],
+    }),
+    ('testpath', '0.6.0', {
+        'checksums': ['2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f'],
+    }),
+    ('Send2Trash', '1.8.2', {
+        'checksums': ['c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312'],
+    }),
+    ('bleach', '5.0.1', {
+        'checksums': ['0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c'],
+    }),
+    ('pandocfilters', '1.5.0', {
+        'checksums': ['0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38'],
+    }),
+    ('pyzmq', '25.0.1', {
+        'modulename': 'zmq',
+        'checksums': ['44a24f7ce44e70d20e2a4c9ba5af70b4611df7a4b920eed2c8e0bdd5a5af225f'],
+    }),
+    ('entrypoints', '0.4', {
+        'checksums': ['b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4'],
+    }),
+    ('jupyter_core', '5.3.0', {
+        'checksums': ['6db75be0c83edbf1b7c9f91ec266a9a24ef945da630f3120e1a0046dc13713fc'],
+    }),
+    ('fastjsonschema', '2.17.1', {
+        'checksums': ['f4eeb8a77cef54861dbf7424ac8ce71306f12cbb086c45131bcba2c6a4f726e3'],
+    }),
+    ('nbformat', '5.9.0', {
+        'checksums': ['e98ebb6120c3efbafdee2a40af2a140cadee90bb06dd69a2a63d9551fcc7f976'],
+    }),
+    ('mistune', '2.0.5', {
+        'checksums': ['0246113cb2492db875c6be56974a7c893333bf26cd92891c85f63151cee09d34'],
+    }),
+    ('defusedxml', '0.7.1', {
+        'checksums': ['1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69'],
+    }),
+    ('async_generator', '1.10', {
+        'checksums': ['6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144'],
+    }),
+    ('nest_asyncio', '1.5.6', {
+        'checksums': ['d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290'],
+    }),
+    ('nbclient', '0.7.4', {
+        'checksums': ['d447f0e5a4cfe79d462459aec1b3dc5c2e9152597262be8ee27f7d4c02566a0d'],
+    }),
+    ('tinycss2', '1.2.1', {
+        'checksums': ['8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627'],
+    }),
+    ('nbconvert', '7.4.0', {
+        'checksums': ['51b6c77b507b177b73f6729dba15676e42c4e92bcb00edc8cc982ee72e7d89d7'],
+    }),
+    ('tornado', '6.2', {
+        'patches': ['tornado-timeouts.patch'],
+        'checksums': [
+            {'tornado-6.2.tar.gz': '9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13'},
+            {'tornado-timeouts.patch': 'fe0db60604ccdcb5fc111023d1d7bffa0e315465fbe15f2ff512068c649e56f8'},
+        ],
+    }),
+    ('terminado', '0.17.1', {
+        'checksums': ['6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333'],
+    }),
+    ('jupyter_client', '8.2.0', {
+        'checksums': ['9fe233834edd0e6c0aa5f05ca2ab4bdea1842bfd2d8a932878212fc5301ddaf0'],
+    }),
+    ('backcall', '0.2.0', {
+        'checksums': ['5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e'],
+    }),
+    ('executing', '1.2.0', {
+        'checksums': ['19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107'],
+    }),
+    ('asttokens', '2.2.1', {
+        'checksums': ['4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3'],
+    }),
+    ('pure_eval', '0.2.2', {
+        'checksums': ['2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3'],
+    }),
+    ('stack_data', '0.6.2', {
+        'checksums': ['32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815'],
+    }),
+    ('comm', '0.1.2', {
+        'checksums': ['3e2f5826578e683999b93716285b3b1f344f157bf75fa9ce0a797564e742f062'],
+    }),
+    ('ipykernel', '6.23.1', {
+        'checksums': ['1aba0ae8453e15e9bc6b24e497ef6840114afcdb832ae597f32137fa19d42a6f'],
+    }),
+    ('prometheus_client', '0.17.0', {
+        'checksums': ['9c3b26f1535945e85b8934fb374678d263137b78ef85f305b1156c7c881cd11b'],
+    }),
+    ('deprecation', '2.1.0', {
+        'checksums': ['72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff'],
+    }),
+    ('jupyter_packaging', '0.12.3', {
+        'checksums': ['9d9b2b63b97ffd67a8bc5391c32a421bc415b264a32c99e4d8d8dd31daae9cf4'],
+    }),
+    ('jupyterlab_pygments', '0.2.2', {
+        'checksums': ['7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d'],
+    }),
+    ('jupyterlab_widgets', '1.1.4', {
+        'checksums': ['ea6e7612725e94d0966d64c6344910686f4bf8610533cd40daeba6980659b14d'],
+    }),
+    ('ipywidgets', '7.7.3', {  # >7.7.3 fails for ipyvue (issue 72)
+        'checksums': ['b41ca84d2742e39f2a730a13ea0dd619fca62e56cfac88c8f08989fb00a54fa8'],
+    }),
+    ('argon2-cffi-bindings', '21.2.0', {
+        'modulename': '_argon2_cffi_bindings',
+        'checksums': ['bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3'],
+    }),
+    ('argon2-cffi', '21.3.0', {
+        'modulename': 'argon2',
+        'checksums': ['d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b'],
+    }),
+    ('notebook', '6.4.12', {  # !!! > req. nbclassic
+        'checksums': ['6268c9ec9048cff7a45405c990c29ac9ca40b0bc3ec29263d218c5e01f2b4e86'],
+    }),
+    ('widgetsnbextension', '3.6.4', {
+        'checksums': ['ad1356c575d5add908afe886255deafb3f9b1589146a99279d1dcba5a05d16a5'],
+    }),
+    ('matplotlib-inline', '0.1.6', {
+        'checksums': ['f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304'],
+    }),
+    ('debugpy', '1.6.7', {
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['53f7a456bc50706a0eaabecf2d3ce44c4d5010e46dfc65b6b81a518b42866267'],
+    }),
+]
+
+modextrapaths = {'JUPYTER_PATH': 'share/jupyter'}
+
+sanity_check_paths = {
+    'files': ['bin/ipython'],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages/IPython',
+        'share/jupyter'
+    ],
+}
+
+sanity_check_commands = [
+    "ipython -h",
+    "jupyter notebook --help",
+]
+
+sanity_pip_check = True
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/i/IPython/tornado-timeouts.patch b/Golden_Repo/i/IPython/tornado-timeouts.patch
new file mode 100644
index 0000000000000000000000000000000000000000..027206802657e142b1b16451d953075403107936
--- /dev/null
+++ b/Golden_Repo/i/IPython/tornado-timeouts.patch
@@ -0,0 +1,15 @@
+diff -Naur tornado.orig/tornado-6.1/tornado/httpclient.py tornado/tornado-6.1/tornado/httpclient.py
+--- tornado.orig/tornado-6.1/tornado/httpclient.py	2020-10-30 21:17:45.000000000 +0100
++++ tornado/tornado-6.1/tornado/httpclient.py	2022-05-01 22:01:50.923741948 +0200
+@@ -345,8 +345,8 @@
+     # Merged with the values on the request object by AsyncHTTPClient
+     # implementations.
+     _DEFAULTS = dict(
+-        connect_timeout=20.0,
+-        request_timeout=20.0,
++        connect_timeout=60.0,
++        request_timeout=1200.0,
+         follow_redirects=True,
+         max_redirects=5,
+         decompress_response=True,
+
diff --git a/Golden_Repo/i/IRkernel/IRkernel-1.3.2-gcccoremkl-11.3.0-2022.1.0-R-4.2.1.eb b/Golden_Repo/i/IRkernel/IRkernel-1.3.2-gcccoremkl-11.3.0-2022.1.0-R-4.2.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aafe2b5488a32770ee486b7210e62eef928e3caa
--- /dev/null
+++ b/Golden_Repo/i/IRkernel/IRkernel-1.3.2-gcccoremkl-11.3.0-2022.1.0-R-4.2.1.eb
@@ -0,0 +1,66 @@
+easyblock = 'Bundle'
+
+name = 'IRkernel'
+version = '1.3.2'
+versionsuffix = '-R-%(rver)s'
+
+homepage = 'https://github.com/baktoft/yaps'
+description = "IRKernel"
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+dependencies = [
+    ('R', '4.2.1'),
+    ('ZeroMQ', '4.3.4'),  # for pbdZMQ needed by IRkernel
+]
+
+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'
+}
+
+exts_defaultclass = 'RPackage'
+exts_filter = ("R -q --no-save", "library(%(ext_name)s)")
+
+exts_list = [
+    ('repr', '1.1.6', {
+        'checksums': ['3d2e6c9b363c1ec4811688deff7fb22093cadc9e0a333930382093d93c16673f'],
+    }),
+    ('IRdisplay', '1.1', {
+        'checksums': ['83eb030ff91f546cb647899f8aa3f5dc9fe163a89a981696447ea49cc98e8d2b'],
+    }),
+    ('pbdZMQ', '0.3-9', {
+        'checksums': ['d033238d0a9810581f6b40c7c75263cfc495a585653bbff98e957c37954e0fb6'],
+    }),
+    ('xmlparsedata', '1.0.5', {
+        'checksums': ['766034ab5e9728609bd240c9954d23ca0cdb881a98a31b9d3e1c8767c7b7cbb0'],
+    }),
+    ('cyclocomp', '1.1.0', {
+        'checksums': ['cdbf65f87bccac53c1527a2f1269ec7840820c18503a7bb854910b30b71e7e3e'],
+    }),
+    ('collections', '0.3.7', {
+        'checksums': ['ff846ff96233a233ce7c73c2f03e87d14d69c83d97d608f01d9846a1cba57f00'],
+    }),
+    ('lintr', '3.0.2', {
+        'checksums': ['9f6a70affea78d2092f40a7ba8961615d48b0c4ae8044ec72a1422a4342d34c9'],
+    }),
+    ('languageserver', '0.3.15', {
+        'checksums': ['94eebc1afbaee5bb0d3a684673007299d3a5520fa398f22838b603ca78f8c100'],
+    }),
+    (name, version, {
+        'checksums': ['e1c6d8bddc23e5039dd9c537feb371f937d60028fb753b90345698c58ae424a6'],
+    }),
+]
+
+modextrapaths = {'R_LIBS': ''}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [name],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb b/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7b3c4dc99f3a94e29e4733fec9ff81134f360776
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb
@@ -0,0 +1,80 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.2.1'
+
+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."""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True, 'cstd': 'c++11'}
+
+github_account = 'InsightSoftwareConsortium'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Bison', '3.8.2'),
+    ('Eigen', '3.4.0'),
+    ('pkgconf', '1.8.0'),
+    ('Perl', '5.34.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('expat', '2.4.8'),
+    ('HDF5', '1.12.2'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.3.0'),
+    ('VTK', '9.2.5'),
+    ('zlib', '1.2.12'),
+    ('SWIG', '4.0.2',),
+    ('FFTW', '3.3.10'),
+    ('double-conversion', '3.2.0'),
+    ('tbb', '2021.5.0'),
+]
+
+local_sys_deps = [
+    'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB',
+    'FFTW', 'DOUBLECONVERSION', 'SWIG',
+]
+local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps]
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF '
+configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON '
+configopts += '-DITK_WRAP_PYTHON:BOOL=ON '
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += ' '.join(local_sys_cmake)
+
+configopts += "-DModule_SimpleITKFilters=ON "
+configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF '  # needed by SimpleITK
+configopts += "-DITK_FORBID_DOWNLOADS=OFF "  # needed by SimpleITK
+
+prebuildopts = "LC_ALL=C "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF',
+                   'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters',
+                   'ITKFFT']
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver'] +
+             ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names],
+    '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.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb b/Golden_Repo/i/ITK/ITK-5.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ebf6dcee36dbb91972048e43703ec97926bbc031
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb
@@ -0,0 +1,81 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.2.1'
+versionsuffix = '-nompi'
+
+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."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True, 'cstd': 'c++11'}
+
+github_account = 'InsightSoftwareConsortium'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Bison', '3.8.2'),
+    ('Eigen', '3.4.0'),
+    ('pkgconf', '1.8.0'),
+    ('Perl', '5.34.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('expat', '2.4.8'),
+    ('HDF5', '1.12.2', '-serial'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.3.0'),
+    ('VTK', '9.2.5', '-nompi'),
+    ('zlib', '1.2.12'),
+    ('SWIG', '4.0.2',),
+    ('FFTW', '3.3.10'),
+    ('double-conversion', '3.2.0'),
+    ('tbb', '2021.5.0'),
+]
+
+local_sys_deps = [
+    'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB',
+    'FFTW', 'DOUBLECONVERSION', 'SWIG',
+]
+local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps]
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF '
+configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON '
+configopts += '-DITK_WRAP_PYTHON:BOOL=ON '
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += ' '.join(local_sys_cmake)
+
+configopts += "-DModule_SimpleITKFilters=ON "
+configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF '  # needed by SimpleITK
+configopts += "-DITK_FORBID_DOWNLOADS=OFF "  # needed by SimpleITK
+
+prebuildopts = "LC_ALL=C "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF',
+                   'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters',
+                   'ITKFFT']
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver'] +
+             ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names],
+    '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.2.1-gpsmkl-2022a.eb b/Golden_Repo/i/ITK/ITK-5.2.1-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..496993732ce4d387e1aa607390b5f13bc0c60dc4
--- /dev/null
+++ b/Golden_Repo/i/ITK/ITK-5.2.1-gpsmkl-2022a.eb
@@ -0,0 +1,80 @@
+easyblock = 'CMakeMake'
+
+name = 'ITK'
+version = '5.2.1'
+
+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."""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'cstd': 'c++11'}
+
+github_account = 'InsightSoftwareConsortium'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Bison', '3.8.2'),
+    ('Eigen', '3.4.0'),
+    ('pkgconf', '1.8.0'),
+    ('Perl', '5.34.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('expat', '2.4.8'),
+    ('HDF5', '1.12.2'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.3.0'),
+    ('VTK', '9.2.5'),
+    ('zlib', '1.2.12'),
+    ('SWIG', '4.0.2',),
+    ('FFTW', '3.3.10'),
+    ('double-conversion', '3.2.0'),
+    ('tbb', '2021.5.0'),
+]
+
+local_sys_deps = [
+    'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB',
+    'FFTW', 'DOUBLECONVERSION', 'SWIG',
+]
+local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps]
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "
+configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF '
+configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON '
+configopts += '-DITK_WRAP_PYTHON:BOOL=ON '
+configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig "
+configopts += ' '.join(local_sys_cmake)
+
+configopts += "-DModule_SimpleITKFilters=ON "
+configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF '  # needed by SimpleITK
+configopts += "-DITK_FORBID_DOWNLOADS=OFF "  # needed by SimpleITK
+
+prebuildopts = "LC_ALL=C "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF',
+                   'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters',
+                   'ITKFFT']
+
+sanity_check_paths = {
+    'files': ['bin/itkTestDriver'] +
+             ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names],
+    '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/imkl-FFTW/imkl-FFTW-2022.1.0-npsmpic-2022a.eb b/Golden_Repo/i/imkl-FFTW/imkl-FFTW-2022.1.0-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..093a7e942d7631852b332ee702c70abb7a4423d5
--- /dev/null
+++ b/Golden_Repo/i/imkl-FFTW/imkl-FFTW-2022.1.0-npsmpic-2022a.eb
@@ -0,0 +1,11 @@
+name = 'imkl-FFTW'
+version = '2022.1.0'
+
+homepage = 'https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html'
+description = "FFTW interfaces using Intel oneAPI Math Kernel Library"
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+
+dependencies = [('imkl', version, '', SYSTEM)]
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/i/imkl-FFTW/imkl-FFTW-2022.1.0-nvompic-2022a.eb b/Golden_Repo/i/imkl-FFTW/imkl-FFTW-2022.1.0-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4bd00830845899876382072c84b91acfbef86e00
--- /dev/null
+++ b/Golden_Repo/i/imkl-FFTW/imkl-FFTW-2022.1.0-nvompic-2022a.eb
@@ -0,0 +1,11 @@
+name = 'imkl-FFTW'
+version = '2022.1.0'
+
+homepage = 'https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html'
+description = "FFTW interfaces using Intel oneAPI Math Kernel Library"
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+
+dependencies = [('imkl', version, '', SYSTEM)]
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/j/JUBE/JUBE-2.4.3.eb b/Golden_Repo/j/JUBE/JUBE-2.4.3.eb
new file mode 100644
index 0000000000000000000000000000000000000000..bee87a9f10dcde7f220561a3c9370a7c4d86ffca
--- /dev/null
+++ b/Golden_Repo/j/JUBE/JUBE-2.4.3.eb
@@ -0,0 +1,31 @@
+easyblock = "VersionIndependentPythonPackage"
+
+name = "JUBE"
+version = "2.4.3"
+
+homepage = "https://www.fz-juelich.de/jsc/jube"
+description = """The JUBE benchmarking environment provides a script based
+framework to easily create benchmark sets, run those sets on different
+computer systems and evaluate the results.
+"""
+
+toolchain = SYSTEM
+
+source_urls = ['https://apps.fz-juelich.de/jsc/jube/jube2/download.php?file=']
+sources = [SOURCE_TAR_GZ]
+checksums = ['5ff37495a0c8ef4ec501866217b758d8ea474e985b678af757f7906cc56c6d7e']
+
+options = {'modulename': 'jube2'}
+
+sanity_check_paths = {
+    'files': ['bin/jube'],
+    'dirs': [],
+}
+
+modextrapaths = {
+    'JUBE_INCLUDE_PATH': 'share/jube/platform/slurm'
+}
+
+modluafooter = 'execute {cmd=\'eval "$(jube complete)"\',modeA={"load"}}'
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb b/Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..41916d88ea22e3221d26d2abef47c458b3769946
--- /dev/null
+++ b/Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb
@@ -0,0 +1,248 @@
+name = 'Julia'
+version = '1.8.5'
+
+homepage = 'https://julialang.org/'
+description = """Julia was designed from the beginning for high performance.
+Julia programs compile to efficient native code for multiple platforms via LLVM
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'usempi': False, 'pic': True}
+
+source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/']
+sources = ['julia-%(version)s-full.tar.gz']
+checksums = ['35554080a4b4d3ce52ef220254306bd42ac0d88eff9eb85592a57d0663db5df2']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('git', '2.36.0', '-nodocs'),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('GMP', '6.2.1'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    #  ('OpenGL', '2022a'),  # build segfaults starting with version 1.8.1
+    ('OpenSSL', '1.1', '', SYSTEM),
+]
+
+skipsteps = ['configure']
+buildopts = " USE_SYSTEM_GMP=1 USE_INTEL_MKL=1 "
+installopts = "prefix=%(installdir)s "
+
+arch_name = 'gpu'
+
+exts_defaultclass = 'JuliaPackage'
+exts_list = [
+    # General Purpose
+    ('PackageCompiler.jl', '2.1.4', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaLang/PackageCompiler.jl/archive/'],
+        'checksums': ['2fd6f50003d995624374900e7e0220cd7cd8386a317e0070d2b4b9b9d61c5e88'],
+    }),
+    ('HTTP.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaWeb/HTTP.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('Parsers.jl', '2.5.1', {
+        'source_tmpl': 'v2.5.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Parsers.jl/archive/'],
+        'checksums': ['72494acac42c7dff16e1a6ac1305f13001f3743e0021d158d097399f0567d926'],
+    }),
+    ('VersionParsing.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaInterop/VersionParsing.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('JSON.jl', '0.21.3', {
+        'source_tmpl': 'v0.21.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaIO/JSON.jl/archive/'],
+        'checksums': ['bd02a015da24b03f79d55967b29f5ceaba2477b559242576d74f02623bb1b6b1'],
+    }),
+    ('WebIO.jl', '0.8.20', {
+        'source_tmpl': 'v0.8.20.tar.gz',
+        'source_urls': ['https://github.com/JuliaGizmos/WebIO.jl/archive/'],
+        'checksums': ['d8c45c0be367963539cf7bdf748d16b4f6065fa5113e353ad57872980fc56b39'],
+    }),
+    ('ProgressMeter.jl', '1.7.2', {
+        'source_tmpl': 'v1.7.2.tar.gz',
+        'source_urls': ['https://github.com/timholy/ProgressMeter.jl/archive/'],
+        'checksums': ['3591ea33d0ad7576bbb7d430ba94a988274af6434fbd7f3d0dc7fc2655dc888c'],
+    }),
+    ('Conda.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/Conda.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    ('PyCall.jl', '1.95.1', {
+        'source_tmpl': 'v1.95.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyCall.jl/archive/'],
+        'checksums': ['8746b3ecc54fd670e5983945bec205ff65cdb4b9e395a79f887cc28741b05e87'],
+    }),
+    ('LaTeXStrings.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/stevengj/LaTeXStrings.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('DocumentFormat.jl', '4.0.3', {
+        'source_tmpl': 'v4.0.3.tar.gz',
+        'source_urls': ['https://github.com/julia-vscode/DocumentFormat.jl/archive/'],
+        'checksums': ['4a7131590fa07d16d8b4998ef7570f797148e7ed622a0fa431a6ca3fe52156ab'],
+    }),
+    # Data Science
+    ('CSV.jl', '0.10.9', {
+        'source_tmpl': 'v0.10.9.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/CSV.jl/archive/'],
+        'checksums': ['e0958f0bf04e2b32bc4040e74ce9eed1e5be3947c03f381be1003ac197304d84'],
+    }),
+    ('DataFrames.jl', '1.4.4', {
+        'source_tmpl': 'v1.4.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/DataFrames.jl/archive/'],
+        'checksums': ['365877a405d1ba3af23ff5258424870cce434a13b02df34c7d8a78568ef2b87a'],
+    }),
+    ('Arrow.jl', '2.4.3', {
+        'source_tmpl': 'v2.4.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Arrow.jl/archive/'],
+        'checksums': ['d65a8c803f9ac664b3afc878f1eba2c7fe99d91601aebc3dc288784585be80a2'],
+    }),
+    ('OnlineStats.jl', '1.5.14', {
+        'source_tmpl': 'v1.5.14.tar.gz',
+        'source_urls': ['https://github.com/joshday/OnlineStats.jl/archive/'],
+        'checksums': ['b1c725a3de6cfde25271753b7cc341d2f565bc6aa74ae76394f845cb0339dc42'],
+    }),
+    ('Query.jl', '1.0.0', {
+        'source_tmpl': 'v1.0.0.tar.gz',
+        'source_urls': ['https://github.com/queryverse/Query.jl/archive/'],
+        'checksums': ['76c05e3ffc8f3c2ce2cd3f6824f40a107cdba6fc58c4ce42de2289132de988e0'],
+    }),
+    # Scientific Domains
+    ('GSL.jl', '1.0.1', {
+        'source_tmpl': 'v1.0.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/GSL.jl/archive/refs/tags/'],
+        'checksums': ['91a5acbb752610c5989b9acef126f2231f612debb7ba6d1d4625c68d2af5776e'],
+    }),
+    ('DifferentialEquations.jl', '7.6.0', {
+        'source_tmpl': 'v7.6.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/DifferentialEquations.jl/archive/'],
+        'checksums': ['32df0e2b2811567f5d58f5b88831e6a6c3c15b4d2f0bae6bde0a11a98b4e49d8'],
+    }),
+    ('Distributions.jl', '0.25.80', {
+        'source_tmpl': 'v0.25.80.tar.gz',
+        'source_urls': ['https://github.com/JuliaStats/Distributions.jl/archive/'],
+        'checksums': ['0f457839d969dd5f8a12ba96fb3a3a728387945d98504ba3e7131178ef8e9ef7'],
+    }),
+    ('Optim.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaNLSolvers/Optim.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('IterativeSolvers.jl', '0.9.2', {
+        'source_tmpl': 'v0.9.2.tar.gz',
+        'source_urls': ['https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/archive/'],
+        'checksums': ['95fbfa39aa68e989ae6bad2f51ce0fe5635ba3f3375d0ea4d9422e77ff924a9b'],
+    }),
+    ('AbstractFFTs.jl', '1.2.1', {
+        'source_tmpl': 'v1.2.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/AbstractFFTs.jl/archive/'],
+        'checksums': ['58abf90b037c618daeed89940c77ac129b5155b26429ac77643cc9c5db453363'],
+    }),
+    ('OrdinaryDiffEq.jl', '6.42.0', {
+        'source_tmpl': 'v6.42.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/OrdinaryDiffEq.jl/archive/'],
+        'checksums': ['22af73320fd7577e3e4557e10f2b7cb0f77c03556499699033c47c8f56cbe482'],
+    }),
+    ('SpecialFunctions.jl', '1.8.7', {
+        'source_tmpl': 'v1.8.7.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/SpecialFunctions.jl/archive/'],
+        'checksums': ['3f2ecec0506fe47cfa5e436ac510e2a82d39f74fceaeb422572cf06d90f2096a'],
+    }),
+    ('JuMP.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/jump-dev/JuMP.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    # Visualization
+    ('GR.jl', '0.71.5', {
+        'source_tmpl': 'v0.71.5.tar.gz',
+        'source_urls': ['https://github.com/jheinen/GR.jl/archive/'],
+        'checksums': ['d2b096241d8dfd3e16b1abcf2c0dd5664db025c1eeadf11145b9934284b112b7'],
+    }),
+    ('PlotlyJS.jl', '0.18.10', {
+        'source_tmpl': 'v0.18.10.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/PlotlyJS.jl/archive/'],
+        'checksums': ['b574113676080c14634118ce3a5ceda7562224039a2fd0ea3ad8bc5938700a49'],
+    }),
+    ('PyPlot.jl', '2.11.0', {
+        'source_tmpl': 'v2.11.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyPlot.jl/archive/'],
+        'checksums': ['10498f5b7bd958c5e0dae33aa2514048005e4f5b037d9a73a09cb4231259cc13'],
+    }),
+    ('Plots.jl', '1.38.4', {
+        'source_tmpl': 'v1.38.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/Plots.jl/archive/'],
+        'checksums': ['d37a748e531b9970d1b5e552e069f8778f22f2e0508368bbd74f76b20dc51b1e'],
+    }),
+    ('UnicodePlots.jl', '3.3.4', {
+        'source_tmpl': 'v3.3.4.tar.gz',
+        'source_urls': ['https://github.com/Evizero/UnicodePlots.jl/archive/'],
+        'checksums': ['7280b26b83dd03eaee21398de40cb83674c5e42037cad75f6e821cb0322ae9fd'],
+    }),
+    ('StatsPlots.jl', '0.15.4', {
+        'source_tmpl': 'v0.15.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/StatsPlots.jl/archive/'],
+        'checksums': ['451076c4d352ab88c8d0010320315a2f3d26ef0cc16007c7d0eb49eaa1105777'],
+    }),
+    # MPI
+    ('MPI.jl', '0.20.8', {
+        'mpi_path': '$EBROOTOPENMPI',
+        'mpiexec': 'srun',
+        'source_tmpl': 'v0.20.8.tar.gz',
+        'source_urls': ['https://github.com/JuliaParallel/MPI.jl/archive/'],
+        'checksums': ['f70a2710e4d1375be82f6838510980f6cb7d48caaad63ffecd2a296c39b80dba'],
+    }),
+    # CUDA
+    ('CUDA.jl', '4.0.0', {
+        'source_tmpl': 'v4.0.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaGPU/CUDA.jl/archive/'],
+        'checksums': ['64fa7fe158c8cd56841b7906a4f57c53dbaa225fe8688bf3087b7951854b591b'],
+    }),
+]
+
+modextrapaths = {
+    'LD_LIBRARY_PATH': 'lib/julia',
+}
+
+modextravars = {
+    'JULIA_MPICC': 'mpicc',
+    'JULIA_MPIEXEC': 'srun',
+    #  'JULIA_MPIEXEC_ARGS': '',
+    'JULIA_MPI_ABI': 'OpenMPI',
+    'JULIA_MPI_BINARY': 'system',
+    'JULIA_MPI_PATH': '$::env(EBROOTOPENMPI)',
+    'JULIA_CUDA_USE_BINARYBUILDER': 'false',
+    # FYI: automaticall added by EB_Julia
+    # 'EBJULIA_STD_DEPOT_PATH': '%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'EBJULIA_USER_DEPOT_PATH': '~/.julia/%(version)s/default-%(arch_name)',
+    # 'EBJULIA_ADMIN_DEPOT_PATH': '%(installdir)s/extensions',
+    # 'EBJULIA_STD_LOAD_PATH': '@stdlib',
+    # 'EBJULIA_USER_LOAD_PATH': '@:@#.#.#-default-%(arch_name)'
+    # 'EBJULIA_ADMIN_LOAD_PATH': '%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/',
+    # 'EBEXTSLISTJULIA': '<list of extensions installed>'
+    # 'EBJULIA_ENV_NAME': '%(version)s-default-%(arch_name)s'
+    # 'JULIA_INSTALL_FOLDER': '%(installdir)s',
+    # 'JULIA_DEPOT_PATH': 
+    #           '~/.julia/%(version)s/default-gpu:%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'JULIA_LOAD_PATH': '@:@#.#.#-default-gpu:@stdlib',
+    # 'JULIA_PROJECT': ''%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/Project.toml',
+}
+
+sanity_check_paths = {
+    'files': ['bin/julia', 'include/julia/julia.h', 'lib/libjulia.so'],
+    'dirs': ['bin', 'etc', 'include', 'lib', 'share']
+}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/j/Julia/Julia-1.8.5-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/j/Julia/Julia-1.8.5-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0bc41079a8aaf8f7bb84c1f2d09e65bf3cd2fa15
--- /dev/null
+++ b/Golden_Repo/j/Julia/Julia-1.8.5-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,234 @@
+name = 'Julia'
+version = '1.8.5'
+
+homepage = 'https://julialang.org/'
+description = """Julia was designed from the beginning for high performance.
+Julia programs compile to efficient native code for multiple platforms via LLVM
+"""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True, 'verbose': True}
+
+source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/']
+sources = ['julia-%(version)s-full.tar.gz']
+checksums = ['35554080a4b4d3ce52ef220254306bd42ac0d88eff9eb85592a57d0663db5df2']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('git', '2.36.0', '-nodocs'),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('GMP', '6.2.1'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('SciPy-bundle', '2022.05'),
+    ('matplotlib', '3.5.2'),
+    #  ('OpenGL', '2022a'),  # build segfaults starting with version 1.8.1
+    ('OpenSSL', '1.1', '', SYSTEM),
+]
+
+skipsteps = ['configure']
+buildopts = " USE_SYSTEM_GMP=1 USE_INTEL_MKL=1 "
+installopts = "prefix=%(installdir)s "
+
+arch_name = 'gpu'
+
+exts_defaultclass = 'JuliaPackage'
+exts_list = [
+    # General Purpose
+    ('PackageCompiler.jl', '2.1.4', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaLang/PackageCompiler.jl/archive/'],
+        'checksums': ['2fd6f50003d995624374900e7e0220cd7cd8386a317e0070d2b4b9b9d61c5e88'],
+    }),
+    ('HTTP.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaWeb/HTTP.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('Parsers.jl', '2.5.1', {
+        'source_tmpl': 'v2.5.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Parsers.jl/archive/'],
+        'checksums': ['72494acac42c7dff16e1a6ac1305f13001f3743e0021d158d097399f0567d926'],
+    }),
+    ('VersionParsing.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaInterop/VersionParsing.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('JSON.jl', '0.21.3', {
+        'source_tmpl': 'v0.21.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaIO/JSON.jl/archive/'],
+        'checksums': ['bd02a015da24b03f79d55967b29f5ceaba2477b559242576d74f02623bb1b6b1'],
+    }),
+    ('WebIO.jl', '0.8.20', {
+        'source_tmpl': 'v0.8.20.tar.gz',
+        'source_urls': ['https://github.com/JuliaGizmos/WebIO.jl/archive/'],
+        'checksums': ['d8c45c0be367963539cf7bdf748d16b4f6065fa5113e353ad57872980fc56b39'],
+    }),
+    ('ProgressMeter.jl', '1.7.2', {
+        'source_tmpl': 'v1.7.2.tar.gz',
+        'source_urls': ['https://github.com/timholy/ProgressMeter.jl/archive/'],
+        'checksums': ['3591ea33d0ad7576bbb7d430ba94a988274af6434fbd7f3d0dc7fc2655dc888c'],
+    }),
+    ('Conda.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/Conda.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    ('PyCall.jl', '1.95.1', {
+        'source_tmpl': 'v1.95.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyCall.jl/archive/'],
+        'checksums': ['8746b3ecc54fd670e5983945bec205ff65cdb4b9e395a79f887cc28741b05e87'],
+    }),
+    ('LaTeXStrings.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/stevengj/LaTeXStrings.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('DocumentFormat.jl', '4.0.3', {
+        'source_tmpl': 'v4.0.3.tar.gz',
+        'source_urls': ['https://github.com/julia-vscode/DocumentFormat.jl/archive/'],
+        'checksums': ['4a7131590fa07d16d8b4998ef7570f797148e7ed622a0fa431a6ca3fe52156ab'],
+    }),
+    # Data Science
+    ('CSV.jl', '0.10.9', {
+        'source_tmpl': 'v0.10.9.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/CSV.jl/archive/'],
+        'checksums': ['e0958f0bf04e2b32bc4040e74ce9eed1e5be3947c03f381be1003ac197304d84'],
+    }),
+    ('DataFrames.jl', '1.4.4', {
+        'source_tmpl': 'v1.4.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/DataFrames.jl/archive/'],
+        'checksums': ['365877a405d1ba3af23ff5258424870cce434a13b02df34c7d8a78568ef2b87a'],
+    }),
+    ('Arrow.jl', '2.4.3', {
+        'source_tmpl': 'v2.4.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Arrow.jl/archive/'],
+        'checksums': ['d65a8c803f9ac664b3afc878f1eba2c7fe99d91601aebc3dc288784585be80a2'],
+    }),
+    ('OnlineStats.jl', '1.5.14', {
+        'source_tmpl': 'v1.5.14.tar.gz',
+        'source_urls': ['https://github.com/joshday/OnlineStats.jl/archive/'],
+        'checksums': ['b1c725a3de6cfde25271753b7cc341d2f565bc6aa74ae76394f845cb0339dc42'],
+    }),
+    ('Query.jl', '1.0.0', {
+        'source_tmpl': 'v1.0.0.tar.gz',
+        'source_urls': ['https://github.com/queryverse/Query.jl/archive/'],
+        'checksums': ['76c05e3ffc8f3c2ce2cd3f6824f40a107cdba6fc58c4ce42de2289132de988e0'],
+    }),
+    # Scientific Domains
+    ('GSL.jl', '1.0.1', {
+        'source_tmpl': 'v1.0.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/GSL.jl/archive/refs/tags/'],
+        'checksums': ['91a5acbb752610c5989b9acef126f2231f612debb7ba6d1d4625c68d2af5776e'],
+    }),
+    ('DifferentialEquations.jl', '7.6.0', {
+        'source_tmpl': 'v7.6.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/DifferentialEquations.jl/archive/'],
+        'checksums': ['32df0e2b2811567f5d58f5b88831e6a6c3c15b4d2f0bae6bde0a11a98b4e49d8'],
+    }),
+    ('Distributions.jl', '0.25.80', {
+        'source_tmpl': 'v0.25.80.tar.gz',
+        'source_urls': ['https://github.com/JuliaStats/Distributions.jl/archive/'],
+        'checksums': ['0f457839d969dd5f8a12ba96fb3a3a728387945d98504ba3e7131178ef8e9ef7'],
+    }),
+    ('Optim.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaNLSolvers/Optim.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('IterativeSolvers.jl', '0.9.2', {
+        'source_tmpl': 'v0.9.2.tar.gz',
+        'source_urls': ['https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/archive/'],
+        'checksums': ['95fbfa39aa68e989ae6bad2f51ce0fe5635ba3f3375d0ea4d9422e77ff924a9b'],
+    }),
+    ('AbstractFFTs.jl', '1.2.1', {
+        'source_tmpl': 'v1.2.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/AbstractFFTs.jl/archive/'],
+        'checksums': ['58abf90b037c618daeed89940c77ac129b5155b26429ac77643cc9c5db453363'],
+    }),
+    ('OrdinaryDiffEq.jl', '6.42.0', {
+        'source_tmpl': 'v6.42.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/OrdinaryDiffEq.jl/archive/'],
+        'checksums': ['22af73320fd7577e3e4557e10f2b7cb0f77c03556499699033c47c8f56cbe482'],
+    }),
+    ('SpecialFunctions.jl', '1.8.7', {
+        'source_tmpl': 'v1.8.7.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/SpecialFunctions.jl/archive/'],
+        'checksums': ['3f2ecec0506fe47cfa5e436ac510e2a82d39f74fceaeb422572cf06d90f2096a'],
+    }),
+    ('JuMP.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/jump-dev/JuMP.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    # Visualization
+    ('GR.jl', '0.71.5', {
+        'source_tmpl': 'v0.71.5.tar.gz',
+        'source_urls': ['https://github.com/jheinen/GR.jl/archive/'],
+        'checksums': ['d2b096241d8dfd3e16b1abcf2c0dd5664db025c1eeadf11145b9934284b112b7'],
+    }),
+    ('PlotlyJS.jl', '0.18.10', {
+        'source_tmpl': 'v0.18.10.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/PlotlyJS.jl/archive/'],
+        'checksums': ['b574113676080c14634118ce3a5ceda7562224039a2fd0ea3ad8bc5938700a49'],
+    }),
+    ('PyPlot.jl', '2.11.0', {
+        'source_tmpl': 'v2.11.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyPlot.jl/archive/'],
+        'checksums': ['10498f5b7bd958c5e0dae33aa2514048005e4f5b037d9a73a09cb4231259cc13'],
+    }),
+    ('Plots.jl', '1.38.4', {
+        'source_tmpl': 'v1.38.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/Plots.jl/archive/'],
+        'checksums': ['d37a748e531b9970d1b5e552e069f8778f22f2e0508368bbd74f76b20dc51b1e'],
+    }),
+    ('UnicodePlots.jl', '3.3.4', {
+        'source_tmpl': 'v3.3.4.tar.gz',
+        'source_urls': ['https://github.com/Evizero/UnicodePlots.jl/archive/'],
+        'checksums': ['7280b26b83dd03eaee21398de40cb83674c5e42037cad75f6e821cb0322ae9fd'],
+    }),
+    ('StatsPlots.jl', '0.15.4', {
+        'source_tmpl': 'v0.15.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/StatsPlots.jl/archive/'],
+        'checksums': ['451076c4d352ab88c8d0010320315a2f3d26ef0cc16007c7d0eb49eaa1105777'],
+    }),
+    # CUDA
+    ('CUDA.jl', '4.0.0', {
+        'source_tmpl': 'v4.0.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaGPU/CUDA.jl/archive/'],
+        'checksums': ['64fa7fe158c8cd56841b7906a4f57c53dbaa225fe8688bf3087b7951854b591b'],
+    }),
+]
+
+modextrapaths = {
+    'LD_LIBRARY_PATH': 'lib/julia',
+}
+
+modextravars = {
+    'JULIA_CUDA_USE_BINARYBUILDER': 'false',
+    # FYI: automatically added by EB_Julia
+    # 'EBJULIA_STD_DEPOT_PATH': '%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'EBJULIA_USER_DEPOT_PATH': '~/.julia/%(version)s/default-%(arch_name)',
+    # 'EBJULIA_ADMIN_DEPOT_PATH': '%(installdir)s/extensions',
+    # 'EBJULIA_STD_LOAD_PATH': '@stdlib',
+    # 'EBJULIA_USER_LOAD_PATH': '@:@#.#.#-default-%(arch_name)'
+    # 'EBJULIA_ADMIN_LOAD_PATH': '%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/',
+    # 'EBEXTSLISTJULIA': '<list of extensions installed>'
+    # 'EBJULIA_ENV_NAME': '%(version)s-default-%(arch_name)s'
+    # 'JULIA_INSTALL_FOLDER': '%(installdir)s',
+    # 'JULIA_DEPOT_PATH':
+    #           '~/.julia/%(version)s/default-gpu:%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'JULIA_LOAD_PATH': '@:@#.#.#-default-gpu:@stdlib',
+    # 'JULIA_PROJECT': ''%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/Project.toml',
+}
+
+sanity_check_paths = {
+    'files': ['bin/julia', 'include/julia/julia.h', 'lib/libjulia.so'],
+    'dirs': ['bin', 'etc', 'include', 'lib', 'share']
+}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb b/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6f3a0f0b60af745c38f459f34e5fc46f8016d56d
--- /dev/null
+++ b/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb
@@ -0,0 +1,248 @@
+name = 'Julia'
+version = '1.8.5'
+
+homepage = 'https://julialang.org/'
+description = """Julia was designed from the beginning for high performance.
+Julia programs compile to efficient native code for multiple platforms via LLVM
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'usempi': False, 'pic': True}
+
+source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/']
+sources = ['julia-%(version)s-full.tar.gz']
+checksums = ['35554080a4b4d3ce52ef220254306bd42ac0d88eff9eb85592a57d0663db5df2']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('git', '2.36.0', '-nodocs'),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('GMP', '6.2.1'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    #  ('OpenGL', '2022a'),  # build segfaults starting with version 1.8.1
+    ('OpenSSL', '1.1', '', SYSTEM),
+]
+
+skipsteps = ['configure']
+buildopts = " USE_SYSTEM_GMP=1 USE_INTEL_MKL=1 "
+installopts = "prefix=%(installdir)s "
+
+arch_name = 'gpu'
+
+exts_defaultclass = 'JuliaPackage'
+exts_list = [
+    # General Purpose
+    ('PackageCompiler.jl', '2.1.4', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaLang/PackageCompiler.jl/archive/'],
+        'checksums': ['2fd6f50003d995624374900e7e0220cd7cd8386a317e0070d2b4b9b9d61c5e88'],
+    }),
+    ('HTTP.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaWeb/HTTP.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('Parsers.jl', '2.5.1', {
+        'source_tmpl': 'v2.5.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Parsers.jl/archive/'],
+        'checksums': ['72494acac42c7dff16e1a6ac1305f13001f3743e0021d158d097399f0567d926'],
+    }),
+    ('VersionParsing.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaInterop/VersionParsing.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('JSON.jl', '0.21.3', {
+        'source_tmpl': 'v0.21.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaIO/JSON.jl/archive/'],
+        'checksums': ['bd02a015da24b03f79d55967b29f5ceaba2477b559242576d74f02623bb1b6b1'],
+    }),
+    ('WebIO.jl', '0.8.20', {
+        'source_tmpl': 'v0.8.20.tar.gz',
+        'source_urls': ['https://github.com/JuliaGizmos/WebIO.jl/archive/'],
+        'checksums': ['d8c45c0be367963539cf7bdf748d16b4f6065fa5113e353ad57872980fc56b39'],
+    }),
+    ('ProgressMeter.jl', '1.7.2', {
+        'source_tmpl': 'v1.7.2.tar.gz',
+        'source_urls': ['https://github.com/timholy/ProgressMeter.jl/archive/'],
+        'checksums': ['3591ea33d0ad7576bbb7d430ba94a988274af6434fbd7f3d0dc7fc2655dc888c'],
+    }),
+    ('Conda.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/Conda.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    ('PyCall.jl', '1.95.1', {
+        'source_tmpl': 'v1.95.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyCall.jl/archive/'],
+        'checksums': ['8746b3ecc54fd670e5983945bec205ff65cdb4b9e395a79f887cc28741b05e87'],
+    }),
+    ('LaTeXStrings.jl', '1.3.0', {
+        'source_tmpl': 'v1.3.0.tar.gz',
+        'source_urls': ['https://github.com/stevengj/LaTeXStrings.jl/archive/'],
+        'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'],
+    }),
+    ('DocumentFormat.jl', '4.0.3', {
+        'source_tmpl': 'v4.0.3.tar.gz',
+        'source_urls': ['https://github.com/julia-vscode/DocumentFormat.jl/archive/'],
+        'checksums': ['4a7131590fa07d16d8b4998ef7570f797148e7ed622a0fa431a6ca3fe52156ab'],
+    }),
+    # Data Science
+    ('CSV.jl', '0.10.9', {
+        'source_tmpl': 'v0.10.9.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/CSV.jl/archive/'],
+        'checksums': ['e0958f0bf04e2b32bc4040e74ce9eed1e5be3947c03f381be1003ac197304d84'],
+    }),
+    ('DataFrames.jl', '1.4.4', {
+        'source_tmpl': 'v1.4.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/DataFrames.jl/archive/'],
+        'checksums': ['365877a405d1ba3af23ff5258424870cce434a13b02df34c7d8a78568ef2b87a'],
+    }),
+    ('Arrow.jl', '2.4.3', {
+        'source_tmpl': 'v2.4.3.tar.gz',
+        'source_urls': ['https://github.com/JuliaData/Arrow.jl/archive/'],
+        'checksums': ['d65a8c803f9ac664b3afc878f1eba2c7fe99d91601aebc3dc288784585be80a2'],
+    }),
+    ('OnlineStats.jl', '1.5.14', {
+        'source_tmpl': 'v1.5.14.tar.gz',
+        'source_urls': ['https://github.com/joshday/OnlineStats.jl/archive/'],
+        'checksums': ['b1c725a3de6cfde25271753b7cc341d2f565bc6aa74ae76394f845cb0339dc42'],
+    }),
+    ('Query.jl', '1.0.0', {
+        'source_tmpl': 'v1.0.0.tar.gz',
+        'source_urls': ['https://github.com/queryverse/Query.jl/archive/'],
+        'checksums': ['76c05e3ffc8f3c2ce2cd3f6824f40a107cdba6fc58c4ce42de2289132de988e0'],
+    }),
+    # Scientific Domains
+    ('GSL.jl', '1.0.1', {
+        'source_tmpl': 'v1.0.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/GSL.jl/archive/refs/tags/'],
+        'checksums': ['91a5acbb752610c5989b9acef126f2231f612debb7ba6d1d4625c68d2af5776e'],
+    }),
+    ('DifferentialEquations.jl', '7.6.0', {
+        'source_tmpl': 'v7.6.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/DifferentialEquations.jl/archive/'],
+        'checksums': ['32df0e2b2811567f5d58f5b88831e6a6c3c15b4d2f0bae6bde0a11a98b4e49d8'],
+    }),
+    ('Distributions.jl', '0.25.80', {
+        'source_tmpl': 'v0.25.80.tar.gz',
+        'source_urls': ['https://github.com/JuliaStats/Distributions.jl/archive/'],
+        'checksums': ['0f457839d969dd5f8a12ba96fb3a3a728387945d98504ba3e7131178ef8e9ef7'],
+    }),
+    ('Optim.jl', '1.7.4', {
+        'source_tmpl': 'v1.7.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaNLSolvers/Optim.jl/archive/'],
+        'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'],
+    }),
+    ('IterativeSolvers.jl', '0.9.2', {
+        'source_tmpl': 'v0.9.2.tar.gz',
+        'source_urls': ['https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/archive/'],
+        'checksums': ['95fbfa39aa68e989ae6bad2f51ce0fe5635ba3f3375d0ea4d9422e77ff924a9b'],
+    }),
+    ('AbstractFFTs.jl', '1.2.1', {
+        'source_tmpl': 'v1.2.1.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/AbstractFFTs.jl/archive/'],
+        'checksums': ['58abf90b037c618daeed89940c77ac129b5155b26429ac77643cc9c5db453363'],
+    }),
+    ('OrdinaryDiffEq.jl', '6.42.0', {
+        'source_tmpl': 'v6.42.0.tar.gz',
+        'source_urls': ['https://github.com/SciML/OrdinaryDiffEq.jl/archive/'],
+        'checksums': ['22af73320fd7577e3e4557e10f2b7cb0f77c03556499699033c47c8f56cbe482'],
+    }),
+    ('SpecialFunctions.jl', '1.8.7', {
+        'source_tmpl': 'v1.8.7.tar.gz',
+        'source_urls': ['https://github.com/JuliaMath/SpecialFunctions.jl/archive/'],
+        'checksums': ['3f2ecec0506fe47cfa5e436ac510e2a82d39f74fceaeb422572cf06d90f2096a'],
+    }),
+    ('JuMP.jl', '1.7.0', {
+        'source_tmpl': 'v1.7.0.tar.gz',
+        'source_urls': ['https://github.com/jump-dev/JuMP.jl/archive/'],
+        'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'],
+    }),
+    # Visualization
+    ('GR.jl', '0.71.5', {
+        'source_tmpl': 'v0.71.5.tar.gz',
+        'source_urls': ['https://github.com/jheinen/GR.jl/archive/'],
+        'checksums': ['d2b096241d8dfd3e16b1abcf2c0dd5664db025c1eeadf11145b9934284b112b7'],
+    }),
+    ('PlotlyJS.jl', '0.18.10', {
+        'source_tmpl': 'v0.18.10.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/PlotlyJS.jl/archive/'],
+        'checksums': ['b574113676080c14634118ce3a5ceda7562224039a2fd0ea3ad8bc5938700a49'],
+    }),
+    ('PyPlot.jl', '2.11.0', {
+        'source_tmpl': 'v2.11.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaPy/PyPlot.jl/archive/'],
+        'checksums': ['10498f5b7bd958c5e0dae33aa2514048005e4f5b037d9a73a09cb4231259cc13'],
+    }),
+    ('Plots.jl', '1.38.4', {
+        'source_tmpl': 'v1.38.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/Plots.jl/archive/'],
+        'checksums': ['d37a748e531b9970d1b5e552e069f8778f22f2e0508368bbd74f76b20dc51b1e'],
+    }),
+    ('UnicodePlots.jl', '3.3.4', {
+        'source_tmpl': 'v3.3.4.tar.gz',
+        'source_urls': ['https://github.com/Evizero/UnicodePlots.jl/archive/'],
+        'checksums': ['7280b26b83dd03eaee21398de40cb83674c5e42037cad75f6e821cb0322ae9fd'],
+    }),
+    ('StatsPlots.jl', '0.15.4', {
+        'source_tmpl': 'v0.15.4.tar.gz',
+        'source_urls': ['https://github.com/JuliaPlots/StatsPlots.jl/archive/'],
+        'checksums': ['451076c4d352ab88c8d0010320315a2f3d26ef0cc16007c7d0eb49eaa1105777'],
+    }),
+    # MPI
+    ('MPI.jl', '0.20.8', {
+        'mpi_path': '$EBROOTOPENMPI',
+        'mpiexec': 'srun',
+        'source_tmpl': 'v0.20.8.tar.gz',
+        'source_urls': ['https://github.com/JuliaParallel/MPI.jl/archive/'],
+        'checksums': ['f70a2710e4d1375be82f6838510980f6cb7d48caaad63ffecd2a296c39b80dba'],
+    }),
+    # CUDA
+    ('CUDA.jl', '4.0.0', {
+        'source_tmpl': 'v4.0.0.tar.gz',
+        'source_urls': ['https://github.com/JuliaGPU/CUDA.jl/archive/'],
+        'checksums': ['64fa7fe158c8cd56841b7906a4f57c53dbaa225fe8688bf3087b7951854b591b'],
+    }),
+]
+
+modextrapaths = {
+    'LD_LIBRARY_PATH': 'lib/julia',
+}
+
+modextravars = {
+    'JULIA_MPICC': 'mpicc',
+    'JULIA_MPIEXEC': 'srun',
+    #  'JULIA_MPIEXEC_ARGS': '',
+    'JULIA_MPI_ABI': 'OpenMPI',
+    'JULIA_MPI_BINARY': 'system',
+    'JULIA_MPI_PATH': '$::env(EBROOTOPENMPI)',
+    'JULIA_CUDA_USE_BINARYBUILDER': 'false',
+    # FYI: automaticall added by EB_Julia
+    # 'EBJULIA_STD_DEPOT_PATH': '%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'EBJULIA_USER_DEPOT_PATH': '~/.julia/%(version)s/default-%(arch_name)',
+    # 'EBJULIA_ADMIN_DEPOT_PATH': '%(installdir)s/extensions',
+    # 'EBJULIA_STD_LOAD_PATH': '@stdlib',
+    # 'EBJULIA_USER_LOAD_PATH': '@:@#.#.#-default-%(arch_name)'
+    # 'EBJULIA_ADMIN_LOAD_PATH': '%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/',
+    # 'EBEXTSLISTJULIA': '<list of extensions installed>'
+    # 'EBJULIA_ENV_NAME': '%(version)s-default-%(arch_name)s'
+    # 'JULIA_INSTALL_FOLDER': '%(installdir)s',
+    # 'JULIA_DEPOT_PATH': 
+    #           '~/.julia/%(version)s/default-gpu:%(installdir)s/local/share/julia:%(installdir)s/share/julia',
+    # 'JULIA_LOAD_PATH': '@:@#.#.#-default-gpu:@stdlib',
+    # 'JULIA_PROJECT': ''%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/Project.toml',
+}
+
+sanity_check_paths = {
+    'files': ['bin/julia', 'include/julia/julia.h', 'lib/libjulia.so'],
+    'dirs': ['bin', 'etc', 'include', 'lib', 'share']
+}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/l/libcdi/libcdi-2.1.1-foss-2022a.eb b/Golden_Repo/l/libcdi/libcdi-2.1.1-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1af6ec0c6dddf47e1c6b418489f24e772ef23c8b
--- /dev/null
+++ b/Golden_Repo/l/libcdi/libcdi-2.1.1-foss-2022a.eb
@@ -0,0 +1,43 @@
+easyblock = 'ConfigureMake'
+
+name = 'libcdi'
+version = '2.1.1'
+
+homepage = 'https://gitlab.dkrz.de/mpim-sw/libcdi'
+description = """
+CDI is a C and Fortran Interface to access Climate model Data.
+Supported data formats are GRIB, netCDF, SERVICE, EXTRA and IEG.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+source_urls = ['https://gitlab.dkrz.de/mpim-sw/libcdi/-/archive/cdi-%(version)s/']
+sources = ['libcdi-cdi-%(version)s.tar.gz']
+checksums = [
+    'ba8ce82bfce159f072db027233a566f330709d750c7e4e2c275dd33e24d0f17c',  # v2.1.1.tar.gz
+]
+start_dir = 'libcdi-cdi-%(version)s'
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Autoconf', '2.71'),
+]
+
+dependencies = [
+    ('ecCodes', '2.27.0'),
+    ('netCDF', '4.9.0'),
+]
+
+preconfigopts = "./autogen.sh && "
+
+configopts = "--with-eccodes=yes --with-grib_api=yes --disable-cgribex "
+configopts += "--with-netcdf=$EBROOTNETCDF "
+
+modextravars = {'CDI_DIR': '%(installdir)s/lib/cmake/cdi/'}
+
+sanity_check_paths = {
+    'files': ['include/cdi.h', 'lib/libcdi.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0-serial.eb
similarity index 97%
rename from Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0.eb
rename to Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0-serial.eb
index fa05da76513ee5d7133e281752848c4861654e6d..d3f6baab3767bf4813c1cea1560f82eb8e6dd855 100644
--- a/Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/l/libcdi/libcdi-2.1.1-gcccoremkl-11.3.0-2022.1.0-serial.eb
@@ -2,6 +2,7 @@ easyblock = 'ConfigureMake'
 
 name = 'libcdi'
 version = '2.1.1'
+versionsuffix = '-serial'
 
 homepage = 'https://gitlab.dkrz.de/mpim-sw/libcdi'
 description = """
diff --git a/Golden_Repo/l/libcdi/libcdi-2.1.1-gpsmkl-2022a.eb b/Golden_Repo/l/libcdi/libcdi-2.1.1-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8d2d8233c519cf38a465095fcb40466d893d4381
--- /dev/null
+++ b/Golden_Repo/l/libcdi/libcdi-2.1.1-gpsmkl-2022a.eb
@@ -0,0 +1,43 @@
+easyblock = 'ConfigureMake'
+
+name = 'libcdi'
+version = '2.1.1'
+
+homepage = 'https://gitlab.dkrz.de/mpim-sw/libcdi'
+description = """
+CDI is a C and Fortran Interface to access Climate model Data.
+Supported data formats are GRIB, netCDF, SERVICE, EXTRA and IEG.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+
+source_urls = ['https://gitlab.dkrz.de/mpim-sw/libcdi/-/archive/cdi-%(version)s/']
+sources = ['libcdi-cdi-%(version)s.tar.gz']
+checksums = [
+    'ba8ce82bfce159f072db027233a566f330709d750c7e4e2c275dd33e24d0f17c',  # v2.1.1.tar.gz
+]
+start_dir = 'libcdi-cdi-%(version)s'
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Autoconf', '2.71'),
+]
+
+dependencies = [
+    ('ecCodes', '2.27.0'),
+    ('netCDF', '4.9.0'),
+]
+
+preconfigopts = "./autogen.sh && "
+
+configopts = "--with-eccodes=yes --with-grib_api=yes --disable-cgribex "
+configopts += "--with-netcdf=$EBROOTNETCDF "
+
+modextravars = {'CDI_DIR': '%(installdir)s/lib/cmake/cdi/'}
+
+sanity_check_paths = {
+    'files': ['include/cdi.h', 'lib/libcdi.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/l/libspng/libspng-0.7.1-GCCcore-11.3.0.eb b/Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb
similarity index 100%
rename from Golden_Repo/l/libspng/libspng-0.7.1-GCCcore-11.3.0.eb
rename to Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb
diff --git a/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb b/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..49ea124c5874d1cb0a512e5e673145b872abe274
--- /dev/null
+++ b/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb
@@ -0,0 +1,26 @@
+name = 'METIS'
+version = '5.1.0'
+
+homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/metis/overview'
+description = """METIS is a set of serial programs for partitioning graphs, partitioning finite element meshes, 
+and producing fill reducing orderings for sparse matrices. 
+The algorithms implemented in METIS are based on the multilevel recursive-bisection, 
+multilevel k-way, and multi-constraint partitioning schemes."""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+toolchainopts = {'optarch': True, 'pic': True}
+
+source_urls = ['https://src.fedoraproject.org/repo/pkgs/metis/metis-5.1.0.tar.gz/5465e67079419a69e0116de24fce58fe']
+sources = [SOURCELOWER_TAR_GZ]
+patches = ['METIS-5.1.0-use-doubles.patch']
+checksums = [
+    {'metis-5.1.0.tar.gz': '76faebe03f6c963127dbb73c13eab58c9a3faeae48779f049066a21c087c5db2'},
+    {'METIS-5.1.0-use-doubles.patch': '8e79f5970c0fb36394dd6338dd3160eb346dc00e38c37ac90303e1ee5eb4c53f'},
+]
+
+# we use 32bit for indices and 64bit for content
+builddependencies = [('CMake', '3.23.1')]
+
+configopts = ['', 'shared=1']
+
+moduleclass = 'math'
diff --git a/Golden_Repo/m/MPB/MPB-1.11.1-intel-para-2022a.eb b/Golden_Repo/m/MPB/MPB-1.11.1-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d45564785319c0f2d6ab6907c83a5bd90e955bda
--- /dev/null
+++ b/Golden_Repo/m/MPB/MPB-1.11.1-intel-para-2022a.eb
@@ -0,0 +1,53 @@
+easyblock = 'ConfigureMake'
+
+name = 'MPB'
+version = '1.11.1'
+
+homepage = 'https://mpb.readthedocs.io/en/latest/'
+description = """MPB is a free and open-source software package for computing
+ the band structures, or dispersion relations, and electromagnetic
+ modes of periodic dielectric structures, on both serial
+ and parallel computers. MPB is an acronym for MIT Photonic Bands."""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+
+toolchainopts = {'optarch': True, 'usempi': True, 'pic': True}
+
+source_urls = ['https://github.com/NanoComp/mpb/releases/download/v%(version)s/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['dc55b081c56079727dac92d309f8e4ea84ca6eea9122ec24b7955f8c258608e1']
+
+builddependencies = [
+    ('Autotools', '20220317'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('HDF5', '1.12.2'),
+    ('libctl', '4.5.1'),
+    ('FFTW', '3.3.10'),
+    ('GSL', '2.7'),
+    ('Guile', '3.0.8'),
+    ('libreadline', '8.1.2'),
+]
+
+local_common_configopts = "--with-pic --with-blas=mkl_em64t --with-lapack=mkl_em64t "
+local_common_configopts += "--with-libctl=$EBROOTLIBCTL/share/libctl --enable-shared "
+
+configopts = [
+    local_common_configopts + " ",
+    local_common_configopts + "--with-hermitian-eps --with-inv-symmetry ",
+    local_common_configopts +
+    "--with-hermitian-eps --with-mpi CC=mpicc CXX=mpic++ F77=mpif90 MPIRUN=srun ",
+    local_common_configopts +
+    "--with-hermitian-eps --with-mpi --with-inv-symmetry CC=mpicc CXX=mpic++ F77=mpif90 MPIRUN=srun ",
+]
+
+sanity_check_paths = {
+    'files': ['bin/mpb%s' % x for x in ['', '-data', 'i', 'i-data', 'i-mpi', 'i-split', '-mpi', '-split']] +
+             ['lib/libmpb.a', 'lib/libmpbi_mpi.a', 'lib/libmpbi.a', 'lib/libmpb_mpi.a', 'lib/libmpb.%s' % SHLIB_EXT,
+              'lib/libmpbi_mpi.%s' % SHLIB_EXT, 'lib/libmpbi.%s' % SHLIB_EXT, 'lib/libmpb_mpi.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'phys'
diff --git a/Golden_Repo/m/MUMPS/MUMPS-5.5.1-gpsmkl-2022a-metis.eb b/Golden_Repo/m/MUMPS/MUMPS-5.5.1-gpsmkl-2022a-metis.eb
new file mode 100644
index 0000000000000000000000000000000000000000..88b28ff1037ba0670dc9bef55fe9a63ff35924c2
--- /dev/null
+++ b/Golden_Repo/m/MUMPS/MUMPS-5.5.1-gpsmkl-2022a-metis.eb
@@ -0,0 +1,35 @@
+name = 'MUMPS'
+version = '5.5.1'
+versionsuffix = '-metis'
+
+homepage = 'https://graal.ens-lyon.fr/MUMPS/'
+description = "A parallel sparse direct solver"
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://graal.ens-lyon.fr/MUMPS/']
+sources = ['%(name)s_%(version)s.tar.gz']
+patches = [
+    '%(name)s-%(version)s_shared-pord.patch',    # builds the shared libs of PORD
+    '%(name)s-%(version)s_shared-mumps.patch',   # builds shared libs of MUMPS
+]
+checksums = [
+    {'MUMPS_5.5.1.tar.gz': '1abff294fa47ee4cfd50dfd5c595942b72ebfcedce08142a75a99ab35014fa15'},
+    {'MUMPS-5.5.1_shared-pord.patch': '2f32d928fe21ab918920eaf26e3112e3185f85bb22a4ab494191849af30c4b6e'},
+    {'MUMPS-5.5.1_shared-mumps.patch': '746b12844120a352902a4420b36dc5babd68d4beaa98263826ef4a7893e14504'},
+]
+
+dependencies = [
+    ('SCOTCH', '7.0.1'),
+    ('METIS', '5.1.0'),
+]
+
+parallel = 1
+
+# fix 'Type mismatch between actual argument' errors with GCC 10.x
+prebuildopts = 'export FFLAGS="$FFLAGS -fallow-argument-mismatch" && '
+
+buildopts = 'all SONAME_VERSION="%(version)s"'
+
+moduleclass = 'math'
diff --git a/Golden_Repo/m/Meep/Meep-1.25.0-intel-para-2022a.eb b/Golden_Repo/m/Meep/Meep-1.25.0-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..70451521b30f86b02804a21fd87108409277459e
--- /dev/null
+++ b/Golden_Repo/m/Meep/Meep-1.25.0-intel-para-2022a.eb
@@ -0,0 +1,53 @@
+easyblock = 'ConfigureMake'
+
+name = 'Meep'
+version = '1.25.0'
+
+homepage = 'https://meep.readthedocs.io/en/latest/'
+description = """Meep (or MEEP) is a free finite-difference time-domain (FDTD) simulation software package
+ developed at MIT to model electromagnetic systems."""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'usempi': True, 'opt': True, 'unroll': True, 'pic': True}
+
+source_urls = ['https://github.com/NanoComp/meep/releases/download/v%(version)s/']
+sources = [SOURCELOWER_TAR_GZ]
+
+checksums = [
+    'e400711d0fac38a028dbc8c12cf06a5cdec896d6f2f0907a08f2eab0f13a1459'  # meep-1.25.0.tar.gz
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+    ('SWIG', '4.0.2')
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('HDF5', '1.12.2'),
+    ('FFTW', '3.3.10'),
+    ('libctl', '4.5.1'),
+    ('GSL', '2.7'),
+    ('Guile', '3.0.8'),
+    ('libreadline', '8.1.2'),
+    ('MPB', '1.11.1'),
+    ('Harminv', '1.4.1'),
+    ('libGDSII', '0.21'),
+    ('mpi4py', '3.1.4'),
+    ('h5py', '3.7.0'),
+]
+
+configopts = "--with-mpi CC=mpicc CXX=mpic++ F77=mpif90 MPIRUN=srun PYTHON=python3 "
+configopts += "--with-pic --with-blas=mkl_em64t --with-lapack=mkl_em64t "
+configopts += "--with-libctl=$EBROOTLIBCTL/share/libctl --enable-shared "
+
+sanity_check_paths = {
+    'files': ['bin/meep', 'include/meep.hpp', 'lib/libmeep.a', 'lib/libpympb.a',
+              'lib/libmeep.%s' % SHLIB_EXT, 'lib/libpympb.%s' % SHLIB_EXT],
+    'dirs': ['include/meep', 'lib/python%(pyshortver)s/site-packages/meep', 'share/meep'],
+}
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+moduleclass = 'phys'
diff --git a/Golden_Repo/m/MongoDB/MongoDB-6.0.4.eb b/Golden_Repo/m/MongoDB/MongoDB-6.0.4.eb
new file mode 100644
index 0000000000000000000000000000000000000000..00b6d31207a5b8f52ffff7d2c751746dffc099c3
--- /dev/null
+++ b/Golden_Repo/m/MongoDB/MongoDB-6.0.4.eb
@@ -0,0 +1,25 @@
+easyblock = 'PackedBinary'
+
+name = 'MongoDB'
+version = '6.0.4'
+
+homepage = 'https://www.mongodb.com/try/download/community'
+
+description = """
+The community version of our distributed document
+database provides powerful ways to query and analyze your data.
+"""
+
+toolchain = SYSTEM
+
+source_urls = ['https://fastdl.mongodb.org/linux/']
+sources = ['%(namelower)s-linux-x86_64-rhel80-%(version)s.tgz']
+checksums = ['165c01a06f56752c57437a7ee11474c13ba6c64f3ff8b04b9e1ba9bacfff7ac4']
+
+
+sanity_check_paths = {
+    'files': ['bin/install_compass', 'bin/mongod', 'bin/mongos'],
+    'dirs': ['bin']
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch b/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5f077c673a6a1f49d97914d5bc2b14df38ed6293
--- /dev/null
+++ b/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch
@@ -0,0 +1,230 @@
+This allows to process any sm_xx passed to GPU_TARGET. Previously some were silently ignored
+See https://bitbucket.org/icl/magma/issues/32/list-of-whitelisted-sm_-values-for-cuda-is
+and https://bitbucket.org/icl/magma/pull-requests/5
+
+Author: Alexander Grund (TU Dresden)
+Updated to 2.6.1: micketeer@gmail.com
+
+--- CMakeLists.txt.orig	2021-07-06 17:02:37.125227748 +0200
++++ CMakeLists.txt	2021-07-06 18:43:13.400804473 +0200
+@@ -124,14 +124,6 @@
+     #message( STATUS "    CUDA_CUBLAS_LIBRARIES: ${CUDA_CUBLAS_LIBRARIES}" )
+     include_directories( ${CUDA_INCLUDE_DIRS} )
+ 
+-    # NVCC options for the different cards
+-    # sm_xx is binary, compute_xx is PTX for forward compatability
+-    # MIN_ARCH is lowest requested version
+-    # NV_SM    accumulates sm_xx for all requested versions
+-    # NV_COMP  is compute_xx for highest requested version
+-    set( NV_SM    "" )
+-    set( NV_COMP  "" )
+-
+     set(CUDA_SEPARABLE_COMPILATION ON)
+ 
+     # nvcc >= 6.5 supports -std=c++11, so propagate CXXFLAGS to NVCCFLAGS.
+@@ -140,168 +132,44 @@
+     ##    set( CUDA_PROPAGATE_HOST_FLAGS OFF )
+     ##endif()
+ 
+-    if (GPU_TARGET MATCHES Fermi)
+-        set( GPU_TARGET "${GPU_TARGET} sm_20" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Kepler)
+-        set( GPU_TARGET "${GPU_TARGET} sm_30 sm_35 sm_37" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Maxwell)
+-        set( GPU_TARGET "${GPU_TARGET} sm_50" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Pascal)
+-        set( GPU_TARGET "${GPU_TARGET} sm_60" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Volta)
+-        set( GPU_TARGET "${GPU_TARGET} sm_70" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Turing)
+-        set( GPU_TARGET "${GPU_TARGET} sm_75" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES Ampere)
+-        set( GPU_TARGET "${GPU_TARGET} sm_80" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_20)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 200 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_20,code=sm_20 )
+-        set( NV_COMP        -gencode arch=compute_20,code=compute_20 )
+-        message( STATUS "    compile for CUDA arch 2.0 (Fermi)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_30)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 300 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_30,code=sm_30 )
+-        set( NV_COMP        -gencode arch=compute_30,code=compute_30 )
+-        message( STATUS "    compile for CUDA arch 3.0 (Kepler)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_35)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 300 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_35,code=sm_35 )
+-        set( NV_COMP        -gencode arch=compute_35,code=compute_35 )
+-        message( STATUS "    compile for CUDA arch 3.5 (Kepler)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_37)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 300 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_37,code=sm_37 )
+-        set( NV_COMP        -gencode arch=compute_37,code=compute_37 )
+-        message( STATUS "    compile for CUDA arch 3.7 (Kepler)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_50)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 500 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_50,code=sm_50 )
+-        set( NV_COMP        -gencode arch=compute_50,code=compute_50 )
+-        message( STATUS "    compile for CUDA arch 5.0 (Maxwell)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_52)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 520 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_52,code=sm_52 )
+-        set( NV_COMP        -gencode arch=compute_52,code=compute_52 )
+-        message( STATUS "    compile for CUDA arch 5.2 (Maxwell)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_53)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 530 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_53,code=sm_53 )
+-        set( NV_COMP        -gencode arch=compute_53,code=compute_53 )
+-        message( STATUS "    compile for CUDA arch 5.3 (Maxwell)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_60)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 600 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_60,code=sm_60 )
+-        set( NV_COMP        -gencode arch=compute_60,code=compute_60 )
+-        message( STATUS "    compile for CUDA arch 6.0 (Pascal)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_61)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 610 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_61,code=sm_61 )
+-        set( NV_COMP        -gencode arch=compute_61,code=compute_61 )
+-        message( STATUS "    compile for CUDA arch 6.1 (Pascal)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_62)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 620 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_62,code=sm_62 )
+-        set( NV_COMP        -gencode arch=compute_62,code=compute_62 )
+-        message( STATUS "    compile for CUDA arch 6.2 (Pascal)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_70)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 700 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_70,code=sm_70 )
+-        set( NV_COMP        -gencode arch=compute_70,code=compute_70 )
+-        message( STATUS "    compile for CUDA arch 7.0 (Volta)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_71)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 710 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_71,code=sm_71 )
+-        set( NV_COMP        -gencode arch=compute_71,code=compute_71 )
+-        message( STATUS "    compile for CUDA arch 7.1 (Volta)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_75)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 750 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_75,code=sm_75 )
+-        set( NV_COMP        -gencode arch=compute_75,code=compute_75 )
+-        message( STATUS "    compile for CUDA arch 7.5 (Turing)" )
+-    endif()
+-
+-    if (GPU_TARGET MATCHES sm_80)
+-        if (NOT MIN_ARCH)
+-            set( MIN_ARCH 800 )
+-        endif()
+-        set( NV_SM ${NV_SM} -gencode arch=compute_80,code=sm_80 )
+-        set( NV_COMP        -gencode arch=compute_80,code=compute_80 )
+-        message( STATUS "    compile for CUDA arch 8.0 (Ampere)" )
+-    endif()
+-
+-    if (NOT MIN_ARCH)
+-        message( FATAL_ERROR "GPU_TARGET must contain one or more of Fermi, Kepler, Maxwell, Pascal, Volta, Turing, Ampere, or valid sm_[0-9][0-9]" )
+-    endif()
++    # NVCC options for the different cards
++    # sm_xx is binary, compute_xx is PTX for forward compatability
++    # MIN_SM/MAX_SM is lowest/highest requested version
++    # NV_SM    accumulates sm_xx for all requested versions
++    # NV_COMP  is compute_xx for highest requested version
++    set( MIN_SM 99 )
++    set( MAX_SM 0 )
++    set( NV_SM    "" )
++    set( NV_COMP  "" )
+ 
+-    set( CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fPIC ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION} )
+-    #add_definitions( "-DMAGMA_HAVE_CUDA -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH}" )
+-    set(MAGMA_HAVE_CUDA "1")
+-    set(MAGMA_CUDA_ARCH_MIN "${MIN_ARCH}")
++    string( REGEX MATCHALL "sm_[0-9][0-9]" sms "${GPU_TARGET}" )
++    list( SORT sms ) # To make output easier to reason about
++    foreach (sm IN LISTS sms)
++        string( REPLACE "sm_" "" sm "${sm}") # Remove sm_ prefix
++        if (sm LESS MIN_SM)
++            set( MIN_SM "${sm}" )
++        endif()
++        if (sm GREATER MAX_SM)
++            set( MAX_SM "${sm}" )
++        endif()
++        list( APPEND NV_SM -gencode arch=compute_${sm},code=sm_${sm} )
++        string( REGEX REPLACE "([0-9])([0-9])" "\\1.\\2" cuda_arch "${sm}" )
++        message( STATUS "    compile for CUDA arch ${cuda_arch}" )
++    endforeach()
++
++    if (NOT NV_SM)
++        message( FATAL_ERROR
++                 "GPU_TARGET must contain one or more of "
++                 "Fermi, Kepler, Maxwell, Pascal, Volta, Turing, Ampere, or valid sm_[0-9][0-9]"
++                 "Was: ${GPU_TARGET}" )
++    endif()
++
++    set( MIN_ARCH ${MIN_SM}0 )
++    set( NV_COMP -gencode arch=compute_${MAX_SM},code=compute_${MAX_SM} )
++
++    list( APPEND CUDA_NVCC_FLAGS -Xcompiler -fPIC ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION} )
++    add_definitions( -DMAGMA_HAVE_CUDA=1 ) 
++    add_definitions( -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH} ) 
+     message( STATUS "Define -DMAGMA_HAVE_CUDA -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH}" )
+   else()
+     message( STATUS "Could not find CUDA" )
diff --git a/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb b/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb
index 270b017de4d7da9ad11a4917b23378fbc61ee0e1..27a5e9a080037f1cf26611e2db75345fa2089368 100644
--- a/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb
+++ b/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb
@@ -26,12 +26,13 @@ builddependencies = [
 ]
 dependencies = [
     ('CUDA', '11.7', '', SYSTEM),
-    ('UCX', 'default'),
 ]
 
 # make sure both static and shared libs are built
 configopts = [
-    '-DBUILD_SHARED_LIBS=%s -DGPU_TARGET="%%(cuda_sm_space_sep)s" ' % local_shared for local_shared in ('ON', 'OFF')
+    '-DMKL_ILP64=ON \
+     -DBUILD_SHARED_LIBS=%s \
+     -DGPU_TARGET="%%(cuda_sm_space_sep)s" ' % local_shared for local_shared in ('ON', 'OFF')
 ]
 
 sanity_check_paths = {
diff --git a/Golden_Repo/m/myqlm/myqlm-1.7.3-GCCcore-11.3.0.eb b/Golden_Repo/m/myqlm/myqlm-1.7.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b4793f582e6a589110997898cf343e1e1f1410b8
--- /dev/null
+++ b/Golden_Repo/m/myqlm/myqlm-1.7.3-GCCcore-11.3.0.eb
@@ -0,0 +1,148 @@
+easyblock = 'PythonBundle'
+
+name = 'myqlm'
+version = '1.7.3'
+
+homepage = 'https://atos.net/en/lp/myqlm'
+description = """myQLM is a quantum software stack for writing, simulating, optimizing, and executing quantum programs. 
+    myQLM also interfaces with the QLM, for Quantum Learning Machine, the quantum programming appliance of Atos."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # numpy
+    ('dill', '0.3.6'),
+    ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('tqdm', '4.64.0'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('IPython', '8.14.0'),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('pyDOE', '0.3.8', {
+        'modulename': 'pyDOE',
+        'sources': ['%(name)s-%(version)s.zip'],
+        'checksums': ['cbd6f14ae26d3c9f736013205f53ea1191add4567033c3ee77b7dd356566c4b6'],
+    }),
+    ('Wand', '0.6.11', {
+        'sources': ['%(name)s-%(version)s-py2.py3-none-any.whl'],
+        'checksums': ['1b77e25439ace57f665d1ccc6cff2766fad0834005b89ae3e7aaf3ba12b124b0'],
+    }),
+    ('svgwrite', '1.4.3', {
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d'],
+    }),
+    ('thrift', '0.16.0', {
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': ['2b5b6488fcded21f9d312aa23c9ff6a0195d0f6ae26ddbd5ad9e3e25dfc14408'],
+    }),
+    ('anytree', '2.8.0', {
+        'sources': ['%(name)s-%(version)s-py2.py3-none-any.whl'],
+        'checksums': ['14c55ac77492b11532395049a03b773d14c7e30b22aa012e337b1e983de31521'],
+    }),
+    ('qat_devices', '0.2.0', {
+        'modulename': 'qat.devices',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['0d35fa689c1866a91f141a25bfb5b43f0c0a030686de8b37ff672f3b04389400'],
+    }),
+    ('qat_comm', '1.4.2', {
+        'modulename': 'qat.comm',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['e063b07d4f9620f97805243a1fce898a4ef4ae86da9c9ede860d98a6339bed00'],
+    }),
+    ('myqlm_simulators', '1.7.1', {
+        'modulename': 'qat.pylinalg',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['2df96e14c8ee10fef4dd23c00975f087e5b947359b48952272301b24b0d11a7b'],
+    }),
+    ('qat_core', '1.6.4', {
+        'modulename': 'qat.core',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['8b275a1178e2415e75c825ac29024b1c0c07b9f95523be415eb2155b21032030'],
+    }),
+    ('myqlm_contrib', '1.7.1', {
+        'modulename': 'qat.sabre',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['7768d239bb187f8d54a64a622b237a3d032de80e147575bdeaf5dd1089b4dbf9'],
+    }),
+    ('myqlm_fermion', '1.0.0', {
+        'modulename': 'qat.fermion',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['b7ca8cd1698dc3c83892496f293137d0b437ebaa10143bebc4008611d3b5323a'],
+    }),
+    ('myqlm_clinalg', '0.0.5', {
+        'modulename': 'qat.clinalg',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['28ff7d0c6b3ada76e2f5e0e0a54f67c2451e410593a07ea8ee5c5d0395d70e8e'],
+    }),
+    ('qat_variational', '1.4.0', {
+        'modulename': 'qat.plugins',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['3737f70ec10999bc3255ecb21a4bde318b1fa316b770271267e68f333fc2ce8e'],
+    }),
+    ('qat_lang', '2.2.1', {
+        'modulename': 'qat.lang',
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux1_x86_64.whl'],
+        'checksums': ['5a495e9b1d453907600b0776ab6d4e72531c2a3a57d16ecfc2e360fbef17b5e4'],
+    }),
+    (name, version, {
+        'modulename': 'qat',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['7402230a97222ab9b989b44b3c494e281db784e60db46994452b7088c9556354'],
+    }),
+    ('myqlm_interop', '1.7.1', {
+        'modulename': 'qat.interop',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['fd05af8e62e0bcf40d82c68a5c8da2c56c5112cbb9a358e9ca26f6c43eb8147f'],
+    }),
+]
+
+# TODO: qat.magics.install creates file in $HOME
+# "/p/home/jusers/gonzalezcalaza1/jureca/.ipython/profile_default/startup/myqlm.py"
+# install in PyQuantum instead?
+# postinstallcmds = [
+#     #  ensure we install in the correct directory !!!
+#     'cd %(builddir)s',
+#     '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/python%(pyshortver)s/site-packages:'
+#         '${EBROOTPYTHON}/lib/python%(pyshortver)s/site-packages:'
+#         '${PYTHONPATH}" >> %(builddir)s/env.sh'
+#     ),
+
+#     'echo "export PATH=%(installdir)s/bin:${PATH}" >> %(builddir)s/env.sh',
+#     'cat %(builddir)s/env.sh',
+#     # install
+#     'source %(builddir)s/env.sh && python -m qat.magics.install',
+
+#     # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+#     'rm -f %(installdir)s/pyvenv.cfg',
+#     'rm -f %(installdir)s/bin/python',
+#     'rm -f %(installdir)s/bin/python3',
+#     'rm -f %(installdir)s/bin/activate',
+#     'rm -f %(installdir)s/bin/activate*',
+#     'rm -f %(installdir)s/bin/easy_install*',
+#     'rm -f %(installdir)s/bin/pip*',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+#     'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+#     'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+# ]
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/n/NCO/NCO-5.1.3-gompi-2022a.eb b/Golden_Repo/n/NCO/NCO-5.1.3-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1319ae7517bf3e968d15a6c45e5418e2fc635a86
--- /dev/null
+++ b/Golden_Repo/n/NCO/NCO-5.1.3-gompi-2022a.eb
@@ -0,0 +1,45 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '5.1.3'
+
+homepage = "https://github.com/nco/nco"
+description = """The NCO toolkit manipulates and analyzes data stored in netCDF-accessible formats, 
+including DAP, HDF4, and HDF5."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+
+source_urls = ['https://github.com/nco/nco/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['f6766627dab3f067c88f2cd713e3058c324ea4f900fabf9755bdd8918c32de7b']
+
+builddependencies = [
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('UDUNITS', '2.2.28'),
+    ('expat', '2.4.8'),
+    ('ANTLR', '2.7.7'),
+    ('libdap', '3.20.11'),
+    ('GSL', '2.7'),
+    ('netCDF', '4.9.0'),
+    # ('ESMF', '8.3.0'),  # ncremap needs ESMF_RegridWeightGen
+]
+
+configopts = "--enable-nco_cplusplus"
+
+sanity_check_paths = {
+    'files': ['bin/nc%s' % x for x in ('ap2', 'atted', 'bo', 'diff', 'ea', 'ecat', 'es',
+                                       'flint', 'ks', 'pdq', 'ra', 'rcat', 'rename', 'wa')] +
+    ['lib/libnco.a', 'lib/libnco.%s' % SHLIB_EXT,
+        'lib/libnco_c++.a', 'lib/libnco_c++.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+sanity_check_commands = [
+    "ncks -O -7 --cnk_dmn time,10 "
+    "%(builddir)s/%(namelower)s-%(version)s/data/in.nc %(builddir)s/%(namelower)s-%(version)s/data/in4.cdl"
+]
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/n/NCO/NCO-5.1.3-ipsmpi-2022a.eb b/Golden_Repo/n/NCO/NCO-5.1.3-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..04c65b25fe78f6db74bc2ba1e4592be5a70d2e48
--- /dev/null
+++ b/Golden_Repo/n/NCO/NCO-5.1.3-ipsmpi-2022a.eb
@@ -0,0 +1,45 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '5.1.3'
+
+homepage = "https://github.com/nco/nco"
+description = """The NCO toolkit manipulates and analyzes data stored in netCDF-accessible formats, 
+including DAP, HDF4, and HDF5."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+
+source_urls = ['https://github.com/nco/nco/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['f6766627dab3f067c88f2cd713e3058c324ea4f900fabf9755bdd8918c32de7b']
+
+builddependencies = [
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('UDUNITS', '2.2.28'),
+    ('expat', '2.4.8'),
+    ('ANTLR', '2.7.7'),
+    ('libdap', '3.20.11'),
+    ('GSL', '2.7'),
+    ('netCDF', '4.9.0'),
+    # ('ESMF', '8.3.0'),  # ncremap needs ESMF_RegridWeightGen
+]
+
+configopts = "--enable-nco_cplusplus"
+
+sanity_check_paths = {
+    'files': ['bin/nc%s' % x for x in ('ap2', 'atted', 'bo', 'diff', 'ea', 'ecat', 'es',
+                                       'flint', 'ks', 'pdq', 'ra', 'rcat', 'rename', 'wa')] +
+    ['lib/libnco.a', 'lib/libnco.%s' % SHLIB_EXT,
+        'lib/libnco_c++.a', 'lib/libnco_c++.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+sanity_check_commands = [
+    "ncks -O -7 --cnk_dmn time,10 "
+    "%(builddir)s/%(namelower)s-%(version)s/data/in.nc %(builddir)s/%(namelower)s-%(version)s/data/in4.cdl"
+]
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/n/NCO/NCO-5.1.4-npsmpic-2022a.eb b/Golden_Repo/n/NCO/NCO-5.1.4-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7c4d3cb823427ceaeae0af7f9118d3ad84790f1b
--- /dev/null
+++ b/Golden_Repo/n/NCO/NCO-5.1.4-npsmpic-2022a.eb
@@ -0,0 +1,45 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '5.1.4'
+
+homepage = "https://github.com/nco/nco"
+description = """The NCO toolkit manipulates and analyzes data stored in netCDF-accessible formats, 
+including DAP, HDF4, and HDF5."""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+
+source_urls = ['https://github.com/nco/nco/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['4b1ec67b795b985990620be7b7422ecae6da77f5ec93e4407b799f0220dffc88']
+
+builddependencies = [
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('UDUNITS', '2.2.28'),
+    ('expat', '2.4.8'),
+    ('ANTLR', '2.7.7'),
+    ('libdap', '3.20.11'),
+    ('GSL', '2.7'),
+    ('netCDF', '4.9.0'),
+    # ('ESMF', '8.3.0'),  # ncremap needs ESMF_RegridWeightGen
+]
+
+configopts = "--enable-nco_cplusplus"
+
+sanity_check_paths = {
+    'files': ['bin/nc%s' % x for x in ('ap2', 'atted', 'bo', 'diff', 'ea', 'ecat', 'es',
+                                       'flint', 'ks', 'pdq', 'ra', 'rcat', 'rename', 'wa')] +
+    ['lib/libnco.a', 'lib/libnco.%s' % SHLIB_EXT,
+        'lib/libnco_c++.a', 'lib/libnco_c++.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+sanity_check_commands = [
+    "ncks -O -7 --cnk_dmn time,10 "
+    "%(builddir)s/%(namelower)s-%(version)s/data/in.nc %(builddir)s/%(namelower)s-%(version)s/data/in4.cdl"
+]
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/n/NVHPC/NVHPC-23.1.eb b/Golden_Repo/n/NVHPC/NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a7fe10e3b168927c89b6cea4dc009fd59b4510ed
--- /dev/null
+++ b/Golden_Repo/n/NVHPC/NVHPC-23.1.eb
@@ -0,0 +1,73 @@
+name = 'NVHPC'
+version = '23.1'
+local_gccver = '11.3.0'
+
+homepage = 'https://developer.nvidia.com/hpc-sdk/'
+description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)"""
+
+toolchain = SYSTEM
+
+# By downloading, you accept the HPC SDK Software License Agreement (https://docs.nvidia.com/hpc-sdk/eula/index.html)
+source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/']
+local_tarball_tmpl = 'nvhpc_2023_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz'
+sources = [local_tarball_tmpl % '%(arch)s']
+checksums = [
+    {
+        local_tarball_tmpl % 'aarch64':
+            '5b430e03752954ea62ac1c745b1735cfdaa43b2e981a9412c1465ecb0412fff6',
+        local_tarball_tmpl % 'ppc64le':
+            '81759e7c747bf4f552b75e7657301f76ecc0828b94fe860f81108c6e83e6ad2b',
+        local_tarball_tmpl % 'x86_64':
+            '55a064415f6d4ce6a01823ee27ebd266f4fb579679871e7c1a7c054bdc18e9f5',
+    }
+]
+
+dependencies = [
+    ('GCCcore', local_gccver),
+    ('binutils', '2.38', '', ('GCCcore', local_gccver)),
+    ('CUDA', '11.7', '', SYSTEM),
+    # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails
+    ('numactl', '2.0.15', '', ('GCCcore', local_gccver))
+]
+
+module_add_cuda = False
+
+# specify default CUDA version that should be used by NVHPC
+# should match one of the CUDA versions that are included with this NVHPC version
+# (see install_components/Linux_x86_64/22.3/cuda/)
+# for NVHPC 22.3, those are: 11.6, 11.0, 10.2;
+# this version can be tweaked from the EasyBuild command line with
+# --try-amend=default_cuda_version="11.0" (for example)
+default_cuda_version = '%(cudaver)s'
+
+# NVHPC EasyBlock supports some features, which can be set via CLI or this easyconfig.
+# The following list gives examples for the easyconfig
+#
+# NVHPC needs CUDA to work. Two options are available: 1) Use NVHPC-bundled CUDA, 2) use system CUDA
+# 1) Bundled CUDA
+#    If no easybuild dependency to CUDA is present, the bundled CUDA is taken. A version needs to be specified with
+#      default_cuda_version = "11.0"
+#    in this easyconfig file; alternatively, it can be specified through the command line during installation with
+#      --try-amend=default_cuda_version="10.2"
+# 2) CUDA provided via EasyBuild
+#    Use CUDA as a dependency, for example
+#      dependencies = [('CUDA', '11.5.0')]
+#    The parameter default_cuda_version still can be set as above.
+#    If not set, it will be deduced from the CUDA module (via $EBVERSIONCUDA)
+#
+# Define a NVHPC-default Compute Capability
+#   cuda_compute_capabilities = "8.0"
+# Can also be specified on the EasyBuild command line via --cuda-compute-capabilities=8.0
+# Only single values supported, not lists of values!
+#
+# Options to add/remove things to/from environment module (defaults shown)
+#   module_byo_compilers = False  # Remove compilers from PATH (Bring-your-own compilers)
+#   module_nvhpc_own_mpi = False  # Add NVHPC's own pre-compiled OpenMPI
+#   module_add_math_libs = False  # Add NVHPC's math libraries (which should be there from CUDA anyway)
+#   module_add_profilers = False  # Add NVHPC's NVIDIA Profilers
+#   module_add_nccl = False       # Add NVHPC's NCCL library
+#   module_add_nvshmem = False    # Add NVHPC's NVSHMEM library
+#   module_add_cuda = False       # Add NVHPC's bundled CUDA
+
+# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS)
+moduleclass = 'compiler'
diff --git a/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2023.1.0-GCCcore-11.3.0.eb b/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2023.1.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f7b53fb537e17e6f09698ed73e924033cb939224
--- /dev/null
+++ b/Golden_Repo/n/Nsight-Compute/Nsight-Compute-2023.1.0-GCCcore-11.3.0.eb
@@ -0,0 +1,47 @@
+# jg (CSCS)
+# AH (JSC)
+easyblock = 'Binary'
+
+name = 'Nsight-Compute'
+version = '2023.1.0'
+homepage = 'https://developer.nvidia.com/nsight-compute'
+description = 'NVIDIA Nsight Compute is an interactive kernel profiler for CUDA applications'
+
+toolchain = {'name': 'GCCcore', 'version': '11.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.16-32451174.run',
+    'extract_cmd': '/bin/sh %s'
+}]
+checksums = ['3daa4906f8d878590a462839b3f9dc642ebe6070e6ac145bd36198b7c6309c99']
+
+# Not really necessary, but useful if we use this as a template for another package
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('X11', '20220504')
+]
+
+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/n/Nsight-Systems/Nsight-Systems-2023.2.1-GCCcore-11.3.0.eb b/Golden_Repo/n/Nsight-Systems/Nsight-Systems-2023.2.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f1170c5ff0d73ce2e912f7c1d34e6f8c5acdc49e
--- /dev/null
+++ b/Golden_Repo/n/Nsight-Systems/Nsight-Systems-2023.2.1-GCCcore-11.3.0.eb
@@ -0,0 +1,44 @@
+# jg (CSCS)
+# AH (JSC)
+easyblock = 'Binary'
+
+name = 'Nsight-Systems'
+version = '2023.2.1'
+homepage = 'https://developer.nvidia.com/nsight-systems'
+description = 'NVIDIA Nsight Systems is a system-wide performance analysis tool'
+
+# GCCcore toolchain is not strictly necessary, but used to bring it to same level as Nsight Compute
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+# Download source binary package manually, requires Nvidia Developer Account
+# source_urls = 'https://developer.nvidia.com/nsight-systems'
+sources = [{
+    'filename': 'NsightSystems-linux-public-%(version)s.122-3259852.run',
+    'extract_cmd': '/bin/sh %s'
+}]
+checksums = ['894a8a6bb08b1314eec41309a3c56386a4929ba58914278e49fa9a5fd2724f89']
+
+dependencies = [
+    ('X11', '20220504')
+]
+
+
+extract_sources = True
+unpack_options = '--accept --nochown --noexec --nox11 --target %(builddir)s'
+
+install_cmd = 'cp -r %(builddir)s/pkg/* %(installdir)s/'
+
+sanity_check_paths = {
+    'files': ['bin/nsys'],
+    'dirs': ['target-linux-x64', 'host-linux-x64']
+}
+
+modextravars = {
+    'NSIGHT_DOC': '%(installdir)s/documentation/nsys-exporter'
+}
+
+modluafooter = """
+add_property("arch","gpu")
+"""
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2022a.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..50ed6850d0a497990ee7ea3d71c66493c5a54cc0
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2022a.eb
@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.9.0')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gpsmpi-2022a.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..767674d4124fdb9595585bd1e0af733c3dba0b34
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gpsmpi-2022a.eb
@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.9.0')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-ipsmpi-2022a.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..28870b23937a14af7e469868fdcdd5b6aab999ce
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-ipsmpi-2022a.eb
@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.9.0')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2022a.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..40045482f03ecb4abb110933838af1687cd0d758
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2022a.eb
@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.9.0')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-nvompic-2022a.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9b395b3133583fced8baa3c67ef3d8c62bd2cb05
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-nvompic-2022a.eb
@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.9.0')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-npsmpic-2022a.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9334561e670015c3fddf0c64b822f9ba3e87fc1e
--- /dev/null
+++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-npsmpic-2022a.eb
@@ -0,0 +1,28 @@
+name = 'netCDF-Fortran'
+version = '4.6.0'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-fortran/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['8194aa70e400c0adfc456127c1d97af2c6489207171d13b10cd754a16da8b0ca']
+
+builddependencies = [
+    ('M4', '1.4.19'),
+]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('bzip2', '1.0.8'),
+]
+
+# (too) parallel build fails, but single-core build is fairly quick anyway (~1min)
+parallel = 1
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-nvompic-2022a.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f39c29f52521afd257c1809a77abbc0d8d721f3d
--- /dev/null
+++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.6.0-nvompic-2022a.eb
@@ -0,0 +1,28 @@
+name = 'netCDF-Fortran'
+version = '4.6.0'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-fortran/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['8194aa70e400c0adfc456127c1d97af2c6489207171d13b10cd754a16da8b0ca']
+
+builddependencies = [
+    ('M4', '1.4.19'),
+]
+
+dependencies = [
+    ('netCDF', '4.9.0'),
+    ('bzip2', '1.0.8'),
+]
+
+# (too) parallel build fails, but single-core build is fairly quick anyway (~1min)
+parallel = 1
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF/netCDF-4.9.0-npsmpic-2022a.eb b/Golden_Repo/n/netCDF/netCDF-4.9.0-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aa9f7cd82d626169aabb1fecc0ab5a6e54bfec72
--- /dev/null
+++ b/Golden_Repo/n/netCDF/netCDF-4.9.0-npsmpic-2022a.eb
@@ -0,0 +1,78 @@
+name = 'netCDF'
+version = '4.9.0'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%s.tar.gz' % (version)]
+patches = [
+    'netCDF-%(version)s_fix-lib-name.patch',
+    'netCDF-%(version)s_fix-linking-errors.patch',
+    'netCDF-%(version)s_skip-nasa-test.patch',
+]
+checksums = [
+    '9f4cb864f3ab54adb75409984c6202323d2fc66c003e5308f3cdf224ed41c0a6',  # v4.9.0.tar.gz
+    # netCDF-4.9.0_fix-lib-name.patch
+    'ed45ae6c49cf8dcddaadef4c5cf403049bf3f761187413d7b03754d319345d6a',
+    # netCDF-4.9.0_fix-linking-errors.patch
+    '2b9579c149579d137eb16ae5d790787774033dcec49c0d4993d9859f224e7b15',
+    # netCDF-4.9.0_skip-nasa-test.patch
+    '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a',
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('CMake', '3.23.1'),
+    ('Doxygen', '1.9.4'),
+]
+
+dependencies = [
+    ('HDF5', '1.12.2'),
+    ('cURL', '7.83.0'),
+    ('Szip', '2.1.1'),
+    ('zstd', '1.5.2'),
+    ('bzip2', '1.0.8'),
+    ('libxml2', '2.9.13'),
+    ('PnetCDF', '1.12.3'),
+]
+
+# disable tests that fail only with NVHPC - only needed when building with tests and without PnetCDF
+# comment out tests for put_varX_schar
+# preconfigopts = ("sed -i -e 's|NC_TEST(nc_put_var_schar);|/*NC_TEST(nc_put_var_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_var1_schar);|/*NC_TEST(nc_put_var1_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_vara_schar);|/*NC_TEST(nc_put_vara_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_vars_schar);|/*NC_TEST(nc_put_vars_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_varm_schar);|/*NC_TEST(nc_put_varm_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_att_schar);|/*NC_TEST(nc_put_att_schar);*/|g'"
+#                  " %(builddir)s/%(namelower)s-c-%(version)s/nc_test/nc_test.c &&")
+
+# comment out chunking tests
+# preconfigopts += ("sed -i -e 's|diff -b \${srcdir}/ref_rem.dmp tmp_rem_\${zext}.txt|echo \"skipped by EasyBuild\"|g'"
+#                  " -e 's|diff -b \${srcdir}/ref_ndims.dmp tmp_ndims_\${zext}.dmp|echo \"skipped by EasyBuild\"|g'"
+#                  " -e 's|diff -b ${srcdir}/ref_misc1.dmp tmp_misc1_${zext}.dmp|echo \"skipped by EasyBuild\"|g'"
+#                  " %(builddir)s/%(namelower)s-c-%(version)s/nczarr_test/run_chunkcases.sh &&")
+
+# make sure both static and shared libs are built
+# enable PnetCDF
+# and disable "remote" tests that access a unreliable external test server over internet
+configopts = [
+    "-DENABLE_PNETCDF=ON -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DMPIEXEC='/usr/bin/srun'",
+    "-DENABLE_PNETCDF=ON -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON  -DMPIEXEC='/usr/bin/srun'",
+]
+
+# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests
+# pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 "
+
+# switch off tests to build with PnetCDF, as cmake configuration for pnetcdf-based tests contains bugs
+# will be fixed in 4.9.1
+# https://github.com/Unidata/netcdf-c/pull/2437
+# runtest = 'test'
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF/netCDF-4.9.0-nvompic-2022a.eb b/Golden_Repo/n/netCDF/netCDF-4.9.0-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d96fd0b7b761103dd2f0d3c2d5f5f1957d7b20d4
--- /dev/null
+++ b/Golden_Repo/n/netCDF/netCDF-4.9.0-nvompic-2022a.eb
@@ -0,0 +1,78 @@
+name = 'netCDF'
+version = '4.9.0'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%s.tar.gz' % (version)]
+patches = [
+    'netCDF-%(version)s_fix-lib-name.patch',
+    'netCDF-%(version)s_fix-linking-errors.patch',
+    'netCDF-%(version)s_skip-nasa-test.patch',
+]
+checksums = [
+    '9f4cb864f3ab54adb75409984c6202323d2fc66c003e5308f3cdf224ed41c0a6',  # v4.9.0.tar.gz
+    # netCDF-4.9.0_fix-lib-name.patch
+    'ed45ae6c49cf8dcddaadef4c5cf403049bf3f761187413d7b03754d319345d6a',
+    # netCDF-4.9.0_fix-linking-errors.patch
+    '2b9579c149579d137eb16ae5d790787774033dcec49c0d4993d9859f224e7b15',
+    # netCDF-4.9.0_skip-nasa-test.patch
+    '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a',
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('CMake', '3.23.1'),
+    ('Doxygen', '1.9.4'),
+]
+
+dependencies = [
+    ('HDF5', '1.12.2'),
+    ('cURL', '7.83.0'),
+    ('Szip', '2.1.1'),
+    ('zstd', '1.5.2'),
+    ('bzip2', '1.0.8'),
+    ('libxml2', '2.9.13'),
+    ('PnetCDF', '1.12.3'),
+]
+
+# disable tests that fail only with NVHPC - only needed when building with tests and without PnetCDF
+# comment out tests for put_varX_schar
+# preconfigopts = ("sed -i -e 's|NC_TEST(nc_put_var_schar);|/*NC_TEST(nc_put_var_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_var1_schar);|/*NC_TEST(nc_put_var1_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_vara_schar);|/*NC_TEST(nc_put_vara_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_vars_schar);|/*NC_TEST(nc_put_vars_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_varm_schar);|/*NC_TEST(nc_put_varm_schar);*/|g'"
+#                  " -e 's|NC_TEST(nc_put_att_schar);|/*NC_TEST(nc_put_att_schar);*/|g'"
+#                  " %(builddir)s/%(namelower)s-c-%(version)s/nc_test/nc_test.c &&")
+
+# comment out chunking tests
+# preconfigopts += ("sed -i -e 's|diff -b \${srcdir}/ref_rem.dmp tmp_rem_\${zext}.txt|echo \"skipped by EasyBuild\"|g'"
+#                  " -e 's|diff -b \${srcdir}/ref_ndims.dmp tmp_ndims_\${zext}.dmp|echo \"skipped by EasyBuild\"|g'"
+#                  " -e 's|diff -b ${srcdir}/ref_misc1.dmp tmp_misc1_${zext}.dmp|echo \"skipped by EasyBuild\"|g'"
+#                  " %(builddir)s/%(namelower)s-c-%(version)s/nczarr_test/run_chunkcases.sh &&")
+
+# make sure both static and shared libs are built
+# enable PnetCDF
+# and disable "remote" tests that access a unreliable external test server over internet
+configopts = [
+    "-DENABLE_PNETCDF=ON -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DMPIEXEC='/usr/bin/srun'",
+    "-DENABLE_PNETCDF=ON -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON  -DMPIEXEC='/usr/bin/srun'",
+]
+
+# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests
+# pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 "
+
+# switch off tests to build with PnetCDF, as cmake configuration for pnetcdf-based tests contains bugs
+# will be fixed in 4.9.1
+# https://github.com/Unidata/netcdf-c/pull/2437
+# runtest = 'test'
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.1.8-avoid-diskless-test.patch b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.1.8-avoid-diskless-test.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d146f649548b0815386b6003647eb6cf37cee583
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.1.8-avoid-diskless-test.patch
@@ -0,0 +1,14 @@
+# this test seems to always fall. The diskless thing is not really diskless it seems
+# By Ward Poelmans <ward.poelmans@ugent.be>
+diff -ur netcdf4-python-1.1.8rel/test/tst_diskless.py netcdf4-python-1.1.8rel.new/test/tst_diskless.py
+--- netcdf4-python-1.1.8rel/test/tst_diskless.py	2015-05-13 16:27:00.000000000 +0200
++++ netcdf4-python-1.1.8rel.new/test/tst_diskless.py	2016-01-07 14:16:21.851971913 +0100
+@@ -65,7 +65,7 @@
+         assert_array_almost_equal(foo[:], ranarr)
+         assert_array_almost_equal(bar[:], ranarr2)
+         # file does not actually exist on disk
+-        assert(os.path.isfile(self.file)==False)
++#        assert(os.path.isfile(self.file)==False)
+         # open persisted file.
+         # first, check that file does actually exist on disk
+         assert(os.path.isfile(self.file2)==True)
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-GCCcore-11.3.0-serial.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-GCCcore-11.3.0-serial.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f5bceef51f279ec036d02f11c5d5849bf88c8643
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-GCCcore-11.3.0-serial.eb
@@ -0,0 +1,59 @@
+easyblock = 'PythonBundle'
+
+name = 'netcdf4-python'
+version = '1.6.1'
+
+versionsuffix = '-serial'
+
+homepage = 'https://unidata.github.io/netcdf4-python/'
+description = """Python/numpy interface to netCDF."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('netCDF', '4.9.0', '-serial'),
+    ('cURL', '7.83.0'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    ('cftime', '1.6.2', {
+        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
+    }),
+    (name, version, {
+        'patches': ['netcdf4-python-1.1.8-avoid-diskless-test.patch'],
+        'source_tmpl': 'netCDF4-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'],
+        'checksums': [
+            {'netCDF4-1.6.1.tar.gz': 'ba8dc5d65293a99f1afb8c2acf588d903fdfdc1963a62545b677fa2734262a78'},
+            {'netcdf4-python-1.1.8-avoid-diskless-test.patch':
+             'a8b262fa201d55f59015e1bc14466c1d113f807543bc1e05a22481ab0d216d72'},
+        ],
+    }),
+]
+
+fix_python_shebang_for = ['bin/*']
+
+sanity_check_paths = {
+    'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_commands = [
+    "nc4tonc3 --help",
+    "nc3tonc4 --help",
+    "ncinfo --help",
+]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gompi-2022a.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5ba2aeff9215232b53884aab8924bda4ca64020e
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gompi-2022a.eb
@@ -0,0 +1,60 @@
+easyblock = 'PythonBundle'
+
+name = 'netcdf4-python'
+version = '1.6.1'
+
+homepage = 'https://unidata.github.io/netcdf4-python/'
+description = """Python/numpy interface to netCDF."""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('netCDF', '4.9.0'),
+    ('cURL', '7.83.0'),
+    ('mpi4py', '3.1.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+runtest = False  # mpirun problems #from 2022
+skipsteps = ['sanitycheck']  # mpirun problems #from 2022
+
+exts_list = [
+    ('cftime', '1.6.2', {
+        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
+    }),
+    (name, version, {
+        'patches': [
+            'netcdf4-python-1.1.8-avoid-diskless-test.patch',
+            'netcdf4-python-1.6.1_relax_tolerance_compression_test.patch',
+        ],
+        'source_tmpl': 'netCDF4-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'],
+        'checksums': [
+            # netCDF4-1.6.1.tar.gz
+            'ba8dc5d65293a99f1afb8c2acf588d903fdfdc1963a62545b677fa2734262a78',
+            # netcdf4-python-1.1.8-avoid-diskless-test.patch
+            'a8b262fa201d55f59015e1bc14466c1d113f807543bc1e05a22481ab0d216d72',
+            # netcdf4-python-1.6.1_relax_tolerance_compression_test.patch
+            '64d192a5d1e3e00af78f053da78f5a35015fa713c7f97b10b622be6a44347166',
+        ],
+    }),
+]
+
+fix_python_shebang_for = ['bin/*']
+
+sanity_check_paths = {
+    'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_commands = [
+    "nc4tonc3 --help",
+    "nc3tonc4 --help",
+    "ncinfo --help",
+]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gpsmpi-2022a.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5ca6572ed7d26d1621a4a719488c076854a01f39
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-gpsmpi-2022a.eb
@@ -0,0 +1,60 @@
+easyblock = 'PythonBundle'
+
+name = 'netcdf4-python'
+version = '1.6.1'
+
+homepage = 'https://unidata.github.io/netcdf4-python/'
+description = """Python/numpy interface to netCDF."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('netCDF', '4.9.0'),
+    ('cURL', '7.83.0'),
+    ('mpi4py', '3.1.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+runtest = False  # mpirun problems #from 2022
+skipsteps = ['sanitycheck']  # mpirun problems #from 2022
+
+exts_list = [
+    ('cftime', '1.6.2', {
+        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
+    }),
+    (name, version, {
+        'patches': [
+            'netcdf4-python-1.1.8-avoid-diskless-test.patch',
+            'netcdf4-python-1.6.1_relax_tolerance_compression_test.patch',
+        ],
+        'source_tmpl': 'netCDF4-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'],
+        'checksums': [
+            # netCDF4-1.6.1.tar.gz
+            'ba8dc5d65293a99f1afb8c2acf588d903fdfdc1963a62545b677fa2734262a78',
+            # netcdf4-python-1.1.8-avoid-diskless-test.patch
+            'a8b262fa201d55f59015e1bc14466c1d113f807543bc1e05a22481ab0d216d72',
+            # netcdf4-python-1.6.1_relax_tolerance_compression_test.patch
+            '64d192a5d1e3e00af78f053da78f5a35015fa713c7f97b10b622be6a44347166',
+        ],
+    }),
+]
+
+fix_python_shebang_for = ['bin/*']
+
+sanity_check_paths = {
+    'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_commands = [
+    "nc4tonc3 --help",
+    "nc3tonc4 --help",
+    "ncinfo --help",
+]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-ipsmpi-2022a.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c57b836642429b6c4ef9ded340fae82230657718
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1-ipsmpi-2022a.eb
@@ -0,0 +1,60 @@
+easyblock = 'PythonBundle'
+
+name = 'netcdf4-python'
+version = '1.6.1'
+
+homepage = 'https://unidata.github.io/netcdf4-python/'
+description = """Python/numpy interface to netCDF."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('netCDF', '4.9.0'),
+    ('cURL', '7.83.0'),
+    ('mpi4py', '3.1.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+runtest = False  # mpirun problems #from 2022
+skipsteps = ['sanitycheck']  # mpirun problems #from 2022
+
+exts_list = [
+    ('cftime', '1.6.2', {
+        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
+    }),
+    (name, version, {
+        'patches': [
+            'netcdf4-python-1.1.8-avoid-diskless-test.patch',
+            'netcdf4-python-1.6.1_relax_tolerance_compression_test.patch',
+        ],
+        'source_tmpl': 'netCDF4-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'],
+        'checksums': [
+            # netCDF4-1.6.1.tar.gz
+            'ba8dc5d65293a99f1afb8c2acf588d903fdfdc1963a62545b677fa2734262a78',
+            # netcdf4-python-1.1.8-avoid-diskless-test.patch
+            'a8b262fa201d55f59015e1bc14466c1d113f807543bc1e05a22481ab0d216d72',
+            # netcdf4-python-1.6.1_relax_tolerance_compression_test.patch
+            '64d192a5d1e3e00af78f053da78f5a35015fa713c7f97b10b622be6a44347166',
+        ],
+    }),
+]
+
+fix_python_shebang_for = ['bin/*']
+
+sanity_check_paths = {
+    'files': ['bin/nc3tonc4', 'bin/nc4tonc3', 'bin/ncinfo'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_commands = [
+    "nc4tonc3 --help",
+    "nc3tonc4 --help",
+    "ncinfo --help",
+]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1_relax_tolerance_compression_test.patch b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1_relax_tolerance_compression_test.patch
new file mode 100644
index 0000000000000000000000000000000000000000..57dda863c8b175277759c4c99a0771a791480f7e
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.6.1_relax_tolerance_compression_test.patch
@@ -0,0 +1,15 @@
+# Relax tolerance in the compression_szip test to avoid fails on some systems.
+# author: maxim-masterov (SURF)
+#
+diff -Nru netcdf4-python-1.6.1.orig/test/tst_compression_szip.py netcdf4-python-1.6.1/test/tst_compression_szip.py
+--- netcdf4-python-1.6.1.orig/test/tst_compression_szip.py	2022-10-11 14:47:31.830359000 +0200
++++ netcdf4-python-1.6.1/test/tst_compression_szip.py	2022-10-11 14:48:13.300393000 +0200
+@@ -33,7 +33,7 @@
+         assert_almost_equal(datarr,f.variables['data'][:])
+         assert f.variables['data'].filters() ==\
+         {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
+-        assert_almost_equal(datarr,f.variables['data_szip'][:])
++        assert_almost_equal(datarr,f.variables['data_szip'][:], 6)
+         dtest = {'zlib': False, 'szip': {'coding': 'ec', 'pixels_per_block': 32}, 'zstd': False, 'bzip2': False, 'blosc': False, 'shuffle': False, 'complevel': 0, 'fletcher32': False}
+         assert f.variables['data_szip'].filters() == dtest
+         f.close()
diff --git a/Golden_Repo/n/nodejs/nodejs-16.15.1-GCCcore-11.3.0.eb b/Golden_Repo/n/nodejs/nodejs-16.15.1-GCCcore-11.3.0.eb
index 3fe69b1af4cfce6a5097bb1e5c98ddde64d03d58..b356c989a17966583df4a5edfebc61edff832820 100644
--- a/Golden_Repo/n/nodejs/nodejs-16.15.1-GCCcore-11.3.0.eb
+++ b/Golden_Repo/n/nodejs/nodejs-16.15.1-GCCcore-11.3.0.eb
@@ -22,8 +22,8 @@ builddependencies = [
 ]
 
 configopts = [
-    '--with-intl=none',           # Fully disable ICU to avoid issues with the embedded icu-small library
-    '--shared --with-intl=none',  # Build libnode.so in a second run
+    '--with-intl=full-icu',  # Full ICU is default and required for RegExp Unicode Property Escapes
+    '--shared ',             # Build libnode.so in a second run
 ]
 
 # Link libv8 libs to libnode
@@ -32,6 +32,7 @@ postinstallcmds = [
     "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
     "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libbase.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
     "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libplatform.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
+    "export PATH=%(installdir)s/bin/:$PATH && %(installdir)s/bin/corepack enable",
 ]
 
 sanity_check_paths = {
diff --git a/Golden_Repo/n/npsmpic/npsmpic-2022a.eb b/Golden_Repo/n/npsmpic/npsmpic-2022a.eb
index b7c3900a29530edc7f1d33078fb1e79babdd5edd..863cd7d65002dacac9067cabdf7c07efe737f5d3 100644
--- a/Golden_Repo/n/npsmpic/npsmpic-2022a.eb
+++ b/Golden_Repo/n/npsmpic/npsmpic-2022a.eb
@@ -8,7 +8,7 @@ description = 'NVHPC based compiler toolchain, including Parastation MPICH2 for
 
 toolchain = SYSTEM
 
-local_compiler = ('NVHPC', '22.11')
+local_compiler = ('NVHPC', '23.1')
 
 dependencies = [
     local_compiler,
diff --git a/Golden_Repo/n/nvompic/nvompic-2022a.eb b/Golden_Repo/n/nvompic/nvompic-2022a.eb
index 9ae3a04dafc21b4b8b23412bb2bf0d3fd9fbc2e7..0ce2fff27926b37a98103fa2dbb36fd2bd418217 100644
--- a/Golden_Repo/n/nvompic/nvompic-2022a.eb
+++ b/Golden_Repo/n/nvompic/nvompic-2022a.eb
@@ -8,7 +8,7 @@ description = 'NVHPC based compiler toolchain, including OpenMPI for MPI support
 
 toolchain = SYSTEM
 
-local_compiler = ('NVHPC', '22.11')
+local_compiler = ('NVHPC', '23.1')
 
 dependencies = [
     local_compiler,
diff --git a/Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..265a1a78cc575ca864106a331887e34133ed4efa
--- /dev/null
+++ b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb
@@ -0,0 +1,65 @@
+easyblock = 'CMakeMake'
+
+name = 'OSPRay'
+version = '2.10.0'
+
+homepage = 'http://www.ospray.org/'
+description = """
+OSPRay is an open source, scalable, and portable ray tracing engine for
+high-performance, high-fidelity visualization on Intel® Architecture CPUs.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/ospray/OSPRay/archive/']
+sources = ['v%(version)s.tar.gz']
+
+checksums = ['bd478284f48d2cb775fc41a2855a9d9f5ea16c861abda0f8dc94e02ea7189cb8']
+
+builddependencies = [
+    ('ispc', '1.18.1', '', SYSTEM),
+    ('CMake', '3.23.1'),
+    ('Doxygen', '1.9.4')
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('freeglut', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('tbb', '2021.5.0'),
+    ('Embree', '3.13.5'),
+    ('rkcommon', '1.10.0'),
+    ('openvkl', '1.3.1'),
+    ('OpenImageDenoise', '1.4.3', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+separate_build_dir = True
+
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DOSPRAY_INSTALL_DEPENDENCIES=OFF '
+configopts += '-DCMAKE_BUILD_TYPE=Release '
+configopts += '-DOSPRAY_BUILD_ISA=ALL '
+configopts += '-Dembree_DIR=$EBROOTEMBREE/lib64/cmake/embree-3.13.5 '
+configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF '
+configopts += '-DOSPRAY_MODULE_DENOISER:BOOL=ON '
+configopts += '-DOSPRAY_MODULE_MPI:BOOL=True '
+
+configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_BENCHMARK:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_EXAMPLES:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_TUTORIALS:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_TESTING:BOOL=OFF '
+
+sanity_check_paths = {
+    'dirs': ['include/ospray/',
+             'lib64/cmake/%(namelower)s-%(version)s', 'share/doc/OSPRay'],
+    'files': ['include/ospray/version.h',
+              'lib64/libospray.so',
+              'share/doc/OSPRay/README.md'],
+}
+
+modextrapaths = {'CMAKE_MODULE_PATH': ['lib64/cmake/ospray-%(version)s']}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..74c85e8bb0fbe32af2ef28c3cbeb7d47bb1b3d54
--- /dev/null
+++ b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb
@@ -0,0 +1,65 @@
+easyblock = 'CMakeMake'
+
+name = 'OSPRay'
+version = '2.10.0'
+
+homepage = 'http://www.ospray.org/'
+description = """
+OSPRay is an open source, scalable, and portable ray tracing engine for
+high-performance, high-fidelity visualization on Intel® Architecture CPUs.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/ospray/OSPRay/archive/']
+sources = ['v%(version)s.tar.gz']
+
+checksums = ['bd478284f48d2cb775fc41a2855a9d9f5ea16c861abda0f8dc94e02ea7189cb8']
+
+builddependencies = [
+    ('ispc', '1.18.1', '', SYSTEM),
+    ('CMake', '3.23.1'),
+    ('Doxygen', '1.9.4')
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('freeglut', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('tbb', '2021.5.0'),
+    ('Embree', '3.13.5'),
+    ('rkcommon', '1.10.0'),
+    ('openvkl', '1.3.1'),
+    ('OpenImageDenoise', '1.4.3', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+separate_build_dir = True
+
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DOSPRAY_INSTALL_DEPENDENCIES=OFF '
+configopts += '-DCMAKE_BUILD_TYPE=Release '
+configopts += '-DOSPRAY_BUILD_ISA=ALL '
+configopts += '-Dembree_DIR=$EBROOTEMBREE/lib64/cmake/embree-3.13.5 '
+configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF '
+configopts += '-DOSPRAY_MODULE_DENOISER:BOOL=ON '
+configopts += '-DOSPRAY_MODULE_MPI:BOOL=True '
+
+configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_BENCHMARK:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_EXAMPLES:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_TUTORIALS:BOOL=OFF '
+configopts += '-DOSPRAY_ENABLE_APPS_TESTING:BOOL=OFF '
+
+sanity_check_paths = {
+    'dirs': ['include/ospray/',
+             'lib64/cmake/%(namelower)s-%(version)s', 'share/doc/OSPRay'],
+    'files': ['include/ospray/version.h',
+              'lib64/libospray.so',
+              'share/doc/OSPRay/README.md'],
+}
+
+modextrapaths = {'CMAKE_MODULE_PATH': ['lib64/cmake/ospray-%(version)s']}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/OTF2/OTF2-3.0.3-GCCcore-11.3.0.eb b/Golden_Repo/o/OTF2/OTF2-3.0.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4ca72e1e0bb00ca25c2879c3684a00afea109d30
--- /dev/null
+++ b/Golden_Repo/o/OTF2/OTF2-3.0.3-GCCcore-11.3.0.eb
@@ -0,0 +1,49 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2022 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'OTF2'
+version = '3.0.3'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Open Trace Format 2 is a highly scalable, memory efficient event trace
+data format plus support library. It is the new standard trace format for
+Scalasca, Vampir, and TAU and is open for other tools.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/otf2/tags/otf2-%(version)s']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = [
+    '18a3905f7917340387e3edc8e5766f31ab1af41f4ecc5665da6c769ca21c4ee8',  # otf2-3.0.3.tar.gz
+]
+
+builddependencies = [
+    # use same binutils version that was used when building GCCcore
+    ('binutils', '2.38'),
+    # SIONlib container support (optional):
+    ('SIONlib', '1.7.7', '-tools'),
+]
+
+configopts = '--enable-shared'
+
+sanity_check_paths = {
+    'files': ['bin/otf2-config', 'include/otf2/otf2.h',
+              ('lib/libotf2.a', 'lib64/libotf2.a'),
+              ('lib/libotf2.%s' % SHLIB_EXT, 'lib64/libotf2.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/o/Octave/Octave-8.2.0-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/o/Octave/Octave-8.2.0-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7d674d1a3ac7b90cfd16a2df6d05b16670ae0c79
--- /dev/null
+++ b/Golden_Repo/o/Octave/Octave-8.2.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,92 @@
+# 'optim' plugin added which is required for dynare
+# Author: J. Sassmannshausen (Imperial College London/UK)
+
+name = 'Octave'
+version = '8.2.0'
+
+homepage = 'https://www.gnu.org/software/octave/'
+description = """GNU Octave is a high-level interpreted language, primarily intended for numerical computations."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'cstd': 'c++11'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['57d17f918a940d38ca3348211e110b34d735a322a87db71c177c4692a49a9c84']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+    ('Autotools', '20220317'),
+    ('gperf', '3.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('PCRE', '8.45'),
+    ('ncurses', '6.3'),
+    ('libreadline', '8.1.2'),
+    ('ARPACK-NG', '3.8.0', '-nompi'),
+    ('cURL', '7.83.0'),
+    ('FLTK', '1.3.8'),
+    ('fontconfig', '2.14.0'),
+    ('freetype', '2.12.1'),
+    ('GLPK', '5.0'),
+    ('GL2PS', '1.4.2'),
+    ('gnuplot', '5.4.4'),
+    ('Java', '11', '', SYSTEM),
+    ('zlib', '1.2.12'),
+    ('OpenGL', '2022a'),
+    ('freeglut', '3.4.0'),
+    ('Qhull', '2020.2'),
+    ('Qt5', '5.15.5'),
+    ('HDF5', '1.12.2', '-serial'),
+    ('qrupdate', '1.1.2'),
+    ('SuiteSparse', '5.13.0', '-nompi'),
+    ('makeinfo', '6.8'),
+    ('libsndfile', '1.1.0'),
+    ('GraphicsMagick', '1.3.36'),
+    # ('SUNDIALS', '6.4.1'),
+    ('FFTW', '3.3.10'),
+    ('texlive', '20220321'),
+    ('GraphicsMagick', '1.3.36'),
+    ('Ghostscript', '9.56.1'),
+]
+
+configopts = '--disable-docs '
+# correct for both GCC and Intel compilers
+configopts += '--enable-fortran-calling-convention=gfortran'
+
+local_pkg_url = 'https://downloads.sourceforge.net/'
+local_pkg_url += 'project/octave/Octave%20Forge%20Packages/Individual%20Package%20Releases/'
+exts_default_options = {'source_urls': [local_pkg_url]}
+
+exts_list = [
+    ('control', '3.5.0', {
+        'checksums': ['507d14ea3ea80bdc55b67c146a9dc88229229714fe33febe983393a67dec714a'],
+    }),
+    ('general', '2.1.2', {
+        'checksums': ['a30cd1a79743c62528dae46ebd4a83f848ae46a1c1dac3eaabc36662d42294cf'],
+    }),
+    ('io', '2.6.4', {
+        'checksums': ['a74a400bbd19227f6c07c585892de879cd7ae52d820da1f69f1a3e3e89452f5a'],
+    }),
+    ('signal', '1.4.4', {
+        'checksums': ['119df4b3a177834d6dd9c3124a2167c05aff5e6582fd0d32a7f9f306d302293a'],
+    }),
+    ('statistics', '1.4.3', {
+        'checksums': ['9801b8b4feb26c58407c136a9379aba1e6a10713829701bb3959d9473a67fa05'],
+    }),
+    ('struct', '1.0.18', {
+        'checksums': ['fccea7dd84c1104ed3babb47a28f05e0012a89c284f39ab094090450915294ce'],
+    }),
+    ('optim', '1.6.2', {
+        'checksums': ['554a8e18bb7195ae861f5059c14f1a557844265c1addb5bfbf3ab9885524787e'],
+    }),
+]
+
+runtest = 'check'
+
+moduleclass = 'math'
diff --git a/Golden_Repo/o/OpenImageDenoise/OpenImageDenoise-1.4.3-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/o/OpenImageDenoise/OpenImageDenoise-1.4.3-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e4a61dc3b4366d128441638ba094ac94e4ad2388
--- /dev/null
+++ b/Golden_Repo/o/OpenImageDenoise/OpenImageDenoise-1.4.3-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'CMakeMake'
+
+name = 'OpenImageDenoise'
+version = '1.4.3'
+
+homepage = 'https://www.openimagedenoise.org/'
+description = """
+Intel Open Image Denoise is an open source library of high-performance,
+high-quality denoising filters for images rendered with ray tracing.
+"""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/OpenImageDenoise/oidn/releases/download/v%(version)s/']
+sources = ['oidn-%(version)s.src.tar.gz']
+checksums = ['3276e252297ebad67a999298d8f0c30cfb221e166b166ae5c955d88b94ad062a']
+
+builddependencies = [
+    ('ispc', '1.18.1', '', SYSTEM),
+    ('CMake', '3.23.1'),
+    ('Python', '3.10.4'),
+]
+
+dependencies = [
+    ('tbb', '2021.5.0'),
+]
+
+separate_build_dir = True
+start_dir = 'oidn-%(version)s'
+
+configopts = '-DOIDN_APPS:BOOL=OFF '
+
+sanity_check_paths = {
+    'dirs': ['include/OpenImageDenoise'],
+    'files': ['lib/libOpenImageDenoise.so'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb b/Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
similarity index 97%
rename from Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb
rename to Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
index 40ed67dfed508275d69f8b49c83b2c6e551c8709..6bb054ba122071f808ba2a0f0f5f5faf57ed1b9b 100644
--- a/Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb
+++ b/Golden_Repo/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
@@ -4,7 +4,7 @@ version = '4.1.4'
 homepage = 'https://www.open-mpi.org/'
 description = """The Open MPI Project is an open source MPI-3 implementation."""
 
-toolchain = {'name': 'NVHPC', 'version': '22.11'}
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
 toolchainopts = {'pic': True}
 
 source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
diff --git a/Golden_Repo/o/OptiX/OptiX-6.5.0.eb b/Golden_Repo/o/OptiX/OptiX-6.5.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6232d58d8cf24e397ff21ada5b873c4d69284119
--- /dev/null
+++ b/Golden_Repo/o/OptiX/OptiX-6.5.0.eb
@@ -0,0 +1,33 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+# Authors::   Stephane Thiell <sthiell@stanford.edu>
+##
+easyblock = 'Binary'
+
+name = 'OptiX'
+version = '6.5.0'
+
+homepage = 'https://developer.nvidia.com/optix'
+description = """OptiX is NVIDIA SDK for easy ray tracing performance.
+ It provides a simple framework for accessing the GPU’s massive ray tracing
+ power using state-of-the-art GPU algorithms."""
+
+toolchain = SYSTEM
+
+# Registration required. Download links:
+# https://developer.nvidia.com/designworks/optix/download
+# https://developer.nvidia.com/designworks/optix/downloads/legacy
+sources = ['NVIDIA-OptiX-SDK-%(version)s-linux64.sh']
+checksums = ['eca09e617a267e18403ecccc715c5bc3a88729b81589a828fcb696435100a62e']
+
+install_cmd = "./" + sources[0] + " --skip-license --prefix=%(installdir)s"
+
+sanity_check_paths = {
+    'files': ["include/optix.h", "include/optix_cuda.h", "lib64/liboptix.%s" % SHLIB_EXT,
+              "lib64/liboptixu.%s" % SHLIB_EXT],
+    'dirs': []
+}
+
+modextravars = {'OPTIX_HOME': '%(installdir)s'}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/OptiX/OptiX-7.5.0.eb b/Golden_Repo/o/OptiX/OptiX-7.5.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..70c877ef23023860365400587a7c3d3e357742a3
--- /dev/null
+++ b/Golden_Repo/o/OptiX/OptiX-7.5.0.eb
@@ -0,0 +1,31 @@
+##
+# Author:    Robert Mijakovic <robert.mijakovic@lxp.lu>
+##
+easyblock = 'Binary'
+
+name = 'OptiX'
+version = '7.5.0'
+
+homepage = 'https://developer.nvidia.com/optix'
+description = """OptiX is NVIDIA SDK for easy ray tracing performance.
+ It provides a simple framework for accessing the GPU’s massive ray tracing
+ power using state-of-the-art GPU algorithms."""
+
+toolchain = SYSTEM
+
+# Registration required. Download links:
+# https://developer.nvidia.com/designworks/optix/download
+# https://developer.nvidia.com/designworks/optix/downloads/legacy
+sources = ['NVIDIA-OptiX-SDK-%(version)s-linux64-x86_64.sh']
+checksums = ['ec8f80350870275e6536a4150a65976d7b391f605ef2c09616486569aa60b670']
+
+install_cmd = "./" + sources[0] + " --skip-license --prefix=%(installdir)s"
+
+sanity_check_paths = {
+    'files': ["include/optix.h", "include/optix_device.h"],
+    'dirs': []
+}
+
+modextravars = {'OPTIX_HOME': '%(installdir)s'}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/openpyxl/openpyxl-3.1.1-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/o/openpyxl/openpyxl-3.1.1-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f6f394e9d8a3ae0c0812b767a7bca85de6159400
--- /dev/null
+++ b/Golden_Repo/o/openpyxl/openpyxl-3.1.1-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,36 @@
+easyblock = 'PythonBundle'
+
+name = 'openpyxl'
+version = '3.1.1'
+
+homepage = 'https://openpyxl.readthedocs.io'
+description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05'),
+    ('lxml', '4.9.1'),
+    ('Pillow-SIMD', '9.2.0'),
+]
+
+use_pip = True
+
+exts_list = [
+    ('et_xmlfile', '1.1.0', {
+        'checksums': ['8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c'],
+    }),
+    ('jdcal', '1.4.1', {
+        'checksums': ['472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8'],
+    }),
+    (name, version, {
+        'checksums': ['f06d44e2c973781068bce5ecf860a09bcdb1c7f5ce1facd5e9aa82c92c93ae72'],
+    }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'data'
diff --git a/Golden_Repo/o/openvkl/openvkl-1.3.1-GCC-11.3.0.eb b/Golden_Repo/o/openvkl/openvkl-1.3.1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7c11c301e433e143bdb7a2859251a737a9a33732
--- /dev/null
+++ b/Golden_Repo/o/openvkl/openvkl-1.3.1-GCC-11.3.0.eb
@@ -0,0 +1,43 @@
+easyblock = 'CMakeMake'
+
+name = 'openvkl'
+version = '1.3.1'
+
+homepage = 'http://www.openvkl.org/'
+description = """
+Intel® Open Volume Kernel Library (Intel® Open VKL) is a collection
+of high-performance volume computation kernels, developed at Intel.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/openvkl/openvkl/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['c9cefb6c313f2b4c0331e9629931759a6bc204ec00deed6ec0becad1670a1933']
+
+builddependencies = [
+    ('ispc', '1.18.1', '', SYSTEM),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('tbb', '2021.5.0'),
+    ('Embree', '3.13.5'),
+    ('rkcommon', '1.10.0'),
+]
+
+separate_build_dir = True
+
+start_dir = '%(name)s-%(version)s'
+
+configopts = '-DBUILD_BENCHMARKS:BOOL=OFF '
+configopts += '-DBUILD_EXAMPLES:BOOL=OFF '
+configopts += '-DBUILD_TESTING:BOOL=OFF '
+
+sanity_check_paths = {
+    'dirs': ['include/openvkl'],
+    'files': ['lib/libopenvkl.so'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/PETSc/PETSc-3.18.5-gpsmkl-2022a.eb b/Golden_Repo/p/PETSc/PETSc-3.18.5-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..89c4166d819b17166996f6574393e16efa4557c0
--- /dev/null
+++ b/Golden_Repo/p/PETSc/PETSc-3.18.5-gpsmkl-2022a.eb
@@ -0,0 +1,59 @@
+import os as local_os
+
+name = "PETSc"
+version = "3.18.5"
+
+homepage = 'http://www.mcs.anl.gov/petsc'
+description = """PETSc, pronounced PET-see (the S is silent), is a suite
+of data structures and routines for the scalable (parallel) solution
+of scientific applications modeled by partial differential equations.
+
+This version is configured with several downloads of other libraries,
+with --with-large-file-io and no debugging. It is a C and Fortran
+version with default 4-Byte integer values.
+
+For more information see $PETSC_DIR/lib/petsc/conf/configure-hash.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+
+toolchainopts = {'usempi': True, 'pic': True}
+
+source_urls = ['http://ftp.mcs.anl.gov/pub/petsc/release-snapshots']
+sources = ['petsc-%s.tar.gz' % version]
+checksums = ['df73ae13a4c5758325a9d69350cac423742657d8a8fc5782504b0e469ce46499']
+
+builddependencies = [
+    ('CMake', '3.23.1')
+]
+
+download_deps = [
+    'triangle',
+]
+
+dependencies = [
+    ('HDF5', '1.12.2'),
+    ('METIS', '5.1.0'),
+    ('ParMETIS', '4.0.3')
+]
+
+download_deps_static = [
+    'hypre',
+    'spooles',
+    'superlu',
+    'superlu_dist',
+    'mumps',
+    'spai',
+    'chaco',
+    'sundials2',
+    'parms',
+]
+
+configopts = '--with-large-file-io --with-cxx-dialect=C++11'
+configopts += ' --with-fftw=1 --with-fftw-lib=[$EBROOTIMKLMINFFTW/lib/libfftw3xc_gnu_pic.a,\
+libfftw3x_cdft_lp64_pic.a,libmkl_cdft_core.a,libmkl_blacs_intelmpi_lp64.a,\
+libmkl_gf_lp64.a,libmkl_sequential.a,libmkl_core.a,libgfortran.a]'
+configopts += ' --with-fftw-include=[$EBROOTIMKL/mkl/2022.1.0/include/fftw]'
+shared_libs = 1
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/p/PETSc/petsc4py-3.18.5-gspmkl-2022a-Python-3.10.4.eb b/Golden_Repo/p/PETSc/petsc4py-3.18.5-gspmkl-2022a-Python-3.10.4.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0e6310f03491f2e85a8f53eb190d9d81a0d353af
--- /dev/null
+++ b/Golden_Repo/p/PETSc/petsc4py-3.18.5-gspmkl-2022a-Python-3.10.4.eb
@@ -0,0 +1,29 @@
+easyblock = 'PythonPackage'
+
+name = 'petsc4py'
+version = '3.18.5'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://bitbucket.org/petsc/petsc4py'
+description = "petsc4py are Python bindings for PETSc, the Portable, Extensible Toolchain for Scientific Computation."
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+
+source_urls = [PYPI_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['625cbb99d7d3000ad05afe60585c6aa24ca650894b09a1989127febb64b65470']
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('PETSc', '3.18.5'),
+]
+
+download_dep_fail = True
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/p/PLUMED/PLUMED-2.8.1-intel-para-2022a.eb b/Golden_Repo/p/PLUMED/PLUMED-2.8.1-intel-para-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f7c8f32884b7cf457635cabe83c6f0b0eec00cfa
--- /dev/null
+++ b/Golden_Repo/p/PLUMED/PLUMED-2.8.1-intel-para-2022a.eb
@@ -0,0 +1,43 @@
+# by Ward Poelmans <wpoely86@gmail.com>
+
+easyblock = 'ConfigureMake'
+
+name = 'PLUMED'
+version = '2.8.1'
+
+homepage = 'http://www.plumed.org'
+description = """PLUMED is an open source library for free energy calculations in molecular systems which
+ works together with some of the most popular molecular dynamics engines. Free energy calculations can be 
+ performed as a function of many order parameters with a particular  focus on biological problems, using
+ state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD.
+ The software, written in C++, can be easily interfaced with both fortran and C/C++ codes.
+"""
+
+toolchain = {'name': 'intel-para', 'version': '2022a'}
+toolchainopts = {'usempi': 'True'}
+
+source_urls = ['https://github.com/plumed/plumed2/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['f56bc9266c8a47241385c595717c2734a9b67148a7f4122b808bc0733710173e']
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('GSL', '2.7'),
+    ('libmatheval', '1.1.11'),
+]
+
+preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" '
+configopts = ' --exec-prefix=%(installdir)s --enable-gsl --enable-modules=all'
+prebuildopts = 'source sourceme.sh && '
+
+sanity_check_paths = {
+    'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT],
+    'dirs': ['lib/plumed']
+}
+
+modextrapaths = {
+    'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT,
+    'PLUMED_ROOT': 'lib/plumed',
+}
+
+moduleclass = 'chem'
diff --git a/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.10-GCCcore-11.3.0.eb b/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.10-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6f3668657b4990101c4654b4e018c2e4ff90d3b4
--- /dev/null
+++ b/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.10-GCCcore-11.3.0.eb
@@ -0,0 +1,64 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2012-2014 Uni.Lu, NTUA
+# Authors::   Fotis Georgatos <fotis@cern.ch>
+# 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/
+##
+
+easyblock = 'ConfigureMake'
+
+name = 'POV-Ray'
+version = '3.7.0.10'
+
+homepage = 'https://www.povray.org/'
+description = """The Persistence of Vision Raytracer, or POV-Ray, is a ray tracing program
+ which generates images from a text-based scene description, and is available for a variety
+ of computer platforms. POV-Ray is a high-quality, Free Software tool for creating stunning
+ three-dimensional graphics. The source code is available for those wanting to do their own ports."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/POV-Ray/povray/archive/']
+sources = ['v%(version)s.tar.gz']
+patches = ['POV-Ray-3.7.0.7_dont-touch-home.patch']
+checksums = [
+    '7bee83d9296b98b7956eb94210cf30aa5c1bbeada8ef6b93bb52228bbc83abff',  # v3.7.0.10.tar.gz
+    '45103afca808e279dcdee80194c65e2a760c76d011d351392a46e817b0b655f7',  # POV-Ray-3.7.0.7_dont-touch-home.patch
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+]
+
+dependencies = [
+    ('Boost', '1.79.0'),
+    ('zlib', '1.2.12'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('X11', '20220504'),
+    ('LibTIFF', '4.3.0'),
+    ('SDL2', '2.26.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+preconfigopts = "cd unix && sed -i 's/^automake/automake --add-missing; automake/g' prebuild.sh && "
+preconfigopts += " ./prebuild.sh && cd .. && "
+configopts = "COMPILED_BY='EasyBuild' "
+configopts += "--with-boost=$EBROOTBOOST --with-zlib=$EBROOTZLIB --with-libpng=$EBROOTLIBPNG "
+configopts += "--with-libtiff=$EBROOTLIBTIFF --with-libjpeg=$EBROOTLIBJPEGMINTURBO --with-libsdl=$EBROOTSDL2 "
+configopts += "CXXFLAGS='-DBOOST_BIND_GLOBAL_PLACEHOLDERS ' "
+# configopts += " --with-libmkl=DIR " ## upstream needs to fix this, still in BETA
+
+runtest = 'check'
+
+sanity_check_paths = {
+    'files': ['bin/povray'],
+    'dirs': ['etc/povray/%(version_major_minor)s', 'share']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.7_dont-touch-home.patch b/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.7_dont-touch-home.patch
new file mode 100644
index 0000000000000000000000000000000000000000..097174a9e0a4a91a3c5e7bd64c3da5c536b6da60
--- /dev/null
+++ b/Golden_Repo/p/POV-Ray/POV-Ray-3.7.0.7_dont-touch-home.patch
@@ -0,0 +1,25 @@
+# Do not let povray do anything in the user home directory
+# wpoely86@gmail.com
+diff -ur povray-3.7.0.7.orig/unix/prebuild.sh povray-3.7.0.7/unix/prebuild.sh
+--- povray-3.7.0.7.orig/unix/prebuild.sh	2018-01-05 10:06:48.000000000 +0100
++++ povray-3.7.0.7/unix/prebuild.sh	2018-04-10 10:14:08.621514093 +0200
+@@ -641,19 +641,6 @@
+ 	for f in \$\$filelist ; do \\
+ 	  \$(INSTALL_DATA) \$(top_srcdir)/doc/\$\$f \$(DESTDIR)\$(povdocdir)/\$\$f && echo "\$(DESTDIR)\$(povdocdir)/\$\$f" >> \$(povinstall); \\
+ 	done
+-	@echo "Creating user directories..."; \\
+-	for p in \$(povuser) \$(povconfuser) ; do \\
+-	  \$(mkdir_p) \$\$p && chown \$(povowner) \$\$p && chgrp \$(povgroup) \$\$p && printf "%s\\n" "\$\$p" "\`cat \$(povinstall)\`" > \$(povinstall); \\
+-	done
+-	@echo "Copying user configuration and INI files..."; \\
+-	for f in povray.conf povray.ini ; do \\
+-	  if test -f \$(povconfuser)/\$\$f; then \\
+-	    echo "Creating backup of \$(povconfuser)/\$\$f"; \\
+-	    mv -f \$(povconfuser)/\$\$f \$(povconfuser)/\$\$f.bak; \\
+-	  fi; \\
+-	done; \\
+-	\$(INSTALL_DATA) \$(top_srcdir)/povray.conf \$(povconfuser)/povray.conf && chown \$(povowner) \$(povconfuser)/povray.conf && chgrp \$(povgroup) \$(povconfuser)/povray.conf  && echo "\$(povconfuser)/povray.conf" >> \$(povinstall); \\
+-	\$(INSTALL_DATA) \$(top_builddir)/povray.ini \$(povconfuser)/povray.ini && chown \$(povowner) \$(povconfuser)/povray.ini && chgrp \$(povgroup) \$(povconfuser)/povray.ini  && echo "\$(povconfuser)/povray.ini" >> \$(povinstall)
+ 
+ # Remove data, config, and empty folders for 'make uninstall'.
+ # Use 'hook' instead of 'local' so as to properly remove *empty* folders (e.g. scripts).
diff --git a/Golden_Repo/p/ParMETIS/ParMETIS-4.0.3-ipsmpi-2022a.eb b/Golden_Repo/p/ParMETIS/ParMETIS-4.0.3-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fbfc8406b171d843a4a6a123ec7033005e2e7df2
--- /dev/null
+++ b/Golden_Repo/p/ParMETIS/ParMETIS-4.0.3-ipsmpi-2022a.eb
@@ -0,0 +1,39 @@
+name = 'ParMETIS'
+version = '4.0.3'
+
+homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview'
+description = """ParMETIS is an MPI-based parallel library 
+that implements a variety of algorithms for partitioning unstructured graphs,
+meshes, and for computing fill-reducing orderings of sparse matrices. 
+ParMETIS extends the functionality provided by METIS 
+and includes routines that are especially suited for parallel AMR computations
+and large scale numerical simulations. 
+The algorithms implemented in ParMETIS are based on the parallel multilevel 
+k-way graph-partitioning, adaptive repartitioning, 
+and parallel multi-constrained partitioning schemes."""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'optarch': True, 'usempi': True, 'pic': True, 'openmp': True}
+source_urls = ['http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis']
+sources = [SOURCELOWER_TAR_GZ]
+patches = [
+    # Needed for elemental
+    'parmetis_computevertexseparator.patch'
+]
+
+checksums = [
+    'f2d9a231b7cf97f1fee6e8c9663113ebf6c240d407d3c118c55b3633d6be6e5f',  # parmetis-4.0.3.tar.gz
+    'b82f5e869b971b5e49566091a79783cc267276bcddcd939abf2240f415287fa7',  # parmetis_computevertexseparator.patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1')
+]
+
+modextravars = {
+    'PARMETIS_ROOT': '%(installdir)s',
+    'PARMETIS_LIB':  '%(installdir)s/lib',
+    'PARMETIS_INCLUDE': '%(installdir)s/include'
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2ed375ca497a918efd06c86045903d96f9d1834f
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb
@@ -0,0 +1,352 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaView'
+version = '5.11.0'
+versionsuffix = '-EGL'
+
+homepage = "http://www.paraview.org"
+description = "Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
+source_urls = [('http://www.paraview.org/paraview-downloads/%s' %
+                local_dwnlsfx_src)]
+sources = [("ParaView-v%(version)s.tar.gz")]
+
+patches = [
+    'cdireader_update_issue5715.patch',
+    'parflowreader_fix-nlohmann_merge6050.patch',
+]
+
+checksums = [
+    '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87',
+    '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2',  # cdireader patch
+    'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6',  # parflowreader patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('git', '2.36.0', '-nodocs'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Boost', '1.79.0'),
+    ('X11', '20220504'),
+    ('bzip2', '1.0.8'),
+    ('HDF5', '1.12.2'),
+    ('ADIOS2', '2.8.3'),
+    ('FFmpeg', '4.4.2'),
+    ('Embree', '3.13.5'),
+    ('OSPRay', '2.10.0'),
+    ('libpng', '1.6.37'),
+    ('expat', '2.4.8'),
+    ('freetype', '2.12.1'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libxml2', '2.9.13'),
+    ('LibTIFF', '4.3.0'),
+    ('zlib', '1.2.12'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-C++4', '4.3.1'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('nlohmann_json', '3.10.5'),  # for ParFlow plugin
+    ('libcdi', '2.1.1'),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('OpenGL', '2022a'),
+    ('Catalyst', '2.0.0-rc3'),
+    ('ParaViewData', '5.11.0'),
+    ('VTKData', '9.2.5'),
+]
+
+separate_build_dir = True
+
+# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time
+preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+
+########################################################################################
+# check ParaView Superbuild options                                                    #
+# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master                  #
+#                                                                                      #
+# check ParaView Spack options                                                         #
+# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py
+#                                                                                      #
+# check ParaView Build documenation                                                    #
+# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md  #
+########################################################################################
+
+local_buildsrc = '%(builddir)s/easybuild_obj'
+local_installsrc = '%(installdir)s/debugsrc'
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_CXX_STANDARD=11 '
+configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON '
+
+# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
+# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
+# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
+
+configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
+configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
+configopts += '-DPARAVIEW_USE_QT=OFF '
+
+# --- tuning --- #
+# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328
+# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF '
+
+# --- web --- #
+configopts += '-DPARAVIEW_ENABLE_WEB=ON '
+configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES '
+
+# --- python --- #
+configopts += '-DPARAVIEW_USE_PYTHON=ON '
+configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python "
+
+configopts += '-DVTK_PYTHON_VERSION=3 '
+configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
+# visibility depends on VTK_NO_PYTHON_THREADS=OFF
+configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF '
+# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
+# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
+
+# --- VTKm --- #
+configopts += '-DPARAVIEW_USE_VTKM=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES '
+configopts += '-DVTKm_Vectorization=AVX2 '
+# configopts += '-DVTKm_ENABLE_KOKKOS=OFF '
+# configopts += '-DVTKm_ENABLE_TBB=OFF '
+# configopts += '-DVTKm_ENABLE_CUDA=ON '
+# configopts += '-DVTKm_ENABLE_LOGGING=ON '
+
+# --- parallel (on-node) --- #
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
+configopts += '-DVTK_MAX_THREADS=64 '
+configopts += '-DVTKm_ENABLE_OPENMP=ON '
+
+# --- parallel (distributed) --- #
+configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
+configopts += '-DPARAVIEW_USE_MPI=ON '
+configopts += '-DVTKm_ENABLE_MPI=ON '
+
+# --- IO --- #
+configopts += '-DXDMF_BUILD_MPI=ON '
+configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
+configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF '  # error: adios2.h not found
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON '  # req. ADIOS1
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1
+configopts += '-DVTKm_ENABLE_HDF5_IO=ON '
+
+# --- large data --- #
+configopts += '-DVTK_USE_64BIT_IDS=ON '
+
+# --- rendering --- #
+
+# OpenGL (hardware)
+#  https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
+#    If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
+#       otherwise VTK_USE_X must be ON and the build does not support headless,
+#       but can still support offscreen rendering.
+#    If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
+#       Then the build does not support onscreen rendering, but only headless rendering.
+#    If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
+#       or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
+#    If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
+#       then all the OpenGL and OSMesa variables should point to the Mesa libraries.
+#    Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
+#       should point to the system libraries providing both, typically the NVidia libraries.
+
+configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
+configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
+
+configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
+
+configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
+configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
+configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
+configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
+configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
+
+# OpenGL over X
+# configopts += '-DVTK_USE_X=ON '  # OFF:headless rendering
+# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '  # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+
+# EGL (off-screen rendering with OpenGL, but without the need for X)
+# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
+configopts += '-DVTK_OPENGL_HAS_EGL=ON '
+# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '
+configopts += '-DVTK_USE_X=OFF '
+configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
+# configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
+# configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
+# configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
+# configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
+
+# OSMesa (software)
+# With OSMesa the DISPLAY variable has no meaning and is not needed
+# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
+# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
+# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
+
+# Raytracing
+configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
+configopts += '-DVTK_ENABLE_OSPRAY=ON '
+configopts += '-DVTK_ENABLE_VISRTX=OFF '
+
+configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
+configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 "
+configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON '
+
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES '
+
+# --- extra features --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON '
+
+configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
+configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES '
+
+configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES '
+
+# --- coupling --- #
+configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES '
+# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON '
+configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ '
+
+# --- development & testing --- #
+configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
+configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
+configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF '
+configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
+configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
+
+# --- external data --- #
+# https://cmake.org/cmake/help/latest/module/ExternalData.html
+# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
+# configopts += '-DCTEST_TEST_TIMEOUT=10800 '  # unknown setting
+# download inactivity, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 '
+# download abs. time, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 '
+# Exclude test data download from default 'all' target.
+configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON '
+# Local directory holding ExternalData objects in the layout %(algo)/%(hash).
+configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData '
+configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData '
+# Local directory holding the real data files of ExternalData.
+configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} '
+# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT
+
+# --- XDMF options --- #
+configopts += '-DXDMF_USE_BZIP2=ON '
+configopts += '-DXDMF_USE_GZIP=ON '
+
+# --- VTK external libraries --- #
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON '
+
+# --- ParaView Extra-Reader --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON '
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON '
+configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON '
+# configopts += '-DPARAVIEW_ENABLE_FIDES=ON '  # req. ADIOS2 as dependency
+# configopts += '-DPARAVIEW_ENABLE_GDAL=ON '  # req. GDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_LAS=ON '  # req. LAS as dependency
+# configopts += '-DPARAVIEW_ENABLE_PDAL=ON '  # req. PDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON '  # req. OpenVDB as dependency
+
+# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt
+configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES '
+# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Mili=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Silo=ON '  # req. external dependency
+# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503
+# configopts += '-DVISIT_BUILD_READER_Nek5000=ON '  # MR still open
+
+postinstallcmds = [
+    'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/',
+    # 'cp -a %s %s' % (local_buildsrc, local_installsrc),  # copy source from build dir to install dir
+    # '', # move debug info to separate files:
+    #       http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
+    # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
+    #     # change path to source in debug info
+]
+
+modextravars = {
+    'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk',
+    # 'CUDA_VISIBLE_DEVICES': '0,1',
+    # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3
+    'MESA_GL_VERSION_OVERRIDE': '3.3',
+    'MESA_GLSL_VERSION_OVERRIDE': '330',
+    #  OpenMP will choose an optimum number of threads by default, which is usually the number of cores
+    # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
+    #  threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
+    #  unset => OSPRAY uses all hardware threads
+    # 'OSPRAY_THREADS': '14',     # OSPRay <  2.0
+    # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
+    #  When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
+    #    https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
+    #    https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
+    #  more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
+    # max. threads used by OpenSWR (limited by number of hardware threads)
+    'KNOB_MAX_WORKER_THREADS': '65535',
+    #  details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
+    #  more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
+    'CATALYST_IMPLEMENTATION_NAME': 'paraview',
+    'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst',
+    # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize
+}
+
+modextrapaths = {
+    'PYTHONPATH': [
+        'lib64/python%(pyshortver)s/site-packages',
+        'lib64/python%(pyshortver)s/site-packages/vtkmodules'  # required by Trilinos Catalyst adapter
+    ],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fe2372cac92477a690e7dcd1f47137fb52545e63
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb
@@ -0,0 +1,351 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaView'
+version = '5.11.0'
+
+homepage = "http://www.paraview.org"
+description = "Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
+source_urls = [('http://www.paraview.org/paraview-downloads/%s' %
+                local_dwnlsfx_src)]
+sources = [("ParaView-v%(version)s.tar.gz")]
+
+patches = [
+    'cdireader_update_issue5715.patch',
+    'parflowreader_fix-nlohmann_merge6050.patch',
+]
+
+checksums = [
+    '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87',
+    '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2',  # cdireader patch
+    'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6',  # parflowreader patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('git', '2.36.0', '-nodocs'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Boost', '1.79.0'),
+    ('X11', '20220504'),
+    ('bzip2', '1.0.8'),
+    ('HDF5', '1.12.2'),
+    ('ADIOS2', '2.8.3'),
+    ('FFmpeg', '4.4.2'),
+    ('Embree', '3.13.5'),
+    ('OSPRay', '2.10.0'),
+    ('libpng', '1.6.37'),
+    ('expat', '2.4.8'),
+    ('freetype', '2.12.1'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libxml2', '2.9.13'),
+    ('LibTIFF', '4.3.0'),
+    ('zlib', '1.2.12'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-C++4', '4.3.1'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('nlohmann_json', '3.10.5'),  # for ParFlow plugin
+    ('libcdi', '2.1.1'),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('OpenGL', '2022a'),
+    ('Catalyst', '2.0.0-rc3'),
+    ('ParaViewData', '5.11.0'),
+    ('VTKData', '9.2.5'),
+]
+
+separate_build_dir = True
+
+# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time
+preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+
+########################################################################################
+# check ParaView Superbuild options                                                    #
+# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master                  #
+#                                                                                      #
+# check ParaView Spack options                                                         #
+# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py
+#                                                                                      #
+# check ParaView Build documenation                                                    #
+# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md  #
+########################################################################################
+
+local_buildsrc = '%(builddir)s/easybuild_obj'
+local_installsrc = '%(installdir)s/debugsrc'
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_CXX_STANDARD=11 '
+configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON '
+
+# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
+# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
+# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
+
+configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
+configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
+configopts += '-DPARAVIEW_USE_QT=ON '
+
+# --- tuning --- #
+# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328
+# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF '
+
+# --- web --- #
+configopts += '-DPARAVIEW_ENABLE_WEB=ON '
+configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES '
+
+# --- python --- #
+configopts += '-DPARAVIEW_USE_PYTHON=ON '
+configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python "
+
+configopts += '-DVTK_PYTHON_VERSION=3 '
+configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
+# visibility depends on VTK_NO_PYTHON_THREADS=OFF
+configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF '
+# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
+# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
+
+# --- VTKm --- #
+configopts += '-DPARAVIEW_USE_VTKM=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES '
+configopts += '-DVTKm_Vectorization=AVX2 '
+# configopts += '-DVTKm_ENABLE_KOKKOS=OFF '
+# configopts += '-DVTKm_ENABLE_TBB=OFF '
+# configopts += '-DVTKm_ENABLE_CUDA=ON '
+# configopts += '-DVTKm_ENABLE_LOGGING=ON '
+
+# --- parallel (on-node) --- #
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
+configopts += '-DVTK_MAX_THREADS=64 '
+configopts += '-DVTKm_ENABLE_OPENMP=ON '
+
+# --- parallel (distributed) --- #
+configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
+configopts += '-DPARAVIEW_USE_MPI=ON '
+configopts += '-DVTKm_ENABLE_MPI=ON '
+
+# --- IO --- #
+configopts += '-DXDMF_BUILD_MPI=ON '
+configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
+configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF '  # error: adios2.h not found
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON '  # req. ADIOS1
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1
+configopts += '-DVTKm_ENABLE_HDF5_IO=ON '
+
+# --- large data --- #
+configopts += '-DVTK_USE_64BIT_IDS=ON '
+
+# --- rendering --- #
+
+# OpenGL (hardware)
+#  https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
+#    If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
+#       otherwise VTK_USE_X must be ON and the build does not support headless,
+#       but can still support offscreen rendering.
+#    If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
+#       Then the build does not support onscreen rendering, but only headless rendering.
+#    If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
+#       or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
+#    If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
+#       then all the OpenGL and OSMesa variables should point to the Mesa libraries.
+#    Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
+#       should point to the system libraries providing both, typically the NVidia libraries.
+
+configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
+configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
+
+configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
+
+configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
+configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
+configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
+configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
+configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
+
+# OpenGL over X
+configopts += '-DVTK_USE_X=ON '  # OFF:headless rendering
+# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
+configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
+# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '
+
+# EGL (off-screen rendering with OpenGL, but without the need for X)
+# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
+# configopts += '-DVTK_OPENGL_HAS_EGL=ON '
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '  # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
+# #configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
+# #configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
+# #configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
+# #configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
+
+# OSMesa (software)
+# With OSMesa the DISPLAY variable has no meaning and is not needed
+# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
+# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
+# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
+
+# Raytracing
+configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
+configopts += '-DVTK_ENABLE_OSPRAY=ON '
+configopts += '-DVTK_ENABLE_VISRTX=OFF '
+
+configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
+configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 "
+configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON '
+
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES '
+
+# --- extra features --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON '
+
+configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
+configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES '
+
+configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES '
+
+# --- coupling --- #
+configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES '
+# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON '
+configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ '
+
+# --- development & testing --- #
+configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
+configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
+configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF '
+configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
+configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
+
+# --- external data --- #
+# https://cmake.org/cmake/help/latest/module/ExternalData.html
+# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
+# configopts += '-DCTEST_TEST_TIMEOUT=10800 '  # unknown setting
+# download inactivity, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 '
+# download abs. time, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 '
+# Exclude test data download from default 'all' target.
+configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON '
+# Local directory holding ExternalData objects in the layout %(algo)/%(hash).
+configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData '
+configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData '
+# Local directory holding the real data files of ExternalData.
+configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} '
+# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT
+
+# --- XDMF options --- #
+configopts += '-DXDMF_USE_BZIP2=ON '
+configopts += '-DXDMF_USE_GZIP=ON '
+
+# --- VTK external libraries --- #
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON '
+
+# --- ParaView Extra-Reader --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON '
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON '
+configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON '
+# configopts += '-DPARAVIEW_ENABLE_FIDES=ON '  # req. ADIOS2 as dependency
+# configopts += '-DPARAVIEW_ENABLE_GDAL=ON '  # req. GDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_LAS=ON '  # req. LAS as dependency
+# configopts += '-DPARAVIEW_ENABLE_PDAL=ON '  # req. PDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON '  # req. OpenVDB as dependency
+
+# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt
+configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES '
+# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Mili=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Silo=ON '  # req. external dependency
+# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503
+# configopts += '-DVISIT_BUILD_READER_Nek5000=ON '  # MR still open
+
+postinstallcmds = [
+    'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/',
+    # 'cp -a %s %s' % (local_buildsrc, local_installsrc),  # copy source from build dir to install dir
+    # '', # move debug info to separate files:
+    #       http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
+    # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
+    #     # change path to source in debug info
+]
+
+modextravars = {
+    'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk',
+    # 'CUDA_VISIBLE_DEVICES': '0,1',
+    # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3
+    'MESA_GL_VERSION_OVERRIDE': '3.3',
+    'MESA_GLSL_VERSION_OVERRIDE': '330',
+    #  OpenMP will choose an optimum number of threads by default, which is usually the number of cores
+    # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
+    #  threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
+    #  unset => OSPRAY uses all hardware threads
+    # 'OSPRAY_THREADS': '14',     # OSPRay <  2.0
+    # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
+    #  When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
+    #    https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
+    #    https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
+    #  more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
+    # max. threads used by OpenSWR (limited by number of hardware threads)
+    'KNOB_MAX_WORKER_THREADS': '65535',
+    #  details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
+    #  more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
+    'CATALYST_IMPLEMENTATION_NAME': 'paraview',
+    'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst',
+    # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize
+}
+
+modextrapaths = {
+    'PYTHONPATH': [
+        'lib64/python%(pyshortver)s/site-packages',
+        'lib64/python%(pyshortver)s/site-packages/vtkmodules'  # required by Trilinos Catalyst adapter
+    ],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6c56837996516b1153c1c31fcb9ffb71151c5fd4
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb
@@ -0,0 +1,352 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaView'
+version = '5.11.0'
+versionsuffix = '-EGL'
+
+homepage = "http://www.paraview.org"
+description = "Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
+source_urls = [('http://www.paraview.org/paraview-downloads/%s' %
+                local_dwnlsfx_src)]
+sources = [("ParaView-v%(version)s.tar.gz")]
+
+patches = [
+    'cdireader_update_issue5715.patch',
+    'parflowreader_fix-nlohmann_merge6050.patch',
+]
+
+checksums = [
+    '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87',
+    '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2',  # cdireader patch
+    'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6',  # parflowreader patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('git', '2.36.0', '-nodocs'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Boost', '1.79.0'),
+    ('X11', '20220504'),
+    ('bzip2', '1.0.8'),
+    ('HDF5', '1.12.2'),
+    ('ADIOS2', '2.8.3'),
+    ('FFmpeg', '4.4.2'),
+    ('Embree', '3.13.5'),
+    ('OSPRay', '2.10.0'),
+    ('libpng', '1.6.37'),
+    ('expat', '2.4.8'),
+    ('freetype', '2.12.1'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libxml2', '2.9.13'),
+    ('LibTIFF', '4.3.0'),
+    ('zlib', '1.2.12'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-C++4', '4.3.1'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('nlohmann_json', '3.10.5'),  # for ParFlow plugin
+    ('libcdi', '2.1.1'),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('OpenGL', '2022a'),
+    ('Catalyst', '2.0.0-rc3'),
+    ('ParaViewData', '5.11.0'),
+    ('VTKData', '9.2.5'),
+]
+
+separate_build_dir = True
+
+# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time
+preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+
+########################################################################################
+# check ParaView Superbuild options                                                    #
+# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master                  #
+#                                                                                      #
+# check ParaView Spack options                                                         #
+# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py
+#                                                                                      #
+# check ParaView Build documenation                                                    #
+# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md  #
+########################################################################################
+
+local_buildsrc = '%(builddir)s/easybuild_obj'
+local_installsrc = '%(installdir)s/debugsrc'
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_CXX_STANDARD=11 '
+configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON '
+
+# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
+# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
+# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
+
+configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
+configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
+configopts += '-DPARAVIEW_USE_QT=OFF '
+
+# --- tuning --- #
+# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328
+# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF '
+
+# --- web --- #
+configopts += '-DPARAVIEW_ENABLE_WEB=ON '
+configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES '
+
+# --- python --- #
+configopts += '-DPARAVIEW_USE_PYTHON=ON '
+configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python "
+
+configopts += '-DVTK_PYTHON_VERSION=3 '
+configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
+# visibility depends on VTK_NO_PYTHON_THREADS=OFF
+configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF '
+# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
+# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
+
+# --- VTKm --- #
+configopts += '-DPARAVIEW_USE_VTKM=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES '
+configopts += '-DVTKm_Vectorization=AVX2 '
+# configopts += '-DVTKm_ENABLE_KOKKOS=OFF '
+# configopts += '-DVTKm_ENABLE_TBB=OFF '
+# configopts += '-DVTKm_ENABLE_CUDA=ON '
+# configopts += '-DVTKm_ENABLE_LOGGING=ON '
+
+# --- parallel (on-node) --- #
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
+configopts += '-DVTK_MAX_THREADS=64 '
+configopts += '-DVTKm_ENABLE_OPENMP=ON '
+
+# --- parallel (distributed) --- #
+configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
+configopts += '-DPARAVIEW_USE_MPI=ON '
+configopts += '-DVTKm_ENABLE_MPI=ON '
+
+# --- IO --- #
+configopts += '-DXDMF_BUILD_MPI=ON '
+configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
+configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF '  # error: adios2.h not found
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON '  # req. ADIOS1
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1
+configopts += '-DVTKm_ENABLE_HDF5_IO=ON '
+
+# --- large data --- #
+configopts += '-DVTK_USE_64BIT_IDS=ON '
+
+# --- rendering --- #
+
+# OpenGL (hardware)
+#  https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
+#    If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
+#       otherwise VTK_USE_X must be ON and the build does not support headless,
+#       but can still support offscreen rendering.
+#    If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
+#       Then the build does not support onscreen rendering, but only headless rendering.
+#    If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
+#       or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
+#    If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
+#       then all the OpenGL and OSMesa variables should point to the Mesa libraries.
+#    Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
+#       should point to the system libraries providing both, typically the NVidia libraries.
+
+configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
+configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
+
+configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
+
+configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
+configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
+configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
+configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
+configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
+
+# OpenGL over X
+# configopts += '-DVTK_USE_X=ON '  # OFF:headless rendering
+# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '  # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+
+# EGL (off-screen rendering with OpenGL, but without the need for X)
+# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
+configopts += '-DVTK_OPENGL_HAS_EGL=ON '
+# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '
+configopts += '-DVTK_USE_X=OFF '
+configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
+# configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
+# configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
+# configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
+# configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
+
+# OSMesa (software)
+# With OSMesa the DISPLAY variable has no meaning and is not needed
+# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
+# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
+# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
+
+# Raytracing
+configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
+configopts += '-DVTK_ENABLE_OSPRAY=ON '
+configopts += '-DVTK_ENABLE_VISRTX=OFF '
+
+configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
+configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 "
+configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON '
+
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES '
+
+# --- extra features --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON '
+
+configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
+configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES '
+
+configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES '
+
+# --- coupling --- #
+configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES '
+# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON '
+configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ '
+
+# --- development & testing --- #
+configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
+configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
+configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF '
+configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
+configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
+
+# --- external data --- #
+# https://cmake.org/cmake/help/latest/module/ExternalData.html
+# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
+# configopts += '-DCTEST_TEST_TIMEOUT=10800 '  # unknown setting
+# download inactivity, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 '
+# download abs. time, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 '
+# Exclude test data download from default 'all' target.
+configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON '
+# Local directory holding ExternalData objects in the layout %(algo)/%(hash).
+configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData '
+configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData '
+# Local directory holding the real data files of ExternalData.
+configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} '
+# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT
+
+# --- XDMF options --- #
+configopts += '-DXDMF_USE_BZIP2=ON '
+configopts += '-DXDMF_USE_GZIP=ON '
+
+# --- VTK external libraries --- #
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON '
+
+# --- ParaView Extra-Reader --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON '
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON '
+configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON '
+# configopts += '-DPARAVIEW_ENABLE_FIDES=ON '  # req. ADIOS2 as dependency
+# configopts += '-DPARAVIEW_ENABLE_GDAL=ON '  # req. GDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_LAS=ON '  # req. LAS as dependency
+# configopts += '-DPARAVIEW_ENABLE_PDAL=ON '  # req. PDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON '  # req. OpenVDB as dependency
+
+# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt
+configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES '
+# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Mili=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Silo=ON '  # req. external dependency
+# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503
+# configopts += '-DVISIT_BUILD_READER_Nek5000=ON '  # MR still open
+
+postinstallcmds = [
+    'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/',
+    # 'cp -a %s %s' % (local_buildsrc, local_installsrc),  # copy source from build dir to install dir
+    # '', # move debug info to separate files:
+    #       http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
+    # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
+    #     # change path to source in debug info
+]
+
+modextravars = {
+    'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk',
+    # 'CUDA_VISIBLE_DEVICES': '0,1',
+    # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3
+    'MESA_GL_VERSION_OVERRIDE': '3.3',
+    'MESA_GLSL_VERSION_OVERRIDE': '330',
+    #  OpenMP will choose an optimum number of threads by default, which is usually the number of cores
+    # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
+    #  threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
+    #  unset => OSPRAY uses all hardware threads
+    # 'OSPRAY_THREADS': '14',     # OSPRay <  2.0
+    # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
+    #  When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
+    #    https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
+    #    https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
+    #  more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
+    # max. threads used by OpenSWR (limited by number of hardware threads)
+    'KNOB_MAX_WORKER_THREADS': '65535',
+    #  details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
+    #  more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
+    'CATALYST_IMPLEMENTATION_NAME': 'paraview',
+    'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst',
+    # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize
+}
+
+modextrapaths = {
+    'PYTHONPATH': [
+        'lib64/python%(pyshortver)s/site-packages',
+        'lib64/python%(pyshortver)s/site-packages/vtkmodules'  # required by Trilinos Catalyst adapter
+    ],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..89f2cfcb7252526b387287430c9edb39d89425c4
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb
@@ -0,0 +1,351 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaView'
+version = '5.11.0'
+
+homepage = "http://www.paraview.org"
+description = "Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
+source_urls = [('http://www.paraview.org/paraview-downloads/%s' %
+                local_dwnlsfx_src)]
+sources = [("ParaView-v%(version)s.tar.gz")]
+
+patches = [
+    'cdireader_update_issue5715.patch',
+    'parflowreader_fix-nlohmann_merge6050.patch',
+]
+
+checksums = [
+    '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87',
+    '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2',  # cdireader patch
+    'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6',  # parflowreader patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('git', '2.36.0', '-nodocs'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Boost', '1.79.0'),
+    ('X11', '20220504'),
+    ('bzip2', '1.0.8'),
+    ('HDF5', '1.12.2'),
+    ('ADIOS2', '2.8.3'),
+    ('FFmpeg', '4.4.2'),
+    ('Embree', '3.13.5'),
+    ('OSPRay', '2.10.0'),
+    ('libpng', '1.6.37'),
+    ('expat', '2.4.8'),
+    ('freetype', '2.12.1'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('libxml2', '2.9.13'),
+    ('LibTIFF', '4.3.0'),
+    ('zlib', '1.2.12'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-C++4', '4.3.1'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('nlohmann_json', '3.10.5'),  # for ParFlow plugin
+    ('libcdi', '2.1.1'),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('OpenGL', '2022a'),
+    ('Catalyst', '2.0.0-rc3'),
+    ('ParaViewData', '5.11.0'),
+    ('VTKData', '9.2.5'),
+]
+
+separate_build_dir = True
+
+# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time
+preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && "
+
+########################################################################################
+# check ParaView Superbuild options                                                    #
+# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master                  #
+#                                                                                      #
+# check ParaView Spack options                                                         #
+# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py
+#                                                                                      #
+# check ParaView Build documenation                                                    #
+# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md  #
+########################################################################################
+
+local_buildsrc = '%(builddir)s/easybuild_obj'
+local_installsrc = '%(installdir)s/debugsrc'
+
+# --- general settings --- #
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc)
+configopts += '-DCMAKE_CXX_STANDARD=11 '
+configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON '
+
+# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
+# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
+# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
+
+configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
+configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
+configopts += '-DPARAVIEW_USE_QT=ON '
+
+# --- tuning --- #
+# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328
+# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF '
+# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF '
+
+# --- web --- #
+configopts += '-DPARAVIEW_ENABLE_WEB=ON '
+configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES '
+
+# --- python --- #
+configopts += '-DPARAVIEW_USE_PYTHON=ON '
+configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python "
+
+configopts += '-DVTK_PYTHON_VERSION=3 '
+configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
+# visibility depends on VTK_NO_PYTHON_THREADS=OFF
+configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF '
+# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
+# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
+
+# --- VTKm --- #
+configopts += '-DPARAVIEW_USE_VTKM=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES '
+configopts += '-DVTKm_Vectorization=AVX2 '
+# configopts += '-DVTKm_ENABLE_KOKKOS=OFF '
+# configopts += '-DVTKm_ENABLE_TBB=OFF '
+# configopts += '-DVTKm_ENABLE_CUDA=ON '
+# configopts += '-DVTKm_ENABLE_LOGGING=ON '
+
+# --- parallel (on-node) --- #
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
+configopts += '-DVTK_MAX_THREADS=64 '
+configopts += '-DVTKm_ENABLE_OPENMP=ON '
+
+# --- parallel (distributed) --- #
+configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
+configopts += '-DPARAVIEW_USE_MPI=ON '
+configopts += '-DVTKm_ENABLE_MPI=ON '
+
+# --- IO --- #
+configopts += '-DXDMF_BUILD_MPI=ON '
+configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
+configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF '  # error: adios2.h not found
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON '  # req. ADIOS1
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1
+configopts += '-DVTKm_ENABLE_HDF5_IO=ON '
+
+# --- large data --- #
+configopts += '-DVTK_USE_64BIT_IDS=ON '
+
+# --- rendering --- #
+
+# OpenGL (hardware)
+#  https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
+#    If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
+#       otherwise VTK_USE_X must be ON and the build does not support headless,
+#       but can still support offscreen rendering.
+#    If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
+#       Then the build does not support onscreen rendering, but only headless rendering.
+#    If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
+#       or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
+#    If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
+#       then all the OpenGL and OSMesa variables should point to the Mesa libraries.
+#    Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
+#       should point to the system libraries providing both, typically the NVidia libraries.
+
+configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
+configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
+
+configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
+configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
+# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
+
+configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
+configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
+configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
+configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
+configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
+
+# OpenGL over X
+configopts += '-DVTK_USE_X=ON '  # OFF:headless rendering
+# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
+configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
+# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '
+
+# EGL (off-screen rendering with OpenGL, but without the need for X)
+# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
+# configopts += '-DVTK_OPENGL_HAS_EGL=ON '
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF '  # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
+# #configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
+# #configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
+# #configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
+# #configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
+
+# OSMesa (software)
+# With OSMesa the DISPLAY variable has no meaning and is not needed
+# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
+# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
+# configopts += '-DVTK_USE_X=OFF '
+# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
+# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
+# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
+
+# Raytracing
+configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
+configopts += '-DVTK_ENABLE_OSPRAY=ON '
+configopts += '-DVTK_ENABLE_VISRTX=OFF '
+
+configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
+configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 "
+configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON '
+
+# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES '
+
+# --- extra features --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON '
+
+configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
+configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES '
+
+configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES '
+configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES '
+# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES '
+
+# --- coupling --- #
+configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES '
+# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON '
+configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ '
+
+# --- development & testing --- #
+configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
+configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
+configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF '
+configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
+configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
+
+# --- external data --- #
+# https://cmake.org/cmake/help/latest/module/ExternalData.html
+# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
+# configopts += '-DCTEST_TEST_TIMEOUT=10800 '  # unknown setting
+# download inactivity, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 '
+# download abs. time, 0 = no timeout
+configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 '
+# Exclude test data download from default 'all' target.
+configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON '
+# Local directory holding ExternalData objects in the layout %(algo)/%(hash).
+configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData '
+configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData '
+# Local directory holding the real data files of ExternalData.
+configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} '
+# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT
+
+# --- XDMF options --- #
+configopts += '-DXDMF_USE_BZIP2=ON '
+configopts += '-DXDMF_USE_GZIP=ON '
+
+# --- VTK external libraries --- #
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON '
+configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON '
+
+# --- ParaView Extra-Reader --- #
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON '
+configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON '
+configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON '
+# configopts += '-DPARAVIEW_ENABLE_FIDES=ON '  # req. ADIOS2 as dependency
+# configopts += '-DPARAVIEW_ENABLE_GDAL=ON '  # req. GDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_LAS=ON '  # req. LAS as dependency
+# configopts += '-DPARAVIEW_ENABLE_PDAL=ON '  # req. PDAL as dependency
+# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON '  # req. OpenVDB as dependency
+
+# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt
+configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON '
+configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES '
+# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Mili=ON '  # req. external dependency
+# configopts += '-DVISIT_BUILD_READER_Silo=ON '  # req. external dependency
+# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503
+# configopts += '-DVISIT_BUILD_READER_Nek5000=ON '  # MR still open
+
+postinstallcmds = [
+    'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/',
+    # 'cp -a %s %s' % (local_buildsrc, local_installsrc),  # copy source from build dir to install dir
+    # '', # move debug info to separate files:
+    #       http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
+    # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
+    #     # change path to source in debug info
+]
+
+modextravars = {
+    'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk',
+    # 'CUDA_VISIBLE_DEVICES': '0,1',
+    # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3
+    'MESA_GL_VERSION_OVERRIDE': '3.3',
+    'MESA_GLSL_VERSION_OVERRIDE': '330',
+    #  OpenMP will choose an optimum number of threads by default, which is usually the number of cores
+    # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
+    #  threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
+    #  unset => OSPRAY uses all hardware threads
+    # 'OSPRAY_THREADS': '14',     # OSPRay <  2.0
+    # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
+    #  When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
+    #    https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
+    #    https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
+    #  more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
+    # max. threads used by OpenSWR (limited by number of hardware threads)
+    'KNOB_MAX_WORKER_THREADS': '65535',
+    #  details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
+    #  more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
+    'CATALYST_IMPLEMENTATION_NAME': 'paraview',
+    'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst',
+    # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize
+}
+
+modextrapaths = {
+    'PYTHONPATH': [
+        'lib64/python%(pyshortver)s/site-packages',
+        'lib64/python%(pyshortver)s/site-packages/vtkmodules'  # required by Trilinos Catalyst adapter
+    ],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch b/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch
new file mode 100644
index 0000000000000000000000000000000000000000..102dab4802da16080a50703f159a3d51f1fd343a
--- /dev/null
+++ b/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch
@@ -0,0 +1,3165 @@
+From 26251ad52273fc9d3aad86faa7cb0f56d6ebbdef Mon Sep 17 00:00:00 2001
+From: Florian Ziemen <ziemen@dkrz.de>
+Date: Fri, 22 Apr 2022 17:00:09 +0200
+Subject: [PATCH 1/5] Added support for multiple 2d levels in one file.
+
+CDI can assign different vertical axis id to 2d fields depending on
+netcdf atrribues of the variable (level_type=abc).
+We better accept that they all are 2d and merge them into one 2D thing.
+
+working towards support for multiple grids -- problems w/ ext grids.
+
+External grid files currently are trouble.
+
+Basically, the grid ids are diffent in the files, and we need to keep
+track of that and of which file we are looking at.
+
+Will be solved by having the grid and the data open simultaneously in
+commits to come.
+
+Starting to move file related things outside the main reader.
+
+Fixups for grid handling
+
+fixed a segfault in parallel mode on large grids
+
+double clon_vert[size2] is illegal in c++, as size2 is not known at
+compile time. On DKRZ's levante it leads to a segfault when accessing this
+for large (5km global) grids in parallel operation.
+
+Do not use BuildVarArrays for checking whether the variables are valid
+
+BuildVarArrays enables all variables in the SelectionStatus
+
+Caught a SetDimensions in statefile loading
+
+SetDimensinos gets called before setting the file name when loading a
+state file. This gets rid of a warning message in that case.
+---
+ Plugins/CDIReader/Reader/CMakeLists.txt   |   1 +
+ Plugins/CDIReader/Reader/DataSource.cxx   |  56 +++
+ Plugins/CDIReader/Reader/DataSource.h     |  39 ++
+ Plugins/CDIReader/Reader/vtkCDIReader.cxx | 572 +++++++++++-----------
+ Plugins/CDIReader/Reader/vtkCDIReader.h   |  26 +-
+ 5 files changed, 417 insertions(+), 277 deletions(-)
+ create mode 100644 Plugins/CDIReader/Reader/DataSource.cxx
+ create mode 100644 Plugins/CDIReader/Reader/DataSource.h
+
+diff --git a/Plugins/CDIReader/Reader/CMakeLists.txt b/Plugins/CDIReader/Reader/CMakeLists.txt
+index 274104664b..7a1a985fe0 100644
+--- a/Plugins/CDIReader/Reader/CMakeLists.txt
++++ b/Plugins/CDIReader/Reader/CMakeLists.txt
+@@ -4,6 +4,7 @@ set(classes
+ set (sources
+     cdi_tools.cxx
+     projections.cxx
++    DataSource.cxx
+     )
+ set (private_headers
+     cdi_tools.h
+diff --git a/Plugins/CDIReader/Reader/DataSource.cxx b/Plugins/CDIReader/Reader/DataSource.cxx
+new file mode 100644
+index 0000000000..4f5075bb58
+--- /dev/null
++++ b/Plugins/CDIReader/Reader/DataSource.cxx
+@@ -0,0 +1,56 @@
++//#include "cdi_tools.h"
++#include "DataSource.h"
++#include "cdi.h"
++
++namespace DataSource
++{
++
++CDIObject::CDIObject(std::string newURI)
++{
++  this->openURI(newURI);
++}
++
++int CDIObject::openURI(std::string newURI)
++{
++  this->setVoid();
++  this->URI = newURI;
++
++  // check if we got either *.Grib or *.nc data
++  std::string check = this->URI.substr((URI.size() - 4), this->URI.size());
++  if (check == "grib" || check == ".grb")
++  {
++    this->type = GRIB;
++  }
++  else
++  {
++    this->type = NC;
++  }
++
++  this->StreamID = streamOpenRead(this->URI.c_str());
++  if (this->StreamID < 0)
++  {
++    this->setVoid();
++    return 0;
++  }
++
++  this->VListID = streamInqVlist(this->StreamID);
++  return 1;
++}
++
++void CDIObject::setVoid()
++{
++  if (this->StreamID > -1)
++    streamClose(this->StreamID);
++
++  StreamID = -1;
++  VListID = -1;
++  type = VOID;
++}
++
++CDIObject::~CDIObject()
++{
++  URI = "";
++  this->setVoid();
++}
++
++};
+diff --git a/Plugins/CDIReader/Reader/DataSource.h b/Plugins/CDIReader/Reader/DataSource.h
+new file mode 100644
+index 0000000000..f3749f2f21
+--- /dev/null
++++ b/Plugins/CDIReader/Reader/DataSource.h
+@@ -0,0 +1,39 @@
++#ifndef CDI_DATA_SOURCE
++#define CDI_DATA_SOURCE
++
++#include <string>
++
++namespace DataSource
++{
++class CDIObject
++{
++  enum stype
++  {
++    VOID,
++    GRIB,
++    NC
++  };
++  std::string URI;
++  int StreamID;
++  int VListID;
++  stype type;
++
++public:
++  void setVoid();
++  CDIObject(std::string URI);
++  CDIObject()
++  {
++    this->StreamID = -1;
++    this->setVoid();
++  }
++  ~CDIObject();
++  int openURI(std::string URI);
++  std::string getURI() const { return URI; }
++  int getStreamID() const { return StreamID; }
++  int getVListID() const { return VListID; }
++  stype getType() const { return type; }
++  bool isVoid() const { return this->type == VOID; }
++};
++
++};
++#endif // CDI_DATA_SOURCE
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+index 2a1916bb61..28bd568721 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+@@ -57,6 +57,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "vtksys/FStream.hxx"
+ #include "vtksys/SystemTools.hxx"
+ 
++#include "DataSource.h"
+ #include "cdi_tools.h"
+ 
+ #include <set>
+@@ -176,8 +177,6 @@ vtkCDIReader::vtkCDIReader()
+   this->SetNumberOfInputPorts(0);
+   this->SetNumberOfOutputPorts(1);
+ 
+-  this->StreamID = -1;
+-  this->VListID = -1;
+   this->VariableDimensions = vtkSmartPointer<vtkStringArray>::New();
+   this->AllDimensions = vtkSmartPointer<vtkStringArray>::New();
+   this->AllVariableArrayNames = vtkSmartPointer<vtkStringArray>::New();
+@@ -231,13 +230,6 @@ void vtkCDIReader::DestroyData()
+ vtkCDIReader::~vtkCDIReader()
+ {
+   vtkDebugMacro("Destructing vtkCDIReader...");
+-  this->SetFileName(nullptr);
+-
+-  if (this->StreamID >= 0)
+-  {
+-    streamClose(this->StreamID);
+-    this->StreamID = -1;
+-  }
+ 
+   this->DestroyData();
+ 
+@@ -307,9 +299,13 @@ int vtkCDIReader::RequestInformation(
+ 
+   vtkDebugMacro("In vtkCDIReader::RequestInformation setting VerticalLevelRange");
+   this->VerticalLevelRange[0] = 0;
+-  this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1;
++  if (VerticalLevelRange[1] != this->MaximumNVertLevels - 1)
++  {
++    this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1;
++    this->Modified();
++  }
+ 
+-  if (!this->BuildVarArrays())
++  if (!this->GetVars())
+   {
+     return 0;
+   }
+@@ -334,9 +330,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+   if ((this->FileSeriesNumber == 0) && (!this->TimeSet))
+   {
+ 
+-    int taxisID = vlistInqTaxis(this->VListID);
++    int taxisID = vlistInqTaxis(this->DataFile.getVListID());
+     int calendar = taxisInqCalendar(taxisID);
+-    streamInqTimestep(this->StreamID, 0);
++    streamInqTimestep(this->DataFile.getStreamID(), 0);
+     int vdate = taxisInqVdate(taxisID);
+     int vtime = taxisInqVtime(taxisID);
+ 
+@@ -371,9 +367,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+   int end = start + this->NumberOfTimeSteps;
+   for (int step = start; step < end; step++)
+   {
+-    int taxisID = vlistInqTaxis(this->VListID);
++    int taxisID = vlistInqTaxis(this->DataFile.getVListID());
+     int calendar = taxisInqCalendar(taxisID);
+-    streamInqTimestep(this->StreamID, counter);
++    streamInqTimestep(this->DataFile.getStreamID(), counter);
+     int vdate = taxisInqVdate(taxisID);
+     int vtime = taxisInqVtime(taxisID);
+     double timevalue = date_to_julday(calendar, vdate);
+@@ -629,7 +625,7 @@ int vtkCDIReader::RegenerateVariables()
+   this->NumberOfCellVars = 0;
+   this->NumberOfDomainVars = 0;
+ 
+-  if (!this->GetDims())
++  if (this->FileName.empty() || !this->GetDims())
+   {
+     return 0;
+   }
+@@ -769,9 +765,8 @@ void vtkCDIReader::SetDefaults()
+   this->DTime = 0;
+   this->FileSeriesNumber = 0;
+   this->NumberOfFiles = 1;
+-  this->NeedHorizontalGridFile = false;
+   this->NeedVerticalGridFile = false;
+-
++  this->GridID = -1;
+   this->NumberOfProcesses = 1;
+ 
+   this->BuildDomainArrays = false;
+@@ -786,50 +781,14 @@ void vtkCDIReader::SetDefaults()
+ //----------------------------------------------------------------------------
+ // Get dimensions of key NetCDF variables
+ //----------------------------------------------------------------------------
+-int vtkCDIReader::OpenFile()
+-{
+-  // check if we got either *.Grib or *.nc data
+-  std::string file = this->FileName;
+-  std::string check = file.substr((file.size() - 4), file.size());
+-  if (check == "grib" || check == ".grb")
+-  {
+-    this->Grib = true;
+-  }
+-  else
+-  {
+-    this->Grib = false;
+-  }
+-
+-  if (this->StreamID >= 0)
+-  {
+-    streamClose(this->StreamID);
+-    this->StreamID = -1;
+-    this->VListID = -1;
+-  }
+-
+-  this->StreamID = streamOpenRead(this->FileNameGrid.c_str());
+-  if (this->StreamID < 0)
+-  {
+-    return 0;
+-  }
+-
+-  vtkDebugMacro("In vtkCDIReader::RequestInformation read file okay");
+-  this->VListID = streamInqVlist(this->StreamID);
+-
+-  int nvars = vlistNvars(this->VListID);
+-  char varname[CDI_MAX_NAME];
+-  for (int varID = 0; varID < nvars; ++varID)
+-  {
+-    vlistInqVarName(this->VListID, varID, varname);
+-  }
+-
+-  return 1;
+-}
+ 
+ //----------------------------------------------------------------------------
+ void vtkCDIReader::GuessGridFile()
+ {
+-  std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName) + "/grid.nc";
++  std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName);
++  if (fallback.empty())
++    fallback = ".";
++  fallback += "/grid.nc";
+ 
+   std::string guess;
+   if (!this->Grib)
+@@ -839,15 +798,22 @@ void vtkCDIReader::GuessGridFile()
+   {
+     if (vtksys::SystemTools::TestFileAccess(guess, vtksys::TEST_FILE_READ))
+     {
+-      this->FileNameGrid = guess;
+-      return;
++      this->GridFile.openURI(guess);
++      if (this->GridFile.isVoid())
++      {
++        vtkWarningMacro("Cannot handle grid file "
++          << guess << " indicated by grid_file_uri attribute in " << this->FileName
++          << " Trying fallback guess " << fallback);
++      }
++      else
++        return;
+     }
+     else
+-      vtkWarningMacro("Could not find grid file "
++      vtkWarningMacro("Cannot open grid file "
+         << guess << " indicated by grid_file_uri attribute in " << this->FileName
+         << " Trying fallback guess " << fallback);
+   }
+-  this->FileNameGrid = fallback;
++  this->GridFile.openURI(fallback);
+ }
+ 
+ //----------------------------------------------------------------------------
+@@ -855,147 +821,132 @@ void vtkCDIReader::GuessGridFile()
+ //----------------------------------------------------------------------------
+ int vtkCDIReader::GetDims()
+ {
+-  if (!this->FileName.empty())
++  if (this->FileName.empty())
+   {
+-    this->FileNameGrid = this->FileName;
+-    if (this->VListID < 0 || this->StreamID < 0)
+-    {
+-      if (!this->OpenFile())
+-      {
+-        return 0;
+-      }
+-    }
+-
+-    this->ReadHorizontalGridData();
+-    if (this->NeedHorizontalGridFile)
+-    {
+-      // if there is no grid information in the data file, try opening
+-      // an additional grid file named grid.nc in the same directory to
+-      // read in the grid information
+-      if (this->StreamID >= 0)
+-      {
+-        streamClose(this->StreamID);
+-        this->StreamID = -1;
+-        this->VListID = -1;
+-      }
++    vtkErrorMacro("No file name provided. Cannot get dimensions");
++    return 0;
++  }
+ 
+-      char* directory = new char[strlen(this->FileName.c_str()) + 1];
+-      strcpy(directory, this->FileName.c_str());
++  DataFile.openURI(FileName);
++  if (DataFile.isVoid())
++  {
++    vtkErrorMacro("GetDims: Could not open " << DataFile.getURI());
++    return 0;
++  }
+ 
+-      this->GuessGridFile();
+-      if (!this->OpenFile())
+-      {
+-        return 0;
+-      }
+-      if (!this->ReadHorizontalGridData())
+-      {
+-        vtkErrorMacro("Couldn't open grid information in data nor in the grid file.");
+-        return 0;
+-      }
++  if (GridFile.isVoid())
++    GridFile.openURI(FileName);
++  if (GridFile.isVoid())
++  {
++    vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried " << GridFile.getURI());
++    return 0;
++  }
+ 
+-      this->FileNameGrid = this->FileName;
+-      if (!this->OpenFile())
+-      {
+-        return 0;
+-      }
++  if (!this->ReadHorizontalGridData())
++  {
++    this->GuessGridFile();
++    if (!this->ReadHorizontalGridData())
++    {
++      vtkErrorMacro("Could not get horizontal Grid. \nTried " << GridFile.getURI());
++      return 0;
+     }
++  }
+ 
+-    this->ReadVerticalGridData();
+-    if (this->NeedVerticalGridFile)
+-    {
+-      // if there is no grid information in the data file, try opening
+-      // an additional grid file named grid.nc in the same directory to
+-      // read in the grid information
+-      if (this->StreamID >= 0)
+-      {
+-        streamClose(this->StreamID);
+-        this->StreamID = -1;
+-        this->VListID = -1;
+-      }
++  VGridFile.openURI(FileName);
++  int found = ReadVerticalGridData();
++  if (!found)
++  {
++    VGridFile.openURI(GridFile.getURI());
++    found = ReadVerticalGridData();
++  }
+ 
+-      char* directory = new char[strlen(this->FileName.c_str()) + 1];
+-      strcpy(directory, this->FileName.c_str());
+-      if (!this->OpenFile())
+-      {
+-        return 0;
+-      }
++  if (!found)
++  {
++    vtkErrorMacro("Could not get Vertical grid");
++    return 0;
++  }
+ 
+-      if (!this->ReadVerticalGridData())
+-      {
+-        vtkDebugMacro("Couldn't neither open grid information within the data netCDF file, nor "
+-                      "in the grid.nc file.");
+-        vtkErrorMacro("Couldn't neither open grid information within the data netCDF file, nor "
+-                      "in the grid.nc file.");
+-        return 0;
+-      }
++  this->FillGridDimensions();
+ 
+-      this->FileNameGrid = this->FileName;
+-      if (!this->OpenFile())
++  try
++  {
++    if (this->DimensionSelection >= 0)
++    {
++      if (DimensionSelection >= DimensionSets.size())
+       {
++        vtkErrorMacro("Trying to select inexistent dimensionset "
++          << DimensionSelection << " " << DimensionSets.size() << " are available.");
+         return 0;
+       }
++      for (int i = 0; i < Grids.size(); i++)
++        if (this->DimensionSets.at(this->DimensionSelection).GridSize == Grids.at(i).Size)
++        {
++          this->DimensionSets.at(this->DimensionSelection).GridID = Grids.at(i).GridID;
++          this->GridID = i;
++        }
++      this->ZAxisID = this->DimensionSets.at(this->DimensionSelection).ZAxisID;
++      vtkDebugMacro("NEW ZAxisID" << ZAxisID << " from "
++                                  << this->DimensionSets.at(this->DimensionSelection).ZAxisID);
+     }
++  }
++  catch (const std::out_of_range& oor)
++  {
++    vtkErrorMacro("Out of Range error in GetDims trying to set Grid and ZAxisID: " << oor.what());
++    return 0;
++  }
+ 
+-    if (this->DimensionSelection > 0)
+-    {
+-      vlistNgrids(this->VListID);
+-      int nzaxis = vlistNzaxis(this->VListID);
+-
+-      this->GridID = vlistGrid(this->VListID, this->DimensionSelection / nzaxis);
+-      this->ZAxisID = vlistZaxis(
+-        this->VListID, this->DimensionSelection - (nzaxis * this->DimensionSelection / nzaxis));
+-    }
+-
+-    if (this->GridID != -1)
+-    {
+-      this->NumberOfCells = static_cast<int>(gridInqSize(this->GridID));
+-
+-      if (this->NumberOfPoints and
+-        this->NumberOfPoints != static_cast<int>(gridInqSize(this->GridID)))
+-        vtkDebugMacro("GetDims: Changing number of points from  "
+-          << this->NumberOfPoints << " to " << static_cast<int>(gridInqSize(this->GridID)));
+-      this->NumberOfPoints = static_cast<int>(gridInqSize(this->GridID));
+-      this->PointsPerCell = gridInqNvertex(this->GridID);
+-    }
+-
+-    int ntsteps = 0;
+-    if (this->Grib)
+-    {
+-      while (streamInqTimestep(this->StreamID, ntsteps))
+-        ntsteps++;
+-    }
+-    else
++  try
++  {
++    if (GridID != -1 && Grids.at(this->GridID).GridID != -1)
+     {
+-      ntsteps = vlistNtsteps(this->VListID);
+-    }
+-    this->NumberOfTimeSteps = ntsteps;
++      this->NumberOfCells = static_cast<int>(Grids.at(GridID).Size);
+ 
+-    this->MaximumNVertLevels = 1;
+-    if (this->ZAxisID != -1)
+-    {
+-      this->MaximumNVertLevels = zaxisInqSize(this->ZAxisID);
++      if (this->NumberOfPoints and this->NumberOfPoints != this->NumberOfCells)
++        vtkDebugMacro("GetDims: Changing number of points from  " << this->NumberOfPoints << " to "
++                                                                  << this->NumberOfCells);
++      this->NumberOfPoints = this->NumberOfCells;
++      this->PointsPerCell = Grids.at(this->GridID).PointsPerCell;
++      vtkDebugMacro("GetDims: Found PointsPerCell to be  " << this->PointsPerCell << " for grid  "
++                                                           << this->GridID);
+     }
++  }
++  catch (const std::out_of_range& oor)
++  {
++    vtkErrorMacro("Out of Range error in GetDims trying to set NumberOfPoints " << oor.what());
++    vtkErrorMacro("Grids.size " << Grids.size() << "\t GridID " << GridID);
++    return 0;
++  }
+ 
+-    this->FillGridDimensions();
++  int ntsteps = 0;
++  if (this->Grib)
++  {
++    while (streamInqTimestep(this->DataFile.getStreamID(), ntsteps))
++      ntsteps++;
+   }
+   else
+   {
+-    vtkDebugMacro("No Filename yet set!");
++    ntsteps = vlistNtsteps(this->DataFile.getVListID());
++  }
++  this->NumberOfTimeSteps = ntsteps;
++
++  this->MaximumNVertLevels = 1;
++  if (this->ZAxisID != -1)
++  {
++    this->MaximumNVertLevels = zaxisInqSize(this->ZAxisID);
+   }
+ 
+   return 1;
+ }
+ 
+-//----------------------------------------------------------------------------
++//---------------------------------------------------------------------------------------------------
+ // Read Horizontal Grid Data
+-//----------------------------------------------------------------------------
++// Checks if there is at least one grid with >= 3 vertices, and if yes, sets GridID to this grid's
++// ID
++//---------------------------------------------------------------------------------------------------
+ int vtkCDIReader::ReadHorizontalGridData()
+ {
+-  int vlistID_l = this->VListID;
+-  this->GridID = -1;
+-  this->ZAxisID = -1;
+-  this->SurfID = -1;
+-
++  Grids.resize(0);
++  int vlistID_l = this->GridFile.getVListID();
+   int ngrids = vlistNgrids(vlistID_l);
+   for (int i = 0; i < ngrids; ++i)
+   {
+@@ -1004,17 +955,13 @@ int vtkCDIReader::ReadHorizontalGridData()
+ 
+     if (nv >= 3) //  ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED)
+     {
+-      this->GridID = gridID_l;
+-      break;
++      Grid grid{ .GridID = gridID_l, .Size = gridInqSize(gridID_l), .PointsPerCell = nv };
++      Grids.push_back(grid);
+     }
+   }
+ 
+-  if (this->GridID == -1)
+-  {
+-    this->NeedHorizontalGridFile = true;
++  if (Grids.size() == 0)
+     return 0;
+-  }
+-
+   return 1;
+ }
+ 
+@@ -1024,37 +971,30 @@ int vtkCDIReader::ReadHorizontalGridData()
+ int vtkCDIReader::ReadVerticalGridData()
+ {
+   this->ZAxisID = -1;
+-  this->SurfID = -1;
+-  int nzaxis = vlistNzaxis(this->VListID);
+-
++  int nzaxis = vlistNzaxis(this->VGridFile.getVListID());
++  int found = 0;
+   for (int i = 0; i < nzaxis; ++i)
+   {
+-    int zaxisID_l = vlistZaxis(this->VListID, i);
++    int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i);
+     if (zaxisInqSize(zaxisID_l) == 1 || zaxisInqType(zaxisID_l) == ZAXIS_SURFACE)
+     {
+-      this->SurfID = zaxisID_l;
+-      this->ZAxisID = zaxisID_l;
+-      break;
++      this->SurfIDs.insert(zaxisID_l);
++
++      found = 1;
+     }
+   }
+ 
+   for (int i = 0; i < nzaxis; ++i)
+   {
+-    int zaxisID_l = vlistZaxis(this->VListID, i);
++    int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i);
+     if (zaxisInqSize(zaxisID_l) > 1)
+     {
+-      this->ZAxisID = zaxisID_l;
++      found = 1;
+       break;
+     }
+   }
+ 
+-  if (this->ZAxisID == -1)
+-  {
+-    this->NeedVerticalGridFile = true;
+-    return 0;
+-  }
+-
+-  return 1;
++  return found;
+ }
+ 
+ //----------------------------------------------------------------------------
+@@ -1065,37 +1005,42 @@ int vtkCDIReader::GetVars()
+   int cellVarIndex = -1;
+   int pointVarIndex = -1;
+   int domainVarIndex = -1;
++  int numVars = vlistNvars(this->DataFile.getVListID());
++
++  vtkDebugMacro("Found " << numVars << " as Variables for VListID " << this->DataFile.getVListID());
+ 
+-  int numVars = vlistNvars(this->VListID);
+   for (int i = 0; i < numVars; i++)
+   {
+     int varID = i;
+     cdi_tools::CDIVar aVar;
+ 
+-    aVar.StreamID = this->StreamID;
++    aVar.StreamID = this->DataFile.getStreamID();
+     aVar.VarID = varID;
+-    aVar.GridID = vlistInqVarGrid(this->VListID, varID);
+-    aVar.ZAxisID = vlistInqVarZaxis(this->VListID, varID);
++    aVar.GridID = vlistInqVarGrid(this->DataFile.getVListID(), varID);
++    aVar.ZAxisID = vlistInqVarZaxis(this->DataFile.getVListID(), varID);
+     aVar.GridSize = static_cast<int>(gridInqSize(aVar.GridID));
+     aVar.NLevel = zaxisInqSize(aVar.ZAxisID);
+     aVar.Type = 0;
+     aVar.ConstTime = 0;
++    vlistInqVarName(this->DataFile.getVListID(), varID, aVar.Name);
++    vtkDebugMacro("Processing variable " << i << '\t' << aVar.Name);
+ 
+     // to do multiple grids:
+     // - Check how many grids are available
+     // - Check if all grids can be reconstructed, or if bnds are all zero
+     // - Reform gui to load either Cell, Point or Edge data
+ 
+-    if (vlistInqVarTsteptype(this->VListID, varID) == TIME_CONSTANT)
++    if (vlistInqVarTsteptype(this->DataFile.getVListID(), varID) == TIME_CONSTANT)
+     {
+       aVar.ConstTime = 1;
+     }
+-    if (aVar.ZAxisID != this->ZAxisID && aVar.ZAxisID != this->SurfID)
++    if (aVar.ZAxisID != this->ZAxisID && SurfIDs.count(aVar.ZAxisID) == 0)
++    // We are handling a different 3D Axis.
+     {
++      vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong ZAxis " << aVar.ZAxisID);
+       continue;
+     }
+ 
+-    vlistInqVarName(this->VListID, varID, aVar.Name);
+     aVar.Type = 2;
+     if (aVar.NLevel > 1)
+     {
+@@ -1112,19 +1057,23 @@ int vtkCDIReader::GetVars()
+     }
+     else if ((aVar.GridSize < this->NumberOfCells) && (this->PointsPerCell == 3))
+     {
++      vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong GridSize " << aVar.GridSize
++                                << " != " << this->NumberOfCells);
+       if (this->NumberOfPoints and this->NumberOfPoints != aVar.GridSize)
+       {
+         vtkWarningMacro("Not adding "
+           << aVar.Name << " as point var, as it's size " << aVar.GridSize
+           << " does not correspond to our understanding of the correct size for 'the' point grid: "
+           << this->NumberOfPoints);
+-        break;
++        continue;
+       }
+       isPointData = true;
+       this->NumberOfPoints = aVar.GridSize;
+     }
+     else
+     {
++      vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong GridSize " << aVar.GridSize
++                                << " != " << this->NumberOfCells);
+       continue;
+     }
+ 
+@@ -1240,7 +1189,7 @@ int vtkCDIReader::BuildVarArrays()
+                                        << " NumberOfPointVars: " << this->NumberOfPointVars);
+     if (this->NumberOfCellVars == 0)
+     {
+-      vtkErrorMacro("No cell variables found!");
++      vtkDebugMacro("No cell variables found!");
+     }
+ 
+     for (int var = 0; var < this->NumberOfPointVars; var++)
+@@ -1443,39 +1392,63 @@ int vtkCDIReader::ConstructGridGeometry()
+   CHECK_NEW(this->DepthVar);
+ 
+   vtkDebugMacro("Start reading Vertices");
+-  gridInqXboundsPart(
+-    this->GridID, (this->BeginCell * this->PointsPerCell), size, cLonVertices.data());
+-  gridInqYboundsPart(
+-    this->GridID, (this->BeginCell * this->PointsPerCell), size, cLatVertices.data());
++  try
++  {
++    gridInqXboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size,
++      cLonVertices.data());
++    gridInqYboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size,
++      cLatVertices.data());
++  }
++  catch (const std::out_of_range& oor)
++  {
++    vtkErrorMacro(
++      "Out of Range error trying to get the grid id for reading vertices: " << oor.what());
++    return 0;
++  }
+   vtkDebugMacro("Done reading Vertices");
++  vtkDebugMacro("Getting vertical axis" << this->ZAxisID << " expecting up to "
++                                        << this->MaximumNVertLevels << " levels.");
+   zaxisInqLevels(this->ZAxisID, this->DepthVar);
++  vtkDebugMacro("Got vertical axis" << this->ZAxisID);
+   char units[CDI_MAX_NAME];
+   this->OrigConnections.resize(size);
+   int new_cells[2];
+-
+-  if (this->ProjectionMode != projection::CATALYST)
++  try
+   {
+-    gridInqXunits(this->GridID, units);
+-    if (strncmp(units, "degree", 6) == 0)
++    if (this->ProjectionMode != projection::CATALYST)
+     {
+-      for (int i = 0; i < size; i++)
++      gridInqXunits(Grids.at(this->GridID).GridID, units);
++      if (strncmp(units, "degree", 6) == 0)
+       {
+-        cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]);
++        for (int i = 0; i < size; i++)
++        {
++          cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]);
++        }
+       }
+-    }
+-    gridInqYunits(this->GridID, units);
+-    if (strncmp(units, "degree", 6) == 0)
+-    {
+-      for (int i = 0; i < size; i++)
++      gridInqYunits(Grids.at(this->GridID).GridID, units);
++      if (strncmp(units, "degree", 6) == 0)
+       {
+-        cLatVertices[i] = vtkMath::RadiansFromDegrees(cLatVertices[i]);
++        for (int i = 0; i < size; i++)
++        {
++          cLatVertices[i] = vtkMath::RadiansFromDegrees(cLatVertices[i]);
++        }
+       }
+     }
+   }
++  catch (const std::out_of_range& oor)
++  {
++    vtkErrorMacro("Out of Range error trying to get the grid id for getting the coordinate units "
++                  "for projecting: "
++      << oor.what());
++    return 0;
++  }
+ 
+   // check for duplicates in the Point list and update the triangle list
++  vtkDebugMacro("Removing duplicates for clon/clat, size = " << size);
++
+   this->RemoveDuplicates(
+     cLonVertices.data(), cLatVertices.data(), size, &this->OrigConnections[0], new_cells);
++  vtkDebugMacro("Removed duplicates for clon/clat");
+   this->NumberLocalCells = new_cells[0] / this->PointsPerCell;
+   this->NumberLocalPoints = new_cells[1];
+   if (this->NumberOfPoints and this->NumberOfPoints != new_cells[1])
+@@ -1524,31 +1497,43 @@ int vtkCDIReader::ConstructGridGeometry()
+     if (this->Piece == 0)
+     {
+       int new_cells2[2];
+-      double clon_vert2[size2];
+-      double clat_vert2[size2];
+-
+-      gridInqXboundsPart(this->GridID, 0, size2, clon_vert2);
+-      gridInqYboundsPart(this->GridID, 0, size2, clat_vert2);
+-
+-      gridInqXunits(this->GridID, units);
+-      if (strncmp(units, "degree", 6) == 0)
++      std::vector<double> clon_vert2(size2);
++      std::vector<double> clat_vert2(size2);
++      try
+       {
+-        for (int i = 0; i < size2; i++)
++        gridInqXboundsPart(Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data());
++        gridInqYboundsPart(Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data());
++
++        gridInqXunits(Grids.at(this->GridID).GridID, units);
++        if (strncmp(units, "degree", 6) == 0)
+         {
+-          clon_vert2[i] = vtkMath::RadiansFromDegrees(clon_vert2[i]);
++          for (int i = 0; i < size2; i++)
++          {
++            clon_vert2[i] = vtkMath::RadiansFromDegrees(clon_vert2[i]);
++          }
+         }
+-      }
+ 
+-      gridInqYunits(this->GridID, units);
+-      if (strncmp(units, "degree", 6) == 0)
+-      {
+-        for (int i = 0; i < size2; i++)
++        gridInqYunits(Grids.at(this->GridID).GridID, units);
++        if (strncmp(units, "degree", 6) == 0)
+         {
+-          clat_vert2[i] = vtkMath::RadiansFromDegrees(clat_vert2[i]);
++          for (int i = 0; i < size2; i++)
++          {
++            clat_vert2[i] = vtkMath::RadiansFromDegrees(clat_vert2[i]);
++          }
+         }
+       }
++      catch (const std::out_of_range& oor)
++      {
++        vtkErrorMacro(
++          "Out of Range error trying to get the grid id for converting lat/lon in parallel: "
++          << oor.what());
++        return 0;
++      }
++
++      vtkDebugMacro("Removing duplicates for clon/clat2");
+ 
+-      this->RemoveDuplicates(clon_vert2, clat_vert2, size2, vertex_ids2.data(), new_cells2);
++      this->RemoveDuplicates(
++        clon_vert2.data(), clat_vert2.data(), size2, vertex_ids2.data(), new_cells2);
+       for (int i = 1; i < this->NumPieces; i++)
+       {
+         this->Controller->Send(vertex_ids2.data(), size2, i, 101);
+@@ -1676,25 +1661,38 @@ int vtkCDIReader::LoadClonClatVars()
+   std::vector<double> cLon_l(this->NumberLocalCells);
+   std::vector<double> cLat_l(this->NumberLocalCells);
+ 
+-  gridInqXvalsPart(this->GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data());
+-  gridInqYvalsPart(this->GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data());
++  gridInqXvalsPart(
++    Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data());
++  gridInqYvalsPart(
++    Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data());
+ 
+   char units[CDI_MAX_NAME];
+-  gridInqXunits(this->GridID, units);
+-  if (strncmp(units, "degree", 6) == 0)
++
++  try
+   {
+-    for (int i = 0; i < this->NumberLocalCells; i++)
++    gridInqXunits(Grids.at(this->GridID).GridID, units);
++    if (strncmp(units, "degree", 6) == 0)
++    {
++      for (int i = 0; i < this->NumberLocalCells; i++)
++      {
++        cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]);
++      }
++    }
++    gridInqYunits(Grids.at(this->GridID).GridID, units);
++    if (strncmp(units, "degree", 6) == 0)
+     {
+-      cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]);
++      for (int i = 0; i < this->NumberLocalCells; i++)
++      {
++        cLat_l[i] = vtkMath::RadiansFromDegrees(cLat_l[i]);
++      }
+     }
+   }
+-  gridInqYunits(this->GridID, units);
+-  if (strncmp(units, "degree", 6) == 0)
++  catch (const std::out_of_range& oor)
+   {
+-    for (int i = 0; i < this->NumberLocalCells; i++)
+-    {
+-      cLat_l[i] = vtkMath::RadiansFromDegrees(cLat_l[i]);
+-    }
++    vtkErrorMacro(
++      "Out of Range error trying to get the grid id for converting lat/lon in LoadClonClatVars: "
++      << oor.what());
++    return 0;
+   }
+ 
+   if (this->ShowMultilayerView)
+@@ -1823,7 +1821,7 @@ int vtkCDIReader::CheckForMaskData()
+   {
+     const double maskVal = this->UseCustomMaskValue
+       ? this->CustomMaskValue
+-      : vlistInqVarMissval(this->VListID, this->Internals->CellVars[mask_pos].VarID);
++      : vlistInqVarMissval(this->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID);
+ 
+     cdi_tools::CDIVar* cdiVar = &(this->Internals->CellVars[mask_pos]);
+     if (this->ShowMultilayerView)
+@@ -1923,7 +1921,7 @@ bool vtkCDIReader::BuildDomainCellVars()
+   CHECK_NEW(this->DomainCellVar);
+   double val = 0;
+   int mask_pos = 0;
+-  int numVars = vlistNvars(this->VListID);
++  int numVars = vlistNvars(this->DataFile.getVListID());
+ 
+   for (int i = 0; i < numVars; i++)
+   {
+@@ -2780,7 +2778,7 @@ int vtkCDIReader::LoadCellVarDataTemplate(
+ //------------------------------------------------------------------------------
+ int vtkCDIReader::ReplaceFillWithNan(const int varID, vtkDataArray* dataArray)
+ {
+-  double miss = vlistInqVarMissval(this->VListID, varID);
++  double miss = vlistInqVarMissval(this->DataFile.getVListID(), varID);
+ 
+   // NaN only available with float and double.
+   if (dataArray->GetDataType() == VTK_FLOAT)
+@@ -3093,11 +3091,11 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex)
+ //-----------------------------------------------------------------------------
+ int vtkCDIReader::FillGridDimensions()
+ {
+-  int ngrids = vlistNgrids(this->VListID);
+-  int nzaxis = vlistNzaxis(this->VListID);
+-  int nvars = vlistNvars(this->VListID);
+-  this->AllDimensions->SetNumberOfValues(0);
+-  this->VariableDimensions->SetNumberOfValues(ngrids * nzaxis);
++  this->DimensionSets.resize(0);
++
++  int ngrids = vlistNgrids(this->DataFile.getVListID());
++  int nzaxis = vlistNzaxis(this->DataFile.getVListID());
++  int nvars = vlistNvars(this->DataFile.getVListID());
+   char nameGridX[CDI_MAX_NAME];
+   char nameGridY[CDI_MAX_NAME];
+   char nameLev[CDI_MAX_NAME];
+@@ -3106,40 +3104,59 @@ int vtkCDIReader::FillGridDimensions()
+ 
+   for (int k = 0; k < nvars; k++)
+   {
+-    int i = vlistInqVarGrid(this->VListID, k);
+-    int j = vlistInqVarZaxis(this->VListID, k);
++    int i = vlistInqVarGrid(this->DataFile.getVListID(), k);
++    int j = vlistInqVarZaxis(this->DataFile.getVListID(), k);
+     hits.insert(std::to_string(i) + "x" + std::to_string(j));
+     // IDs are not 0 to n-1 but can be 30-ish for a file with 3 grids.
+     // they map to the gridID_l and zaxisID_l values below.
+     // Thus we need to a map to catch rather unpredictable values.
+   }
+-
++  size_t counter = 0;
+   for (int i = 0; i < ngrids; ++i)
+   {
+     for (int j = 0; j < nzaxis; ++j)
+     {
+       std::string dimEncoding("(");
+-      int gridID_l = vlistGrid(this->VListID, i);
++      int gridID_l = vlistGrid(this->DataFile.getVListID(), i);
+       gridInqXname(gridID_l, nameGridX);
+       gridInqYname(gridID_l, nameGridY);
+       dimEncoding += nameGridX;
+       dimEncoding += ", ";
+       dimEncoding += nameGridY;
+       dimEncoding += ", ";
+-      int zaxisID_l = vlistZaxis(this->VListID, j);
++      int zaxisID_l = vlistZaxis(this->DataFile.getVListID(), j);
+       zaxisInqName(zaxisID_l, nameLev);
+       dimEncoding += nameLev;
+       dimEncoding += ")";
+ 
+       if (hits.count(std::to_string(gridID_l) + "x" + std::to_string(zaxisID_l)) == 0)
+       {
++        vtkDebugMacro("vtkCDIReader::FillGridDimensions: i, j, dimEncoding: "
++          << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding
++          << " - has no hits.\n");
+         continue; // skip empty grid combinations
+       }
++      vtkDebugMacro("vtkCDIReader::FillGridDimensions: i, j, GridID, ZAxisID, dimEncoding: "
++        << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding
++        << " - has hits.\n");
+ 
+-      this->AllDimensions->InsertNextValue(dimEncoding);
+-      this->VariableDimensions->SetValue(i * nzaxis + j, dimEncoding.c_str());
++      dimset ds{ .DimsetID = counter,
++        .GridID = -1,
++        .ZAxisID = zaxisID_l,
++        .GridSize = gridInqSize(gridID_l),
++        .NLevel = zaxisInqSize(zaxisID_l),
++        .label = dimEncoding };
++      DimensionSets.push_back(ds);
++      counter++;
+     }
+   }
++  this->AllDimensions->SetNumberOfValues(0);
++  this->VariableDimensions->SetNumberOfValues(counter);
++  for (int i = 0; i < counter; i++)
++  {
++    this->AllDimensions->InsertNextValue(DimensionSets[i].label);
++    this->VariableDimensions->SetValue(i, DimensionSets[i].label.c_str());
++  }
+ 
+   return 1;
+ }
+@@ -3149,6 +3166,7 @@ int vtkCDIReader::FillGridDimensions()
+ //-----------------------------------------------------------------------------
+ void vtkCDIReader::SetDimensions(const char* dimensions)
+ {
++  vtkDebugMacro("In SetDimensions");
+   for (vtkIdType i = 0; i < this->VariableDimensions->GetNumberOfValues(); i++)
+   {
+     if (this->VariableDimensions->GetValue(i) == dimensions)
+@@ -3172,7 +3190,10 @@ void vtkCDIReader::SetDimensions(const char* dimensions)
+   this->DestroyData();
+   this->RegenerateVariables();
+   if (this->GridReconstructed)
++  {
+     this->RegenerateGeometry();
++  }
++  vtkDebugMacro("Out SetDimensions");
+ }
+ 
+ //----------------------------------------------------------------------------
+@@ -3319,18 +3340,13 @@ const char* vtkCDIReader::GetDomainArrayName(int index)
+ }
+ 
+ //----------------------------------------------------------------------------
+-// Set to lat/lon (equidistant cylindrical) projection.
++// Load a new file.
+ //----------------------------------------------------------------------------
+ void vtkCDIReader::SetFileName(const char* val)
+ {
+   if (this->FileName.empty() || val == nullptr || strcmp(this->FileName.c_str(), val) != 0)
+   {
+-    if (this->StreamID >= 0)
+-    {
+-      streamClose(this->StreamID);
+-      this->StreamID = -1;
+-      this->VListID = -1;
+-    }
++    this->DataFile.setVoid();
+     this->Modified();
+     if (val == nullptr)
+     {
+@@ -3351,13 +3367,21 @@ void vtkCDIReader::SetVerticalLevel(int level)
+ {
+   if (this->VerticalLevelSelected != level)
+   {
+-    if (level < 0 || level > this->MaximumNVertLevels - 1)
++    if (level < 0)
+     {
+       vtkErrorMacro("Requested inexistent vertical level: "
+         << level << ".\nThe level must be the in range [ 0 ; " << this->MaximumNVertLevels - 1
+         << " ].");
+       return;
+     }
++
++    if (level > this->MaximumNVertLevels - 1)
++    {
++      vtkWarningMacro("Requested inexistent vertical level: "
++        << level << ".\nThe level must be the in range [ 0 ; " << this->MaximumNVertLevels - 1
++        << " ]. \nTriying with 0.");
++      level = 0;
++    }
+     this->VerticalLevelSelected = level;
+     this->Modified();
+     vtkDebugMacro("Set VerticalLevelSelected to: " << level);
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h
+index 0e1001694c..44f9073a97 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.h
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h
+@@ -46,7 +46,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ #include "projections.h" // for projection enum
+ 
++#include "DataSource.h"
+ #include <memory> // for unique_ptr
++#include <unordered_set>
+ #include <vector> // for std::vector
+ 
+ class vtkCallbackCommand;
+@@ -54,6 +56,23 @@ class vtkDoubleArray;
+ class vtkFieldData;
+ class vtkMultiProcessController;
+ 
++struct dimset
++{
++  size_t DimsetID;
++  int GridID;
++  int ZAxisID;
++  size_t GridSize;
++  int NLevel;
++  std::string label;
++};
++
++struct Grid
++{
++  int GridID;
++  size_t Size;
++  int PointsPerCell;
++};
++
+ /**
+  *
+  * @class vtkCDIReader
+@@ -326,6 +345,8 @@ protected:
+   double Layer0OffsetRange[2];
+ 
+   int DimensionSelection;
++  std::vector<dimset> DimensionSets;
++  std::vector<Grid> Grids;
+   bool InvertZAxis;
+   bool AddCoordinateVars;
+   projection::Projection ProjectionMode;
+@@ -370,11 +391,10 @@ protected:
+   int NumberOfDomainVars;
+   bool GridReconstructed;
+ 
+-  int StreamID;
+-  int VListID;
++  DataSource::CDIObject DataFile, GridFile, VGridFile;
+   int GridID;
+   int ZAxisID;
+-  int SurfID;
++  std::unordered_set<int> SurfIDs;
+ 
+   std::string TimeUnits;
+   std::string Calendar;
+-- 
+GitLab
+
+
+From 772c2460e34deeb47c3d716283299190f3d51e7a Mon Sep 17 00:00:00 2001
+From: Nils-Arne Dreier <dreier@dkrz.de>
+Date: Wed, 2 Nov 2022 19:38:06 +0100
+Subject: [PATCH 2/5] clean up and formating
+
+including:
+- move internal things to unnamed namespace in vtkCDIReader.cxx
+- move structs to unnamed namespace
+- captitalize struct name Dimset
+- add missing braces
+- add `this->` where appropriate
+- no need to clear std::vector before they go out of scope
+- explicit cast int to `size_t` to avoid narrowing conversion warning
+- move variables which type is in unnamed namespace to Internals
+- prevent crash if no grid file is available
+- capitalize member variable `Type`
+- fix warning `size()==0` -> `empty()`
+- add some braces
+---
+ Plugins/CDIReader/Reader/CMakeLists.txt   |   1 -
+ Plugins/CDIReader/Reader/DataSource.cxx   |  56 ----
+ Plugins/CDIReader/Reader/DataSource.h     |  39 ---
+ Plugins/CDIReader/Reader/vtkCDIReader.cxx | 336 +++++++++++++++-------
+ Plugins/CDIReader/Reader/vtkCDIReader.h   |  21 --
+ 5 files changed, 239 insertions(+), 214 deletions(-)
+ delete mode 100644 Plugins/CDIReader/Reader/DataSource.cxx
+ delete mode 100644 Plugins/CDIReader/Reader/DataSource.h
+
+diff --git a/Plugins/CDIReader/Reader/CMakeLists.txt b/Plugins/CDIReader/Reader/CMakeLists.txt
+index 7a1a985fe0..274104664b 100644
+--- a/Plugins/CDIReader/Reader/CMakeLists.txt
++++ b/Plugins/CDIReader/Reader/CMakeLists.txt
+@@ -4,7 +4,6 @@ set(classes
+ set (sources
+     cdi_tools.cxx
+     projections.cxx
+-    DataSource.cxx
+     )
+ set (private_headers
+     cdi_tools.h
+diff --git a/Plugins/CDIReader/Reader/DataSource.cxx b/Plugins/CDIReader/Reader/DataSource.cxx
+deleted file mode 100644
+index 4f5075bb58..0000000000
+--- a/Plugins/CDIReader/Reader/DataSource.cxx
++++ /dev/null
+@@ -1,56 +0,0 @@
+-//#include "cdi_tools.h"
+-#include "DataSource.h"
+-#include "cdi.h"
+-
+-namespace DataSource
+-{
+-
+-CDIObject::CDIObject(std::string newURI)
+-{
+-  this->openURI(newURI);
+-}
+-
+-int CDIObject::openURI(std::string newURI)
+-{
+-  this->setVoid();
+-  this->URI = newURI;
+-
+-  // check if we got either *.Grib or *.nc data
+-  std::string check = this->URI.substr((URI.size() - 4), this->URI.size());
+-  if (check == "grib" || check == ".grb")
+-  {
+-    this->type = GRIB;
+-  }
+-  else
+-  {
+-    this->type = NC;
+-  }
+-
+-  this->StreamID = streamOpenRead(this->URI.c_str());
+-  if (this->StreamID < 0)
+-  {
+-    this->setVoid();
+-    return 0;
+-  }
+-
+-  this->VListID = streamInqVlist(this->StreamID);
+-  return 1;
+-}
+-
+-void CDIObject::setVoid()
+-{
+-  if (this->StreamID > -1)
+-    streamClose(this->StreamID);
+-
+-  StreamID = -1;
+-  VListID = -1;
+-  type = VOID;
+-}
+-
+-CDIObject::~CDIObject()
+-{
+-  URI = "";
+-  this->setVoid();
+-}
+-
+-};
+diff --git a/Plugins/CDIReader/Reader/DataSource.h b/Plugins/CDIReader/Reader/DataSource.h
+deleted file mode 100644
+index f3749f2f21..0000000000
+--- a/Plugins/CDIReader/Reader/DataSource.h
++++ /dev/null
+@@ -1,39 +0,0 @@
+-#ifndef CDI_DATA_SOURCE
+-#define CDI_DATA_SOURCE
+-
+-#include <string>
+-
+-namespace DataSource
+-{
+-class CDIObject
+-{
+-  enum stype
+-  {
+-    VOID,
+-    GRIB,
+-    NC
+-  };
+-  std::string URI;
+-  int StreamID;
+-  int VListID;
+-  stype type;
+-
+-public:
+-  void setVoid();
+-  CDIObject(std::string URI);
+-  CDIObject()
+-  {
+-    this->StreamID = -1;
+-    this->setVoid();
+-  }
+-  ~CDIObject();
+-  int openURI(std::string URI);
+-  std::string getURI() const { return URI; }
+-  int getStreamID() const { return StreamID; }
+-  int getVListID() const { return VListID; }
+-  stype getType() const { return type; }
+-  bool isVoid() const { return this->type == VOID; }
+-};
+-
+-};
+-#endif // CDI_DATA_SOURCE
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+index 28bd568721..c44e81f6bb 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+@@ -57,13 +57,79 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "vtksys/FStream.hxx"
+ #include "vtksys/SystemTools.hxx"
+ 
+-#include "DataSource.h"
+ #include "cdi_tools.h"
+ 
+ #include <set>
+ #include <sstream>
+ 
+-constexpr static int MAX_VARS = 100;
++namespace
++{
++class CDIObject
++{
++  enum stype
++  {
++    VOID,
++    GRIB,
++    NC
++  };
++  std::string URI;
++  int StreamID;
++  int VListID;
++  stype Type;
++
++public:
++  CDIObject(std::string URI) { this->openURI(URI); }
++  CDIObject()
++  {
++    this->StreamID = -1;
++    this->setVoid();
++  }
++  ~CDIObject() { this->setVoid(); }
++  int openURI(std::string URI)
++  {
++    this->setVoid();
++    this->URI = URI;
++
++    // check if we got either *.Grib or *.nc data
++    std::string check = this->URI.substr((URI.size() - 4), this->URI.size());
++    if (check == "grib" || check == ".grb")
++    {
++      this->Type = GRIB;
++    }
++    else
++    {
++      this->Type = NC;
++    }
++
++    this->StreamID = streamOpenRead(this->URI.c_str());
++    if (this->StreamID < 0)
++    {
++      this->setVoid();
++      return 0;
++    }
++
++    this->VListID = streamInqVlist(this->StreamID);
++    return 1;
++  }
++
++  std::string getURI() const { return this->URI; }
++  int getStreamID() const { return this->StreamID; }
++  int getVListID() const { return this->VListID; }
++  stype getType() const { return this->Type; }
++  void setVoid()
++  {
++    if (this->StreamID > -1)
++    {
++      streamClose(this->StreamID);
++    }
++
++    this->StreamID = -1;
++    this->VListID = -1;
++    this->Type = VOID;
++  }
++
++  bool isVoid() const { return this->Type == VOID; }
++};
+ 
+ struct Point
+ {
+@@ -77,6 +143,26 @@ struct PointWithIndex
+   int Idx;
+ };
+ 
++constexpr static int MAX_VARS = 100;
++
++struct Dimset
++{
++  size_t DimsetID;
++  int GridID;
++  int ZAxisID;
++  size_t GridSize;
++  int NLevel;
++  std::string label;
++};
++
++struct Grid
++{
++  int GridID;
++  size_t Size;
++  int PointsPerCell;
++};
++}
++
+ //----------------------------------------------------------------------------
+ // Internal class to avoid name pollution
+ //----------------------------------------------------------------------------
+@@ -106,6 +192,10 @@ public:
+   vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcesses;
+   vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesLengths;
+   vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesOffsets;
++
++  std::vector<Dimset> DimensionSets;
++  std::vector<Grid> Grids;
++  CDIObject DataFile, GridFile, VGridFile;
+ };
+ 
+ namespace
+@@ -299,7 +389,7 @@ int vtkCDIReader::RequestInformation(
+ 
+   vtkDebugMacro("In vtkCDIReader::RequestInformation setting VerticalLevelRange");
+   this->VerticalLevelRange[0] = 0;
+-  if (VerticalLevelRange[1] != this->MaximumNVertLevels - 1)
++  if (this->VerticalLevelRange[1] != this->MaximumNVertLevels - 1)
+   {
+     this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1;
+     this->Modified();
+@@ -330,9 +420,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+   if ((this->FileSeriesNumber == 0) && (!this->TimeSet))
+   {
+ 
+-    int taxisID = vlistInqTaxis(this->DataFile.getVListID());
++    int taxisID = vlistInqTaxis(this->Internals->DataFile.getVListID());
+     int calendar = taxisInqCalendar(taxisID);
+-    streamInqTimestep(this->DataFile.getStreamID(), 0);
++    streamInqTimestep(this->Internals->DataFile.getStreamID(), 0);
+     int vdate = taxisInqVdate(taxisID);
+     int vtime = taxisInqVtime(taxisID);
+ 
+@@ -345,7 +435,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+   if (!this->TimeSeriesTimeStepsAllSet)
+   {
+     if (this->TimeSeriesTimeSteps.size() < this->FileSeriesNumber + 1)
++    {
+       this->TimeSeriesTimeSteps.resize(this->FileSeriesNumber + 1);
++    }
+     this->TimeSeriesTimeSteps[this->FileSeriesNumber] = this->NumberOfTimeSteps;
+   }
+ 
+@@ -367,9 +459,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+   int end = start + this->NumberOfTimeSteps;
+   for (int step = start; step < end; step++)
+   {
+-    int taxisID = vlistInqTaxis(this->DataFile.getVListID());
++    int taxisID = vlistInqTaxis(this->Internals->DataFile.getVListID());
+     int calendar = taxisInqCalendar(taxisID);
+-    streamInqTimestep(this->DataFile.getStreamID(), counter);
++    streamInqTimestep(this->Internals->DataFile.getStreamID(), counter);
+     int vdate = taxisInqVdate(taxisID);
+     int vtime = taxisInqVtime(taxisID);
+     double timevalue = date_to_julday(calendar, vdate);
+@@ -383,8 +475,10 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis()
+       timeValues->InsertNextTuple1(timevalue);
+       if (!this->TimeSeriesTimeStepsAllSet)
+       {
+-        if (TimeSteps.size() < step + 1)
+-          TimeSteps.resize(step + 1);
++        if (this->TimeSteps.size() < step + 1)
++        {
++          this->TimeSteps.resize(step + 1);
++        }
+         this->TimeSteps[step] = timevalue;
+       }
+     }
+@@ -438,7 +532,9 @@ int vtkCDIReader::GetTimeIndex(double dataTimeStep)
+   for (int step = start; step < end; step++)
+   {
+     if (this->TimeSteps[step] == dataTimeStep)
++    {
+       return (step - start);
++    }
+   }
+   return 0;
+ }
+@@ -787,33 +883,41 @@ void vtkCDIReader::GuessGridFile()
+ {
+   std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName);
+   if (fallback.empty())
++  {
+     fallback = ".";
++  }
+   fallback += "/grid.nc";
+ 
+   std::string guess;
+   if (!this->Grib)
++  {
+     guess = cdi_tools::GuessGridFileFromUri(this->FileName);
++  }
+ 
+   if (!guess.empty())
+   {
+     if (vtksys::SystemTools::TestFileAccess(guess, vtksys::TEST_FILE_READ))
+     {
+-      this->GridFile.openURI(guess);
+-      if (this->GridFile.isVoid())
++      this->Internals->GridFile.openURI(guess);
++      if (this->Internals->GridFile.isVoid())
+       {
+         vtkWarningMacro("Cannot handle grid file "
+           << guess << " indicated by grid_file_uri attribute in " << this->FileName
+           << " Trying fallback guess " << fallback);
+       }
+       else
++      {
+         return;
++      }
+     }
+     else
++    {
+       vtkWarningMacro("Cannot open grid file "
+         << guess << " indicated by grid_file_uri attribute in " << this->FileName
+         << " Trying fallback guess " << fallback);
++    }
+   }
+-  this->GridFile.openURI(fallback);
++  this->Internals->GridFile.openURI(fallback);
+ }
+ 
+ //----------------------------------------------------------------------------
+@@ -827,18 +931,22 @@ int vtkCDIReader::GetDims()
+     return 0;
+   }
+ 
+-  DataFile.openURI(FileName);
+-  if (DataFile.isVoid())
++  this->Internals->DataFile.openURI(this->FileName);
++  if (this->Internals->DataFile.isVoid())
+   {
+-    vtkErrorMacro("GetDims: Could not open " << DataFile.getURI());
++    vtkErrorMacro("GetDims: Could not open " << this->Internals->DataFile.getURI());
+     return 0;
+   }
+ 
+-  if (GridFile.isVoid())
+-    GridFile.openURI(FileName);
+-  if (GridFile.isVoid())
++  if (this->Internals->GridFile.isVoid())
++  {
++    this->Internals->GridFile.openURI(this->FileName);
++  }
++
++  if (this->Internals->GridFile.isVoid())
+   {
+-    vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried " << GridFile.getURI());
++    vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried "
++      << this->Internals->GridFile.getURI());
+     return 0;
+   }
+ 
+@@ -847,17 +955,18 @@ int vtkCDIReader::GetDims()
+     this->GuessGridFile();
+     if (!this->ReadHorizontalGridData())
+     {
+-      vtkErrorMacro("Could not get horizontal Grid. \nTried " << GridFile.getURI());
++      vtkErrorMacro(
++        "Could not get horizontal Grid. \nTried " << this->Internals->GridFile.getURI());
+       return 0;
+     }
+   }
+ 
+-  VGridFile.openURI(FileName);
+-  int found = ReadVerticalGridData();
++  this->Internals->VGridFile.openURI(this->FileName);
++  int found = this->ReadVerticalGridData();
+   if (!found)
+   {
+-    VGridFile.openURI(GridFile.getURI());
+-    found = ReadVerticalGridData();
++    this->Internals->VGridFile.openURI(this->Internals->GridFile.getURI());
++    found = this->ReadVerticalGridData();
+   }
+ 
+   if (!found)
+@@ -872,21 +981,25 @@ int vtkCDIReader::GetDims()
+   {
+     if (this->DimensionSelection >= 0)
+     {
+-      if (DimensionSelection >= DimensionSets.size())
++      if (this->DimensionSelection >= this->Internals->DimensionSets.size())
+       {
+         vtkErrorMacro("Trying to select inexistent dimensionset "
+-          << DimensionSelection << " " << DimensionSets.size() << " are available.");
++          << this->DimensionSelection << " " << this->Internals->DimensionSets.size()
++          << " are available.");
+         return 0;
+       }
+-      for (int i = 0; i < Grids.size(); i++)
+-        if (this->DimensionSets.at(this->DimensionSelection).GridSize == Grids.at(i).Size)
++      for (int i = 0; i < this->Internals->Grids.size(); i++)
++        if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize ==
++          this->Internals->Grids.at(i).Size)
+         {
+-          this->DimensionSets.at(this->DimensionSelection).GridID = Grids.at(i).GridID;
++          this->Internals->DimensionSets.at(this->DimensionSelection).GridID =
++            this->Internals->Grids.at(i).GridID;
+           this->GridID = i;
+         }
+-      this->ZAxisID = this->DimensionSets.at(this->DimensionSelection).ZAxisID;
+-      vtkDebugMacro("NEW ZAxisID" << ZAxisID << " from "
+-                                  << this->DimensionSets.at(this->DimensionSelection).ZAxisID);
++      this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID;
++      vtkDebugMacro(
++        "NEW ZAxisID" << this->ZAxisID << " from "
++                      << this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID);
+     }
+   }
+   catch (const std::out_of_range& oor)
+@@ -897,15 +1010,17 @@ int vtkCDIReader::GetDims()
+ 
+   try
+   {
+-    if (GridID != -1 && Grids.at(this->GridID).GridID != -1)
++    if (this->GridID != -1 && this->Internals->Grids.at(this->GridID).GridID != -1)
+     {
+-      this->NumberOfCells = static_cast<int>(Grids.at(GridID).Size);
++      this->NumberOfCells = static_cast<int>(this->Internals->Grids.at(GridID).Size);
+ 
+       if (this->NumberOfPoints and this->NumberOfPoints != this->NumberOfCells)
++      {
+         vtkDebugMacro("GetDims: Changing number of points from  " << this->NumberOfPoints << " to "
+                                                                   << this->NumberOfCells);
++      }
+       this->NumberOfPoints = this->NumberOfCells;
+-      this->PointsPerCell = Grids.at(this->GridID).PointsPerCell;
++      this->PointsPerCell = this->Internals->Grids.at(this->GridID).PointsPerCell;
+       vtkDebugMacro("GetDims: Found PointsPerCell to be  " << this->PointsPerCell << " for grid  "
+                                                            << this->GridID);
+     }
+@@ -913,19 +1028,21 @@ int vtkCDIReader::GetDims()
+   catch (const std::out_of_range& oor)
+   {
+     vtkErrorMacro("Out of Range error in GetDims trying to set NumberOfPoints " << oor.what());
+-    vtkErrorMacro("Grids.size " << Grids.size() << "\t GridID " << GridID);
++    vtkErrorMacro("Grids.size " << this->Internals->Grids.size() << "\t GridID " << this->GridID);
+     return 0;
+   }
+ 
+   int ntsteps = 0;
+   if (this->Grib)
+   {
+-    while (streamInqTimestep(this->DataFile.getStreamID(), ntsteps))
++    while (streamInqTimestep(this->Internals->DataFile.getStreamID(), ntsteps))
++    {
+       ntsteps++;
++    }
+   }
+   else
+   {
+-    ntsteps = vlistNtsteps(this->DataFile.getVListID());
++    ntsteps = vlistNtsteps(this->Internals->DataFile.getVListID());
+   }
+   this->NumberOfTimeSteps = ntsteps;
+ 
+@@ -945,8 +1062,13 @@ int vtkCDIReader::GetDims()
+ //---------------------------------------------------------------------------------------------------
+ int vtkCDIReader::ReadHorizontalGridData()
+ {
+-  Grids.resize(0);
+-  int vlistID_l = this->GridFile.getVListID();
++  this->Internals->Grids.resize(0);
++  int vlistID_l = this->Internals->GridFile.getVListID();
++  if (vlistID_l == CDI_UNDEFID)
++  {
++    vtkErrorMacro("No VList found in Grid file.");
++    return 0;
++  }
+   int ngrids = vlistNgrids(vlistID_l);
+   for (int i = 0; i < ngrids; ++i)
+   {
+@@ -955,13 +1077,17 @@ int vtkCDIReader::ReadHorizontalGridData()
+ 
+     if (nv >= 3) //  ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED)
+     {
+-      Grid grid{ .GridID = gridID_l, .Size = gridInqSize(gridID_l), .PointsPerCell = nv };
+-      Grids.push_back(grid);
++      Grid grid{
++        .GridID = gridID_l, .Size = static_cast<size_t>(gridInqSize(gridID_l)), .PointsPerCell = nv
++      };
++      this->Internals->Grids.push_back(grid);
+     }
+   }
+ 
+-  if (Grids.size() == 0)
++  if (this->Internals->Grids.empty())
++  {
+     return 0;
++  }
+   return 1;
+ }
+ 
+@@ -971,11 +1097,11 @@ int vtkCDIReader::ReadHorizontalGridData()
+ int vtkCDIReader::ReadVerticalGridData()
+ {
+   this->ZAxisID = -1;
+-  int nzaxis = vlistNzaxis(this->VGridFile.getVListID());
++  int nzaxis = vlistNzaxis(this->Internals->VGridFile.getVListID());
+   int found = 0;
+   for (int i = 0; i < nzaxis; ++i)
+   {
+-    int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i);
++    int zaxisID_l = vlistZaxis(this->Internals->VGridFile.getVListID(), i);
+     if (zaxisInqSize(zaxisID_l) == 1 || zaxisInqType(zaxisID_l) == ZAXIS_SURFACE)
+     {
+       this->SurfIDs.insert(zaxisID_l);
+@@ -986,7 +1112,7 @@ int vtkCDIReader::ReadVerticalGridData()
+ 
+   for (int i = 0; i < nzaxis; ++i)
+   {
+-    int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i);
++    int zaxisID_l = vlistZaxis(this->Internals->VGridFile.getVListID(), i);
+     if (zaxisInqSize(zaxisID_l) > 1)
+     {
+       found = 1;
+@@ -1005,24 +1131,25 @@ int vtkCDIReader::GetVars()
+   int cellVarIndex = -1;
+   int pointVarIndex = -1;
+   int domainVarIndex = -1;
+-  int numVars = vlistNvars(this->DataFile.getVListID());
++  int numVars = vlistNvars(this->Internals->DataFile.getVListID());
+ 
+-  vtkDebugMacro("Found " << numVars << " as Variables for VListID " << this->DataFile.getVListID());
++  vtkDebugMacro(
++    "Found " << numVars << " as Variables for VListID " << this->Internals->DataFile.getVListID());
+ 
+   for (int i = 0; i < numVars; i++)
+   {
+     int varID = i;
+     cdi_tools::CDIVar aVar;
+ 
+-    aVar.StreamID = this->DataFile.getStreamID();
++    aVar.StreamID = this->Internals->DataFile.getStreamID();
+     aVar.VarID = varID;
+-    aVar.GridID = vlistInqVarGrid(this->DataFile.getVListID(), varID);
+-    aVar.ZAxisID = vlistInqVarZaxis(this->DataFile.getVListID(), varID);
++    aVar.GridID = vlistInqVarGrid(this->Internals->DataFile.getVListID(), varID);
++    aVar.ZAxisID = vlistInqVarZaxis(this->Internals->DataFile.getVListID(), varID);
+     aVar.GridSize = static_cast<int>(gridInqSize(aVar.GridID));
+     aVar.NLevel = zaxisInqSize(aVar.ZAxisID);
+     aVar.Type = 0;
+     aVar.ConstTime = 0;
+-    vlistInqVarName(this->DataFile.getVListID(), varID, aVar.Name);
++    vlistInqVarName(this->Internals->DataFile.getVListID(), varID, aVar.Name);
+     vtkDebugMacro("Processing variable " << i << '\t' << aVar.Name);
+ 
+     // to do multiple grids:
+@@ -1030,11 +1157,11 @@ int vtkCDIReader::GetVars()
+     // - Check if all grids can be reconstructed, or if bnds are all zero
+     // - Reform gui to load either Cell, Point or Edge data
+ 
+-    if (vlistInqVarTsteptype(this->DataFile.getVListID(), varID) == TIME_CONSTANT)
++    if (vlistInqVarTsteptype(this->Internals->DataFile.getVListID(), varID) == TIME_CONSTANT)
+     {
+       aVar.ConstTime = 1;
+     }
+-    if (aVar.ZAxisID != this->ZAxisID && SurfIDs.count(aVar.ZAxisID) == 0)
++    if (aVar.ZAxisID != this->ZAxisID && this->SurfIDs.count(aVar.ZAxisID) == 0)
+     // We are handling a different 3D Axis.
+     {
+       vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong ZAxis " << aVar.ZAxisID);
+@@ -1180,7 +1307,7 @@ int vtkCDIReader::BuildVarArrays()
+ 
+   if (!this->FileName.empty())
+   {
+-    if (!GetVars())
++    if (!this->GetVars())
+     {
+       return 0;
+     }
+@@ -1394,10 +1521,10 @@ int vtkCDIReader::ConstructGridGeometry()
+   vtkDebugMacro("Start reading Vertices");
+   try
+   {
+-    gridInqXboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size,
+-      cLonVertices.data());
+-    gridInqYboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size,
+-      cLatVertices.data());
++    gridInqXboundsPart(Internals->Grids.at(this->GridID).GridID,
++      (this->BeginCell * this->PointsPerCell), size, cLonVertices.data());
++    gridInqYboundsPart(Internals->Grids.at(this->GridID).GridID,
++      (this->BeginCell * this->PointsPerCell), size, cLatVertices.data());
+   }
+   catch (const std::out_of_range& oor)
+   {
+@@ -1417,7 +1544,7 @@ int vtkCDIReader::ConstructGridGeometry()
+   {
+     if (this->ProjectionMode != projection::CATALYST)
+     {
+-      gridInqXunits(Grids.at(this->GridID).GridID, units);
++      gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units);
+       if (strncmp(units, "degree", 6) == 0)
+       {
+         for (int i = 0; i < size; i++)
+@@ -1425,7 +1552,7 @@ int vtkCDIReader::ConstructGridGeometry()
+           cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]);
+         }
+       }
+-      gridInqYunits(Grids.at(this->GridID).GridID, units);
++      gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units);
+       if (strncmp(units, "degree", 6) == 0)
+       {
+         for (int i = 0; i < size; i++)
+@@ -1452,8 +1579,10 @@ int vtkCDIReader::ConstructGridGeometry()
+   this->NumberLocalCells = new_cells[0] / this->PointsPerCell;
+   this->NumberLocalPoints = new_cells[1];
+   if (this->NumberOfPoints and this->NumberOfPoints != new_cells[1])
++  {
+     vtkDebugMacro("ConstructGridGeometry: Changing number of points from  "
+       << this->NumberOfPoints << " to " << new_cells[1]);
++  }
+ 
+   this->NumberOfPoints = new_cells[1];
+ 
+@@ -1470,8 +1599,8 @@ int vtkCDIReader::ConstructGridGeometry()
+   // now get the individual coordinates out of the clon/clat vertices
+   for (int i = 0; i < this->NumberLocalPoints; i++)
+   {
+-    projection::longLatToCartesian(
+-      cLonVertices[i], cLatVertices[i], &PointX[i], &PointY[i], &PointZ[i], this->ProjectionMode);
++    projection::longLatToCartesian(cLonVertices[i], cLatVertices[i], &this->PointX[i],
++      &this->PointY[i], &this->PointZ[i], this->ProjectionMode);
+   }
+ 
+   // mirror the mesh if needed
+@@ -1501,10 +1630,12 @@ int vtkCDIReader::ConstructGridGeometry()
+       std::vector<double> clat_vert2(size2);
+       try
+       {
+-        gridInqXboundsPart(Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data());
+-        gridInqYboundsPart(Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data());
++        gridInqXboundsPart(
++          this->Internals->Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data());
++        gridInqYboundsPart(
++          this->Internals->Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data());
+ 
+-        gridInqXunits(Grids.at(this->GridID).GridID, units);
++        gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units);
+         if (strncmp(units, "degree", 6) == 0)
+         {
+           for (int i = 0; i < size2; i++)
+@@ -1513,7 +1644,7 @@ int vtkCDIReader::ConstructGridGeometry()
+           }
+         }
+ 
+-        gridInqYunits(Grids.at(this->GridID).GridID, units);
++        gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units);
+         if (strncmp(units, "degree", 6) == 0)
+         {
+           for (int i = 0; i < size2; i++)
+@@ -1556,8 +1687,6 @@ int vtkCDIReader::ConstructGridGeometry()
+   this->CurrentExtraPoint = this->NumberLocalPoints;
+   this->CurrentExtraCell = this->NumberLocalCells;
+ 
+-  cLonVertices.clear();
+-  cLatVertices.clear();
+   vtkDebugMacro("Grid Reconstruction complete...");
+   return 1;
+ }
+@@ -1587,7 +1716,7 @@ int vtkCDIReader::AllocSphereGeometry()
+ {
+   vtkDebugMacro("In AllocSphereGeometry...");
+ 
+-  if (!GridReconstructed || this->ReconstructNew)
++  if (!this->GridReconstructed || this->ReconstructNew)
+   {
+     this->ConstructGridGeometry();
+   }
+@@ -1624,7 +1753,7 @@ int vtkCDIReader::AllocLatLonGeometry()
+     return 0;
+   }
+ 
+-  if (!GridReconstructed || this->ReconstructNew)
++  if (!this->GridReconstructed || this->ReconstructNew)
+   {
+     this->ConstructGridGeometry();
+   }
+@@ -1661,16 +1790,16 @@ int vtkCDIReader::LoadClonClatVars()
+   std::vector<double> cLon_l(this->NumberLocalCells);
+   std::vector<double> cLat_l(this->NumberLocalCells);
+ 
+-  gridInqXvalsPart(
+-    Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data());
+-  gridInqYvalsPart(
+-    Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data());
++  gridInqXvalsPart(this->Internals->Grids.at(this->GridID).GridID, this->BeginCell,
++    this->NumberLocalCells, cLon_l.data());
++  gridInqYvalsPart(this->Internals->Grids.at(this->GridID).GridID, this->BeginCell,
++    this->NumberLocalCells, cLat_l.data());
+ 
+   char units[CDI_MAX_NAME];
+ 
+   try
+   {
+-    gridInqXunits(Grids.at(this->GridID).GridID, units);
++    gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units);
+     if (strncmp(units, "degree", 6) == 0)
+     {
+       for (int i = 0; i < this->NumberLocalCells; i++)
+@@ -1678,7 +1807,7 @@ int vtkCDIReader::LoadClonClatVars()
+         cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]);
+       }
+     }
+-    gridInqYunits(Grids.at(this->GridID).GridID, units);
++    gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units);
+     if (strncmp(units, "degree", 6) == 0)
+     {
+       for (int i = 0; i < this->NumberLocalCells; i++)
+@@ -1821,7 +1950,8 @@ int vtkCDIReader::CheckForMaskData()
+   {
+     const double maskVal = this->UseCustomMaskValue
+       ? this->CustomMaskValue
+-      : vlistInqVarMissval(this->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID);
++      : vlistInqVarMissval(
++          this->Internals->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID);
+ 
+     cdi_tools::CDIVar* cdiVar = &(this->Internals->CellVars[mask_pos]);
+     if (this->ShowMultilayerView)
+@@ -1889,7 +2019,7 @@ int vtkCDIReader::AddMaskHalo()
+         {
+           int l = j * this->MaximumNVertLevels;
+           int k = this->MaximumNVertLevels * this->CellMap[j - this->NumberLocalCells];
+-          this->CellMask[l + levelNum] = (CellMask[k + levelNum]);
++          this->CellMask[l + levelNum] = (this->CellMask[k + levelNum]);
+         }
+       }
+     }
+@@ -1921,7 +2051,7 @@ bool vtkCDIReader::BuildDomainCellVars()
+   CHECK_NEW(this->DomainCellVar);
+   double val = 0;
+   int mask_pos = 0;
+-  int numVars = vlistNvars(this->DataFile.getVListID());
++  int numVars = vlistNvars(this->Internals->DataFile.getVListID());
+ 
+   for (int i = 0; i < numVars; i++)
+   {
+@@ -2156,7 +2286,7 @@ int vtkCDIReader::Wrap(int axis)
+       }
+     }
+ 
+-    if (!ShowMultilayerView)
++    if (!this->ShowMultilayerView)
+     {
+       this->MaximumCells = static_cast<int>(this->CurrentExtraCell);
+       this->MaximumPoints = static_cast<int>(this->CurrentExtraPoint);
+@@ -2284,8 +2414,10 @@ void vtkCDIReader::OutputPoints(bool init)
+         {
+           retval = projection::cartesianToSpherical(x, y, z, &rho, &phi, &theta);
+           if (!retval)
++          {
+             retval = projection::sphericalToCartesian(
+               rho + this->Layer0Offset * adjustedLayerThickness, phi, theta, &x, &y, &z);
++          }
+         }
+       }
+ 
+@@ -2480,9 +2612,13 @@ void vtkCDIReader::OutputCells(bool init)
+             polygon[k + this->PointsPerCell] = val;
+           }
+           if (cellType == VTK_POLYHEDRON)
++          {
+             this->InsertPolyhedron(polygon);
++          }
+           else
++          {
+             output->InsertNextCell(cellType, pointsPerPolygon, polygon.data());
++          }
+         }
+       }
+     }
+@@ -2568,7 +2704,9 @@ void vtkCDIReader::InsertPolyhedron(std::vector<vtkIdType> polygon)
+ int vtkCDIReader::LoadPointVarData(int variableIndex, double dTimeStep)
+ {
+   if (!(this->PointsPerCell == 3))
++  {
+     return 0;
++  }
+ 
+   this->PointDataSelected = variableIndex;
+ 
+@@ -2778,7 +2916,7 @@ int vtkCDIReader::LoadCellVarDataTemplate(
+ //------------------------------------------------------------------------------
+ int vtkCDIReader::ReplaceFillWithNan(const int varID, vtkDataArray* dataArray)
+ {
+-  double miss = vlistInqVarMissval(this->DataFile.getVListID(), varID);
++  double miss = vlistInqVarMissval(this->Internals->DataFile.getVListID(), varID);
+ 
+   // NaN only available with float and double.
+   if (dataArray->GetDataType() == VTK_FLOAT)
+@@ -2914,7 +3052,7 @@ int vtkCDIReader::LoadPointVarDataTemplate(
+         }
+ 
+         // layer below, which is repeated ...
+-        dataBlock[i++] = dataTmp[j + ((MaximumNVertLevels - 1) * this->NumberLocalPoints)];
++        dataBlock[i++] = dataTmp[j + ((this->MaximumNVertLevels - 1) * this->NumberLocalPoints)];
+       }
+     }
+   }
+@@ -3091,11 +3229,11 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex)
+ //-----------------------------------------------------------------------------
+ int vtkCDIReader::FillGridDimensions()
+ {
+-  this->DimensionSets.resize(0);
++  this->Internals->DimensionSets.resize(0);
+ 
+-  int ngrids = vlistNgrids(this->DataFile.getVListID());
+-  int nzaxis = vlistNzaxis(this->DataFile.getVListID());
+-  int nvars = vlistNvars(this->DataFile.getVListID());
++  int ngrids = vlistNgrids(this->Internals->DataFile.getVListID());
++  int nzaxis = vlistNzaxis(this->Internals->DataFile.getVListID());
++  int nvars = vlistNvars(this->Internals->DataFile.getVListID());
+   char nameGridX[CDI_MAX_NAME];
+   char nameGridY[CDI_MAX_NAME];
+   char nameLev[CDI_MAX_NAME];
+@@ -3104,8 +3242,8 @@ int vtkCDIReader::FillGridDimensions()
+ 
+   for (int k = 0; k < nvars; k++)
+   {
+-    int i = vlistInqVarGrid(this->DataFile.getVListID(), k);
+-    int j = vlistInqVarZaxis(this->DataFile.getVListID(), k);
++    int i = vlistInqVarGrid(this->Internals->DataFile.getVListID(), k);
++    int j = vlistInqVarZaxis(this->Internals->DataFile.getVListID(), k);
+     hits.insert(std::to_string(i) + "x" + std::to_string(j));
+     // IDs are not 0 to n-1 but can be 30-ish for a file with 3 grids.
+     // they map to the gridID_l and zaxisID_l values below.
+@@ -3117,14 +3255,14 @@ int vtkCDIReader::FillGridDimensions()
+     for (int j = 0; j < nzaxis; ++j)
+     {
+       std::string dimEncoding("(");
+-      int gridID_l = vlistGrid(this->DataFile.getVListID(), i);
++      int gridID_l = vlistGrid(this->Internals->DataFile.getVListID(), i);
+       gridInqXname(gridID_l, nameGridX);
+       gridInqYname(gridID_l, nameGridY);
+       dimEncoding += nameGridX;
+       dimEncoding += ", ";
+       dimEncoding += nameGridY;
+       dimEncoding += ", ";
+-      int zaxisID_l = vlistZaxis(this->DataFile.getVListID(), j);
++      int zaxisID_l = vlistZaxis(this->Internals->DataFile.getVListID(), j);
+       zaxisInqName(zaxisID_l, nameLev);
+       dimEncoding += nameLev;
+       dimEncoding += ")";
+@@ -3140,13 +3278,13 @@ int vtkCDIReader::FillGridDimensions()
+         << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding
+         << " - has hits.\n");
+ 
+-      dimset ds{ .DimsetID = counter,
++      Dimset ds{ .DimsetID = counter,
+         .GridID = -1,
+         .ZAxisID = zaxisID_l,
+-        .GridSize = gridInqSize(gridID_l),
++        .GridSize = static_cast<size_t>(gridInqSize(gridID_l)),
+         .NLevel = zaxisInqSize(zaxisID_l),
+         .label = dimEncoding };
+-      DimensionSets.push_back(ds);
++      this->Internals->DimensionSets.push_back(ds);
+       counter++;
+     }
+   }
+@@ -3154,8 +3292,8 @@ int vtkCDIReader::FillGridDimensions()
+   this->VariableDimensions->SetNumberOfValues(counter);
+   for (int i = 0; i < counter; i++)
+   {
+-    this->AllDimensions->InsertNextValue(DimensionSets[i].label);
+-    this->VariableDimensions->SetValue(i, DimensionSets[i].label.c_str());
++    this->AllDimensions->InsertNextValue(this->Internals->DimensionSets[i].label);
++    this->VariableDimensions->SetValue(i, this->Internals->DimensionSets[i].label.c_str());
+   }
+ 
+   return 1;
+@@ -3281,7 +3419,9 @@ void vtkCDIReader::SetMaskingVariable(const char* name)
+ void vtkCDIReader::SetUseCustomMaskValue(bool val)
+ {
+   if (val == this->UseCustomMaskValue)
++  {
+     return;
++  }
+ 
+   this->UseCustomMaskValue = val;
+ 
+@@ -3301,7 +3441,9 @@ void vtkCDIReader::SetUseCustomMaskValue(bool val)
+ void vtkCDIReader::SetCustomMaskValue(double val)
+ {
+   if (val == this->CustomMaskValue)
++  {
+     return;
++  }
+ 
+   this->CustomMaskValue = val;
+ 
+@@ -3346,7 +3488,7 @@ void vtkCDIReader::SetFileName(const char* val)
+ {
+   if (this->FileName.empty() || val == nullptr || strcmp(this->FileName.c_str(), val) != 0)
+   {
+-    this->DataFile.setVoid();
++    this->Internals->DataFile.setVoid();
+     this->Modified();
+     if (val == nullptr)
+     {
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h
+index 44f9073a97..fa90313d4d 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.h
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h
+@@ -46,7 +46,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ #include "projections.h" // for projection enum
+ 
+-#include "DataSource.h"
+ #include <memory> // for unique_ptr
+ #include <unordered_set>
+ #include <vector> // for std::vector
+@@ -56,23 +55,6 @@ class vtkDoubleArray;
+ class vtkFieldData;
+ class vtkMultiProcessController;
+ 
+-struct dimset
+-{
+-  size_t DimsetID;
+-  int GridID;
+-  int ZAxisID;
+-  size_t GridSize;
+-  int NLevel;
+-  std::string label;
+-};
+-
+-struct Grid
+-{
+-  int GridID;
+-  size_t Size;
+-  int PointsPerCell;
+-};
+-
+ /**
+  *
+  * @class vtkCDIReader
+@@ -345,8 +327,6 @@ protected:
+   double Layer0OffsetRange[2];
+ 
+   int DimensionSelection;
+-  std::vector<dimset> DimensionSets;
+-  std::vector<Grid> Grids;
+   bool InvertZAxis;
+   bool AddCoordinateVars;
+   projection::Projection ProjectionMode;
+@@ -391,7 +371,6 @@ protected:
+   int NumberOfDomainVars;
+   bool GridReconstructed;
+ 
+-  DataSource::CDIObject DataFile, GridFile, VGridFile;
+   int GridID;
+   int ZAxisID;
+   std::unordered_set<int> SurfIDs;
+-- 
+GitLab
+
+
+From 751b0f14bdfbde85a79e6c06dda1aeff6e36e495 Mon Sep 17 00:00:00 2001
+From: Nils-Arne Dreier <dreier@dkrz.de>
+Date: Mon, 21 Nov 2022 16:10:42 +0100
+Subject: [PATCH 3/5] store DimensionSelection as string instead of an index
+
+When the reader object is restored from a state file the
+`VariableDimensions` is not initialized when `SetDimensions` is
+called. We therefore need to store the actuall string representation
+of the dimension.
+---
+ Plugins/CDIReader/Reader/vtkCDIReader.cxx | 63 ++++++++---------------
+ Plugins/CDIReader/Reader/vtkCDIReader.h   |  2 +-
+ 2 files changed, 23 insertions(+), 42 deletions(-)
+
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+index c44e81f6bb..763b6e6602 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+@@ -193,7 +193,7 @@ public:
+   vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesLengths;
+   vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesOffsets;
+ 
+-  std::vector<Dimset> DimensionSets;
++  std::map<std::string, Dimset> DimensionSets;
+   std::vector<Grid> Grids;
+   CDIObject DataFile, GridFile, VGridFile;
+ };
+@@ -828,7 +828,7 @@ void vtkCDIReader::SetDefaults()
+   this->HaveDomainVariable = false;
+   this->HaveDomainData = false;
+ 
+-  this->DimensionSelection = 0;
++  this->DimensionSelection = "";
+   this->InvertZAxis = false;
+   this->DoublePrecision = false;
+   this->ShowClonClat = false;
+@@ -977,36 +977,20 @@ int vtkCDIReader::GetDims()
+ 
+   this->FillGridDimensions();
+ 
+-  try
++  if (this->DimensionSelection.empty())
+   {
+-    if (this->DimensionSelection >= 0)
++    // select first by default
++    this->DimensionSelection = this->Internals->DimensionSets.begin()->first;
++  }
++  for (int i = 0; i < this->Internals->Grids.size(); i++)
++    if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize ==
++      this->Internals->Grids.at(i).Size)
+     {
+-      if (this->DimensionSelection >= this->Internals->DimensionSets.size())
+-      {
+-        vtkErrorMacro("Trying to select inexistent dimensionset "
+-          << this->DimensionSelection << " " << this->Internals->DimensionSets.size()
+-          << " are available.");
+-        return 0;
+-      }
+-      for (int i = 0; i < this->Internals->Grids.size(); i++)
+-        if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize ==
+-          this->Internals->Grids.at(i).Size)
+-        {
+-          this->Internals->DimensionSets.at(this->DimensionSelection).GridID =
+-            this->Internals->Grids.at(i).GridID;
+-          this->GridID = i;
+-        }
+-      this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID;
+-      vtkDebugMacro(
+-        "NEW ZAxisID" << this->ZAxisID << " from "
+-                      << this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID);
++      this->Internals->DimensionSets.at(this->DimensionSelection).GridID =
++        this->Internals->Grids.at(i).GridID;
++      this->GridID = i;
+     }
+-  }
+-  catch (const std::out_of_range& oor)
+-  {
+-    vtkErrorMacro("Out of Range error in GetDims trying to set Grid and ZAxisID: " << oor.what());
+-    return 0;
+-  }
++  this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID;
+ 
+   try
+   {
+@@ -3229,7 +3213,7 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex)
+ //-----------------------------------------------------------------------------
+ int vtkCDIReader::FillGridDimensions()
+ {
+-  this->Internals->DimensionSets.resize(0);
++  this->Internals->DimensionSets.clear();
+ 
+   int ngrids = vlistNgrids(this->Internals->DataFile.getVListID());
+   int nzaxis = vlistNzaxis(this->Internals->DataFile.getVListID());
+@@ -3284,16 +3268,19 @@ int vtkCDIReader::FillGridDimensions()
+         .GridSize = static_cast<size_t>(gridInqSize(gridID_l)),
+         .NLevel = zaxisInqSize(zaxisID_l),
+         .label = dimEncoding };
+-      this->Internals->DimensionSets.push_back(ds);
++      this->Internals->DimensionSets[dimEncoding] = ds;
+       counter++;
+     }
+   }
+   this->AllDimensions->SetNumberOfValues(0);
+   this->VariableDimensions->SetNumberOfValues(counter);
+-  for (int i = 0; i < counter; i++)
++
++  int i = 0;
++  for (const auto& label_diset_tuple : this->Internals->DimensionSets)
+   {
+-    this->AllDimensions->InsertNextValue(this->Internals->DimensionSets[i].label);
+-    this->VariableDimensions->SetValue(i, this->Internals->DimensionSets[i].label.c_str());
++    this->AllDimensions->InsertNextValue(label_diset_tuple.first);
++    this->VariableDimensions->SetValue(i, label_diset_tuple.first.c_str());
++    ++i;
+   }
+ 
+   return 1;
+@@ -3305,13 +3292,7 @@ int vtkCDIReader::FillGridDimensions()
+ void vtkCDIReader::SetDimensions(const char* dimensions)
+ {
+   vtkDebugMacro("In SetDimensions");
+-  for (vtkIdType i = 0; i < this->VariableDimensions->GetNumberOfValues(); i++)
+-  {
+-    if (this->VariableDimensions->GetValue(i) == dimensions)
+-    {
+-      this->DimensionSelection = i;
+-    }
+-  }
++  this->DimensionSelection = dimensions;
+ 
+   this->PointDataArraySelection->RemoveAllArrays();
+   this->CellDataArraySelection->RemoveAllArrays();
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h
+index fa90313d4d..3bbee37929 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.h
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h
+@@ -326,7 +326,7 @@ protected:
+   double Layer0Offset;
+   double Layer0OffsetRange[2];
+ 
+-  int DimensionSelection;
++  std::string DimensionSelection;
+   bool InvertZAxis;
+   bool AddCoordinateVars;
+   projection::Projection ProjectionMode;
+-- 
+GitLab
+
+
+From 622ba89edcd743d5603dbda519fb3c4bafe2c1cd Mon Sep 17 00:00:00 2001
+From: Nils-Arne Dreier <dreier@dkrz.de>
+Date: Tue, 22 Nov 2022 08:08:36 +0100
+Subject: [PATCH 4/5] clean up variable initialization
+
+use `vtkNew` instead of `vtkSmartPointer`
+
+remove initialization of std containers
+
+add CDIDimensionsTest
+
+use SetValue instead of InsertNextValue
+
+minor formating fixes
+---
+ Plugins/CDIReader/Reader/vtkCDIReader.cxx     | 115 ++---------
+ Plugins/CDIReader/Reader/vtkCDIReader.h       | 183 +++++++++---------
+ .../CDIReader/Testing/CDIDimensionsTest.xml   |  25 +++
+ Plugins/CDIReader/Testing/CMakeLists.txt      |   2 +
+ 4 files changed, 130 insertions(+), 195 deletions(-)
+ create mode 100644 Plugins/CDIReader/Testing/CDIDimensionsTest.xml
+
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+index 763b6e6602..7df87eff14 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx
+@@ -41,7 +41,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "vtkCellData.h"
+ #include "vtkCellType.h"
+ #include "vtkDataObject.h"
+-#include "vtkDoubleArray.h"
+ #include "vtkDummyController.h"
+ #include "vtkFieldData.h"
+ #include "vtkFileSeriesReader.h"
+@@ -262,18 +261,10 @@ vtkCDIReader::vtkCDIReader()
+   : Internals(new Internal())
+ {
+   vtkDebugMacro("Starting to create vtkCDIReader...");
+-  this->Initialized = false;
+ 
+   this->SetNumberOfInputPorts(0);
+   this->SetNumberOfOutputPorts(1);
+ 
+-  this->VariableDimensions = vtkSmartPointer<vtkStringArray>::New();
+-  this->AllDimensions = vtkSmartPointer<vtkStringArray>::New();
+-  this->AllVariableArrayNames = vtkSmartPointer<vtkStringArray>::New();
+-  this->InfoRequested = false;
+-  this->DataRequested = false;
+-  this->HaveDomainData = false;
+-
+   // Setup selection callback to modify this object when array selection changes
+   this->SelectionObserver->SetCallback(&vtkCDIReader::SelectionCallback);
+   this->SelectionObserver->SetClientData(this);
+@@ -281,7 +272,6 @@ vtkCDIReader::vtkCDIReader()
+   this->PointDataArraySelection->AddObserver(vtkCommand::ModifiedEvent, this->SelectionObserver);
+   this->DomainDataArraySelection->AddObserver(vtkCommand::ModifiedEvent, this->SelectionObserver);
+ 
+-  this->Controller = nullptr;
+   this->SetController(vtkMultiProcessController::GetGlobalController());
+   if (!this->Controller)
+   {
+@@ -289,8 +279,6 @@ vtkCDIReader::vtkCDIReader()
+     this->SetController(dummyController);
+   }
+ 
+-  this->SetDefaults();
+-
+   vtkDebugMacro("MAX_VARS:" << MAX_VARS);
+   vtkDebugMacro("Created vtkCDIReader");
+ }
+@@ -802,78 +790,6 @@ int vtkCDIReader::RegenerateGeometry()
+   return 1;
+ }
+ 
+-//----------------------------------------------------------------------------
+-// Set defaults for various parameters and initialize some variables
+-//----------------------------------------------------------------------------
+-void vtkCDIReader::SetDefaults()
+-{
+-  this->Grib = false;
+-
+-  this->VerticalLevelRange[0] = 0;
+-  this->VerticalLevelRange[1] = 1;
+-  this->VerticalLevelSelected = 0;
+-  this->LayerThicknessRange[0] = 0;
+-  this->LayerThicknessRange[1] = 100;
+-  this->LayerThickness = 50;
+-  this->Bloat = 2.0;
+-
+-  this->Layer0OffsetRange[0] = -50;
+-  this->Layer0OffsetRange[1] = 51;
+-  this->Layer0Offset = 1e-30;
+-
+-  // this is hard coded for now but will change when data generation gets more mature
+-  this->PerformanceDataFile = "timer.atmo.";
+-  this->DomainVarName = "cell_owner";
+-  this->DomainDimension = "domains";
+-  this->HaveDomainVariable = false;
+-  this->HaveDomainData = false;
+-
+-  this->DimensionSelection = "";
+-  this->InvertZAxis = false;
+-  this->DoublePrecision = false;
+-  this->ShowClonClat = false;
+-  this->ProjectionMode = projection::SPHERICAL;
+-  this->ShowMultilayerView = false;
+-  this->ReconstructNew = false;
+-  this->CellDataSelected = 0;
+-  this->PointDataSelected = 0;
+-  this->MaskingVarname = "";
+-  this->GotMask = false;
+-  this->AddCoordinateVars = false;
+-  this->NumberOfTimeSteps = 0;
+-  this->NumberOfAllTimeSteps = 0;
+-  this->TimeSeriesTimeSteps.reserve(5);
+-  this->TimeSteps.reserve(100 * 250 + 25);
+-  this->TimeSeriesTimeStepsAllSet = false;
+-  this->GridReconstructed = false;
+-  this->CustomMaskValue = 0.0;
+-  this->InvertMask = false;
+-  this->UseMask = false;
+-  this->UseCustomMaskValue = false;
+-  this->Decomposition = false;
+-
+-  this->SkipGrid = false;
+-
+-  this->BeginCell = 0;
+-  this->FirstDay = -1;
+-  this->TimeSet = false;
+-
+-  this->DTime = 0;
+-  this->FileSeriesNumber = 0;
+-  this->NumberOfFiles = 1;
+-  this->NeedVerticalGridFile = false;
+-  this->GridID = -1;
+-  this->NumberOfProcesses = 1;
+-
+-  this->BuildDomainArrays = false;
+-  this->MaximumNVertLevels = 0;
+-  this->MaximumPoints = 0;
+-  this->MaximumCells = 0;
+-  this->DepthVar = nullptr;
+-
+-  this->NumberOfPoints = 0;
+-}
+-
+ //----------------------------------------------------------------------------
+ // Get dimensions of key NetCDF variables
+ //----------------------------------------------------------------------------
+@@ -983,6 +899,7 @@ int vtkCDIReader::GetDims()
+     this->DimensionSelection = this->Internals->DimensionSets.begin()->first;
+   }
+   for (int i = 0; i < this->Internals->Grids.size(); i++)
++  {
+     if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize ==
+       this->Internals->Grids.at(i).Size)
+     {
+@@ -990,6 +907,7 @@ int vtkCDIReader::GetDims()
+         this->Internals->Grids.at(i).GridID;
+       this->GridID = i;
+     }
++  }
+   this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID;
+ 
+   try
+@@ -1047,16 +965,16 @@ int vtkCDIReader::GetDims()
+ int vtkCDIReader::ReadHorizontalGridData()
+ {
+   this->Internals->Grids.resize(0);
+-  int vlistID_l = this->Internals->GridFile.getVListID();
+-  if (vlistID_l == CDI_UNDEFID)
++  int vListID = this->Internals->GridFile.getVListID();
++  if (vListID == CDI_UNDEFID)
+   {
+     vtkErrorMacro("No VList found in Grid file.");
+     return 0;
+   }
+-  int ngrids = vlistNgrids(vlistID_l);
++  int ngrids = vlistNgrids(vListID);
+   for (int i = 0; i < ngrids; ++i)
+   {
+-    int gridID_l = vlistGrid(vlistID_l, i);
++    int gridID_l = vlistGrid(vListID, i);
+     int nv = gridInqNvertex(gridID_l);
+ 
+     if (nv >= 3) //  ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED)
+@@ -1499,8 +1417,7 @@ int vtkCDIReader::ConstructGridGeometry()
+   }
+   cLonVertices.resize(size);
+   cLatVertices.resize(size);
+-  this->DepthVar = new double[this->MaximumNVertLevels];
+-  CHECK_NEW(this->DepthVar);
++  this->DepthVar.resize(this->MaximumNVertLevels);
+ 
+   vtkDebugMacro("Start reading Vertices");
+   try
+@@ -1519,7 +1436,7 @@ int vtkCDIReader::ConstructGridGeometry()
+   vtkDebugMacro("Done reading Vertices");
+   vtkDebugMacro("Getting vertical axis" << this->ZAxisID << " expecting up to "
+                                         << this->MaximumNVertLevels << " levels.");
+-  zaxisInqLevels(this->ZAxisID, this->DepthVar);
++  zaxisInqLevels(this->ZAxisID, this->DepthVar.data());
+   vtkDebugMacro("Got vertical axis" << this->ZAxisID);
+   char units[CDI_MAX_NAME];
+   this->OrigConnections.resize(size);
+@@ -2030,9 +1947,8 @@ int vtkCDIReader::AddMaskHalo()
+ //----------------------------------------------------------------------------
+ bool vtkCDIReader::BuildDomainCellVars()
+ {
+-  this->DomainCellVar = new double[this->NumberOfCells * this->NumberOfDomainVars];
++  this->DomainCellVar.resize(this->NumberOfCells * this->NumberOfDomainVars);
+   std::vector<double> domainTMP(this->NumberOfCells);
+-  CHECK_NEW(this->DomainCellVar);
+   double val = 0;
+   int mask_pos = 0;
+   int numVars = vlistNvars(this->Internals->DataFile.getVListID());
+@@ -2058,7 +1974,7 @@ bool vtkCDIReader::BuildDomainCellVars()
+       val = this->DomainVarDataArray->GetArray(j)->GetComponent(domainTMP[k], 0l);
+       this->DomainCellVar[k + (j * this->NumberOfCells)] = val;
+     }
+-    domainVar->SetArray(this->DomainCellVar + (j * this->NumberOfCells), this->NumberLocalCells, 0,
++    domainVar->SetArray(&(this->DomainCellVar[j * this->NumberOfCells]), this->NumberLocalCells, 0,
+       vtkDoubleArray::VTK_DATA_ARRAY_FREE);
+     domainVar->SetName(this->Internals->DomainVars[j].c_str());
+     this->Output->GetCellData()->AddArray(domainVar);
+@@ -2364,7 +2280,7 @@ void vtkCDIReader::OutputPoints(bool init)
+     points->Allocate(this->MaximumPoints, this->MaximumPoints);
+   }
+ 
+-  if (this->DepthVar == nullptr)
++  if (this->DepthVar.empty())
+   {
+     vtkDebugMacro("OutputPoints: this->MaximumPoints: "
+       << this->MaximumPoints << " this->MaximumNVertLevels: " << this->MaximumNVertLevels
+@@ -2507,7 +2423,7 @@ void vtkCDIReader::OutputCells(bool init)
+                                       << " ShowMultilayerView: " << this->ShowMultilayerView
+                                       << " CurrentExtraCell: " << this->CurrentExtraCell);
+ 
+-  if (this->DepthVar == nullptr)
++  if (this->DepthVar.empty())
+   {
+     vtkErrorMacro(
+       "File " << this->FileName << " OutputCells: this->MaximumCells: " << this->MaximumCells
+@@ -2610,10 +2526,8 @@ void vtkCDIReader::OutputCells(bool init)
+ 
+   if (this->AddCoordinateVars && this->ShowClonClat)
+   {
+-    this->ClonArray = vtkSmartPointer<vtkDoubleArray>::New();
+     this->ClonArray->SetName("Center Longitude (CLON)");
+     this->ClonArray->SetNumberOfTuples(this->NumberLocalCells * this->MaximumNVertLevels);
+-    this->ClatArray = vtkSmartPointer<vtkDoubleArray>::New();
+     this->ClatArray->SetName("Center Latitude (CLAT)");
+     this->ClatArray->SetNumberOfTuples(this->NumberLocalCells * this->MaximumNVertLevels);
+     if (this->ShowMultilayerView)
+@@ -3132,7 +3046,6 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex)
+   // the data available. Needs to be improved together with the modellers.
+   vtkDebugMacro("In vtkCDIReader::LoadDomainVarData");
+   std::string variable = this->Internals->DomainVars[variableIndex];
+-  this->DomainDataSelected = variableIndex;
+ 
+   // Allocate data array for this variable
+   if (!this->DomainVarDataArray->HasArray(variable.c_str()))
+@@ -3272,13 +3185,13 @@ int vtkCDIReader::FillGridDimensions()
+       counter++;
+     }
+   }
+-  this->AllDimensions->SetNumberOfValues(0);
++  this->AllDimensions->SetNumberOfValues(counter);
+   this->VariableDimensions->SetNumberOfValues(counter);
+ 
+   int i = 0;
+   for (const auto& label_diset_tuple : this->Internals->DimensionSets)
+   {
+-    this->AllDimensions->InsertNextValue(label_diset_tuple.first);
++    this->AllDimensions->SetValue(i, label_diset_tuple.first);
+     this->VariableDimensions->SetValue(i, label_diset_tuple.first.c_str());
+     ++i;
+   }
+diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h
+index 3bbee37929..087fe35a54 100644
+--- a/Plugins/CDIReader/Reader/vtkCDIReader.h
++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h
+@@ -41,8 +41,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "vtkUnstructuredGridAlgorithm.h"
+ 
+ #include "vtkDataArraySelection.h" // for ivars
+-#include "vtkSmartPointer.h"       // for ivars
+-#include "vtkStringArray.h"        // for ivars
++#include "vtkDoubleArray.h"
++#include "vtkSmartPointer.h" // for ivars
++#include "vtkStringArray.h"  // for ivars
+ 
+ #include "projections.h" // for projection enum
+ 
+@@ -94,11 +95,11 @@ public:
+   vtkGetMacro(NumberOfCellVars, int);
+   vtkGetMacro(NumberOfPointVars, int);
+ 
+-  vtkSmartPointer<vtkStringArray> VariableDimensions;
+-  vtkSmartPointer<vtkStringArray> AllDimensions;
++  vtkNew<vtkStringArray> VariableDimensions;
++  vtkNew<vtkStringArray> AllDimensions;
+   void SetDimensions(const char* dimensions);
+   vtkStringArray* GetAllVariableArrayNames();
+-  vtkSmartPointer<vtkStringArray> AllVariableArrayNames;
++  vtkNew<vtkStringArray> AllVariableArrayNames;
+   vtkGetObjectMacro(AllDimensions, vtkStringArray);
+   vtkGetObjectMacro(VariableDimensions, vtkStringArray);
+ 
+@@ -200,7 +201,6 @@ protected:
+ 
+   int OpenFile();
+   void DestroyData();
+-  void SetDefaults();
+   int CheckForMaskData();
+   int AddMaskHalo();
+   int GetVars();
+@@ -259,54 +259,52 @@ protected:
+   int AddMirrorPointX(int index, double dividerX, double offset);
+   int AddMirrorPointY(int index, double dividerY, double offset);
+ 
+-  vtkMultiProcessController* Controller;
+-
+-  bool Initialized;
+-
+-  int NumberOfProcesses;
+-  double CustomMaskValue;
+-  int BeginPoint, EndPoint, BeginCell, EndCell;
+-  int Piece, NumPieces;
+-  int NumberLocalCells;
+-  int NumberAllCells;
+-  int NumberLocalPoints;
+-  int NumberAllPoints;
+-  bool Decomposition;
+-  long FirstDay;
+-  int ModNumPoints;
+-  int ModNumCells;
+-  unsigned int CurrentExtraPoint;     // current extra point
+-  unsigned int CurrentExtraCell;      // current extra cell
++  vtkMultiProcessController* Controller = nullptr;
++
++  bool Initialized = false;
++
++  int NumberOfProcesses = 1;
++  double CustomMaskValue = 0.0;
++  int BeginPoint = 0, EndPoint = 0, BeginCell = 0, EndCell = 0;
++  int Piece = 0, NumPieces = 0;
++  int NumberLocalCells = 0;
++  int NumberAllCells = 0;
++  int NumberLocalPoints = 0;
++  int NumberAllPoints = 0;
++  bool Decomposition = false;
++  long FirstDay = -1;
++  int ModNumPoints = 0;
++  int ModNumCells = 0;
++  unsigned int CurrentExtraPoint = 0; // current extra point
++  unsigned int CurrentExtraCell = 0;  // current extra cell
+   std::vector<unsigned int> CellMap;  // maps from added cell to original cell #
+   std::vector<unsigned int> PointMap; // maps from added point to original point #
+ 
+-  std::string FileName;
+-  std::string FileNameGrid;
+-  std::string FileNameGridSelect;
+-  std::string FileSeriesFirstName;
+-  std::string MaskingVarname;
+-  int NumberOfTimeSteps;
+-  int NumberOfAllTimeSteps;
++  std::string FileName = "";
++  std::string FileSeriesFirstName = "";
++  std::string MaskingVarname = "";
++  int NumberOfTimeSteps = 0;
++  int NumberOfAllTimeSteps = 0;
+   std::vector<int> TimeSeriesTimeSteps;
+-  bool TimeSeriesTimeStepsAllSet;
+-  bool TimeSet;
+-  double DTime;
++  bool TimeSeriesTimeStepsAllSet = false;
++  bool TimeSet = false;
++  double DTime = 0;
+   std::vector<double> TimeSteps;
+-  int FileSeriesNumber;
+-  int NumberOfFiles;
+-  double Bloat;
++  int FileSeriesNumber = 0;
++  int NumberOfFiles = 1;
++  double Bloat = 2.0;
+ 
+-  bool UseMask;
+-  bool InvertMask;
+-  bool GotMask;
+-  bool UseCustomMaskValue;
++  bool UseMask = false;
++  bool InvertMask = false;
++  bool GotMask = false;
++  bool UseCustomMaskValue = false;
+ 
+-  bool SkipGrid;
++  bool SkipGrid = false;
+ 
+   vtkNew<vtkCallbackCommand> SelectionObserver;
+-  bool InfoRequested;
+-  bool DataRequested;
+-  bool Grib;
++  bool InfoRequested = false;
++  bool DataRequested = false;
++  bool Grib = false;
+ 
+   vtkNew<vtkDataArraySelection> CellDataArraySelection;
+   vtkNew<vtkDataArraySelection> PointDataArraySelection;
+@@ -316,69 +314,66 @@ protected:
+   vtkNew<vtkFieldData> PointVarDataArray;
+   vtkNew<vtkFieldData> DomainVarDataArray;
+ 
+-  int VerticalLevelSelected;
+-  int VerticalLevelRange[2];
+-  int CellDataSelected;
+-  int PointDataSelected;
+-  int DomainDataSelected;
+-  int LayerThickness;
+-  int LayerThicknessRange[2];
+-  double Layer0Offset;
+-  double Layer0OffsetRange[2];
+-
+-  std::string DimensionSelection;
+-  bool InvertZAxis;
+-  bool AddCoordinateVars;
+-  projection::Projection ProjectionMode;
+-  bool DoublePrecision;
+-  bool ShowClonClat;
+-  bool ShowMultilayerView;
+-  bool HaveDomainData;
+-  bool HaveDomainVariable;
+-  bool BuildDomainArrays;
+-  std::string DomainVarName;
+-  std::string DomainDimension;
+-  std::string PerformanceDataFile;
+-
+-  int MaximumNVertLevels;
+-  int NumberOfCells;
+-  int NumberOfVertices;
+-  int NumberOfPoints;
+-  int NumberOfTriangles;
+-  int NumberOfDomains;
+-  int PointsPerCell;
+-  bool ReconstructNew;
+-  bool NeedHorizontalGridFile;
+-  bool NeedVerticalGridFile;
+-  bool WrapOn;
++  int VerticalLevelSelected = 0;
++  int VerticalLevelRange[2] = { 0, 1 };
++  int CellDataSelected = 0;
++  int PointDataSelected = 0;
++  int LayerThickness = 50;
++  int LayerThicknessRange[2] = { 0, 100 };
++  double Layer0Offset = 1e-30;
++  double Layer0OffsetRange[2] = { -50, 51 };
++
++  std::string DimensionSelection = "";
++  bool InvertZAxis = false;
++  bool AddCoordinateVars = false;
++  projection::Projection ProjectionMode = projection::SPHERICAL;
++  bool DoublePrecision = false;
++  bool ShowClonClat = false;
++  bool ShowMultilayerView = false;
++  bool HaveDomainData = false;
++  bool HaveDomainVariable = false;
++  bool BuildDomainArrays = false;
++
++  // this is hard coded for now but will change when data generation gets more mature
++  std::string DomainVarName = "cell_owner";
++  std::string DomainDimension = "domains";
++  std::string PerformanceDataFile = "timer.atmo.";
++
++  int MaximumNVertLevels = 0;
++  int NumberOfCells = 0;
++  int NumberOfPoints = 0;
++  int NumberOfDomains = 0;
++  int PointsPerCell = 0;
++  bool ReconstructNew = false;
++  bool WrapOn = false;
+ 
+   std::vector<double> CLon;
+   std::vector<double> CLat;
+-  double* DepthVar;
++  std::vector<double> DepthVar;
+   std::vector<double> PointX;
+   std::vector<double> PointY;
+   std::vector<double> PointZ;
+   std::vector<int> OrigConnections;
+   std::vector<int> ModConnections;
+   std::vector<bool> CellMask;
+-  double* DomainCellVar;
+-  int MaximumCells;
+-  int MaximumPoints;
++  std::vector<double> DomainCellVar;
++  int MaximumCells = 0;
++  int MaximumPoints = 0;
+   std::vector<int> VertexIds;
+ 
+-  int NumberOfCellVars;
+-  int NumberOfPointVars;
+-  int NumberOfDomainVars;
+-  bool GridReconstructed;
++  int NumberOfCellVars = 0;
++  int NumberOfPointVars = 0;
++  int NumberOfDomainVars = 0;
++  bool GridReconstructed = false;
+ 
+-  int GridID;
+-  int ZAxisID;
++  int GridID = -1;
++  int ZAxisID = -1;
+   std::unordered_set<int> SurfIDs;
+ 
+-  std::string TimeUnits;
+-  std::string Calendar;
+-  vtkSmartPointer<vtkDoubleArray> ClonArray;
+-  vtkSmartPointer<vtkDoubleArray> ClatArray;
++  std::string TimeUnits = "";
++  std::string Calendar = "";
++  vtkNew<vtkDoubleArray> ClonArray;
++  vtkNew<vtkDoubleArray> ClatArray;
+   vtkNew<vtkUnstructuredGrid> Output;
+ 
+ private:
+diff --git a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml
+new file mode 100644
+index 0000000000..4b71e0824b
+--- /dev/null
++++ b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml
+@@ -0,0 +1,25 @@
++<?xml version="1.0" ?>
++<pqevents>
++  <pqevent object="pqClientMainWindow/MainControlsToolbar/actionOpenData" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/FileOpenDialog" command="filesSelected" arguments="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc" />
++  <pqevent object="pqClientMainWindow/pqSelectReaderDialog/okButton" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Show3DSurface/CheckBox" command="set_boolean" arguments="true" />
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="p_ice_Tsurf" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_0.png" width="300" height="300" />
++
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(clon, clat, depth_2)" />
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_1.png" width="300" height="300" />
++
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(elon, elat, depth)" />
++  <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="VN" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" />
++  <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
++</pqevents>
+diff --git a/Plugins/CDIReader/Testing/CMakeLists.txt b/Plugins/CDIReader/Testing/CMakeLists.txt
+index 1862dff5b2..7e3628e39d 100644
+--- a/Plugins/CDIReader/Testing/CMakeLists.txt
++++ b/Plugins/CDIReader/Testing/CMakeLists.txt
+@@ -10,11 +10,13 @@ ExternalData_Expand_Arguments(ParaViewData _
+   "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/fesom.nc}"
+   "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead.png,:}"
+   "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest.png,:}"
+ )
+ 
+ set (xml_tests
+   CDISimpleRead.xml
+   CDIUseMask.xml
++  CDIDimensionsTest.xml
+   )
+ 
+ paraview_add_client_tests(
+-- 
+GitLab
+
+
+From b3d4bc3426d112567a0072cb8cffa7cf8b2aa42f Mon Sep 17 00:00:00 2001
+From: Mathieu Westphal <mathieu.westphal@kitware.com>
+Date: Wed, 23 Nov 2022 13:55:04 +0100
+Subject: [PATCH 5/5] Adding testing data
+
+Add/fix baselines for testing in CDIReader plugin
+
+Fix tests
+---
+ Plugins/CDIReader/Testing/CDIDimensionsTest.xml |  4 ++--
+ Plugins/CDIReader/Testing/CDISimpleRead.xml     | 10 +++++-----
+ Plugins/CDIReader/Testing/CDIUseMask.xml        | 12 ++++++------
+ Plugins/CDIReader/Testing/CMakeLists.txt        | 17 ++++++++++++++---
+ .../Data/Baseline/CDIDimensionsTest.png.sha512  |  1 +
+ .../Baseline/CDIDimensionsTest_A.png.sha512     |  1 +
+ .../Baseline/CDIDimensionsTest_B.png.sha512     |  1 +
+ ..._0.png.sha512 => CDISimpleRead_A.png.sha512} |  0
+ ..._1.png.sha512 => CDISimpleRead_B.png.sha512} |  0
+ ..._2.png.sha512 => CDISimpleRead_C.png.sha512} |  0
+ ..._3.png.sha512 => CDISimpleRead_D.png.sha512} |  0
+ ..._4.png.sha512 => CDISimpleRead_E.png.sha512} |  0
+ ...ask_0.png.sha512 => CDIUseMask_A.png.sha512} |  0
+ ...ask_1.png.sha512 => CDIUseMask_B.png.sha512} |  0
+ ...ask_2.png.sha512 => CDIUseMask_C.png.sha512} |  0
+ ...ask_3.png.sha512 => CDIUseMask_D.png.sha512} |  0
+ ...ask_4.png.sha512 => CDIUseMask_E.png.sha512} |  0
+ ...ask_5.png.sha512 => CDIUseMask_F.png.sha512} |  0
+ .../Testing/Data/NetCDF/edges.nc.sha512         |  1 +
+ 19 files changed, 31 insertions(+), 16 deletions(-)
+ create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512
+ create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512
+ create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_0.png.sha512 => CDISimpleRead_A.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_1.png.sha512 => CDISimpleRead_B.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_2.png.sha512 => CDISimpleRead_C.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_3.png.sha512 => CDISimpleRead_D.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_4.png.sha512 => CDISimpleRead_E.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_0.png.sha512 => CDIUseMask_A.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_1.png.sha512 => CDIUseMask_B.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_2.png.sha512 => CDIUseMask_C.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_3.png.sha512 => CDIUseMask_D.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_4.png.sha512 => CDIUseMask_E.png.sha512} (100%)
+ rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_5.png.sha512 => CDIUseMask_F.png.sha512} (100%)
+ create mode 100644 Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512
+
+diff --git a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml
+index 4b71e0824b..bdcb113c46 100644
+--- a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml
++++ b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml
+@@ -8,14 +8,14 @@
+   <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="p_ice_Tsurf" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_0.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(clon, clat, depth_2)" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_1.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(elon, elat, depth)" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+diff --git a/Plugins/CDIReader/Testing/CDISimpleRead.xml b/Plugins/CDIReader/Testing/CDISimpleRead.xml
+index 3f787a306b..564721e3f5 100644
+--- a/Plugins/CDIReader/Testing/CDISimpleRead.xml
++++ b/Plugins/CDIReader/Testing/CDISimpleRead.xml
+@@ -16,27 +16,27 @@
+   <pqevent object="pqClientMainWindow/variableToolbar/actionScalarBarVisibility" command="set_boolean" arguments="false" />
+ 
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spherical Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Cassini Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Mollweide Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Catalyst (no scaling)" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spilhouse Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+diff --git a/Plugins/CDIReader/Testing/CDIUseMask.xml b/Plugins/CDIReader/Testing/CDIUseMask.xml
+index f140573c29..b39e4929da 100644
+--- a/Plugins/CDIReader/Testing/CDIUseMask.xml
++++ b/Plugins/CDIReader/Testing/CDIUseMask.xml
+@@ -11,31 +11,31 @@
+   <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="thetao" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionNegativeY" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-    <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spherical Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Cassini Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Mollweide Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Catalyst (no scaling)" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png" width="300" height="300" />
+ 
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spilhouse Projection" />
+   <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" />
+   <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" />
+-  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png" width="300" height="300" />
++  <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png" width="300" height="300" />
+ 
+ </pqevents>
+diff --git a/Plugins/CDIReader/Testing/CMakeLists.txt b/Plugins/CDIReader/Testing/CMakeLists.txt
+index 7e3628e39d..e31c515f2b 100644
+--- a/Plugins/CDIReader/Testing/CMakeLists.txt
++++ b/Plugins/CDIReader/Testing/CMakeLists.txt
+@@ -6,11 +6,22 @@ endif()
+ 
+ set(_paraview_add_tests_default_test_data_target ParaViewData)
+ ExternalData_Expand_Arguments(ParaViewData _
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/edges.nc}"
+   "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/ts.nc}"
+   "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/fesom.nc}"
+-  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead.png,:}"
+-  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask.png,:}"
+-  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_A.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_B.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_C.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_D.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_E.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_A.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_B.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_C.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_D.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_E.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_F.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest_A.png,:}"
++  "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest_B.png,:}"
+ )
+ 
+ set (xml_tests
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512
+new file mode 100644
+index 0000000000..9b8b47efa6
+--- /dev/null
++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512
+@@ -0,0 +1 @@
++11c6513595364e3e3dec4e21f4711745deb4cccf8a0f6d3cf6343a4241cf8bbbbdd21e3390b7313e499fd3669f828548e3e88b0f262cb188735809efbd076e06
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512
+new file mode 100644
+index 0000000000..2b763c05e8
+--- /dev/null
++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512
+@@ -0,0 +1 @@
++2b8c39ffbb41b22699a3ec4e84c29ee9dc701171dc31367919b027559c1785a73c772351e0a6fca60781f1aad45c41f0cb3be8f9f165c06c9b9c9ac2ead7877c
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512
+new file mode 100644
+index 0000000000..55a1a41256
+--- /dev/null
++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512
+@@ -0,0 +1 @@
++a82a7f285150826a49c95253cd7b4ddbe83f138673b7979e00f3e7a137c8f6860a1847e7f5337722ef48cdf94c05654fa1d35b626b82edaf0d7f221d1f515324
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png.sha512
+similarity index 100%
+rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png.sha512
+rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png.sha512
+diff --git a/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512 b/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512
+new file mode 100644
+index 0000000000..4b3e624b62
+--- /dev/null
++++ b/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512
+@@ -0,0 +1 @@
++eb097c55f8df99e7f0be7b387de6c8970ba8255b6c633d3f2c4247ad5a8fe67238db8a98ff6322d4c03133a7c424832f1873f3e219734cdff517e731f60b60b6
+-- 
+GitLab
+
diff --git a/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch b/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch
new file mode 100644
index 0000000000000000000000000000000000000000..05b0a99a23f1b7cc4c1ebfcac1477f722d5a92af
--- /dev/null
+++ b/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch
@@ -0,0 +1,160 @@
+From 1a32dd6fc394a75b6898b1d692157826ed235015 Mon Sep 17 00:00:00 2001
+From: David Thompson <david.thompson@kitware.com>
+Date: Sat, 3 Dec 2022 01:08:56 -0500
+Subject: [PATCH 1/2] Make the ParFlow Plugin work with modern nlohmann::json.
+
+The previous version worked with nlohmann::json v3.6.1 but
+is broken using v3.11.2. Rather than attempt to throw internal
+nlohmann::json exception types, throw standard C++ exceptions
+for our errors.
+---
+ Plugins/ParFlow/IO/vtkVectorJSON.h | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/Plugins/ParFlow/IO/vtkVectorJSON.h b/Plugins/ParFlow/IO/vtkVectorJSON.h
+index 8e4d23c7e4..fb7fb5ecdb 100644
+--- a/Plugins/ParFlow/IO/vtkVectorJSON.h
++++ b/Plugins/ParFlow/IO/vtkVectorJSON.h
+@@ -6,6 +6,8 @@
+ 
+ #include "nlohmann/json.hpp" // for json
+ 
++#include <stdexcept>
++
+ /// Convert a vtkVector (or any vtkTuple) into a json::array.
+ template <typename T, int S>
+ void to_json(nlohmann::json& j, const vtkTuple<T, S>& vec)
+@@ -19,12 +21,11 @@ void from_json(const nlohmann::json& j, vtkTuple<T, S>& vec)
+ {
+   if (!j.is_array())
+   {
+-    throw nlohmann::detail::type_error::create(
+-      302, "type must be array, but is " + std::string(j.type_name()));
++    throw std::invalid_argument("type must be array, but is " + std::string(j.type_name()));
+   }
+   if (static_cast<int>(j.size()) != vec.GetSize())
+   {
+-    throw nlohmann::detail::type_error::create(302, "array sizes do not match");
++    throw std::invalid_argument("array sizes do not match");
+   }
+   int ii = 0;
+   for (auto it = j.begin(); it != j.end(); ++it, ++ii)
+-- 
+GitLab
+
+
+From e7a0cb1c336fae38c41987e20ee2834eca034ae9 Mon Sep 17 00:00:00 2001
+From: David Thompson <david.thompson@kitware.com>
+Date: Sat, 3 Dec 2022 01:28:27 -0500
+Subject: [PATCH 2/2] Switch the ParFlow plugin to VTK's nlohmann::json.
+
+Using this version allows us to enable the plugin by
+default since it doesn't add any external dependencies.
+---
+ CMakeLists.txt                              | 2 +-
+ Plugins/ParFlow/IO/CMakeLists.txt           | 7 -------
+ Plugins/ParFlow/IO/vtk.module               | 1 +
+ Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx | 7 ++++++-
+ Plugins/ParFlow/IO/vtkParFlowMetaReader.h   | 5 +++++
+ Plugins/ParFlow/IO/vtkVectorJSON.h          | 5 +++++
+ 6 files changed, 18 insertions(+), 9 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2674a59e83..e28ee1a594 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -312,7 +312,7 @@ set(paraview_default_plugins
+   PacMan
+   PanoramicProjectionView
+   ParametricSurfaces
+-  # ParFlow - Because of dependency to nlohmann_json
++  ParFlow
+   SaveStateAndScreenshot
+   SLACTools
+   StreamLinesRepresentation
+diff --git a/Plugins/ParFlow/IO/CMakeLists.txt b/Plugins/ParFlow/IO/CMakeLists.txt
+index ddafa4e6ab..733fd6cfc4 100644
+--- a/Plugins/ParFlow/IO/CMakeLists.txt
++++ b/Plugins/ParFlow/IO/CMakeLists.txt
+@@ -7,17 +7,10 @@ set(private_headers
+   vtkVectorJSON.h
+ )
+ 
+-vtk_module_find_package(
+-  PACKAGE nlohmann_json)
+-
+ vtk_module_add_module(ParFlow::IO
+   CLASSES ${classes}
+   PRIVATE_HEADERS ${private_headers}
+ )
+-vtk_module_link(ParFlow::IO
+-  PUBLIC nlohmann_json::nlohmann_json
+-)
+-
+ paraview_add_server_manager_xmls(
+   XMLS  ParFlowIO.xml
+ )
+diff --git a/Plugins/ParFlow/IO/vtk.module b/Plugins/ParFlow/IO/vtk.module
+index ea43242296..2caca0ba91 100644
+--- a/Plugins/ParFlow/IO/vtk.module
++++ b/Plugins/ParFlow/IO/vtk.module
+@@ -8,3 +8,4 @@ DEPENDS
+   VTK::CommonDataModel
+   VTK::CommonExecutionModel
+   VTK::ParallelCore
++  VTK::nlohmannjson
+diff --git a/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx b/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx
+index ba33a5eb77..06805bdf7d 100644
+--- a/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx
++++ b/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx
+@@ -25,7 +25,12 @@
+ #include "vtksys/FStream.hxx"
+ #include "vtksys/SystemTools.hxx"
+ 
+-#include "nlohmann/json.hpp"
++#if 0
++#include "nlohmann/json.hpp" // for json bits
++#else
++#include "vtk_nlohmannjson.h"        // Use VTK's mangled version
++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version
++#endif
+ 
+ #include <algorithm>
+ #include <cmath>
+diff --git a/Plugins/ParFlow/IO/vtkParFlowMetaReader.h b/Plugins/ParFlow/IO/vtkParFlowMetaReader.h
+index 3fc07ca58c..ace47939ee 100644
+--- a/Plugins/ParFlow/IO/vtkParFlowMetaReader.h
++++ b/Plugins/ParFlow/IO/vtkParFlowMetaReader.h
+@@ -8,7 +8,12 @@
+ #include "vtkSmartPointer.h" // for ivars
+ #include "vtkVector.h"       // for vtkVector*
+ 
++#if 0
+ #include "nlohmann/json.hpp" // for json bits
++#else
++#include "vtk_nlohmannjson.h"        // Use VTK's mangled version
++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version
++#endif
+ 
+ #include <map>    // for std::map
+ #include <set>    // for std::set
+diff --git a/Plugins/ParFlow/IO/vtkVectorJSON.h b/Plugins/ParFlow/IO/vtkVectorJSON.h
+index fb7fb5ecdb..57b39e94a1 100644
+--- a/Plugins/ParFlow/IO/vtkVectorJSON.h
++++ b/Plugins/ParFlow/IO/vtkVectorJSON.h
+@@ -4,7 +4,12 @@
+ 
+ #include "vtkVector.h"
+ 
++#if 0
+ #include "nlohmann/json.hpp" // for json
++#else
++#include "vtk_nlohmannjson.h"        // Use VTK's mangled version
++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version
++#endif
+ 
+ #include <stdexcept>
+ 
+-- 
+GitLab
+
diff --git a/Golden_Repo/p/ParaViewData/ParaViewData-5.11.0-GCCcore-11.3.0.eb b/Golden_Repo/p/ParaViewData/ParaViewData-5.11.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..181fc925f177107f9ed0ff2aac145de4b3200c30
--- /dev/null
+++ b/Golden_Repo/p/ParaViewData/ParaViewData-5.11.0-GCCcore-11.3.0.eb
@@ -0,0 +1,28 @@
+easyblock = 'Tarball'
+
+name = 'ParaViewData'
+version = '5.11.0'
+
+homepage = 'https://www.paraview.org'
+description = "Testdata for ParaView"
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=data&os=Sources&downloadFile='
+source_urls = [
+    ('https://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_src)]
+sources = [
+    ('ParaViewTestingDataFiles-v%(version)s.tar.xz'),
+    ('ParaViewTestingDataStore-v%(version)s.tar.xz'),
+]
+checksums = [
+    ('sha256', '1fabddc33932986eb84cc7e5e08515aff0b9432d875f48ac87ba0285c856e7a2'),
+    ('sha256', '48b1e7bc38aac3696073cc6911cfb221832e4cc3787ea0010e80f9feb9f190cf'),
+]
+
+sanity_check_paths = {
+    'files': ['.ExternalData/README.rst'],
+    'dirs': ['.ExternalData', 'Clients', 'Plugins', 'Remoting', 'Testing', 'VTKExtensions'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b2cfe635ec66e7a3471162c6e2dd5250a6393fc8
--- /dev/null
+++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb
@@ -0,0 +1,34 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaViewPlugin-Nek5000'
+version = '20230208'
+versionsuffix = '-EGL'
+
+homepage = "http://www.paraview.org"
+description = "Plugin for ParaView. Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/']
+sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz']
+checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('ParaView', '5.11.0', '-EGL'),
+]
+
+separate_build_dir = True
+
+modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'}
+
+sanity_check_paths = {
+    'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'],
+    'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a4f75618a95e8ffb5470afa138ba660ec48e7356
--- /dev/null
+++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb
@@ -0,0 +1,33 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaViewPlugin-Nek5000'
+version = '20230208'
+
+homepage = "http://www.paraview.org"
+description = "Plugin for ParaView. Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/']
+sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz']
+checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('ParaView', '5.11.0'),
+]
+
+separate_build_dir = True
+
+modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'}
+
+sanity_check_paths = {
+    'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'],
+    'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fd4b649192f3c574d77ec61716d40486b2567aea
--- /dev/null
+++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb
@@ -0,0 +1,34 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaViewPlugin-Nek5000'
+version = '20230208'
+versionsuffix = '-EGL'
+
+homepage = "http://www.paraview.org"
+description = "Plugin for ParaView. Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/']
+sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz']
+checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('ParaView', '5.11.0', '-EGL'),
+]
+
+separate_build_dir = True
+
+modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'}
+
+sanity_check_paths = {
+    'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'],
+    'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..75d2cbfecb39fb8fea46a5a1daba62a00a1d3235
--- /dev/null
+++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb
@@ -0,0 +1,33 @@
+easyblock = 'CMakeMake'
+
+name = 'ParaViewPlugin-Nek5000'
+version = '20230208'
+
+homepage = "http://www.paraview.org"
+description = "Plugin for ParaView. Paraview is a scientific parallel visualizer."
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/']
+sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz']
+checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('ParaView', '5.11.0'),
+]
+
+separate_build_dir = True
+
+modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'}
+
+sanity_check_paths = {
+    'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'],
+    'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/PyGObject/PyGObject-3.42.2-GCCcore-11.3.0.eb b/Golden_Repo/p/PyGObject/PyGObject-3.42.2-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..13599cb11e3011ec3519cb024cb354f1fc0009ea
--- /dev/null
+++ b/Golden_Repo/p/PyGObject/PyGObject-3.42.2-GCCcore-11.3.0.eb
@@ -0,0 +1,47 @@
+easyblock = 'PythonPackage'
+
+name = 'PyGObject'
+version = '3.42.2'
+
+homepage = 'https://pygobject.readthedocs.io'
+description = """PyGObject is a Python package which provides bindings for GObject based
+libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [PYPI_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['21524cef33100c8fd59dc135948b703d79d303e368ce71fa60521cc971cd8aa7']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('GLib', '2.72.1'),
+    ('GObject-Introspection', '1.72.0'),
+    ('PyCairo', '1.23.0'),
+    ('libffi', '3.4.2'),
+]
+
+use_pip = False
+sanity_pip_check = True
+download_dep_fail = True
+
+# install data (pkg-config and include files)
+installopts = '--root=/'
+
+sanity_check_paths = {
+    'files': [
+        'include/pygobject-%(version_major)s.0/pygobject.h',
+        'lib/pkgconfig/pygobject-%(version_major)s.0.pc',
+    ],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/gi'],
+}
+
+options = {'modulename': 'gi'}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/PyQuil/PyQuil-3.3.3-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/p/PyQuil/PyQuil-3.3.3-gcccoremkl-11.3.0-2022.1.0.eb
index cd1a2525d6964372e38a125f7fe2226c1f9a0146..e1dabd5fe957dd28672956148c8552147afbe8c2 100644
--- a/Golden_Repo/p/PyQuil/PyQuil-3.3.3-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/p/PyQuil/PyQuil-3.3.3-gcccoremkl-11.3.0-2022.1.0.eb
@@ -11,7 +11,8 @@ toolchainopts = {'pic': True}
 
 dependencies = [
     ('Python', '3.10.4'),
-    ('SciPy-Stack', '2022a'),
+    ('SciPy-bundle', '2022.05'),
+    ('IPython', '8.14.0'),
     ('networkx', '2.8.4'),
 
 ]
diff --git a/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.2.0.eb b/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb
similarity index 100%
rename from Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.2.0.eb
rename to Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb
diff --git a/Golden_Repo/p/PyTorch-Geometric/PyTorch-Geometric-2.1.0-foss-2022a-PyTorch-1.12.1-CUDA-11.7.eb b/Golden_Repo/p/PyTorch-Geometric/PyTorch-Geometric-2.1.0-foss-2022a-PyTorch-1.12.1-CUDA-11.7.eb
index b8e62b72cb44515f5918896c717ae2948aa54e8f..a0288203743b7ded763d805b5d3d0718a71d5521 100644
--- a/Golden_Repo/p/PyTorch-Geometric/PyTorch-Geometric-2.1.0-foss-2022a-PyTorch-1.12.1-CUDA-11.7.eb
+++ b/Golden_Repo/p/PyTorch-Geometric/PyTorch-Geometric-2.1.0-foss-2022a-PyTorch-1.12.1-CUDA-11.7.eb
@@ -1,5 +1,6 @@
 easyblock = 'PythonBundle'
 
+
 name = 'PyTorch-Geometric'
 version = '2.1.0'
 local_pytorchver = '1.12.0'
@@ -14,8 +15,8 @@ dependencies = [
     ('Python', '3.10.4'),
     ('CUDA', '11.7', '', SYSTEM),
     ('PyTorch', local_pytorchver, '-CUDA-%(cudaver)s'),
-    ('scikit-learn', '1.1.2'),
-    ('scikit-image', '0.19.3'),
+    ('scikit-learn', '1.1.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('scikit-image', '0.19.3', '', ('gcccoremkl', '11.3.0-2022.1.0')),
     ('numba', '0.56.4', '-CUDA-%(cudaver)s'),
     ('h5py', '3.7.0'),
     ('tqdm', '4.64.0'),
@@ -26,6 +27,11 @@ dependencies = [
 
 use_pip = True
 
+# This easyblock NEED to be installed from a compute node with gpu,
+# see https://github.com/easybuilders/easybuild-easyconfigs/issues/18274
+# This here is needed, but not enough:
+preinstallopts = "FORCE_CUDA=1"
+
 exts_list = [
     ('googledrivedownloader', '0.4', {
         'modulename': 'google_drive_downloader',
diff --git a/Golden_Repo/p/PyTorch-Lightning/PyTorch-Lightning-1.8.2-foss-2022a-CUDA-11.7.eb b/Golden_Repo/p/PyTorch-Lightning/PyTorch-Lightning-1.8.2-foss-2022a-CUDA-11.7.eb
index 8f4749f4dae4ff3b9d774fe9be16e8fb52fd6d78..607b71f6b8d8f31cf4dc96eb021b966d3882c612 100644
--- a/Golden_Repo/p/PyTorch-Lightning/PyTorch-Lightning-1.8.2-foss-2022a-CUDA-11.7.eb
+++ b/Golden_Repo/p/PyTorch-Lightning/PyTorch-Lightning-1.8.2-foss-2022a-CUDA-11.7.eb
@@ -14,7 +14,7 @@ dependencies = [
     ('Python', '3.10.4'),
     ('PyTorch', '1.12.0', versionsuffix),
     ('tqdm', '4.64.0'),
-    ('tensorboard', '2.10.0'),
+    ('tensorboard', '2.11.2'),
     ('typing-extensions', '4.3.0'),
 ]
 
diff --git a/Golden_Repo/p/Python-Neuroimaging/Python-Neuroimaging-2023-gcccoremkl-11.3.0-2022.1.0-Python-3.10.4.eb b/Golden_Repo/p/Python-Neuroimaging/Python-Neuroimaging-2023-gcccoremkl-11.3.0-2022.1.0-Python-3.10.4.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fba275b4840d7c384c81d29aa0aea9c8a283889f
--- /dev/null
+++ b/Golden_Repo/p/Python-Neuroimaging/Python-Neuroimaging-2023-gcccoremkl-11.3.0-2022.1.0-Python-3.10.4.eb
@@ -0,0 +1,175 @@
+easyblock = 'Bundle'
+name = 'Python-Neuroimaging'
+version = '2023'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = ''
+description = """Python Neuroimaging is a collection of open source software for neuroimaging using Python."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+# This is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('scikit-learn', '1.1.2'),
+    ('scikit-build', '0.15.0'),
+    ('scikit-image', '0.19.3'),
+    ('h5py', '3.7.0', '-serial'),
+    ('matplotlib', '3.5.2'),
+    ('PyOpenCL', '2022.2.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('Seaborn', '0.12.1'),
+    ('sympy', '1.11.1'),
+    ('tqdm', '4.64.0'),
+    ('xarray', '2022.9.0'),
+    ('RDFlib', '6.2.0'),
+    ('lxml', '4.9.1'),
+]
+
+# Needed to make sure that the sanity check of mdt works
+unwanted_env_vars = ['CUDA_VISIBLE_DEVICES']
+
+exts_default_options = {
+    'download_dep_fail': True,
+    'sanity_pip_check': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    ('bz2file', '0.98', {
+        'source_urls': ['https://pypi.python.org/packages/source/b/bz2file'],
+        'checksums': ['64c1f811e31556ba9931953c8ec7b397488726c63e09a4c67004f43bdd28da88'],
+    }),
+    ('nibabel', '4.0.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/nibabel'],
+        'checksums': ['45c49b5349351b45f6c045a91aa02b4f0d367686ff3284632ef95ac65b930786'],
+        'skipsteps': ['sanitycheck'],
+    }),
+    ('dipy', '1.5.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/d/dipy'],
+        'checksums': ['a19cf40166be09c5b7c31ab00b12fed136ae9531483a9cd7019cc3f3b95f6271'],
+    }),
+    ('nilearn', '0.9.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/nilearn'],
+        'checksums': ['8da8d3835d92cd7b8a6cc92455a489d7e7f5994cf64fc71bce653e362773b9e4'],
+    }),
+    ('neurdflib', '5.0.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/neurdflib'],
+        'checksums': ['d34493cee15029ff5db16157429585ff863ba5542675a4d8a94a0da1bc6e3a50'],
+        'modulename': 'rdflib'
+    }),
+    ('etelemetry', '0.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/e/etelemetry'],
+        'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['78febd59a22eb53d052d731f10f24139eb2854fd237348fba683dd8616fb4a67'],
+        'use_pip': True,
+    }),
+    ('ci-info', '0.3.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/c/ci_info'],
+        'checksums': ['1fd50cbd401f29adffeeb18b0489e232d16ac1a7458ac6bc316deab6ae535fb0'],
+        'modulename': 'ci_info'
+    }),
+    ('prov', '2.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/prov'],
+        'checksums': ['b6438f2195ecb9f6e8279b58971e02bc51814599b5d5383366eef91d867422ee'],
+    }),
+    ('looseversion', '1.0.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/l/looseversion'],
+        'checksums': ['035288860e1afe67d63ea9c700dd9d095c724e2e5722a39029dd91652d4316ed'],
+    }),
+    ('pydot', '1.4.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pydot'],
+        'checksums': ['248081a39bcb56784deb018977e428605c1c758f10897a339fce1dd728ff007d'],
+    }),
+    ('frozenlist', '1.3.3', {
+        'source_urls': ['https://pypi.python.org/packages/source/f/frozenlist'],
+        'checksums': ['58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a'],
+    }),
+    ('aiosignal', '1.3.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/aiosignal'],
+        'checksums': ['54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc'],
+    }),
+    ('async-timeout', '4.0.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/async-timeout'],
+        'checksums': ['2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15'],
+    }),
+    ('ratelimit', '2.2.1', {
+        'source_urls': ['https://pypi.python.org/packages/source/r/ratelimit'],
+        'checksums': ['af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42'],
+    }),
+    ('yarl', '1.8.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/y/yarl'],
+        'checksums': ['49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562'],
+    }),
+    ('multidict', '6.0.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/multidict'],
+        'checksums': ['3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49'],
+    }),
+    ('aiohttp', '3.8.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/aiohttp'],
+        'checksums': ['bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c'],
+    }),
+    ('argcomplete', '2.0.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/a/argcomplete'],
+        'checksums': ['6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20'],
+    }),
+    ('traits', '6.3.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/t/traits'],
+        'checksums': ['4520ef4a675181f38be4a5bab1b1d5472691597fe2cfe4faf91023e89407e2c6'],
+    }),
+    ('nipype', '1.8.5', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/nipype'],
+        'checksums': ['e3842743fb660464dd29de73dcfc9ef66d273be10bcc64059ff21cd5ef1e9655'],
+    }),
+    ('nipy', '0.5.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/n/nipy'],
+        'checksums': ['a8a2c97ce854fece4aced5a6394b9fdca5846150ad6d2a36b86590924af3c848'],
+    }),
+    ('mne', '1.2.2', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/mne'],
+        'checksums': ['d40743d6ca7ae3919a557166fd5fc4c00a9719e40c07346baad57964e15f02bb'],
+    }),
+    ('tatsu', '5.8.3', {
+        'source_tmpl': 'TatSu-%(version)s.zip',
+        'checksums': ['571ecbcdf33b7828c05e5cd95a8e8ad06af111c2c83a6a245be4d8f7c43de7bb'],
+    }),
+    ('mot', '0.11.4', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/mot'],
+        'checksums': ['a665ddc190419409f4c46b80847728db8376703c56fe10c7ec2adb31f6a9cb04'],
+        # to disable the test, since it needs a working OpenCL installation, which is not always the case in the logins
+        'modulename': 'os'
+    }),
+    ('mdt', '1.2.7', {
+        'source_urls': ['https://pypi.python.org/packages/source/m/mdt'],
+        'checksums': ['0fac9d86f30c473c81a909b47a32ea51eb489c78cc69595407ece888c91431d3'],
+        # to disable the test, since it needs a working OpenCL installation, which is not always the case in the logins
+        'modulename': 'os'
+    }),
+    ('pysptools', '0.15.0', {
+        'source_urls': ['https://pypi.python.org/packages/source/p/pysptools'],
+        'checksums': ['923c4e1af97c490d7d9ad86d04fdf8918b63106023493e6a4cf54323e244b05e'],
+        'modulename': 'pysptools.util'
+    }),
+]
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['bin', 'lib/python%(pyshortver)s/site-packages', 'lib64/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/p/Python/Python-3.10.4-GCCcore-11.3.0.eb b/Golden_Repo/p/Python/Python-3.10.4-GCCcore-11.3.0.eb
index 8b36fe930fc70f25b115a8a8781894d484e1ec4f..7cebb4fa69f716fc41ea4c845cd18a0c8f252648 100644
--- a/Golden_Repo/p/Python/Python-3.10.4-GCCcore-11.3.0.eb
+++ b/Golden_Repo/p/Python/Python-3.10.4-GCCcore-11.3.0.eb
@@ -99,14 +99,9 @@ exts_list = [
         'modulename': 'arff',
         'checksums': ['3220d0af6487c5aa71b47579be7ad1d94f3849ff1e224af3bf05ad49a0b5c4da'],
     }),
-    ('pycrypto', '2.6.1', {
+    ('pycryptodome', '3.17', {
         'modulename': 'Crypto',
-        'patches': ['pycrypto-2.6.1_remove-usr-include.patch'],
-        'checksums': [
-            'f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c',  # pycrypto-2.6.1.tar.gz
-            # pycrypto-2.6.1_remove-usr-include.patch
-            '06c3d3bb290305e1360a023ea03f9281116c230de62382e6be9474996086712e',
-        ],
+        'checksums': ['bce2e2d8e82fcf972005652371a3e8731956a0c1fbb719cc897943b3695ad91b'],
     }),
     ('ecdsa', '0.17.0', {
         'checksums': ['b9f500bb439e4153d0330610f5d26baaf18d17b8ced1bc54410d189385ea68aa'],
diff --git a/Golden_Repo/p/pscom/pscom-5.7.0-1-GCCcore-11.3.0.eb b/Golden_Repo/p/pscom/pscom-5.7.0-1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fc7d0cf03d78ed9a486125071d7bfe3c7902f2c7
--- /dev/null
+++ b/Golden_Repo/p/pscom/pscom-5.7.0-1-GCCcore-11.3.0.eb
@@ -0,0 +1,51 @@
+easyblock = 'CMakeMake'
+
+name = 'pscom'
+# Create drop-in replacement version that ensures overriding behaviour
+version = '5.7.0-1'
+local_realversion = version
+homepage = 'http://www.par-tec.com'
+description = f"""ParaStation is a robust and efficient cluster middleware, consisting of a high-performance
+communication layer (MPI) and a sophisticated management layer.
+
+The real version of this package is {local_realversion}
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/ParaStation/%(name)s/archive/']
+sources = ['%s.tar.gz' % local_realversion]
+checksums = ['5ee1c2cc1438a9c3cfa2e1521ff98860b98a753f574a3acc2eb6186656040fc3']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('popt', '1.18'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('UCX', 'default'),
+]
+
+build_type = 'RelWithDebInfo'
+
+preconfigopts = 'export UCP_LDFLAGS="-L$EBROOTUCX/lib" && '
+preconfigopts += 'export CUDA_LDFLAGS="-L$EBROOTNVIDIA/lib64" &&'
+
+configopts = '-DCUDA_ENABLED=ON'
+
+sanity_check_paths = {
+    'files': [
+        'include/%(name)s.h',
+        ('lib/libpscom.so', 'lib64/libpscom.so'),
+        ('lib/libpscom4ucp.so', 'lib64/libpscom4ucp.so'),
+    ],
+    'dirs': [],
+}
+
+modextravars = {
+    'PSCOMVERSION': '%s' % local_realversion,
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
index 0673d21762810ae538f1bcd39c7ebb7a8dbad1d2..debebd99c73a80f1987686ef239be3ae2e8a7634 100644
--- a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
@@ -2,7 +2,7 @@ name = 'psmpi'
 version = '5.7.0-1'
 
 homepage = 'https://github.com/ParaStation/psmpi2'
-description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
 based on MPICH v3. It provides extra low level communication libraries and integration with
 various batch systems for tighter process control.
 """
@@ -17,6 +17,8 @@ checksums = [
     '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
     # psmpi-5.5.0-1_ime.patch
     'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
 ]
 
 dependencies = [
@@ -29,7 +31,8 @@ dependencies = [
 
 patches = [
     'psmpi_shebang.patch',
-    'psmpi-5.5.0-1_ime.patch'
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
 ]
 
 mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
similarity index 83%
rename from Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb
rename to Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
index 70c5404b67724cae1ef03be50ff593f2cbcec683..8dd9bcd9c76dfdf463dba6a6194410d91f2fde72 100644
--- a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
@@ -2,12 +2,12 @@ name = 'psmpi'
 version = '5.7.0-1'
 
 homepage = 'https://github.com/ParaStation/psmpi2'
-description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
 based on MPICH v3. It provides extra low level communication libraries and integration with
 various batch systems for tighter process control.
 """
 
-toolchain = {'name': 'NVHPC', 'version': '22.11'}
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
 
 sources = [SOURCE_TAR_GZ]
 source_urls = ['https://github.com/ParaStation/psmpi/archive/']
@@ -17,6 +17,8 @@ checksums = [
     '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
     # psmpi-5.5.0-1_ime.patch
     'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
 ]
 
 dependencies = [
@@ -29,7 +31,8 @@ dependencies = [
 
 patches = [
     'psmpi_shebang.patch',
-    'psmpi-5.5.0-1_ime.patch'
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
 ]
 
 mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
index ba1eecdd475c808b2cdbe9d9653e597f2152c405..e9a133052d10aecda529944c5fe60f4f643da833 100644
--- a/Golden_Repo/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
@@ -2,7 +2,7 @@ name = 'psmpi'
 version = '5.7.0-1'
 
 homepage = 'https://github.com/ParaStation/psmpi2'
-description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
 based on MPICH v3. It provides extra low level communication libraries and integration with
 various batch systems for tighter process control.
 """
@@ -17,6 +17,8 @@ checksums = [
     '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
     # psmpi-5.5.0-1_ime.patch
     'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
 ]
 
 dependencies = [
@@ -29,7 +31,8 @@ dependencies = [
 
 patches = [
     'psmpi_shebang.patch',
-    'psmpi-5.5.0-1_ime.patch'
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
 ]
 
 mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.0-1_singleton-fix.patch b/Golden_Repo/p/psmpi/psmpi-5.7.0-1_singleton-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4643f36c3c5d1c98102c0e4b3bb37b67b8da4c02
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.0-1_singleton-fix.patch
@@ -0,0 +1,40 @@
+From 56ce43874fe1f97b2cc7cbd1a1a0b487432404f4 Mon Sep 17 00:00:00 2001
+From: Carsten Clauss <clauss@par-tec.com>
+Date: Thu, 22 Sep 2022 13:08:18 +0200
+Subject: [PATCH] init: Fix version check for the singleton case.
+
+In the singleton case, there is no need to check the version -- and
+moreover, there is no KVS available (and hence put/get functions for
+it must not be called) since no process manager connected.
+---
+ mpich2/src/mpid/psp/src/mpid_init.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/mpich2/src/mpid/psp/src/mpid_init.c b/mpich2/src/mpid/psp/src/mpid_init.c
+index 5654d5cb9..f31d301b4 100644
+--- a/mpich2/src/mpid/psp/src/mpid_init.c
++++ b/mpich2/src/mpid/psp/src/mpid_init.c
+@@ -245,6 +245,11 @@ static
+ int i_version_set(int pg_rank, const char *ver)
+ {
+ 	int mpi_errno = MPI_SUCCESS;
++
++	/* There is no need to check for version in the singleton case and we moreover must
++	   not use MPIR_pmi_kvs_put() in this case either since there is no process manager. */
++	if (MPIDI_Process.singleton_but_no_pm) goto fn_exit;
++
+ 	if (pg_rank == 0) {
+ 		mpi_errno = MPIR_pmi_kvs_put("i_version", ver);
+ 		MPIR_ERR_CHECK(mpi_errno);
+@@ -262,6 +267,11 @@ static
+ int i_version_check(int pg_rank, const char *ver)
+ {
+         int mpi_errno = MPI_SUCCESS;
++
++	/* There is no need to check for version in the singleton case and we moreover must
++	   not use MPIR_pmi_kvs_get() in this case either since there is no process manager. */
++	if (MPIDI_Process.singleton_but_no_pm) goto fn_exit;
++
+ 	if (pg_rank != 0) {
+ 		char val[100] = "unknown";
+ 		mpi_errno = MPIR_pmi_kvs_get(0, "i_version", val, sizeof(val));
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..482733003700cafd44d9d5cdb76e7e378c7ae4aa
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
@@ -0,0 +1,47 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2c07243d7475dd30839c7c0b0aff4286f162b72a
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
@@ -0,0 +1,47 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..11f887ac6c593826d7d9968e9b0a8762a8cc01da
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,47 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3eb47585933c92d29a62a580a8e16d06881b5c84
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..78e233679f6cf47e24787cffdd953092cb75a567
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8f1563b731f4681d955cb018d686ba1b7909a0bd
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..acfba0132b18d8c4c0774707d059dd2aee1830bc
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..171314f94752c4437095357cf5dff4ada73f9a31
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3ab1a0ef79fa549da4697d19d4c41a40bafafe4f
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..70f804c55c1bd5fafd5ea06a4d747130a6db624b
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6936bf35ac6d4cc1a915bfe729fdb7295482997f
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d1fa4481085579216ed08125fbbeb0345dcca4dd
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..29e5a42433f303f72dfa7844ea86f1e2aa3777dc
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..41daa4e50081c1b104fb6a50794a4be0e5f5381e
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,43 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..74b179c63e94a37e6fbd8a6e3b66e0e4bea15c21
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,42 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+    # psmpi-5.5.0-1_ime.patch
+    'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi-5.5.0-1_ime.patch'
+]
+
+mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+
+preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/p/pulser/pulser-0.12.0-GCCcore-11.3.0.eb b/Golden_Repo/p/pulser/pulser-0.12.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6af36eb89f6010e9fd68a6acc6916acbd62ab8bd
--- /dev/null
+++ b/Golden_Repo/p/pulser/pulser-0.12.0-GCCcore-11.3.0.eb
@@ -0,0 +1,74 @@
+easyblock = 'PythonBundle'
+
+name = 'pulser'
+version = '0.12.0'
+
+homepage = 'https://github.com/pasqal-io/Pulser'
+description = """Pulser is a framework for composing, simulating and executing pulse
+              sequences for neutral-atom quantum devices."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Pillow-SIMD', '9.2.0'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # numpy
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('contourpy', '1.0.7', {
+        'checksums': ['d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e'],
+    }),
+    ('types-cryptography', '3.3.23.2', {
+        'checksums': ['09cc53f273dd4d8c29fa7ad11fefd9b734126d467960162397bc5e3e604dea75'],
+        'modulename': 'cryptography',
+    }),
+    ('requests-mock', '1.9.3', {
+        'checksums': ['8d72abe54546c1fc9696fa1516672f1031d72a55a1d66c85184f972a24ba0eba'],
+    }),
+    ('qutip', '4.7.1', {
+        'checksums': ['9a87178e68b145c2145b526caa943ccc8400a111325ced45bd17f9b893663af2'],
+    }),
+    ('PyJWT', '2.6.0', {
+        'modulename': 'jwt',
+        'checksums': ['69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd'],
+    }),
+    ('auth0_python', '3.24.1', {
+        'modulename': 'auth0',
+        'sources': ['%(name)s-%(version)s-py2.py3-none-any.whl'],
+        'checksums': ['87dbf603c89fcebfd35f5ba29bc8a820af72a7d5a772f53752ae04d30f191712'],
+    }),
+    ('pasqal_cloud', '0.2.5', {
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['bac961acb67443c8e6c24321e68129188419e8980a10c0f1497a47525c0b0fde'],
+    }),
+    ('pulser_pasqal', version, {
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['4949f3ceef9a63bd05592733595faa437b8ef89a206e224414471e99f739561b'],
+    }),
+    ('pulser_core', version, {
+        'modulename': 'pulser',
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['5c9715187edfdd8a29172c9efa69d6e89e0994001a9d783159f315422311a192'],
+    }),
+    ('pulser_simulation', version, {
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['1f56f4e345b8a37f8014637ed789b959cbb4aba41ab735effc31012e02462583'],
+    }),
+    (name, version, {
+        'sources': ['%(name)s-%(version)s-py3-none-any.whl'],
+        'checksums': ['dfd9870880ccd915b9a6ae4abaac17ecef757dc4b090a316b1068f94ef3d45fc'],
+    }),
+]
+
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb b/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7f567c04e8b5b1e73f4ab1872ec6f2cc4f61e9d4
--- /dev/null
+++ b/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb
@@ -0,0 +1,39 @@
+easyblock = 'PythonBundle'
+
+name = 'Qiskit-juqcs'
+version = '0.5.0'
+
+homepage = 'https://jugit.fz-juelich.de/qip/juniq-platform/qiskit-juqcs/'
+description = """Qiskit provider for JUQCS (Juelich Universal Quantum Computer Simulator)."""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Qiskit', '0.41.0'),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('PyJWT', '2.6.0', {
+        'modulename': 'jwt',
+        'checksums': ['69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd'],
+    }),
+    ('pyunicore', '0.14.1', {
+        'checksums': ['7efd4784d55ef02c4da4431232b54505814666577165c0f320c922ed2b32af01'],
+    }),
+    ('qiskit-juqcs', version, {
+        'modulename': False,
+        'checksums': ['6d8800986d5924e2e07635a315d15bfbc48297649604c83a4ec282ea7d6ba737'],
+    }),
+]
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb b/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8fb211f6d8647cb381f664b98377e0c9caff0716
--- /dev/null
+++ b/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb
@@ -0,0 +1,159 @@
+easyblock = 'PythonBundle'
+
+name = 'Qiskit'
+version = '0.41.0'
+
+homepage = 'https://qiskit.org'
+description = """Qiskit is an open-source framework for working with noisy quantum computers
+ at the level of pulses, circuits, and algorithms."""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Ninja', '1.10.2'),
+    ('pkgconf', '1.8.0'),
+    ('pybind11', '2.9.2'),  # for aer
+    ('Rust', '1.60.0'),  # for retworkx
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('lxml', '4.9.1'),
+    ('sympy', '1.11.1', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('dill', '0.3.6'),
+    ('scikit-build', '0.15.0'),  # for aer
+    ('scikit-learn', '1.1.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('CVXOPT', '1.3.0'),
+    ('h5py', '3.7.0'),
+    ('PySCF', '2.1.1'),
+    ('SymEngine-python', '0.9.2', '', ('GCC', '11.3.0')),
+    ('numba', '0.56.4', '-CUDA-11.7', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('nlohmann_json', '3.10.5'),  # for qiskit-aer
+    ('spdlog', '1.11.0'),
+    ('muparserx', '4.0.11'),  # for qiskit-aer
+    ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+# qiskit-aer must not use CONAN to install dependencies
+modextravars = {'DISABLE_CONAN': 'YES'}
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    # DISABLED: because 'pip check' does not find pyscf (not installed with pip)
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('dill', '0.3.5.1', {
+        'checksums': ['d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86'],
+    }),
+    ('ntlm-auth', '1.5.0', {
+        'checksums': ['c9667d361dc09f6b3750283d503c689070ff7d89f2f6ff0d38088d5436ff8543'],
+    }),
+    ('retworkx', '0.11.0', {
+        'checksums': ['a4c2a5ad3f8402493d41ad20ad91a03777ea214a3636c290272bbfaf36161161'],
+    }),
+    ('stevedore', '4.1.1', {
+        'checksums': ['7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a'],
+    }),
+    ('rustworkx', '0.12.1', {
+        'checksums': ['13a19a2f64dff086b3bffffb294c4630100ecbc13634b4995d9d36a481ae130e'],
+    }),
+    ('websockets', '10.4', {
+        'checksums': ['eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3'],
+    }),
+    ('websocket-client', '1.3.3', {
+        'modulename': False,
+        'checksums': ['d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1'],
+    }),
+    ('requests_ntlm', '1.1.0', {
+        'checksums': ['9189c92e8c61ae91402a64b972c4802b2457ce6a799d658256ebf084d5c7eb71'],
+    }),
+    ('fastdtw', '0.3.4', {
+        'checksums': ['2350fa6ec36bcad186eaf81f46eff35181baf04e324f522de8aeb43d0243f64f'],
+    }),
+    ('inflection', '0.5.1', {
+        'checksums': ['1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417'],
+    }),
+    ('soupsieve', '2.3.1', {
+        'checksums': ['b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9'],
+    }),
+    ('beautifulsoup4', '4.11.1', {
+        'modulename': 'bs4',
+        'checksums': ['ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693'],
+    }),
+    ('pytz', '2022.7.1', {
+        'checksums': ['01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0'],
+    }),
+    ('multitasking', '0.0.11', {
+        'checksums': ['4d6bc3cc65f9b2dca72fb5a787850a88dae8f620c2b36ae9b55248e51bcd6026'],
+    }),
+    ('frozendict', '2.3.4', {
+        'checksums': ['15b4b18346259392b0d27598f240e9390fafbff882137a9c48a1e0104fb17f78'],
+    }),
+    ('Nasdaq_Data_Link', '1.0.4', {
+        'modulename': False,
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['214a620551da1c7521476839fb96f932234d4d78e7ba44310722709ca37b0691'],
+    }),
+    ('docplex', '2.25.236', {
+        'checksums': ['256914b4c0113a4e1c78f32ea20c7d76dc8efe286fe890270e75cfad50fe510f'],
+    }),
+    ('yfinance', '0.2.9', {
+        'checksums': ['449f9d54ff7868bdbb2d25b628a97d21fdd05e293a0f9975bba7aaa9984d08e6'],
+    }),
+    ('qiskit-nature', '0.5.2', {
+        'modulename': 'qiskit_nature',
+        'checksums': ['1786e1e825c450ae0ae4971246b0ca717bc5285696c3d342313f5cb125ce4202'],
+    }),
+    ('qiskit-optimization', '0.5.0', {
+        'modulename': 'qiskit_optimization',
+        'checksums': ['4804831e590a7159c2bd2be71750cde0c95a3b06e14a4843346e2ebcc7231e01'],
+    }),
+    ('qiskit-finance', '0.3.4', {
+        'modulename': 'qiskit_finance',
+        'checksums': ['b22fc7e0f23837ee659d1dbe974f3d69ec0d291e51486a2ad81dcf17b4ad8a4f'],
+    }),
+    ('qiskit-machine-learning', '0.5.0', {
+        'modulename': 'qiskit_machine_learning',
+        'checksums': ['c332e9d3ea658b2d24b401e5264b239f1093378952a70ba46c73a69a3ce7c727'],
+    }),
+    ('qiskit-terra', '0.23.1', {
+        'modulename': 'qiskit.qobj',
+        'patches': ['qiskit-terra-0.18.3_fix-qiskit-version-env.patch'],
+        'checksums': [
+            {'qiskit-terra-0.23.1.tar.gz': '71dfb4510b2f1fdb7589b412e8304d928534fa2eece66a65b3f841baf5412afb'},
+            {'qiskit-terra-0.18.3_fix-qiskit-version-env.patch':
+             '1296cc650a7d4d2d908a6a5de6b4ce52106748464a54d47744a4648494f4c24e'},
+        ],
+    }),
+    ('qiskit-ignis', '0.7.1', {
+        'modulename': 'qiskit.ignis',
+        'checksums': ['71efb17933717c0b8161a291ebd4f8d4fe8d7dfd1fdc66fa23a0b6d14fd10cf3'],
+    }),
+    ('qiskit-aer', '0.11.2', {
+        'modulename': 'qiskit.providers.aer',
+        'checksums': ['1bc1d3b46f7fc8976084a900cb9a2a80e8b25df6e59a88fd11136f24e1297fc1'],
+    }),
+    ('qiskit-ibmq-provider', '0.20.0', {
+        'modulename': 'qiskit.providers.ibmq',
+        'checksums': ['758938ce13a09f53ada9f4852891d7ca7ba98fddab6b9850417bbcb0efc26c2e'],
+    }),
+    ('qiskit', version, {
+        'checksums': ['fa613d0312061a654b9b69e21374bac2dc04bb6df872b52370975d6dd51d7d81'],
+    }),
+]
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/r/R/HWxtest-1.1.9_add-fcommon.patch b/Golden_Repo/r/R/HWxtest-1.1.9_add-fcommon.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a4e41eea63ece68f9bb90d4ff46e89ccece46bff
--- /dev/null
+++ b/Golden_Repo/r/R/HWxtest-1.1.9_add-fcommon.patch
@@ -0,0 +1,21 @@
+fix "multiple definition" errors by adding -fcommon compiler options,
+see https://www.gnu.org/software/gcc/gcc-10/porting_to.html
+
+author: Kenneth Hoste (HPC-UGent)
+
+diff -ruN HWxtest.orig/MD5 HWxtest/MD5
+--- HWxtest.orig/MD5	2020-11-08 21:15:03.612622261 +0100
++++ HWxtest/MD5	2020-11-08 21:13:24.278691443 +0100
+@@ -40,6 +40,7 @@
+ 4657a2011dc5363ed1cfd1d29a7040d5 *src/HWmtest.c
+ 08ec52ea231752fbb2bb11a529107806 *src/HWxcount.c
+ 23598383650c211dd18d54bded68b9bd *src/HWxtest.c
++8b6d9aec8b8cef60d1b245e0f290bfed *src/Makevars
+ 886a6d855fb0b59e565b919a1ff69eb0 *vignettes/HWxtest.Rmd
+ fcf857c5f98963f740c5c2f95e33ccc9 *vignettes/HWxtest.md
+ b93f768037a75ec9edd60ca89fd4c1db *vignettes/bibHW.txt
+diff -ruN HWxtest.orig/src/Makevars HWxtest/src/Makevars
+--- HWxtest.orig/src/Makevars	1970-01-01 01:00:00.000000000 +0100
++++ HWxtest/src/Makevars	2020-11-08 21:15:51.340615023 +0100
+@@ -0,0 +1 @@
++PKG_CFLAGS = -fcommon
diff --git a/Golden_Repo/r/R/R-4.2.1-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/r/R/R-4.2.1-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..741b738e38f2e6fd25a3c8fdc232ea1519f7cd26
--- /dev/null
+++ b/Golden_Repo/r/R/R-4.2.1-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,3355 @@
+name = 'R'
+version = '4.2.1'
+
+homepage = 'https://www.r-project.org/'
+description = """R is a free software environment for statistical computing
+ and graphics."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s']
+sources = [SOURCE_TAR_GZ]
+checksums = ['4d52db486d27848e54613d4ee977ad952ec08ce17807e1b525b10cd4436c643f']
+
+builddependencies = [
+    ('pkgconf', '1.8.0'),
+    ('Autotools', '20220317'),
+    ('binutils', '2.38'),
+    ('texlive', '20220321'),
+    ('XServer', '21.1.6'),
+]
+dependencies = [
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('cairo', '1.17.4'),
+    ('libreadline', '8.1.2'),
+    ('ncurses', '6.3'),
+    ('bzip2', '1.0.8'),
+    ('XZ', '5.2.5'),
+    ('zlib', '1.2.12'),
+    ('SQLite', '3.38.3'),
+    ('PCRE2', '10.40'),
+    ('libpng', '1.6.37'),  # for plotting in R
+    ('libjpeg-turbo', '2.1.3'),  # for plottting in R
+    ('LibTIFF', '4.3.0'),
+    ('Java', '11', '', SYSTEM),
+    ('Tk', '8.6.12'),  # for tcltk
+    ('cURL', '7.83.0'),  # for RCurl
+    ('libxml2', '2.9.13'),  # for XML
+    ('GMP', '6.2.1'),  # for igraph
+    ('NLopt', '2.7.1'),  # for nloptr
+    ('FFTW', '3.3.10'),  # for fftw
+    ('libsndfile', '1.1.0'),  # for seewave
+    ('ICU', '71.1'),  # for rJava & gdsfmt
+    ('HDF5', '1.12.2', '-serial'),  # for hdf5r
+    ('UDUNITS', '2.2.28'),  # for units
+    ('GSL', '2.7'),  # for RcppGSL
+    ('ImageMagick', '7.1.0-37'),  # for animation
+    ('GLPK', '5.0'),  # for Rglpk
+    ('nodejs', '16.15.1'),  # for V8 (required by rstan)
+    ('GDAL', '3.5.0'),  # for sf
+    ('MPFR', '4.1.0'),  # for Rmpfr
+    ('libgit2', '1.4.3'),
+    ('OpenSSL', '1.1', '', SYSTEM),
+]
+
+# Some R extensions (mclust, quantreg, waveslim for example) require the math library (-lm) to avoid undefined symbols.
+# Adding it to FLIBS makes sure it is present when needed.
+preconfigopts = 'export FLIBS="$FLIBS -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 = '3.5.0'
+
+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 23rd June 2022
+exts_list = [
+    'base',
+    'compiler',
+    'datasets',
+    'graphics',
+    'grDevices',
+    'grid',
+    'methods',
+    'parallel',
+    'splines',
+    'stats',
+    'stats4',
+    'tcltk',
+    'tools',
+    'utils',
+    ('abind', '1.4-5', {
+        'checksums': ['3a3ace5afbcb86e56889efcebf3bf5c3bb042a282ba7cc4412d450bb246a3f2c'],
+    }),
+    ('magic', '1.6-0', {
+        'checksums': ['4516d48c9618e3f395db873e886f5deb3b66b32ebe10d4c26c1420ac848acbbf'],
+    }),
+    ('Rcpp', '1.0.8.3', {
+        'checksums': ['9da5b84cdaf56e972b41e669d496b1ece2e91bcd435505c68b9f2bd98375f8bf'],
+    }),
+    ('RcppProgress', '0.4.2', {
+        'checksums': ['b1624b21b7aeb1dafb30f092b2a4bef4c3504efd2d6b00b2cdf55dc9df194b48'],
+    }),
+    ('lpSolve', '5.6.15', {
+        'checksums': ['4627be4178abad34fc85a7d264c2eb5e27506f007e46687b0b8a4f8fbdf4f3ba'],
+    }),
+    ('linprog', '0.9-4', {
+        'checksums': ['81a6aa2fdc075f12dc912794d0554f87705a8b872b99c89a90a69ee9ada864b4'],
+    }),
+    ('geometry', '0.4.6', {
+        'checksums': ['910465a8c8043faca73bcc7c81c9249b9938677ee6649468003b438a6503f5d8'],
+    }),
+    ('bit', '4.0.4', {
+        'checksums': ['e404841fbe4ebefe4ecd4392effe673a8c9fa05f97952c4ce6e2f6159bd2f168'],
+    }),
+    ('filehash', '2.4-3', {
+        'checksums': ['f394e2c93233e8ad1c104562ea9349855dc8e303131f559cd59834f9aa3e41bd'],
+    }),
+    ('ff', '4.0.7', {
+        'checksums': ['0a47333d31c7afc3f95387166e21a3e4c763cbef47d9b5927753aef4ff8d83fa'],
+    }),
+    ('bnlearn', '4.7.1', {
+        'checksums': ['243930daa7f71c63fe1aa6717e5d55a116a597b83e08745cbcbe9a418d7c1509'],
+    }),
+    ('bootstrap', '2019.6', {
+        'checksums': ['5252fdfeb944cf1fae35016d35f9333b1bd1fc8c6d4a14e33901160e21968694'],
+    }),
+    ('combinat', '0.0-8', {
+        'checksums': ['1513cf6b6ed74865bfdd9f8ca58feae12b62f38965d1a32c6130bef810ca30c1'],
+    }),
+    ('deal', '1.2-39', {
+        'checksums': ['a349db8f1c86cbd8315c068da49314ce9eb585dbb50d2e5ff09300506bd8806b'],
+    }),
+    ('fdrtool', '1.2.17', {
+        'checksums': ['3452601adbead9be4820794e3af2666f710fdf9b801186df565b80b43629c5dd'],
+    }),
+    ('formatR', '1.12', {
+        'checksums': ['8b52efbf43cbef25d837bb99a793a590c0958b753052c032b52304724e808c8b'],
+    }),
+    ('gtools', '3.9.2.2', {
+        'checksums': ['352086375d06cc55becfe8b8d65953645249661a44881cad83c7f79d7280d843'],
+    }),
+    ('gdata', '2.18.0.1', {
+        'checksums': ['5e2f3d5b9398d52a4c07a4d35f5f936450a44567c7db8d8f68b4cc6946e032d9'],
+    }),
+    ('GSA', '1.03.2', {
+        'checksums': ['177d6059fc645d3d8883806d2dea1c5dfc68efdada9aadde8a96b6d57acf35b8'],
+    }),
+    ('xfun', '0.31', {
+        'checksums': ['d169f3e682dab0c3f2ca381f2dba9b7014a5e2ca3d6863dbae3d1bca699ef235'],
+    }),
+    ('highr', '0.9', {
+        'checksums': ['beff11390d936c90fdcc00e7ed0eb72220f3de403a51b56659e3d3e0b6d8ed4d'],
+    }),
+    ('infotheo', '1.2.0.1', {
+        'checksums': ['c0fb8ec97ad3a49f231c4c993b5eee70c6a61c8c30dc4a46197867e4763a29d4'],
+    }),
+    ('lars', '1.3', {
+        'checksums': ['c69e6a8da6a3344c0915dd1fd4c78fec5cdf50c62cf6297476e9bb7dc10b549d'],
+    }),
+    ('lazy', '1.2-17', {
+        'checksums': ['27bf1216ac6220712fe7e86c0a288b7d7118f9088989f67e0a86b3d0f99c3370'],
+    }),
+    ('kernlab', '0.9-31', {
+        'checksums': ['7359c665c1c5e6780e1ce44b143347c8eec839301c3079d7f19e29159873278a'],
+    }),
+    ('mime', '0.12', {
+        'checksums': ['a9001051d6c1e556e881910b1816b42872a1ee41ab76d0040ce66a27135e3849'],
+    }),
+    ('markdown', '1.1', {
+        'checksums': ['8d8cd47472a37362e615dbb8865c3780d7b7db694d59050e19312f126e5efc1b'],
+    }),
+    ('mlbench', '2.1-3', {
+        'checksums': ['b1f92be633243185ab86e880a1e1ac5a4dd3c535d01ebd187a4872d0a8c6f194'],
+    }),
+    ('NLP', '0.2-1', {
+        'checksums': ['05eaa453ad2757311c073fd30093c738b20a977c5089031eb454345a1d01f2b6'],
+    }),
+    ('mclust', '5.4.10', {
+        'checksums': ['2a1bbbf3c4a17df08d1ba8bc4d3c6d9c7241ed5fd68b8aabe660115597b60672'],
+    }),
+    ('RANN', '2.6.1', {
+        'checksums': ['b299c3dfb7be17aa41e66eff5674fddd2992fb6dd3b10bc59ffbf0c401697182'],
+    }),
+    ('rmeta', '3.0', {
+        'checksums': ['b9f9d405935cffcd7a5697ff13b033f9725de45f4dc7b059fd68a7536eb76b6e'],
+    }),
+    ('MASS', '7.3-57', {
+        'checksums': ['bd8b880105bc1aadb2db699086f74bd92a8611287979a24243187f9d80795a8d'],
+    }),
+    ('lattice', '0.20-45', {
+        'checksums': ['22388d92bdb7d3959da84d7308d9026dd8226ef07580783729e8ad2f7d7507ad'],
+    }),
+    ('nlme', '3.1-158', {
+        'checksums': ['a55bb401c2ba2706763d1f40283780699eb812b0d090b3d1903fae8aa956bf23'],
+    }),
+    ('segmented', '1.6-0', {
+        'checksums': ['6baf7f0a4f5d37b945312d28fcbca47cc3c171d097c43a28cf7ffc998a4ce569'],
+    }),
+    ('som', '0.3-5.1', {
+        'checksums': ['a6f4c0e5b36656b7a8ea144b057e3d7642a8b71972da387a7133f3dd65507fb9'],
+    }),
+    ('SuppDists', '1.1-9.7', {
+        'checksums': ['6b5527e2635c0ff762eb7af8154704c85e66d7f79a9524089a5c98dfa94dab08'],
+    }),
+    ('stabledist', '0.7-1', {
+        'checksums': ['06c5704d3a3c179fa389675c537c39a006867bc6e4f23dd7e406476ed2c88a69'],
+    }),
+    ('survivalROC', '1.0.3', {
+        'checksums': ['1449e7038e048e6ad4d3f7767983c0873c9c7a7637ffa03a4cc7f0e25c31cd72'],
+    }),
+    ('pspline', '1.0-19', {
+        'checksums': ['ba55bf193f1df9785a0e13b7ef727d5fd2415b318cd6a26b48a2db490c4dfe40'],
+    }),
+    ('timeDate', '3043.102', {
+        'checksums': ['377cba03cddab8c6992e31d0683c1db3a73afa9834eee3e95b3b0723f02d7473'],
+    }),
+    ('longmemo', '1.1-2', {
+        'checksums': ['7964e982287427dd58f98e1144e468ae0cbd572d25a4bea6ca9ae9c7522f3207'],
+    }),
+    ('ADGofTest', '0.3', {
+        'checksums': ['9cd9313954f6ecd82480d373f6c5371ca84ab33e3f5c39d972d35cfcf1096846'],
+    }),
+    ('pixmap', '0.4-12', {
+        'checksums': ['893ba894d4348ba05e6edf9c1b4fd201191816b444a214f7a6b2c0a79b0a2aec'],
+    }),
+    ('sp', '1.5-0', {
+        'checksums': ['939a06adf78ec8de7a663d6ca5bba426780852b357773446b00cc298200ff81c'],
+    }),
+    ('pkgconfig', '2.0.3', {
+        'checksums': ['330fef440ffeb842a7dcfffc8303743f1feae83e8d6131078b5a44ff11bc3850'],
+    }),
+    ('rlang', '1.0.2', {
+        'checksums': ['8de87c3e6fb0b3cce2dabc6908186f8e1528cc0c16b54de965fe02d405fdd7cc'],
+    }),
+    ('ellipsis', '0.3.2', {
+        'checksums': ['a90266e5eb59c7f419774d5c6d6bd5e09701a26c9218c5933c9bce6765aa1558'],
+    }),
+    ('digest', '0.6.29', {
+        'checksums': ['792c1f14a4c8047745152f5e45ce7351978af8d770c29d2ea39c7acd5d619cd9'],
+    }),
+    ('glue', '1.6.2', {
+        'checksums': ['9da518f12be584c90e75fe8e07f711ee3f6fc0d03d817f72c25dc0f66499fdbf'],
+    }),
+    ('cli', '3.3.0', {
+        'checksums': ['c3a9ebbcb9017fb9aeda4f7df5ca981e42b169cbd7ce13e592cda2cd74250d63'],
+    }),
+    ('vctrs', '0.4.1', {
+        'checksums': ['9676881e009aa1217818f326338e8b35dd9a9438918f8b1ac249f4c8afe460dd'],
+    }),
+    ('lifecycle', '1.0.1', {
+        'checksums': ['1da76e1c00f1be96ca34e122ae611259430bf99d6a1b999fdef70c00c30f7ba0'],
+    }),
+    ('hms', '1.1.1', {
+        'checksums': ['6b5f30db1845c70d27b5de33f31caa487cdd0787cd80a4073375e5f482269062'],
+    }),
+    ('prettyunits', '1.1.1', {
+        'checksums': ['9a199aa80c6d5e50fa977bc724d6e39dae1fc597a96413053609156ee7fb75c5'],
+    }),
+    ('R6', '2.5.1', {
+        'checksums': ['8d92bd29c2ed7bf15f2778618ffe4a95556193d21d8431a7f75e7e5fc102bf48'],
+    }),
+    ('crayon', '1.5.1', {
+        'checksums': ['c025c73b78a8e88e8e4363c8e1a941da5089a7baea39e59ea5342ab9ebe45df9'],
+    }),
+    ('progress', '1.2.2', {
+        'checksums': ['b4a4d8ed55db99394b036a29a0fb20b5dd2a91c211a1d651c52a1023cc58ff35'],
+    }),
+    ('ade4', '1.7-19', {
+        'checksums': ['c85111881ff93a261ca34a5b5ef313d1c0ff9b84f0b23596bc56cfa696f165ef'],
+    }),
+    ('AlgDesign', '1.2.1', {
+        'checksums': ['5989626c526bd7c3d9bdda326c962056879be03392065a0b7ddb9b8cf9309d05'],
+    }),
+    ('base64enc', '0.1-3', {
+        'checksums': ['6d856d8a364bcdc499a0bf38bfd283b7c743d08f0b288174fba7dbf0a04b688d'],
+    }),
+    ('BH', '1.78.0-0', {
+        'checksums': ['3b9e9d07682013e0c06a396dda176b405eab99a7273eca6c40d1b4c4110e8cb3'],
+    }),
+    ('brew', '1.0-7', {
+        'checksums': ['38b859c1dca63479f6937c593da8f806f2b3279585bb6e20ecff1b898469e76e'],
+    }),
+    ('Brobdingnag', '1.2-7', {
+        'checksums': ['73a734342736da5b29c2827d91f662101873503af7ad9cdf9e9e697bb32dd742'],
+    }),
+    ('corpcor', '1.6.10', {
+        'checksums': ['71a04c503c93ec95ddde09abe8c7ddeb36175b7da76365a14b27066383e10e09'],
+    }),
+    ('longitudinal', '1.1.13', {
+        'checksums': ['57f04a0f387c1cc30d2feb945dc3ed35d2a304d94d21d3bc2cac8c92571fdc10'],
+    }),
+    ('backports', '1.4.1', {
+        'checksums': ['845c3c59fbb05e5a892c4231b955a0afdd331d82b7cc815bcff0672023242474'],
+    }),
+    ('checkmate', '2.1.0', {
+        'checksums': ['b784dd5163a0350d084ef34882d9781373839dedeaa9a8b8e6187d773d0d21c6'],
+    }),
+    ('cubature', '2.0.4.4', {
+        'checksums': ['087b3b2c4f25d873fa95e9d38766a17a7201d03a6f4960f1e080a8db8b67d569'],
+    }),
+    ('DEoptimR', '1.0-11', {
+        'checksums': ['1874b30f4b75f9bfa891986598f1ebe1fce27fdced14f8f417d3535cac08165b'],
+    }),
+    ('fastmatch', '1.1-3', {
+        'checksums': ['1defa0b08bc3f48e4c3e4ba8df4f1b9e8299932fd8c747c67d32de44f90b9861'],
+    }),
+    ('ffbase', '0.13.3', {
+        'checksums': ['b3f61f80ba6851130247779786903d42a24ee5219aa24556c8470aece8a2e6b6'],
+    }),
+    ('iterators', '1.0.14', {
+        'checksums': ['cef3075a0930e1408c764e4da56bbadd4f7d14315809df8f38dd51f80ccc677b'],
+    }),
+    ('maps', '3.4.0', {
+        'checksums': ['7918ccb2393ca19589d4c4e77d9ebe863dc6317ebfc1ff41869dbfaf439f5747'],
+    }),
+    ('nnls', '1.4', {
+        'checksums': ['0e5d77abae12bc50639d34354f96a8e079408c9d7138a360743b73bd7bce6c1f'],
+    }),
+    ('sendmailR', '1.2-1.1', {
+        'checksums': ['20d7d54f247dd1b444d2d74170646977cc4bd52f5a4152c72a9c3665b9a1fdb5'],
+    }),
+    ('dotCall64', '1.0-1', {
+        'checksums': ['f10b28fcffb9453b1d8888a72c8fd2112038b5ac33e02a481492c7bd249aa5c6'],
+    }),
+    ('spam', '2.8-0', {
+        'checksums': ['d98177435b028d1c706d0197ea8132bfaffae6052c3ce6064a7f64178512d6aa'],
+    }),
+    ('subplex', '1.8', {
+        'checksums': ['3bc31d8990380c9f790c9c7d84cb2e39f4945eff934eddfa1196d597465be5a5'],
+    }),
+    ('stringi', '1.7.6', {
+        'checksums': ['0ea3d5afec5701977ff53de9afbaceb53b00aa34f5fb641cadc1eeb7759119ec'],
+    }),
+    ('magrittr', '2.0.3', {
+        'checksums': ['a2bff83f792a1acb801bfe6330bb62724c74d5308832f2cb6a6178336ace55d2'],
+    }),
+    ('stringr', '1.4.0', {
+        'checksums': ['87604d2d3a9ad8fd68444ce0865b59e2ffbdb548a38d6634796bbd83eeb931dd'],
+    }),
+    ('evaluate', '0.15', {
+        'checksums': ['885aee530a8b6aa7fd3acaa1ecd94ab58b71038c879ca37405f948e105907c5d'],
+    }),
+    ('logspline', '2.1.17', {
+        'checksums': ['03b72b860896f8801014b7b3b907389cc3cbe2e13bc1049241606df685a08815'],
+    }),
+    ('ncbit', '2013.03.29', {
+        'checksums': ['4480271f14953615c8ddc2e0666866bb1d0964398ba0fab6cc29046436820738'],
+    }),
+    ('permute', '0.9-7', {
+        'checksums': ['eff88ffb579aaeb994e9f8609b776b2d9d9d56bc2879ddf180e3a2ad19f48dc0'],
+    }),
+    ('plotrix', '3.8-2', {
+        'checksums': ['bb72953102889cea41cd6521874e35d2458ebd10aab97ba6f262e102cac0bc1f'],
+    }),
+    ('randomForest', '4.7-1.1', {
+        'checksums': ['f59ea87534480edbcd6baf53d7ec57e8c69f4532c2d2528eacfd48924efa2cd6'],
+    }),
+    ('scatterplot3d', '0.3-41', {
+        'checksums': ['4c8326b70a3b2d37126ca806771d71e5e9fe1201cfbe5b0d5a0a83c3d2c75d94'],
+    }),
+    ('SparseM', '1.81', {
+        'checksums': ['bd838f381ace680fa38508ff70b3d83cb9ffa28ac1ab568509249bca53c34b33'],
+    }),
+    ('tripack', '1.3-9.1', {
+        'checksums': ['7f82f8d63741c468767acc6fb35281bd9903f6c3c52e8fada60a6ae317511fbe'],
+    }),
+    ('irace', '3.4.1', {
+        'checksums': ['7eea92ba42e6ba320fa8bdca3c53091ae42f26a0f097244f65e7e117f6d514b6'],
+    }),
+    ('rJava', '1.0-6', {
+        'checksums': ['e290d0493317a5d6c452793e92baa914e37ef03faef19b2e436329b4ec8658c6'],
+    }),
+    ('RColorBrewer', '1.1-3', {
+        'checksums': ['4f42f5423c45688b39f492c7892d93f37b4541831c8ffb140364d2bd89031ac0'],
+    }),
+    ('png', '0.1-7', {
+        'checksums': ['e269ff968f04384fc9421d17cfc7c10cf7756b11c2d6d126e9776f5aca65553c'],
+    }),
+    ('jpeg', '0.1-9', {
+        'checksums': ['01a175442ec209b838a56a66a3908193aca6f040d537da7838d9368e46913072'],
+    }),
+    ('latticeExtra', '0.6-29', {
+        'checksums': ['6cadc31d56f73d926e2e8d72e43ae17ac03607a4d1a374719999a4a231e3df11'],
+    }),
+    ('Matrix', '1.4-1', {
+        'checksums': ['42b24f1d1e94482b0ff0ef1292e2df29f69694bdbee47b3d6bfeec46fafb2f7e'],
+    }),
+    ('RcppArmadillo', '0.11.2.0.0', {
+        'checksums': ['f9e17af85ef5c0c8d63771b6e7da0cdcdbecc7ac8bd40d5035a64952c4ce1938'],
+    }),
+    ('plyr', '1.8.7', {
+        'checksums': ['7d9fdaf1157035a49c3661da3bbaa7bfcf782aafe1b98f7b5a68b0520046e87f'],
+    }),
+    ('gtable', '0.3.0', {
+        'checksums': ['fd386cc4610b1cc7627dac34dba8367f7efe114b968503027fb2e1265c67d6d3'],
+    }),
+    ('reshape2', '1.4.4', {
+        'checksums': ['d88dcf9e2530fa9695fc57d0c78adfc5e361305fe8919fe09410b17da5ca12d8'],
+    }),
+    ('dichromat', '2.0-0.1', {
+        'checksums': ['a10578e9ad8a581bd8fe0d8a8370051f3cdcf12c7d282f3af2a18dacda566081'],
+    }),
+    ('colorspace', '2.0-3', {
+        'checksums': ['e75681cc4dd6e4b70303fd96a6d4597065dc6bffcaa4ae4244b73ff19016857f'],
+    }),
+    ('munsell', '0.5.0', {
+        'checksums': ['d0f3a9fb30e2b5d411fa61db56d4be5733a2621c0edf017d090bdfa5e377e199'],
+    }),
+    ('labeling', '0.4.2', {
+        'checksums': ['e022d79276173e0d62bf9e37d7574db65ab439eb2ae1833e460b1cff529bd165'],
+    }),
+    ('viridisLite', '0.4.0', {
+        'checksums': ['849955dc8ad9bc52bdc50ed4867fd92a510696fc8294e6971efa018437c83c6a'],
+    }),
+    ('farver', '2.1.0', {
+        'checksums': ['e5c8630607049f682fb3002b99ca4f5e7c6b94f8b2a4342df594e7853b77cef4'],
+    }),
+    ('scales', '1.2.0', {
+        'checksums': ['185d50240e6b3e84d36ec7fbca6aef7a85db7c8c1b0dde51d4af28d363ce02df'],
+    }),
+    ('utf8', '1.2.2', {
+        'checksums': ['a71aee87d43a9bcf29249c7a5a2e9ca1d2a836e8d5ee3a264d3062f25378d8f4'],
+    }),
+    ('zeallot', '0.1.0', {
+        'checksums': ['439f1213c97c8ddef9a1e1499bdf81c2940859f78b76bc86ba476cebd88ba1e9'],
+    }),
+    ('assertthat', '0.2.1', {
+        'checksums': ['85cf7fcc4753a8c86da9a6f454e46c2a58ffc70c4f47cac4d3e3bcefda2a9e9f'],
+    }),
+    ('fansi', '1.0.3', {
+        'checksums': ['86a7b83d8c9d28baebbde310cd0b459d0950a9c7ff1a6276ce5858f6a89bc06a'],
+    }),
+    ('pillar', '1.7.0', {
+        'checksums': ['7841f89658cc8935568c0ff24dc480b4481bac896de2f6447050abc4360a13bb'],
+    }),
+    ('tibble', '3.1.7', {
+        'checksums': ['e1a50891f476803526960b4c4d736a72e7d9c3d366946744a02d6347f591c872'],
+    }),
+    ('lazyeval', '0.2.2', {
+        'checksums': ['d6904112a21056222cfcd5eb8175a78aa063afe648a562d9c42c6b960a8820d4'],
+    }),
+    ('withr', '2.5.0', {
+        'checksums': ['37317b3ed790a08407072993a05ab255f6305f95a12a16e0e28aa6aa80fc8bc0'],
+    }),
+    ('mgcv', '1.8-40', {
+        'checksums': ['dbe627266c3b339232e2d4228d5370ba88c86540319e6891d161242efba7e4a5'],
+    }),
+    ('rprojroot', '2.0.3', {
+        'checksums': ['50604247470e910cecfe9b76df754bf96a0d701f81b732f7aa9c90a20d30f897'],
+    }),
+    ('desc', '1.4.1', {
+        'checksums': ['8f9ebb51eccf925b2e76bc65ecf495e8f3882b8c0053023f396622f0402d6f54'],
+    }),
+    ('ps', '1.7.1', {
+        'checksums': ['9c458a377d47cc972d3cd0b2a17d0b7ad3cf3b62226410803072089a57a55ef1'],
+    }),
+    ('processx', '3.6.1', {
+        'checksums': ['87705769601e67799d976945c0e3e1cdd09e52a25900252e6f9b80a1cf90f2f5'],
+    }),
+    ('callr', '3.7.0', {
+        'checksums': ['d67255148595c6d0ba4c4d241bc9f6b5e00cafe25fdc13e38c10acc38653360a'],
+    }),
+    ('pkgbuild', '1.3.1', {
+        'checksums': ['7c6a82d1e6b19e136a7d16095743c50cd7b6340eeda594e4a8e14d74972ddb48'],
+    }),
+    ('rstudioapi', '0.13', {
+        'checksums': ['aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b'],
+    }),
+    ('pkgload', '1.2.4', {
+        'checksums': ['d6912bc824a59ccc9b2895c3cf3b08a3ff310a333888bb8e90d1a6ce754dd90f'],
+    }),
+    ('praise', '1.0.0', {
+        'checksums': ['5c035e74fd05dfa59b03afe0d5f4c53fbf34144e175e90c53d09c6baedf5debd'],
+    }),
+    ('brio', '1.1.3', {
+        'checksums': ['eaa89041856189bee545bf1c42c7920a0bb0f1f70bb477487c467ee3e8fedcc6'],
+    }),
+    ('jsonlite', '1.8.0', {
+        'checksums': ['7b1892efebcb4cf4628f716000accd4b43bbf82b3e6ba90b9529d4fa0e55cd4c'],
+    }),
+    ('diffobj', '0.3.5', {
+        'checksums': ['d860a79b1d4c9e369282d7391b539fe89228954854a65ba47181407c53e3cf60'],
+    }),
+    ('rematch2', '2.1.2', {
+        'checksums': ['fe9cbfe99dd7731a0a2a310900d999f80e7486775b67f3f8f388c30737faf7bb'],
+    }),
+    ('waldo', '0.4.0', {
+        'checksums': ['57ee89eec9bcbba58cf8fa29c8e097f038768c30833eaf812682826333127eaa'],
+    }),
+    ('testthat', '3.1.4', {
+        'checksums': ['a47eec031b4e186a8bd331031371b2347063a283050eca2adbfaa37d7a6c9c09'],
+    }),
+    ('isoband', '0.2.5', {
+        'checksums': ['46f53fa066f0966f02cb2bf050190c0d5e950dab2cdf565feb63fc092c886ba5'],
+    }),
+    ('ggplot2', '3.3.6', {
+        'checksums': ['bfcb4eb92a0fcd3fab713aca4bb25e916e05914f2540271a45522ad7e43943a9'],
+    }),
+    ('pROC', '1.18.0', {
+        'checksums': ['d5ef54b384176ece6d6448014ba40570a98181b58fee742f315604addb5f7ba9'],
+    }),
+    ('quadprog', '1.5-8', {
+        'checksums': ['22128dd6b08d3516c44ff89276719ad4fe46b36b23fdd585274fa3a93e7a49cd'],
+    }),
+    ('BB', '2019.10-1', {
+        'checksums': ['04d0b6ce6e5f070b109478a6005653dbe78613bb4e3ea4903203d851b5d3c94d'],
+    }),
+    ('data.table', '1.14.2', {
+        'checksums': ['f741b951e5937440139514aedbae78dbd6862d825066848bdb006aa02c2f3d2b'],
+    }),
+    ('BBmisc', '1.12', {
+        'checksums': ['900a633f69b7d9b13d58709eeae2fca2c1bc510765d778623a2af32cc870053e'],
+    }),
+    ('fail', '1.3', {
+        'checksums': ['ede8aa2a9f2371aff5874cd030ac625adb35c33954835b54ab4abf7aeb34d56d'],
+    }),
+    ('rlecuyer', '0.3-5', {
+        'checksums': ['4723434ff7624d4f404a6854ffa0673fc43daa46f58f064dbeeaa17da28ab626'],
+    }),
+    ('snow', '0.4-4', {
+        'checksums': ['84587f46f222a96f3e2fde10ad6ec6ddbd878f4e917cd926d632f61a87db13c9'],
+    }),
+    ('tree', '1.0-42', {
+        'checksums': ['5a17c30423f4a1b81ae4fdf4a1c0079724000c9fdb339306438db442e17c72e0'],
+    }),
+    ('pls', '2.8-0', {
+        'checksums': ['eff3a92756ca34cdc1661fa36d2bf7fc8e9f4132d2f1ef9ed0105c83594618bf'],
+    }),
+    ('class', '7.3-20', {
+        'checksums': ['e65b046bc72b312ff0c5dc7feba4fa3e9bc63387274d44911493782b85f65483'],
+    }),
+    ('proxy', '0.4-27', {
+        'checksums': ['249991a4c4d70ad139e93f3a24e17f161ad1ec854951813ea192daf79478563f'],
+    }),
+    ('e1071', '1.7-11', {
+        'checksums': ['48c18e10e7cabc742d37b563672e2eddb6061f2378b69e5563be79ab9948d92f'],
+    }),
+    ('nnet', '7.3-17', {
+        'checksums': ['ee750bb8164aa058edf93823af987ab2c7ec64128dce2abeaae1b7d3661e9a67'],
+    }),
+    ('minqa', '1.2.4', {
+        'checksums': ['cfa193a4a9c55cb08f3faf4ab09c11b70412523767f19894e4eafc6e94cccd0c'],
+    }),
+    ('RcppEigen', '0.3.3.9.2', {
+        'checksums': ['2547e794d5a6fb8d9fbadf19e64afa0bcf413cc69ecf3f428995fa5a0fced493'],
+    }),
+    ('MatrixModels', '0.5-0', {
+        'checksums': ['a87faf1a185219f79ea2307e6787d293e1d30bf3af9398e8cfe1e079978946ed'],
+    }),
+    ('matrixStats', '0.62.0', {
+        'checksums': ['85e2016b6dd20cbfe32d38a2ef2578ae80e688d9a3590aefd1d2f4bf4bd44eca'],
+    }),
+    ('codetools', '0.2-18', {
+        'checksums': ['1a9ea6b9792dbd1688078455929385acc3a5e4bef945c77bec1261fa4a084c28'],
+    }),
+    ('foreach', '1.5.2', {
+        'checksums': ['56338d8753f9f68f262cf532fd8a6d0fe25a71a2ff0107f3ce378feb926bafe4'],
+    }),
+    ('ModelMetrics', '1.2.2.2', {
+        'checksums': ['5e06f1926aebca5654e1329c66ef19b04058376b2277ebb16e3bf8c208d73457'],
+    }),
+    ('generics', '0.1.2', {
+        'checksums': ['63eab37a9148f820ce2d67bda3dab6dedb9db6890baa5284949c39ab1b4c5898'],
+    }),
+    ('purrr', '0.3.4', {
+        'checksums': ['23ebc93bc9aed9e7575e8eb9683ff4acc0270ef7d6436cc2ef4236a9734840b2'],
+    }),
+    ('tidyselect', '1.1.2', {
+        'checksums': ['0389a3b15417954a30d6d692f6ebdd3d0f318cb94a5c9b05365df2f4ea1d8270'],
+    }),
+    ('dplyr', '1.0.9', {
+        'checksums': ['e2e1f7312618b4e32ada9a1da79cef32eaec12acd408c973a6b069c6be4fb46b'],
+    }),
+    ('gower', '1.0.0', {
+        'checksums': ['671cb7baafe05140d822e8f26f9cd3576fc3bf4c6572b7223fb54da754ea385d'],
+    }),
+    ('rpart', '4.1.16', {
+        'checksums': ['27ec75258a5a3459ad999f5f36760ead974930744249605bf8465f234f31425c'],
+    }),
+    ('survival', '3.3-1', {
+        'checksums': ['14878705cd0c7edcfead79011444aa84f680759293bde8634721c49f37cb4dc7'],
+    }),
+    ('KernSmooth', '2.23-20', {
+        'checksums': ['20eb75051e2473933d41eedc9945b03c632847fd581e2207d452cf317fa5ec39'],
+    }),
+    ('globals', '0.15.0', {
+        'checksums': ['f83689a420590b0d62b049c40a944c1c8c7202b3f1cc12102712c63104e99496'],
+    }),
+    ('listenv', '0.8.0', {
+        'checksums': ['fd2aaf3ff2d8d546ce33d1cb38e68401613975117c1f9eb98a7b41facf5c485f'],
+    }),
+    ('parallelly', '1.32.0', {
+        'checksums': ['909ca35e7931b08dab7c8e48747c9b55c4f92480d87a85f98331a03b5f85e179'],
+    }),
+    ('future', '1.26.1', {
+        'checksums': ['a35c0bdae86265ebe86119231802b6fbf7b1d533b57cb423d8483fbe779390d5'],
+    }),
+    ('future.apply', '1.9.0', {
+        'checksums': ['6166c1c5ce30b9745059c3d30c8110f7c1d51871e58aa414f195cb1f91c467f5'],
+    }),
+    ('progressr', '0.10.1', {
+        'checksums': ['8f83024b2a6f52996750d45bf6698c2b438fb1062985f1df936ba3af313caed1'],
+    }),
+    ('numDeriv', '2016.8-1.1', {
+        'checksums': ['d8c4d19ff9aeb31b0c628bd4a16378e51c1c9a3813b525469a31fe89af00b345'],
+    }),
+    ('SQUAREM', '2021.1', {
+        'checksums': ['66e5e18ca29903e4950750bbd810f0f9df85811ee4195ce0a86d939ba8183a58'],
+    }),
+    ('lava', '1.6.10', {
+        'checksums': ['7a88f8a885872e2abb3011c446e9e1c4884cd4dbe6ab4cfe9207538e5560232e'],
+    }),
+    ('prodlim', '2019.11.13', {
+        'checksums': ['6809924f503a14681de84730489cdaf9240d7951c64f5b98ca37dc1ce7809b0f'],
+    }),
+    ('ipred', '0.9-13', {
+        'checksums': ['6168a062d93c2d3063c064a8f242cd3716dee99822e20363a1801261319c4c98'],
+    }),
+    ('cpp11', '0.4.2', {
+        'checksums': ['403ce0bf82358d237176053b0fb1e958cb6bfa4d0fb3555bf5801db6a6939b99'],
+    }),
+    ('lubridate', '1.8.0', {
+        'checksums': ['87d66efdb1f3d680db381d7e40a202d35645865a0542e2f270ef008a19002ba5'],
+    }),
+    ('tidyr', '1.2.0', {
+        'checksums': ['8cd01da9e97827521d01ea50b9225f2705c46b7538bbf74bec6249a04c1213a8'],
+    }),
+    ('hardhat', '1.1.0', {
+        'checksums': ['0374a9f5af2e8eaf100b4dbda951a5289258d0d466e5ef10768e8ffda928b4b1'],
+    }),
+    ('recipes', '0.2.0', {
+        'checksums': ['3d0073e3eb98ac089a94bf8430f3c50915ff1f495d8e967c37baa6a0f6cea0a4'],
+    }),
+    ('caret', '6.0-92', {
+        'checksums': ['1d814a2a921a23ad8b9a7da6f788e6abc06f5668b3918bd440d4355bc4b81511'],
+    }),
+    ('conquer', '1.3.0', {
+        'checksums': ['ac354e18c9ad6f41ed5200fad1c99fa5b124fc6fa5bba8f3434be2478f53d5fa'],
+    }),
+    ('quantreg', '5.93', {
+        'checksums': ['d4a94984a500bf4c92dec21013441f001a4aa0541c4c651384e257a4b4e9e539'],
+    }),
+    ('robustbase', '0.95-0', {
+        'checksums': ['5cfaea1c46df6d45086614fea5f152c8da8ebfcadf33bb8df5b82e742eef9724'],
+    }),
+    ('zoo', '1.8-10', {
+        'checksums': ['c9a282d8004c22651c4fa1d657d3cad946c5ec55c4dc068569d860ee9b31ed47'],
+    }),
+    ('lmtest', '0.9-40', {
+        'checksums': ['64400d4d6cc635316531042971f1783539686e9015c76f5741c07304fa14d997'],
+    }),
+    ('vcd', '1.4-10', {
+        'checksums': ['7188192afa289350cc1b89790f4f8f5a5114c1c88bee7715a0c8f5347aa0b35b'],
+    }),
+    ('snowfall', '1.84-6.1', {
+        'checksums': ['5c446df3a931e522a8b138cf1fb7ca5815cc82fcf486dbac964dcbc0690e248d'],
+    }),
+    ('bindr', '0.1.1', {
+        'checksums': ['7c785ca77ceb3ab9282148bcecf64d1857d35f5b800531d49483622fe67505d0'],
+    }),
+    ('plogr', '0.2.0', {
+        'checksums': ['0e63ba2e1f624005fe25c67cdd403636a912e063d682eca07f2f1d65e9870d29'],
+    }),
+    ('bindrcpp', '0.2.2', {
+        'checksums': ['48130709eba9d133679a0e959e49a7b14acbce4f47c1e15c4ab46bd9e48ae467'],
+    }),
+    ('tmvnsim', '1.0-2', {
+        'checksums': ['97f63d0bab3b240cc7bdbe6e6e74e90ad25a4382a345ee51a26fe3959edeba0f'],
+    }),
+    ('mnormt', '2.1.0', {
+        'checksums': ['2d498505e32d8aa9fa54a1ab328c35ae3a85e0b20a0cf0d519a4df84e2b307b8'],
+    }),
+    ('foreign', '0.8-82', {
+        'checksums': ['f8ed0684d59bec7f3a39cde1aa5ec7b3e6e36aaecacb28120c9c54f7b13f80fb'],
+    }),
+    ('psych', '2.2.5', {
+        'checksums': ['dcc3f9b30ed44dfd1de0366295a308e0b52959eb7ac9cb3bc3f32dc5b15fc321'],
+    }),
+    ('broom', '0.8.0', {
+        'checksums': ['66a1095d4430450dc810a5cea61cd7e7bee0e23739dcf5ddc5b57c9894fcf999'],
+    }),
+    ('nloptr', '2.0.3', {
+        'checksums': ['7b26ac1246fd1bd890817b0c3a145456c11aec98458b8518de863650b99616d7'],
+    }),
+    ('boot', '1.3-28', {
+        'checksums': ['9f7158fd2714659f590c3955651893dc24bd8f39196bc5a4cc35b0b031744a32'],
+    }),
+    ('statmod', '1.4.36', {
+        'checksums': ['14e897c83d426caca4d920d3d5bead7ae9a679276b3cb2e227f299ad189d7bc2'],
+    }),
+    ('lme4', '1.1-29', {
+        'checksums': ['83d97de48cc4706a5a9615b126ba1a86f1a3009d3f38b8da3e57dd619519e826'],
+    }),
+    ('ucminf', '1.1-4', {
+        'checksums': ['a2eb382f9b24e949d982e311578518710f8242070b3aa3314a331c1e1e7f6f07'],
+    }),
+    ('ordinal', '2019.12-10', {
+        'checksums': ['7a41e7b7e852a8fa3e911f8859d36e5709ccec5ca42ee3de14a813b7aaac7725'],
+    }),
+    ('jomo', '2.7-3', {
+        'checksums': ['9d3987f3a73d305f3ab6fc66efc04a196a7eb8b65e20c411131dc17af51f0063'],
+    }),
+    ('clipr', '0.8.0', {
+        'checksums': ['32c2931992fbec9c31b71de3e27059f1cbb45b4b1f45fd42e0e8dbcec6de3be9'],
+    }),
+    ('tzdb', '0.3.0', {
+        'checksums': ['6099f0ec1fba692b51b4360aa776902a39f10dae815933c31994b8e4d4277038'],
+    }),
+    ('bit64', '4.0.5', {
+        'checksums': ['25df6826ea5e93241c4874cad4fa8dadc87a40f4ff74c9107aa12a9e033e1578'],
+    }),
+    ('vroom', '1.5.7', {
+        'checksums': ['d087cb148f71c222fc89199d03df2502689149873414a6d89c2f006d3a109fde'],
+    }),
+    ('readr', '2.1.2', {
+        'checksums': ['94afd03a1fa4abcf2985ec903bbf5995d7c590e1a50512ed80d081ef4fe10c1b'],
+    }),
+    ('forcats', '0.5.1', {
+        'checksums': ['c4fb96e874e2bedaa8a1aa32ea22abdee7906d93b5c5c7b42c0894c0c5b6a289'],
+    }),
+    ('haven', '2.5.0', {
+        'checksums': ['b580311bc1b28efc6b123e29a331282b9f7eb552c485f4e5cacab39fe534aff4'],
+    }),
+    ('pan', '1.6', {
+        'checksums': ['adc0df816ae38bc188bce0aef3aeb71d19c0fc26e063107eeee71a81a49463b6'],
+    }),
+    ('mitml', '0.4-3', {
+        'checksums': ['49bd3eb68a60fb2a269e7ddca8b862e1e81e0651e2b29759482fb7bcad452102'],
+    }),
+    ('mice', '3.14.0', {
+        'checksums': ['f87bb73d8bfee36c6bf4f15779c59ff6b70c70ca25b1388b4ee236757276d605'],
+    }),
+    ('urca', '1.3-0', {
+        'checksums': ['621cc82398e25b58b4a16edf000ed0a1484d9a0bc458f734e97b6f371cc76aaa'],
+    }),
+    ('fracdiff', '1.5-1', {
+        'checksums': ['b8103b32a4ca3a59dda1624c07da08ecd144c7a91a747d1f4663e99421950eb6'],
+    }),
+    ('operator.tools', '1.6.3', {
+        'checksums': ['e5b74018fb75bfa02820dec4b822312f1640422f01d9fec1b58d880ffb798dec'],
+    }),
+    ('formula.tools', '1.7.1', {
+        'checksums': ['4fe0e72d9d96f2398e86cbd8536d0c84de38e5583d4ff7dcd73f415ddd8ca395'],
+    }),
+    ('logistf', '1.24.1', {
+        'checksums': ['e7e0d9054cf7f3221ba363afa0fdf1c8bb65b8841700ec0010fa4886be26a661'],
+    }),
+    ('akima', '0.6-3.4', {
+        'checksums': ['95657592a81d2e3628cb054b60127827ae64e65c58b77d059aa510bc6781ad3e'],
+    }),
+    ('bitops', '1.0-7', {
+        'checksums': ['e9b5fc92c39f94a10cd0e13f3d6e2a9c17b75ea01467077a51d47a5f708517c4'],
+    }),
+    ('mixtools', '1.2.0', {
+        'checksums': ['ef033ef13625209065d26767bf70d129972e6808927f755629f1d70a118b9023'],
+    }),
+    ('cluster', '2.1.3', {
+        'checksums': ['a3ad7a9455d634c4e0c6ccf8ea7a3a392a0ecf9c2bdb368d127ffa68a93164a9'],
+    }),
+    ('gclus', '1.3.2', {
+        'checksums': ['9cc61cdff206c11213e73afca3d570a7234250cf6044a9202c2589932278e0b3'],
+    }),
+    ('coda', '0.19-4', {
+        'checksums': ['422d3cfd34797a3631e9c4812431940599c0ca4bb9937797bed07b7b1d6fe58f'],
+    }),
+    ('doMC', '1.3.8', {
+        'checksums': ['b2186f851448251ae6af5d14b9e3e7f9221f90887e5f8de6a68c91caf16619a3'],
+    }),
+    ('DBI', '1.1.3', {
+        'checksums': ['38bb33753da5bddb78893a5228a5d269dae3bf16f21dc5d9853ac9c24d31428d'],
+    }),
+    ('gam', '1.20.1', {
+        'checksums': ['5787c6fabea5aaba29fe214db305a7369916082efc6a18f84e4c9ef81c8e7dad'],
+    }),
+    ('gamlss.data', '6.0-2', {
+        'checksums': ['dbb3b6f855540928ccdbda497f8d552144895e34565799e8b595e704096db71e'],
+    }),
+    ('gamlss.dist', '6.0-3', {
+        'checksums': ['ec90ea83cd81b894c73f987f69814077697be33abf0708e0f3e2a39d02c912bf'],
+    }),
+    ('gamlss', '5.4-3', {
+        'checksums': ['6619d4fdc183ab492615d44961a126c827d18db20a0d59362e54de877f0a3076'],
+    }),
+    ('gamlss.tr', '5.1-7', {
+        'checksums': ['8f9975bceaf8000b1d39317daf490e59c8385b5291326ed6a2630be11dae3137'],
+    }),
+    ('hwriter', '1.3.2.1', {
+        'checksums': ['ed2fa254ab27cf65d397e181339976fc3261dfb4f6b600fea8c5689620dab6f3'],
+    }),
+    ('xts', '0.12.1', {
+        'checksums': ['d680584af946fc30be0b2046e838cff7b3a65e00df1eadba325ca5e96f3dca2c'],
+    }),
+    ('curl', '4.3.2', {
+        'checksums': ['90b1facb4be8b6315bb3d272ba2dd90b88973f6ea1ab7f439550230f8500a568'],
+    }),
+    ('TTR', '0.24.3', {
+        'checksums': ['4d9aef32647664be5cf965b05f21ed62cde9425fa87c21530852e05ef7aaba87'],
+    }),
+    ('quantmod', '0.4.20', {
+        'checksums': ['f757df41595d885f7927e18f4835bc233d78d2d3ae48fd11c8874d4338c48e94'],
+    }),
+    ('mvtnorm', '1.1-3', {
+        'checksums': ['ff4e302139ba631280fc9c4a2ab168596bfd09e17a805974199b043697c02448'],
+    }),
+    ('pcaPP', '2.0-1', {
+        'checksums': ['9690e2f263162452d5a14bd8c52264cb70b317d30907411af4e5b6df4086121a'],
+    }),
+    ('pscl', '1.5.5', {
+        'checksums': ['054c9b88a991abdec3338688f58e81b6ba55f91edb988621864b24fd152fee6f'],
+    }),
+    ('fastmap', '1.1.0', {
+        'checksums': ['9113e526b4c096302cfeae660a06de2c4c82ae4e2d3d6ef53af6de812d4c822b'],
+    }),
+    ('cachem', '1.0.6', {
+        'checksums': ['9a9452f7bcf3f79436c418b3c3290449fb8fd338714d9b992153754d112f1864'],
+    }),
+    ('memoise', '2.0.1', {
+        'checksums': ['f85034ee98c8ca07fb3cd826142c1cd1e1e5747075a94c75a45783bbc4fe2deb'],
+    }),
+    ('blob', '1.2.3', {
+        'checksums': ['2d88d683ee3d1b56b332b5c7769979b5d3994b5d9285ea634ec919576da3631b'],
+    }),
+    ('RSQLite', '2.2.14', {
+        'checksums': ['2ae36a875ebc02497985b2ad9ddc6a5434f576e2ab25769580749d9e4f3b607c'],
+    }),
+    ('BatchJobs', '1.9', {
+        'checksums': ['5da9c381df461320ed4033523bad1ee97f88a4670d2714fec32be92964115c77'],
+    }),
+    ('sandwich', '3.0-2', {
+        'checksums': ['6e30b6b554eb19430a60c45a8132fb7918ddb0013577bf6a62caeb163bdfe2b4'],
+    }),
+    ('sfsmisc', '1.1-13', {
+        'checksums': ['a81710357de2dcdaf00d9fa30a29cde0dd83616edc358452fd6105ea88f34218'],
+    }),
+    ('spatial', '7.3-15', {
+        'checksums': ['e5613be94d6f5c1f54813dadc96e4a86b3417dea28106cc90cb24dfd6c3c8cef'],
+    }),
+    ('VGAM', '1.1-6', {
+        'checksums': ['446a61bac5dd4794e05d20c2f3901eec54afac52c6e23ce2787c5575170dd417'],
+    }),
+    ('waveslim', '1.8.3', {
+        'checksums': ['988bdce52ce1c31cb0abb4fb7a9f1e9192283f597c2a418f0010f780dbe3b37b'],
+    }),
+    ('xtable', '1.8-4', {
+        'checksums': ['5abec0e8c27865ef0880f1d19c9f9ca7cc0fd24eadaa72bcd270c3fb4075fd1c'],
+    }),
+    ('profileModel', '0.6.1', {
+        'checksums': ['91dc25e81f52506593f5c8d80a6131510b14525262f65b4ac10ae0cad0b2a506'],
+    }),
+    ('brglm', '0.7.2', {
+        'checksums': ['56098d2ce238478e7a27cacc4cdec0bc65f287fe746b38fbb1edda20c1675023'],
+    }),
+    ('deSolve', '1.32', {
+        'checksums': ['74670f16eaafddd044a3ac1813acd5d164aed3f862b87aa1ac275b600e27d9ad'],
+    }),
+    ('tseriesChaos', '0.1-13.1', {
+        'checksums': ['23cb5fea56409a305e02a523ff8b7642ec383942d415c9cffdc92208dacfd961'],
+    }),
+    ('tseries', '0.10-51', {
+        'checksums': ['a55f20704883710ab58ea479e20cf0f263c50d54282f693793cda4af664c207f'],
+    }),
+    ('fastICA', '1.2-3', {
+        'checksums': ['e9ef82644cb64bb49ae3b7b6e0885f4fb2dc08ae030f8c76fe8dd8507b658950'],
+    }),
+    ('R.methodsS3', '1.8.2', {
+        'checksums': ['822d5e61dad4c91e8883be2b38d7b89f87492046d0fe345704eb5d2658927c2e'],
+    }),
+    ('R.oo', '1.25.0', {
+        'checksums': ['b8b19061774918ee7d9d4330c16c0ea505f7cd02d01343df1e8b2e4fb847beef'],
+    }),
+    ('sys', '3.4', {
+        'checksums': ['17f88fbaf222f1f8fd07919461093dac0e7175ae3c3b3264b88470617afd0487'],
+    }),
+    ('askpass', '1.1', {
+        'checksums': ['db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f'],
+    }),
+    ('openssl', '2.0.2', {
+        'checksums': ['862d3dc9bb69d92e36e83a7506be83443d4a4957f5f08f6617d7873c67a1f1c4'],
+    }),
+    ('httr', '1.4.3', {
+        'checksums': ['9a8613fa96173ac910c021391af1ced4d0609169049c802cf7cdfe1c40897c6a'],
+    }),
+    ('cgdsr', '1.3.0', {
+        'checksums': ['4aa2a3564cee2449c3ff39ab2ad631deb165d4c78b8107e0ff77a9095340cc1f'],
+    }),
+    ('R.utils', '2.11.0', {
+        'checksums': ['622860f995f78be3a6e439f29d945874c5cb0866f6a73a9b43ac1d4d7f23fed8'],
+    }),
+    ('R.matlab', '3.6.2', {
+        'checksums': ['1ba338f470a24b7f6ef68cadbd04eb468ead4a689f263d2642408ad591b786bb'],
+    }),
+    ('gridExtra', '2.3', {
+        'checksums': ['81b60ce6f237ec308555471ae0119158b115463df696d2eca9b177ded8988e3b'],
+    }),
+    ('gbm', '2.1.8', {
+        'checksums': ['7d5de3b980b8f23275e86ac9bed48a497c9aa53c58e407dfd676309f38272ec1'],
+    }),
+    ('Formula', '1.2-4', {
+        'checksums': ['cb70e373b5ed2fc8450937fb3321d37dfd22dcc6f07cb872a419d51205125caf'],
+    }),
+    ('acepack', '1.4.1', {
+        'checksums': ['82750507926f02a696f6cc03693e8d4a5ee7e92500c8c15a16a9c12addcd28b9'],
+    }),
+    ('proto', '1.0.0', {
+        'checksums': ['9294d9a3b2b680bb6fac17000bfc97453d77c87ef68cfd609b4c4eb6d11d04d1'],
+    }),
+    ('chron', '2.3-57', {
+        'checksums': ['9645d86a84d1afc12a0accf4f826fdd40e6d050a313424ad70f8085e8f19c232'],
+    }),
+    ('viridis', '0.6.2', {
+        'checksums': ['69b58cd1d992710a08b0b227fd0a9590430eea3ed4858099412f910617e41311'],
+    }),
+    ('yaml', '2.3.5', {
+        'checksums': ['3edf6c0554a0e184a25e8bec5721a2e66b4ab0dceb3737428e22705e52eb5140'],
+    }),
+    ('htmltools', '0.5.2', {
+        'checksums': ['7dc7d50436e5a82a5801f85bcd2f572a06a98b4027d71aa17b4854ec9b2767fb'],
+    }),
+    ('htmlwidgets', '1.5.4', {
+        'checksums': ['1a3fc60f40717de7f1716b754fd1c31a132e489a2560a278636ee78eba46ffc1'],
+    }),
+    ('knitr', '1.39', {
+        'checksums': ['c91a65edebdca779af7f7480fa6636667497c9291ad55d6efd982db0bb91ac72'],
+    }),
+    ('htmlTable', '2.4.0', {
+        'checksums': ['4ca2b5616d77cfeee8ae5ca74307b86407d478b12d1ce17ba9c447e233b89a9d'],
+    }),
+    ('Hmisc', '4.7-0', {
+        'checksums': ['29ec2d9ca11c790c350e93323126bef4f498c69c41c31bb335fd04671e0f87bd'],
+    }),
+    ('fastcluster', '1.2.3', {
+        'checksums': ['1f229129e1cddc78c7bb5ecc90c4d28ed810ee68cf210004c7cdfa12cfaf2a01'],
+    }),
+    ('registry', '0.5-1', {
+        'checksums': ['dfea36edb0a703ec57e111016789b47a1ba21d9c8ff30672555c81327a3372cc'],
+    }),
+    ('bibtex', '0.4.2.3', {
+        'checksums': ['7bad194920b412781ac9754ad41058d52d3cd7186e1851c2bce3640490e9bc6d'],
+    }),
+    ('pkgmaker', '0.32.2', {
+        'checksums': ['ce45b22def771a9c90a414093823e6befe7e23489c500eeccee5154b44d3ef91'],
+    }),
+    ('rngtools', '1.5.2', {
+        'checksums': ['7f8c76ca4c7851b69a86e27be09b02ddc86357f0388659ef8787634682e8a74d'],
+    }),
+    ('doParallel', '1.0.17', {
+        'checksums': ['b96a25ad105a654d70c7b4ca27290dc9967bc47f4668b2763927a886b178abd7'],
+    }),
+    ('gridBase', '0.4-7', {
+        'checksums': ['be8718d24cd10f6e323dce91b15fc40ed88bccaa26acf3192d5e38fe33e15f26'],
+    }),
+    ('irlba', '2.3.5', {
+        'checksums': ['26fc8c0d36460e422ab77f43a597b8ec292eacd452628c54d34b8bf7d5269bb9'],
+    }),
+    ('igraph', '1.3.2', {
+        'checksums': ['0f5066180e223e165d28cee050054008ca23102e8392ff4ecd72e733537ec320'],
+    }),
+    ('GeneNet', '1.2.16', {
+        'checksums': ['c1e98073ccdaa18f4952630bfe4fc0617106eeaf7ed94d347cb2773bd48333e4'],
+    }),
+    ('ape', '5.6-2', {
+        'checksums': ['9b62450a0390a1f07df007d348ad4cedcd814d42cb11c5a300ed33550fd41257'],
+    }),
+    ('RJSONIO', '1.3-1.6', {
+        'checksums': ['82d1c9ea7758b2a64ad683f9c46223dcba9aa8146b43c1115bf9aa76a657a09f'],
+    }),
+    ('caTools', '1.18.2', {
+        'checksums': ['75d61115afec754b053ed1732cc034f2aeb27b13e6e1932aa0f26bf590cf0293'],
+    }),
+    ('gplots', '3.1.3', {
+        'checksums': ['9f853b9e205264d087e61e8825f797ce36c9eb585b187dab794563613a526716'],
+    }),
+    ('ROCR', '1.0-11', {
+        'checksums': ['57385a773220a3aaef5b221a68b2d9c2a94794d4f9e9fc3c1eb9521767debb2a'],
+    }),
+    ('later', '1.3.0', {
+        'checksums': ['08f50882ca3cfd2bb68c83f1fcfbc8f696f5cfb5a42c1448c051540693789829'],
+    }),
+    ('promises', '1.2.0.1', {
+        'checksums': ['8d3a8217909e91f4c2a2eebba5ac8fc902a9ac1a9e9d8a30815c9dc0f162c4b7'],
+    }),
+    ('httpuv', '1.6.5', {
+        'checksums': ['f5f63629ca5e9d0e396a89982d95b5286726c0cb425166f35a3ad32a60a79156'],
+    }),
+    ('rjson', '0.2.21', {
+        'checksums': ['982b56d35ccc0c7db0b20c1d3eab5f5f47c620309646fdc278ff1cc3433ea2e2'],
+    }),
+    ('sourcetools', '0.1.7', {
+        'checksums': ['47984406efb3b3face133979ccbae9fefb7360b9a6ca1a1c11473681418ed2ca'],
+    }),
+    ('xml2', '1.3.3', {
+        'checksums': ['cb4e9c0d31618ed67d2bfa4c7b5e52680e11612ed356a8164b541d44163c1c8d'],
+    }),
+    ('commonmark', '1.8.0', {
+        'checksums': ['7d07e72937b1cf158e69f183722bf79dbb91b8967a9dd29f4fa145500c2be668'],
+    }),
+    ('jquerylib', '0.1.4', {
+        'checksums': ['f0bcc11dcde3a6ff180277e45c24642d3da3c8690900e38f44495efbc9064411'],
+    }),
+    ('rappdirs', '0.3.3', {
+        'checksums': ['49959f65b45b0b189a2792d6c1339bef59674ecae92f8c2ed9f26ff9e488c184'],
+    }),
+    ('fs', '1.5.2', {
+        'checksums': ['35cad1781d6d17c1feb56adc4607079c6844b63794d0ce1e74bb18dbc11e1987'],
+    }),
+    ('sass', '0.4.1', {
+        'checksums': ['850fcb6bd49085d5afd25ac18da0744234385baf1f13d8c0a320f4da2de608bb'],
+    }),
+    ('bslib', '0.3.1', {
+        'checksums': ['5f5cb56e5cab9039a24cd9d70d73b69c2cab5b2f5f37afc15f71dae0339d9849'],
+    }),
+    ('fontawesome', '0.2.2', {
+        'checksums': ['572db64d1b3c9be301935e0ca7baec69f3a6e0aa802e23f1f224b3724259df64'],
+    }),
+    ('shiny', '1.7.1', {
+        'checksums': ['c03b2056fb41430352c7c0e812bcc8632e6ec4caef077d2f7633512d91721d00'],
+    }),
+    ('seqinr', '4.2-16', {
+        'checksums': ['c4f3253832fc255197bdce7b4dd381db606c6b787d2e888751b4963acf3a4032'],
+    }),
+    ('LearnBayes', '2.15.1', {
+        'checksums': ['9b110858456523ca0b2a63f22013c4e1fbda6674b9d84dc1f4de8bffc5260532'],
+    }),
+    ('deldir', '1.0-6', {
+        'checksums': ['6df6d8325c607e0b7d63cbc53c29e774eff95ad4acf9c7ec8f70693b0505f8c5'],
+    }),
+    ('gmodels', '2.18.1.1', {
+        'checksums': ['da7d48021b7cd2fd8a7cd8d0bb9658b12342a32698a13877b25ca94aa03f1e95'],
+    }),
+    ('expm', '0.999-6', {
+        'checksums': ['2c79912fd2e03fcf89c29f09555880934402fcb2359af8b4579d79b4f955addc'],
+    }),
+    ('terra', '1.5-34', {
+        'checksums': ['3cad88f4fad6517713861a8debc8c7c746c32e0c2ee851bb0c2bc43744fcaa1c'],
+    }),
+    ('raster', '3.5-15', {
+        'checksums': ['29c7d3c5d34284f8b5a2ddc9989fbcf092ce209d5eb5310ebc772b5ebdfdd685'],
+    }),
+    ('spData', '2.0.1', {
+        'checksums': ['c635a3e2e5123b4cdb2e6877b9b09e3d50169e1512a53b2ba2db7fbe63b990fc'],
+    }),
+    ('units', '0.8-0', {
+        'checksums': ['9c46fe138e8c1c3d3a51268776412f02d09673656516148cccb71b1071beb21a'],
+    }),
+    ('classInt', '0.4-7', {
+        'checksums': ['a30e3a8987ce133944897100ab5bdc31b019d897969c452c3795f50ac234606e'],
+    }),
+    ('vegan', '2.6-2', {
+        'checksums': ['ab77d110c959d19b0c6268ae0c8f78c897e2419eff3f1f7b19c1bb2f8db7c059'],
+    }),
+    ('rncl', '0.8.6', {
+        'checksums': ['fcc972c04fb43ace0876eb640a6433caddf6ec8304f7ceee37107d812ce68ffb'],
+    }),
+    ('XML', '3.99-0.10', {
+        'checksums': ['c45991b5edadc3cf7e2d80c38e798a5d6c4e27baf6007004d4db5a6ca97ff35b'],
+    }),
+    ('tinytex', '0.40', {
+        'checksums': ['3f5e7adb2c047a8181a39fe5fee1f709039e6e94245f98c64282fdecc183d88d'],
+    }),
+    ('rmarkdown', '2.14', {
+        'checksums': ['e9ec17afa4d9d6e8cf555b56e0c00acc189d8ec0b4406680b14d71d62f0c3220'],
+    }),
+    ('reshape', '0.8.9', {
+        'checksums': ['791178b3b5f30c166ebf5910a5ab1c67b54e7023b10b6c2e2ddd1cc02a1e4048'],
+    }),
+    ('triebeard', '0.3.0', {
+        'checksums': ['bf1dd6209cea1aab24e21a85375ca473ad11c2eff400d65c6202c0fb4ef91ec3'],
+    }),
+    ('urltools', '1.7.3', {
+        'checksums': ['6020355c1b16a9e3956674e5dea9ac5c035c8eb3eb6bbdd841a2b5528cafa313'],
+    }),
+    ('httpcode', '0.3.0', {
+        'checksums': ['593a030a4f94c3df8c15576837c17344701bac023ae108783d0f06c476062f76'],
+    }),
+    ('crul', '1.2.0', {
+        'checksums': ['be1a149b21cf219ef55adfb56a6a5eb9892a9acf0d5f5421a22e52f2a7066f8c'],
+    }),
+    ('bold', '1.2.0', {
+        'checksums': ['8f1597f04acbe6b090232929325734c802049d82649ae102b438e1fa3af5a464'],
+    }),
+    ('rredlist', '0.7.0', {
+        'checksums': ['d2e66b655c43565a4cc0984dc3fcc9732652cb9677baaa9bb2b82e9f9d65e7f0'],
+    }),
+    ('rentrez', '1.2.3', {
+        'checksums': ['fb256597ebe7780e38bef9c4c2626b3feacd60c7a5a29fc6a218cf0d8d132f74'],
+    }),
+    ('rotl', '3.0.12', {
+        'checksums': ['1688b3284139803a9b1339d7f34a5db94bb1f2f4fd4c395423f7164dbdb3d98e'],
+    }),
+    ('solrium', '1.2.0', {
+        'checksums': ['7ec64199497cc69f542fded955b709fc548cf8e2734c9db0f4a99a0ea67ca49b'],
+    }),
+    ('ritis', '1.0.0', {
+        'checksums': ['327b221872408b1f0fe0cce953685535b66d2fa5d6cac628e1142a26e4856136'],
+    }),
+    ('worrms', '0.4.2', {
+        'checksums': ['1ab228ea762a431a5e3a565b589b804fcb2865ceaa2b1459bd2ab3ebe8f5ebbe'],
+    }),
+    ('natserv', '1.0.0', {
+        'checksums': ['30f90f938e963191ef19b1433db1e265f67d8efe29c92a1d3603c3dc9a03d5c8'],
+    }),
+    ('WikipediR', '1.5.0', {
+        'checksums': ['f8d0e6f04fb65f7ad9c1c068852a6a8b699ffe8d39edf1f3fa07d32d087e8ff0'],
+    }),
+    ('ratelimitr', '0.4.1', {
+        'checksums': ['2b21e4574521c5336feeb3041eaf096bde7857b140049cdeb6ec97dc652aa71b'],
+    }),
+    ('rex', '1.2.1', {
+        'checksums': ['af42e649c06e4bbdba94d5a1870a7e8347903571c90cd5e5ca40f52307a3bfd6'],
+    }),
+    ('WikidataQueryServiceR', '1.0.0', {
+        'checksums': ['0e14eec8471a72227f800b41b331cfc49a94b4d4f49e68936448ebbae0b281ae'],
+    }),
+    ('pbapply', '1.5-0', {
+        'checksums': ['effdfee286e5ba9534dc2ac3cee96590a37f5cd2af28c836d00c25ca9f070a55'],
+    }),
+    ('WikidataR', '2.3.3', {
+        'checksums': ['3da74b0584b8141a1b61b4d8f58e53c0e46524d811b1642bcc01fb7fd6180888'],
+    }),
+    ('wikitaxa', '0.4.0', {
+        'checksums': ['ba872853af59fdc8f1121d6e205f15e5bf4f2ec5ad68cd5755a423fa783bf7fc'],
+    }),
+    ('phangorn', '2.9.0', {
+        'checksums': ['3262dbe002bedc636467d4ac77044965f4976da09fa710c606075c5ddf26da23'],
+    }),
+    ('uuid', '1.1-0', {
+        'checksums': ['e75b50ee7dc8c4c8e7083023e954ffd1c6a004431bf5e9094463e46aa760f42f'],
+    }),
+    ('conditionz', '0.1.0', {
+        'checksums': ['ccd81e4f2534d29cddf44cf697f76ff01417cbeb22001a93477edc61cdd35646'],
+    }),
+    ('taxize', '0.9.100', {
+        'checksums': ['e2e578fc45eb5d1306332892c67535fa4bc32d63129532df2c6cde393993cd29'],
+    }),
+    ('RNeXML', '2.4.7', {
+        'checksums': ['cb311d6dda33a95521a6df360a2d2f4e6d6bc6b330ac5e19ea721ca665bce6fe'],
+    }),
+    ('phylobase', '0.8.10', {
+        'checksums': ['5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b'],
+    }),
+    ('magick', '2.7.3', {
+        'checksums': ['83877b2e23ea43fbc1164de9c2422eafbe7858393ac384df5adf3a7eec122441'],
+    }),
+    ('animation', '2.7', {
+        'checksums': ['88418f1b04ec785963bad492f30eb48b05914e9e5d88c7eef705d949cbd7e469'],
+    }),
+    ('bigmemory.sri', '0.1.3', {
+        'checksums': ['55403252d8bae9627476d1f553236ea5dc7aa6e54da6980526a6cdc66924e155'],
+    }),
+    ('bigmemory', '4.6.1', {
+        'checksums': ['b56e157c87ed6c4fc69d4cb9c697ae9a2001726e776e41aa7c48b35327b65141'],
+    }),
+    ('calibrate', '1.7.7', {
+        'checksums': ['713b09b415c954e1ef5216088acd40621b0546c45afbb8c2c6f118ecb5cd6fa6'],
+    }),
+    ('clusterGeneration', '1.3.7', {
+        'checksums': ['534f29d8f7ed11e6e9a496f15845b588ec7133f3da5e6def8140b88500e52d5c'],
+    }),
+    ('dismo', '1.3-5', {
+        'checksums': ['812e1932d42c0f40acf2ab5c5b2d068f93128caf648626e1d11baf1a09340ee7'],
+    }),
+    ('extrafontdb', '1.0', {
+        'checksums': ['faa1bafee5d4fbc24d03ed237f29f1179964ebac6e3a46ac25b0eceda020b684'],
+    }),
+    ('Rttf2pt1', '1.3.10', {
+        'checksums': ['81886b4f686341ce5139816233c957e840541d17a1d2db0047af17d527f0e1ba'],
+    }),
+    ('extrafont', '0.18', {
+        'checksums': ['44e6a9798914b99c1460a1177c1f1503cf2a2f74844e3e7858fb98462b08a857'],
+    }),
+    ('fields', '13.3', {
+        'checksums': ['c652838b1ae7eb368831522824bfbc1d1db7b9d1db5e9bb52b194098549944c3'],
+    }),
+    ('shapefiles', '0.7', {
+        'checksums': ['eeb18ea4165119519a978d4a2ba1ecbb47649deb96a7f617f5b3100d63b3f021'],
+    }),
+    ('fossil', '0.4.0', {
+        'checksums': ['37c082fa15ebae89db99d6071b2bb2cad6a97a0405e9b4ef77f62a8f6ad274c1'],
+    }),
+    ('phytools', '1.0-3', {
+        'checksums': ['bfe2aec6aae8235264c1494eee42be494fed81a676c6de9e39c57a6e3682b37d'],
+    }),
+    ('geiger', '2.0.10', {
+        'checksums': ['2895cfb73fb91764be2ec3f931e4f3b2e75ae00a1431af4b40dc90e7c0693be0'],
+    }),
+    ('shape', '1.4.6', {
+        'checksums': ['b9103e5ed05c223c8147dbe3b87a0d73184697343634a353a2ae722f7ace0b7b'],
+    }),
+    ('glmnet', '4.1-4', {
+        'checksums': ['f6b0f70a0b3d81ff91c2b94f795a2a32e90dd458270f1a29e49e085dd65000f9'],
+    }),
+    ('crosstalk', '1.2.0', {
+        'checksums': ['4237baab35cd246a8a98fb9cf4ce53b6ddbc31d00742ded4edea0479613d1ea0'],
+    }),
+    ('miniUI', '0.1.1.1', {
+        'checksums': ['452b41133289f630d8026507263744e385908ca025e9a7976925c1539816b0c0'],
+    }),
+    ('webshot', '0.5.3', {
+        'checksums': ['b7c4f2be61c8c4730202a9c3604072478e30cb85b423b7497cd703cc3f49dbc0'],
+    }),
+    ('shinyjs', '2.1.0', {
+        'checksums': ['7ec20cbf1b1fd7a32d85a56dfc0df8b5f67c828d241da400a21d893cb37ea9c5'],
+    }),
+    ('manipulateWidget', '0.11.1', {
+        'checksums': ['5b73728d7d6dcc32f32d861375074cd65112c03a01e4ee4fa94e21b063fdefb6'],
+    }),
+    ('rgl', '0.109.2', {
+        'checksums': ['117504ce5a22ead0b068314988804f4aeec0fb8a354c4c5f214cfe2de29d2c97'],
+    }),
+    ('Rtsne', '0.16', {
+        'checksums': ['52a05adc826c28212e97d11c54eba3fec45d14eb52039c0f47f62a8e338ffbd5'],
+    }),
+    ('labdsv', '2.0-1', {
+        'checksums': ['5a4d55e9be18222dc47e725008b450996448ab117d83e7caaa191c0f13fd3925'],
+    }),
+    ('stabs', '0.6-4', {
+        'checksums': ['f8507337789f668e421a6ee7b11dd5ea331bf8bff0f9702dd1b93f46c2f3c1d9'],
+    }),
+    ('modeltools', '0.2-23', {
+        'checksums': ['6b3e8d5af1a039db5c178498dbf354ed1c5627a8cea9229726644053443210ef'],
+    }),
+    ('strucchange', '1.5-3', {
+        'checksums': ['cac6b4028f68cc8d39202377161d0f7f72ea229b552a5c35769053ab89f90f86'],
+    }),
+    ('TH.data', '1.1-1', {
+        'checksums': ['edf3ab16b142f4c52d21fc64e41409ed138e5b3e142f2fae964b00f02d53dd7a'],
+    }),
+    ('multcomp', '1.4-19', {
+        'checksums': ['f03473b1cfbc714cd85a0ee948e2ecdb23bcdccbe95e27237ee25e9c71e3e557'],
+    }),
+    ('libcoin', '1.0-9', {
+        'checksums': ['2d7dd0b7c6dfc20472430570419ea36a714da7bbafd336da1fb53c5c6463d9eb'],
+    }),
+    ('coin', '1.4-2', {
+        'checksums': ['7546d1f27a82d98b4b3e43e4659eba0f74a67d5919ce85d2fb360282ba3cfbb2'],
+    }),
+    ('party', '1.3-10', {
+        'checksums': ['e5892955f6ce662ade568e646d1d672c3ecbf5d4e74b4a887a353e6160f7b56a'],
+    }),
+    ('inum', '1.0-4', {
+        'checksums': ['5febef69c43a4b95b376c1418550a949d988a5f26b1383ca01c9728a94fc13ce'],
+    }),
+    ('partykit', '1.2-16', {
+        'checksums': ['e643d4e29c1894497e3dd5fe274783319d0044dec50282ed807cebc21736ddb2'],
+    }),
+    ('mboost', '2.9-7', {
+        'checksums': ['0242cb91656280c4bd705643b65674900a1475305d9f80cfc12ef4b5fa069606'],
+    }),
+    ('msm', '1.6.9', {
+        'checksums': ['aefcd9bb40b0167311d088d6fe23fdf7aa35deaac0f8b47ef02377cff5577023'],
+    }),
+    ('nor1mix', '1.3-0', {
+        'checksums': ['9ce4ee92f889a4a4041b5ea1ff09396780785a9f12ac46f40647f74a37e327a0'],
+    }),
+    ('np', '0.60-11', {
+        'checksums': ['a3b31b8ad70c42826076786b2b1b63b79cdbadfa55fe126773bc357686fd33a9'],
+    }),
+    ('polynom', '1.4-1', {
+        'checksums': ['bc1edb7bb16c8b299103f80a52ab8c5fc200cd07a9056578c1f672e9f5019278'],
+    }),
+    ('polspline', '1.1.20', {
+        'checksums': ['6992484e9e41036debef1e705e26959f8f5c7a68d3e1fda58273d2a72297a1b5'],
+    }),
+    ('rms', '6.3-0', {
+        'checksums': ['6c41eb670daf5e4391cc2f2a19e20a591f90769c124300a7ccf555820140d3f9'],
+    }),
+    ('RWekajars', '3.9.3-2', {
+        'checksums': ['16e6b019aab1646f89c5203f0d6fc1cb800129e5169b15aaef30fd6236f5da1a'],
+    }),
+    ('RWeka', '0.4-44', {
+        'checksums': ['f3239437aeeb01453b7ce235f9680bc281886b46de0b536d9c8413c6294c7bc8'],
+    }),
+    ('slam', '0.1-50', {
+        'checksums': ['7899bf3266c204ecccefc1878f96940b117d4503af128f4fbc50fc409163f8bd'],
+    }),
+    ('tm', '0.7-8', {
+        'checksums': ['b1eb1683d956db1a207b61cc086ae08b3ca7f46b6b8bc46d09ba5a4fafa66256'],
+    }),
+    ('leaps', '3.1', {
+        'checksums': ['3d7c3a102ce68433ecf167ece96a7ebb4207729e4defd0ac8fc00e7003f5c3b6'],
+    }),
+    ('cNORM', '3.0.2', {
+        'checksums': ['31231a0612915ee5171676b28273f82acdc8914bd6385fc9e7b17f930e66c91a'],
+    }),
+    ('weights', '1.0.4', {
+        'checksums': ['efbe65e8a9d05824a86095d45ed62ce24d82101d4ca3b94828d443e08e83ccba'],
+    }),
+    ('TraMineR', '2.2-4', {
+        'checksums': ['b69ef547443453f1d814d09141f7b9be1dd09ef374cc50771d1a8d3f0815e1a7'],
+    }),
+    ('chemometrics', '1.4.2', {
+        'checksums': ['b705832fa167dc24b52b642f571ed1efd24c5f53ba60d02c7797986481b6186a'],
+    }),
+    ('FNN', '1.1.3.1', {
+        'checksums': ['52b0e20611481a95bced40be4126f44b002fd3a9c4c9674bb34db4e1e3b5be5a'],
+    }),
+    ('miscTools', '0.6-26', {
+        'checksums': ['be3c5a63ca12ce7ce4d43767a1815cd3dcf32664728ade251cfb03ea6f77fc9a'],
+    }),
+    ('maxLik', '1.5-2', {
+        'checksums': ['7cee05be0624b6a76911fa7b0d66f3e1b78460e0c55ed8bc904ce1e8af7bb15d'],
+    }),
+    ('gbRd', '0.4-11', {
+        'checksums': ['0251f6dd6ca987a74acc4765838b858f1edb08b71dbad9e563669b58783ea91b'],
+    }),
+    ('rbibutils', '2.2.8', {
+        'checksums': ['f1aecdeeba99042d34de19234238c5bbdc18a26f271f6adf9c9b7e349d50d152'],
+    }),
+    ('Rdpack', '2.3.1', {
+        'checksums': ['b53e5e9db53e31f514e2fef46bafa00bc7cd8828e36e5c933e28e9ac892d448a'],
+    }),
+    ('dfidx', '0.0-4', {
+        'checksums': ['04255de9b002b2f89db04144edcd72e21804e0c129a3e5082b4a21630c850702'],
+    }),
+    ('mlogit', '1.1-1', {
+        'checksums': ['6f3ea97db410be929a3078422f3d354d2f17855a21bbdc7c2c09d901e233d143'],
+    }),
+    ('getopt', '1.20.3', {
+        'checksums': ['531f5fdfdcd6b96a73df2b39928418de342160ac1b0043861e9ea844f9fbf57f'],
+    }),
+    ('gsalib', '2.1', {
+        'checksums': ['e1b23b986c18b89a94c58d9db45e552d1bce484300461803740dacdf7c937fcc'],
+    }),
+    ('optparse', '1.7.1', {
+        'checksums': ['324e304c13efd565d766766193d4ccd75e2cd949dfcfb416afc3939489071fe7'],
+    }),
+    ('labelled', '2.9.1', {
+        'checksums': ['9eb10b245f64f3fb7346121aa4cd98638946e1cc4208dd5e28791ef8fd62fa40'],
+    }),
+    ('R.cache', '0.15.0', {
+        'checksums': ['adb4d3b08f7917e10fe6188c7b90a3318701a974c58eaa09943b929382bdf126'],
+    }),
+    ('styler', '1.7.0', {
+        'checksums': ['3e49f3ac2e65f9bdab15837a4e629db35c8fd0a15a74daa057354ba01e3022ce'],
+    }),
+    ('questionr', '0.7.7', {
+        'checksums': ['ce24c40bd98dbeca615b9eb2a9cd2da26852821dc3840f8394eeecb0739dfd56'],
+    }),
+    ('klaR', '1.7-0', {
+        'checksums': ['b4795250ef19fd1b5e1b9a59343fd01159a33dbdbb504a06258220e37a718198'],
+    }),
+    ('neuRosim', '0.2-12', {
+        'checksums': ['f4f718c7bea2f4b61a914023015f4c71312f8a180124dcbc2327b71b7be256c3'],
+    }),
+    ('locfit', '1.5-9.5', {
+        'checksums': ['fd9f2bad9d8beec8be4843dc80e38ebe0f388835a7003490f67e57eeb9e6de23'],
+    }),
+    ('GGally', '2.1.2', {
+        'checksums': ['30352f36bf061bc98bdd5fa373ea0f23d007040bd908c7c018c8e627e0fb28e5'],
+    }),
+    ('beanplot', '1.3.1', {
+        'checksums': ['49158aee3449108fd857ef43fb777f55a2b975b350a4a710788996ad19dd15ad'],
+    }),
+    ('clValid', '0.7', {
+        'checksums': ['037da469891462021eb177f9c9e18caefa8532f08c68fb576fae1668a1f451a1'],
+    }),
+    ('DiscriMiner', '0.1-29', {
+        'checksums': ['5aab7671086ef9940e030324651976456f0e84dab35edb7048693ade885228c6'],
+    }),
+    ('ellipse', '0.4.3', {
+        'checksums': ['02ef2b11c3462a8b800332e522183f4c7c40c7d2d66c5174d5f3f6d8cc68a946'],
+    }),
+    ('pbkrtest', '0.5.1', {
+        'checksums': ['b2a3452003d93890f122423b3f2487dcb6925440f5b8a05578509e98b6aec7c5'],
+    }),
+    ('carData', '3.0-5', {
+        'checksums': ['02e77159b33e3afb8cd9cfab11cf5a996a93175f924b07d991ce44bc6e16451a'],
+    }),
+    ('maptools', '1.1-4', {
+        'checksums': ['f3ee25f9787d97c8373dac3651c6a198c932948eb3a6006b8618c91c6344fdc9'],
+    }),
+    ('zip', '2.2.0', {
+        'checksums': ['9f95987c964039834f770ecda2d5f7e3d3a9de553c89db2a5926c4219bf4b9d8'],
+    }),
+    ('openxlsx', '4.2.5', {
+        'checksums': ['65d06d2819b656ac30fc78437ee712a83fb5a7ab750f56268e5c9e578c582519'],
+    }),
+    ('rematch', '1.0.1', {
+        'checksums': ['a409dec978cd02914cdddfedc974d9b45bd2975a124d8870d52cfd7d37d47578'],
+    }),
+    ('cellranger', '1.1.0', {
+        'checksums': ['5d38f288c752bbb9cea6ff830b8388bdd65a8571fd82d8d96064586bd588cf99'],
+    }),
+    ('readxl', '1.4.0', {
+        'checksums': ['ab9239c249f79b649f7665a612b3dbf4b774ab633115e6dee41091a8cb2491f7'],
+    }),
+    ('rio', '0.5.29', {
+        'checksums': ['9fa63187e1814053e6ed2a164665b4924e08c3453adccb78f7211d403dcc5412'],
+    }),
+    ('car', '3.1-0', {
+        'checksums': ['bd52b4eaea46ce828fccd93445301d06ebd265e2ffff796064875a8c0f0aea21'],
+    }),
+    ('flashClust', '1.01-2', {
+        'checksums': ['48a7849bb86530465ff3fbfac1c273f0df4b846e67d5eee87187d250c8bf9450'],
+    }),
+    ('ggrepel', '0.9.1', {
+        'checksums': ['29fb916d4799ba6503a5dd019717ffdf154d2aaae9ff1736f03e2be24af6bdfc'],
+    }),
+    ('DT', '0.23', {
+        'checksums': ['360ae2fcb1141125a1b16448570fc37d14c4dd3f78a872c26df4fda1787cdc70'],
+    }),
+    ('FactoMineR', '2.4', {
+        'checksums': ['b9e3adce9a66b4daccc85fa67cb0769d6be230beeb126921b386ccde5db2e851'],
+    }),
+    ('flexclust', '1.4-1', {
+        'checksums': ['d67977df059e622832358069509f8968d506074320a45d34bfd21c65f898538d'],
+    }),
+    ('flexmix', '2.3-18', {
+        'checksums': ['462201ef49088845c83083e4ed6725cf069aafb12a814041618aaf09ebd69b51'],
+    }),
+    ('prabclus', '2.3-2', {
+        'checksums': ['f421bcbcb557281e0de4a06b15f9a496adb5c640e883c0f7bb12051efc69e441'],
+    }),
+    ('diptest', '0.76-0', {
+        'checksums': ['508a5ebb161519cd0fcd156dc047b51becb216d545d62c6522496463f94ec280'],
+    }),
+    ('trimcluster', '0.1-5', {
+        'checksums': ['9239f20e4a06ac2fa89e5d5d89b23a45c8c534a7264d89bede8a35d43dda518b'],
+    }),
+    ('fpc', '2.2-9', {
+        'checksums': ['29b0006e96c8645645d215d3378551bd6525aaf45abde2d9f12933cf6e75fa38'],
+    }),
+    ('BiasedUrn', '1.07', {
+        'checksums': ['2377c2e59d68e758a566452d7e07e88663ae61a182b9ee455d8b4269dda3228e'],
+    }),
+    ('TeachingDemos', '2.12', {
+        'checksums': ['3e75405ce1affa406d6df85e06f96381412bc7a2810b25d8c81bfe64c4698644'],
+    }),
+    ('kohonen', '3.0.11', {
+        'checksums': ['018d820acdb7dfa716275ba24c4d671cb0202cb1fee584b673d0118e2c9063ae'],
+    }),
+    ('base64', '2.0', {
+        'checksums': ['8e259c2b12446197d1152b83a81bab84ccb5a5b77021a9b5645dd4c63c804bd1'],
+    }),
+    ('doRNG', '1.8.2', {
+        'checksums': ['33e9d45b91b0fde2e35e911b9758d0c376049121a98a1e4c73a1edfcff11cec9'],
+    }),
+    ('nleqslv', '3.3.2', {
+        'checksums': ['f54956cf67f9970bb3c6803684c84a27ac78165055745e444efc45cfecb63fed'],
+    }),
+    ('Deriv', '4.1.3', {
+        'checksums': ['dbdbf5ed8babf706373ae33a937d013c46110a490aa821bcd158a70f761d0f8c'],
+    }),
+    ('RGCCA', '2.1.2', {
+        'checksums': ['20f341fca8f616c556699790814debdf2ac7aa4dd9ace2071100c66af1549d7d'],
+    }),
+    ('pheatmap', '1.0.12', {
+        'checksums': ['579d96ee0417203b85417780eca921969cda3acc210c859bf9dfeff11539b0c1'],
+    }),
+    ('pvclust', '2.2-0', {
+        'checksums': ['7892853bacd413b5a921006429641ad308a344ca171b3081c15e4c522a8b0201'],
+    }),
+    ('RCircos', '1.2.2', {
+        'checksums': ['5bbdc3baff2d22a8922685af02b2af07541a1bcf1914abd9c166850b4c550afc'],
+    }),
+    ('lambda.r', '1.2.4', {
+        'checksums': ['d252fee39065326c6d9f45ad798076522cec05e73b8905c1b30f95a61f7801d6'],
+    }),
+    ('futile.options', '1.0.1', {
+        'checksums': ['7a9cc974e09598077b242a1069f7fbf4fa7f85ffe25067f6c4c32314ef532570'],
+    }),
+    ('futile.logger', '1.4.3', {
+        'checksums': ['5e8b32d65f77a86d17d90fd8690fc085aa0612df8018e4d6d6c1a60fa65776e4'],
+    }),
+    ('VennDiagram', '1.7.3', {
+        'checksums': ['e7c2475f7613241787e6c85bd03315e4fd88413ccbbb735959756a8c2eeb8c46'],
+    }),
+    ('xlsxjars', '0.6.1', {
+        'checksums': ['37c1517f95f8bca6e3514429394d2457b9e62383305eba288416fb53ab2e6ae6'],
+    }),
+    ('xlsx', '0.6.5', {
+        'checksums': ['378c5ed475a3d7631ea1ea13e0a69d619c1a52260922abda42818752dbb32107'],
+    }),
+    ('uroot', '2.1-2', {
+        'checksums': ['bd7fd9e35928d09d0e8fae9e4359a2b2bca6e6865b278436319e2f91db0e4b37'],
+    }),
+    ('forecast', '8.16', {
+        'checksums': ['9f01eb895a883a7e1e23725b167b46edc1b0b152fd4120278aaa5f7b2621767f'],
+    }),
+    ('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-3', {
+        'checksums': ['3a5f74b6ae7ece5b294781ae57782abe12375d61789c55ff5e92e4aacf347f19'],
+    }),
+    ('spatstat.utils', '2.3-1', {
+        'checksums': ['5b914308df0585993084b5e95967864eea0314c98ed6af58267b64b2235dfe22'],
+    }),
+    ('spatstat.data', '2.2-0', {
+        'checksums': ['d3943bb4f6509d60bf68e79ce4533c5ec5261f411da6b0ef5238c124fc37c3e5'],
+    }),
+    ('spatstat.geom', '2.4-0', {
+        'checksums': ['32b89a409ce87ffe901e4c8720a26cac9629f9816e163c4ad68b7aa012d69e67'],
+    }),
+    ('spatstat.sparse', '2.1-1', {
+        'checksums': ['9a35ad69715b767b3ae60b02dce05ccf108fcccdf95bbc8f7d02557bcbde7303'],
+    }),
+    ('spatstat.random', '2.2-0', {
+        'checksums': ['45f0bbdb9dbd53b6c4151c3cdd098451cf787729717ccbb063cd1f33910e604d'],
+    }),
+    ('spatstat.core', '2.4-4', {
+        'checksums': ['e38c39efe8b14d6e8fdbee8dd870b90c52f78ea571ab7988fd3685f48347d13b'],
+    }),
+    ('spatstat.linnet', '2.3-2', {
+        'checksums': ['9c78a4b680debfff0f3ae934575c30d03ded49bc9a7179475384af0ebaf13778'],
+    }),
+    ('spatstat', '2.3-4', {
+        'checksums': ['4ea0f8d70b926b92bf4a06521f985a0bb6d573619f5d526957c87860ccb999da'],
+    }),
+    ('pracma', '2.3.8', {
+        'checksums': ['2302d454406e72711714732658d0c59c9d5a1ead698f22ee23f38cba63d42764'],
+    }),
+    ('RCurl', '1.98-1.7', {
+        'checksums': ['2ac22d0160633fe3b6b26f3eda5df839eee1120f0111e1172f0fc801f874188d'],
+    }),
+    ('bio3d', '2.4-3', {
+        'checksums': ['c6031f0d9033260a938171d0fa70720962e352935eb7bd2ddb9b92b93abe6a74'],
+    }),
+    ('AUC', '0.3.2', {
+        'checksums': ['836b25b654a82f6ab69b86be95acc22a214da0ad06d71eab787ae1ebe721ae1f'],
+    }),
+    ('interpretR', '0.2.4', {
+        'checksums': ['4c08a6dffd6fd5764f27812f3a085c53e6a21d59ae82d903c9c0da93fd1dd059'],
+    }),
+    ('cvAUC', '1.1.4', {
+        'checksums': ['48b4a3c34e9beb63239e9c7372dd125fe87648262ad5490e0bee2a1f14285ed4'],
+    }),
+    ('SuperLearner', '2.0-28', {
+        'checksums': ['5f42233abd48f1740c33aae1ec4ad8e9952fddb5df1ee49ff2d43d5d89f05601'],
+    }),
+    ('mediation', '4.5.0', {
+        'checksums': ['210206618787c395a67689be268283df044deec7199d9860ed95218ef1e60845'],
+    }),
+    ('CVST', '0.2-3', {
+        'checksums': ['efa296230395f323c2a398a7b386e3a88e75a5b9b645307459d0b7c14d03f32d'],
+    }),
+    ('DRR', '0.0.4', {
+        'checksums': ['93e365a4907e301ae01f7d943e6bdcda71ef23c51a4759ba3c94bcf842d4e0f8'],
+    }),
+    ('dimRed', '0.2.5', {
+        'checksums': ['ab043bcbac4636faadb81c0654cab58aeeec850fba3f8b7a749bea8a58c30efd'],
+    }),
+    ('ddalpha', '1.3.13', {
+        'checksums': ['e4a60a4e0950a3587db2a2d5958ab4fbe07b2548f7c3d4795912fe45c77a4eae'],
+    }),
+    ('RcppRoll', '0.3.0', {
+        'checksums': ['cbff2096443a8a38a6f1dabf8c90b9e14a43d2196b412b5bfe5390393f743f6b'],
+    }),
+    ('adabag', '4.2', {
+        'checksums': ['47019eb8cefc8372996fbb2642f64d4a91d7cedc192690a8d8be6e7e03cd3c81'],
+    }),
+    ('parallelMap', '1.5.1', {
+        'checksums': ['c108a634a335ed47b0018f532a52b032487e239c5061f939ba32355dfefde7e1'],
+    }),
+    ('ParamHelpers', '1.14', {
+        'checksums': ['b17652d0a69de3241a69f20be4ad1bfe02c413328a17f3c1ac7b73886a6ba2eb'],
+    }),
+    ('ggvis', '0.4.7', {
+        'checksums': ['9e6b067e11d497c796d42156570e2481afb554c5db265f42afbb74d2ae0865e3'],
+    }),
+    ('mlr', '2.19.0', {
+        'checksums': ['1149c9b453896481c85906045aa82d511d96979ddecbe5a3faf04f9f4a5e6113'],
+    }),
+    ('unbalanced', '2.0', {
+        'checksums': ['9be32b1ce9d972f1abfff2fbe18f5bb5ba9c3f4fb1282063dc410b82ad4d1ea2'],
+    }),
+    ('RSNNS', '0.4-14', {
+        'checksums': ['7f6262cb2b49b5d5979ccce9ded9cbb2c0b348fd7c9eabc1ea1d31c51a102c20'],
+    }),
+    ('abc.data', '1.0', {
+        'checksums': ['b242f43c3d05de2e8962d25181c6b1bb6ca1852d4838868ae6241ca890b161af'],
+    }),
+    ('abc', '2.2.1', {
+        'checksums': ['db52a397a204a0040ec1368ae217cf7b0d8e99e2567927dbe3ae89f93d1de598'],
+    }),
+    ('lhs', '1.1.5', {
+        'checksums': ['7a3c6fdcc953490e51026e17a0b1a9dc0ca8d03e6fc989457a7cdda2075b6339'],
+    }),
+    ('tensorA', '0.36.2', {
+        'checksums': ['8e8947566bd3b65a54de4269df1abaa3d49cf5bfd2a963c3274a524c8a819ca7'],
+    }),
+    ('EasyABC', '1.5', {
+        'checksums': ['1dd7b1383a7c891cafb34d9cec65d92f1511a336cff1b219e63c0aa791371b9f'],
+    }),
+    ('whisker', '0.4', {
+        'checksums': ['7a86595be4f1029ec5d7152472d11b16175737e2777134e296ae97341bf8fba8'],
+    }),
+    ('roxygen2', '7.2.0', {
+        'checksums': ['2ebfcfd567b9db6c606c6d42be1645b4e987f987995a2ad8954fa963a519448b'],
+    }),
+    ('git2r', '0.30.1', {
+        'checksums': ['85d913ddc7659e32c1b98ebc247fa1cc1b7717a5bd413fa78ea84696986ca840'],
+    }),
+    ('rversions', '2.1.1', {
+        'checksums': ['79aaacf5a1258d91ac0ddedf3c8c16a2d10d39010993dcc7b0a2638afee27cb1'],
+    }),
+    ('xopen', '1.0.0', {
+        'checksums': ['e207603844d69c226142be95281ba2f4a056b9d8cbfae7791ba60535637b3bef'],
+    }),
+    ('sessioninfo', '1.2.2', {
+        'checksums': ['f56283857c53ac8691e3747ed48fe03e893d8ff348235bff7364658bcfb0c7cb'],
+    }),
+    ('rcmdcheck', '1.4.0', {
+        'checksums': ['bbd4ef7d514b8c2076196a7c4a6041d34623d55fbe73f2771758ce61fd32c9d0'],
+    }),
+    ('remotes', '2.4.2', {
+        'checksums': ['f2ef875f24a485bf4f55a8c830f87cdd5db868f9a8cdb624dc452d0bf66ba516'],
+    }),
+    ('clisymbols', '1.2.0', {
+        'checksums': ['0649f2ce39541820daee3ed408d765eddf83db5db639b493561f4e5fbf88efe0'],
+    }),
+    ('ini', '0.3.1', {
+        'checksums': ['7b191a54019c8c52d6c2211c14878c95564154ec4865f57007953742868cd813'],
+    }),
+    ('gitcreds', '0.1.1', {
+        'checksums': ['b14aaf4e910a9d2d6c65c93e645f0b0159c00898e669f917f83c03dfedb1dfea'],
+    }),
+    ('gh', '1.3.0', {
+        'checksums': ['a44039054e8ca56496f2d9c7a10cdadf4a7383bc91086e768ba7e7f1fbcaed1c'],
+    }),
+    ('credentials', '1.3.2', {
+        'checksums': ['2ffa7c11bedbfa034adf553d0a2f2e4f6a496b858af753a09a89219cff9028b8'],
+    }),
+    ('gert', '1.6.0', {
+        'checksums': ['8c440aeebabf1cb3b57124ec9280e0f46b2ab56f2bca07d72b5c7a7f4edc2964'],
+    }),
+    ('usethis', '2.1.6', {
+        'checksums': ['31dc6707577065ac1d4acb7d4cbf135942727c5cc2699092198c544be86f6818'],
+    }),
+    ('covr', '3.5.1', {
+        'checksums': ['a54cfc3623ea56084158ac5d7fe33f216f45191f6dcddab9c9ed4ec1d9d8ac6c'],
+    }),
+    ('devtools', '2.4.3', {
+        'checksums': ['e42159a9bca0b219170e76c282862e27ca283649d6cbf6a868175d8982e06b4f'],
+    }),
+    ('Rook', '1.1-1', {
+        'checksums': ['00f4ecfa4c5c57018acbb749080c07154549a6ecaa8d4130dd9de79427504903'],
+    }),
+    ('Cairo', '1.5-15', {
+        'checksums': ['bb3ab1ff6431c15eb01a66ddf90695cd9a2af3d5a384753f5180cd0401d2e89d'],
+    }),
+    ('RMTstat', '0.3.1', {
+        'checksums': ['bb4827d76106f5377044cd2b230208881eb714cae65f512f4b95988d9b162ae4'],
+    }),
+    ('Lmoments', '1.3-1', {
+        'checksums': ['7c9d489a08f93fa5877e2f233ab9732e0d1b2761596b3f6ac91f2295e41a865d'],
+    }),
+    ('distillery', '1.2-1', {
+        'checksums': ['4b88f0b34e472b9134ad403fb32283424f1883a5943e52c55f1fe05995efb5fa'],
+    }),
+    ('extRemes', '2.1-2', {
+        'checksums': ['a7a38dc9a876967d54843872b4355c65e1910c324b0630f91a50009c2f3005a7'],
+    }),
+    ('tkrplot', '0.0-26', {
+        'checksums': ['dd66264c2553f6927aff297c6b1c3b61867d6c63aec080f40a1e9d53cfc9d120'],
+    }),
+    ('misc3d', '0.9-1', {
+        'checksums': ['a07bbb0de153e806cd79675ed478d2d9221cff825654f59a71a9cf61f4293d65'],
+    }),
+    ('multicool', '0.1-12', {
+        'checksums': ['487d28d9c3c606be0cf56e2d8f8b0d79fb71949c68886ea9251fbb1c01664a36'],
+    }),
+    ('plot3D', '1.4', {
+        'checksums': ['d04a45197646fb36bc38870c1c2351cb56b912bd772b1ebfa25eaeef35fda9c0'],
+    }),
+    ('plot3Drgl', '1.0.3', {
+        'checksums': ['85421213e01e1b5f8b929ee1644232f37bacd723305e549c32850f6b6d6924a4'],
+    }),
+    ('OceanView', '1.0.6', {
+        'checksums': ['2c5165975d6c49fdc83a892cb0406584928dd44000c9774fffc00fbd2fec86f3'],
+    }),
+    ('ks', '1.13.5', {
+        'checksums': ['d1c4d06d704f301628455787ba929add1e774debc343d0952a768abea6cc7815'],
+    }),
+    ('logcondens', '2.1.6', {
+        'checksums': ['785bbda00b9a25e56440e11356ac219cfbf0fdf8b08c7b0728e53a9febe7a365'],
+    }),
+    ('Iso', '0.0-18.1', {
+        'checksums': ['2fa5f78a7603cbae94a5e38e791938596a053d48c609a7c120a19cbb7d93c66f'],
+    }),
+    ('penalized', '0.9-52', {
+        'checksums': ['d8e38e6c4e993c74998ca8f986b4e11e09c0b9971103e1d5c7ebdee75f6d6a21'],
+    }),
+    ('clusterRepro', '0.9', {
+        'checksums': ['940d84529ff429b315cf4ad25700f93e1156ccacee7b6c38e4bdfbe2d4c6f868'],
+    }),
+    ('data.tree', '1.0.0', {
+        'checksums': ['40674c90a5bd00f5185db9adbd221c6f1114043e69095249f5fa8b3044af3f5e'],
+    }),
+    ('influenceR', '0.1.0.1', {
+        'checksums': ['63c46f1175fced33fb1b78d4d56e37fbee09b408945b0106dac36e3344cd4766'],
+    }),
+    ('visNetwork', '2.1.0', {
+        'checksums': ['a2b91e7fbbd9d08a9929a5b2c891d9c0bca5977ad772fa37510d96656af1152f'],
+    }),
+    ('downloader', '0.4', {
+        'checksums': ['1890e75b028775154023f2135cafb3e3eed0fe908138ab4f7eff1fc1b47dafab'],
+    }),
+    ('DiagrammeR', '1.0.9', {
+        'checksums': ['64a426fe27110dddd8b0c1223ae4c397a2e553ae5e81ddd4ff67c026cfc40abf'],
+    }),
+    ('randomForestSRC', '3.1.0', {
+        'checksums': ['a38fbd465eea87c65c7e7406972de84b1073560b40b1e9c806d46bf874a445c0'],
+    }),
+    ('sm', '2.2-5.7', {
+        'checksums': ['2607a2cafc68d7e99005daf99e36f4a66eaf569ebb6b7500e962642cf58be80f'],
+    }),
+    ('pbivnorm', '0.6.0', {
+        'checksums': ['07c37d507cb8f8d2d9ae51a9a6d44dfbebd8a53e93c242c4378eaddfb1cc5f16'],
+    }),
+    ('lavaan', '0.6-11', {
+        'checksums': ['2cc193b82463a865cd8dadb7332409fdebf47e4035d5fe8dbf3414a7ae18d308'],
+    }),
+    ('matrixcalc', '1.0-5', {
+        'checksums': ['5906e1ef06dbc18efc7a4b370adc180ef8941b5438119703bd981d1c76a06fca'],
+    }),
+    ('arm', '1.12-2', {
+        'checksums': ['816ba1c31eec00feef472c57e280488d3d233b592f6f0a1a30e4abb903cb4f5d'],
+    }),
+    ('mi', '1.1', {
+        'checksums': ['4d7a9790dbdc675605d70755af9aa80c21a279be5a5d712b22d77465772cc785'],
+    }),
+    ('servr', '0.24', {
+        'checksums': ['d94e1d31802ce6bbab7a5838ff94cbca8cd998237d834ff25fedf7514f41a087'],
+    }),
+    ('rgexf', '0.16.2', {
+        'checksums': ['6ee052b0de99d0c7492366b991d345a51b3d0cc890d10a68b8670e1bd4fc8201'],
+    }),
+    ('sem', '3.1-15', {
+        'checksums': ['ad023b00e6e8eb20d107039caf1008c4b05104c7c69709e59c66fbddbf381316'],
+    }),
+    ('statnet.common', '4.6.0', {
+        'checksums': ['ddad51128b50d465e1d1aca3a53b452810b9ba578e96b08b8f50f5850d7bb21d'],
+    }),
+    ('network', '1.17.2', {
+        'checksums': ['9588a198807c8c68da147f479ca9af5bcb4468cf91b6a90b8044d313d9fa30f7'],
+    }),
+    ('rle', '0.9.2', {
+        'checksums': ['803cbe310af6e882e27be61d37d660dbe5910ac1ee1eff61a480bcf724a04f69'],
+    }),
+    ('sna', '2.7', {
+        'checksums': ['440fa4347c7b437e93c73127d34894068afd240d3128898474a7201e740a434d'],
+    }),
+    ('glasso', '1.11', {
+        'checksums': ['4c37844b26f55985184a734e16b8fe880b192e3d2763614b0ab3f99b4530e30a'],
+    }),
+    ('huge', '1.3.5', {
+        'checksums': ['9240866e2f773cd0ac8a02514871149d2babaa162a49e151eab9591ad42984ea'],
+    }),
+    ('d3Network', '0.5.2.1', {
+        'checksums': ['5c798dc0c87c6d574abb7c1f1903346e6b0fec8adfd1df7aef5e4f9e7e3a09be'],
+    }),
+    ('BDgraph', '2.67', {
+        'checksums': ['1f424c9254db3d553f6421b3c095b49c57683d25afefbdb195fed12f0c215268'],
+    }),
+    ('graphlayouts', '0.8.0', {
+        'checksums': ['d724266778e4d97ca7a762253c293ffa3d09e2627cb1c3c7a654c690819defd0'],
+    }),
+    ('tweenr', '1.0.2', {
+        'checksums': ['1805f575da6705ca4e5ec1c4605222fc826ba806d9ff9af41770294fe08ff69f'],
+    }),
+    ('ggforce', '0.3.3', {
+        'checksums': ['2a283bb409da6b96929863a926b153bcc59b2c6f00551805db1d1d43e5929f2f'],
+    }),
+    ('tidygraph', '1.2.1', {
+        'checksums': ['2fbdc2db18c5ad48c72f14d2d04111f4b0d4c434ad87c280eda3bcb98673ad36'],
+    }),
+    ('ggraph', '2.0.5', {
+        'checksums': ['e36ad49dba92ee8652e18b1fb197be0ceb9f0a2f8faee2194453a62578449654'],
+    }),
+    ('qgraph', '1.9.2', {
+        'checksums': ['baf190f6db30c4d5a3dc7ab5043b8ec0f79071d515c818c8e7666b9bcf2a4264'],
+    }),
+    ('HWxtest', '1.1.9', {
+        'patches': ['HWxtest-1.1.9_add-fcommon.patch'],
+        'checksums': [
+            {'HWxtest_1.1.9.tar.gz': 'a37309bed4a99212ca104561239d834088217e6c5e5e136ff022544c706f25e6'},
+            {'HWxtest-1.1.9_add-fcommon.patch': '4ce08c35035dbcc4edf092cdb405ae32c21c05b3786c15c0aa4bfe13bd81f451'},
+        ],
+    }),
+    ('diveRsity', '1.9.90', {
+        'checksums': ['b8f49cdbfbd82805206ad293fcb2dad65b962fb5523059a3e3aecaedf5c0ee86'],
+    }),
+    ('doSNOW', '1.0.20', {
+        'checksums': ['917cabed166aa2d1ec291691c17e1e3d344e858543e1682e3a442cc0c504bbb8'],
+    }),
+    ('geepack', '1.3.4', {
+        'checksums': ['efc73fc92429973a5dc29b0913ac45ec364a4a264140cf388df54d4873d458d9'],
+    }),
+    ('biom', '0.3.12', {
+        'checksums': ['4ad17f7811c7346dc4923bd6596a007c177eebb1944a9f46e5674afcc5fdd5a1'],
+    }),
+    ('pim', '2.0.2', {
+        'checksums': ['1195dbdbd67348dfef4b6fc34fcec643da685ebe58d34bbe049ab121aca9944f'],
+    }),
+    ('minpack.lm', '1.2-2', {
+        'checksums': ['c70956122528575433c57a5669e26f4f9b1e160b004f135a38658c2c2634df87'],
+    }),
+    ('rootSolve', '1.8.2.3', {
+        'checksums': ['b5b3d1641642a3fd1279dbd1245f968d2331ac9588d77f872b113f7dc4594ba0'],
+    }),
+    ('diagram', '1.6.5', {
+        'checksums': ['e9c03e7712e0282c5d9f2b760bafe2aac9e99a9723578d9e6369d60301f574e4'],
+    }),
+    ('FME', '1.3.6.2', {
+        'checksums': ['65a200f8171e27f0a3d7ffce3e49b01561f219a11f3cb515ff613a45927ff618'],
+    }),
+    ('bmp', '0.3', {
+        'checksums': ['bdf790249b932e80bc3a188a288fef079d218856cf64ffb88428d915423ea649'],
+    }),
+    ('tiff', '0.1-11', {
+        'checksums': ['b8c3ea15114d972f8140541c7b01f5ce2e5322af1f63c1a083aaf766fd3eec75'],
+    }),
+    ('readbitmap', '0.1.5', {
+        'checksums': ['737d7d585eb33de2c200da64d16781e3c9522400fe2af352e1460c6a402a0291'],
+    }),
+    ('imager', '0.42.13', {
+        'checksums': ['d90a9893d11190ba249c7fae5bd6517a77907efbce2941452cb2aec57bb5cf7f'],
+    }),
+    ('signal', '0.7-7', {
+        'checksums': ['67a015c46d67de7548c3adb83a1b22524de75501a861d91668c3c2ea761a4e61'],
+    }),
+    ('tuneR', '1.4.0', {
+        'checksums': ['561eeae1bfe10ac4a950d2a60afc6db05d28557a8cb932e00ac7b7f57b6ea0e9'],
+    }),
+    ('pastecs', '1.3.21', {
+        'checksums': ['8c1ef2affe88627f0b23295aa5edb758b8fd6089ef09f60f37c46445128b8d7c'],
+    }),
+    ('audio', '0.1-10', {
+        'checksums': ['82c731a88c741a6b4efe5069ce7dc2f765932d769323ac8d3fbb84ac30afc4dd'],
+    }),
+    ('fftw', '1.0-7', {
+        'checksums': ['f69f63467b84e107f3e0b18d1f034a37140545e6f50e6be3b887df2b4eec3a1e'],
+    }),
+    ('seewave', '2.2.0', {
+        'checksums': ['943b1864fe50359b253a4511522c00b0a7dbc1ce5b4033516086a0410fa1212e'],
+    }),
+    ('gsw', '1.0-6', {
+        'checksums': ['147ce73da75777799af9cb712862ef25b52fcae146a64ce0a525460ddfea1deb'],
+    }),
+    ('wk', '0.6.0', {
+        'checksums': ['af2c2837056a6dcc9f64d5ace29601d6d668c95769f855ca0329648d7326eaf5'],
+    }),
+    ('s2', '1.0.7', {
+        'checksums': ['2010c1c6ae29938ec9cd153a8b2c06a333ea4d647932369b2fc7d0c68d6d9e3f'],
+    }),
+    ('sf', '1.0-7', {
+        'checksums': ['d0731fab9438d73a55af7232f0474b36f4b2a4e6d66adaa141632f4a60265453'],
+    }),
+    ('oce', '1.7-6', {
+        'checksums': ['3aaa7600bd2b322062cdeb0a0d910f6fa872fecc4dbc2e30665d51acb12261a8'],
+    }),
+    ('ineq', '0.2-13', {
+        'checksums': ['e0876403f59a3dfc2ea7ffc0d965416e1ecfdecf154e5856e5f54800b3efda25'],
+    }),
+    ('soundecology', '1.3.3', {
+        'checksums': ['276164d5eb92c78726c647be16232d2443acbf7061371ddde2672b4fdb7a069a'],
+    }),
+    ('memuse', '4.2-1', {
+        'checksums': ['f5e9dbaad4efbbfe219a93f446e318a00cad5b294bfc60ca2146eca894b47cf3'],
+    }),
+    ('pinfsc50', '1.2.0', {
+        'checksums': ['ed1fe214b9261feef8abfbf724c2bd9070d68e99a6ea95208aff2c57bbef8794'],
+    }),
+    ('vcfR', '1.12.0', {
+        'checksums': ['dd87ff010365de363864a44ca49887c0fdad0dd18d0d9c66e44e39c2d4581d52'],
+    }),
+    ('glmmML', '1.1.3', {
+        'checksums': ['24e34f0834bded06d52cbd9cb025dc65ea2db2faa7dbee01d545aa33eea35e7c'],
+    }),
+    ('cowplot', '1.1.1', {
+        'checksums': ['c7dce625b456dffc59ba100c816e16226048d12fdd29a7335dc1f6f6e12eed48'],
+    }),
+    ('tsne', '0.1-3.1', {
+        'checksums': ['14abc65bc0a3f3ed63c04dda19620e483a21d1f5f33feb74aba9f3221434d888'],
+    }),
+    ('sn', '2.0.2', {
+        'checksums': ['957b49027c2111f51893433e902486141a942a5ed384ca605714605de80d1790'],
+    }),
+    ('tclust', '1.5-1', {
+        'checksums': ['73328b30774bb0767d613d7f2b60b75706b19fab864c712645ea18181f1af327'],
+    }),
+    ('ranger', '0.14.1', {
+        'checksums': ['5d99401d555da1cfb11c70e59d1bb545ce48720073a06a2a32eb396f622dee1b'],
+    }),
+    ('hexbin', '1.28.2', {
+        'checksums': ['6241f8d3a6c6be2c1c693c3ddb99554bc103e3c6cf602d0c2787c0ce6fd1702d'],
+    }),
+    ('lobstr', '1.1.2', {
+        'checksums': ['9bc533ed7e8f816097a03acfbca33308c9940ba26d02674f4ba06311cf3a1718'],
+    }),
+    ('pryr', '0.1.5', {
+        'checksums': ['7b1653ec51850f4633cee8e2eb7d0b2724fb587b801539488b426cf88f0f770b'],
+    }),
+    ('moments', '0.14.1', {
+        'checksums': ['2ed2b84802da132ae0cf826a65de5bfa85042b82e086be844002fe1ce270d864'],
+    }),
+    ('laeken', '0.5.2', {
+        'checksums': ['22790f7157f23eb0b7b0b89e2ea53478fb3c0d15b5be8ad11525d3e6d5626cdc'],
+    }),
+    ('VIM', '6.1.1', {
+        'checksums': ['7581adca64cf20b93d5a111da83f663215b4529868b065b3463c4238bca97739'],
+    }),
+    ('smoother', '1.1', {
+        'checksums': ['91b55b82f805cfa1deedacc0a4e844a2132aa59df593f3b05676954cf70a195b'],
+    }),
+    ('dynamicTreeCut', '1.63-1', {
+        'checksums': ['831307f64eddd68dcf01bbe2963be99e5cde65a636a13ce9de229777285e4db9'],
+    }),
+    ('beeswarm', '0.4.0', {
+        'checksums': ['51f4339bf4080a2be84bb49a844c636625657fbed994abeaa42aead916c3d504'],
+    }),
+    ('vipor', '0.4.5', {
+        'checksums': ['7d19251ac37639d6a0fed2d30f1af4e578785677df5e53dcdb2a22771a604f84'],
+    }),
+    ('ggbeeswarm', '0.6.0', {
+        'checksums': ['bbac8552f67ff1945180fbcda83f7f1c47908f27ba4e84921a39c45d6e123333'],
+    }),
+    ('shinydashboard', '0.7.2', {
+        'checksums': ['a56ee48572649830cd8d82f1caa2099411461e19e19223cbad36a375299f3843'],
+    }),
+    ('rrcov', '1.7-0', {
+        'checksums': ['cbcca84a82d63fa50556aa8db29312b9bb588a638eb306ce4a81c271529228fd'],
+    }),
+    ('WriteXLS', '6.4.0', {
+        'checksums': ['644b90a82683c668b6e05bb4f940111a42cd634f63a5b559351e8cd4274a19b7'],
+    }),
+    ('bst', '0.3-23', {
+        'checksums': ['70957f1db8800bf0d628a9e6f72b7273329786dd119427790b326844591aa0f3'],
+    }),
+    ('pamr', '1.56.1', {
+        'checksums': ['d0e527f2336ee4beee91eefb2a8f0dfa96413d9b5a5841d6fc7ff821e67c9779'],
+    }),
+    ('WeightSVM', '1.7-9', {
+        'checksums': ['983733b618631d9ad754fb12f5e576912aff1f529cafdee4fddfd38d81ccc710'],
+    }),
+    ('mpath', '0.4-2.22', {
+        'checksums': ['f9709532b2254befea7fd4046179ee60ebcb4ac1fa7b0564fe34643d22f59b44'],
+    }),
+    ('timereg', '2.0.2', {
+        'checksums': ['b1f62be5d34d4d36c3b14cd3c719f936c9e3a80e2907bdeab240821267db3559'],
+    }),
+    ('peperr', '1.4', {
+        'checksums': ['0a44f40cfeb298cbe990dba0d9c979070d7a8659581dea09dd3238526fb59f39'],
+    }),
+    ('heatmap3', '1.1.9', {
+        'checksums': ['594c33947b2be2cc8a592075f41a0df2398c892add7d63a15c613a5eeb8fdb69'],
+    }),
+    ('GlobalOptions', '0.1.2', {
+        'checksums': ['47890699668cfa9900a829c51f8a32e02a7a7764ad07cfac972aad66f839753e'],
+    }),
+    ('circlize', '0.4.15', {
+        'checksums': ['d602d55313fe7c675109153d6ed3b99bdba5292e1deefed71d5a21e0db595cc7'],
+    }),
+    ('GetoptLong', '1.0.5', {
+        'checksums': ['8c237986ed3dfb72d956ad865ef7768644eebf144675ad66140acfd1aca9d701'],
+    }),
+    ('dendextend', '1.15.2', {
+        'checksums': ['4ba3885b66694589d455ffef31c218fe653fa25aff3efb7e8db6c25008d2921b'],
+    }),
+    ('RInside', '0.2.17', {
+        'checksums': ['0be28c44ee34cba669a7264d2b99c289230645598ca78e21682559dc31824348'],
+    }),
+    ('limSolve', '1.5.6', {
+        'checksums': ['b97ea9930383634c8112cdbc42f71c4e93fe0e7bfaa8f401921835cb44cb49a0'],
+    }),
+    ('dbplyr', '2.2.0', {
+        'checksums': ['4a6e092c9349f8b3030c752f8c6cc551637d6fbca3c84be0da89968f1e9adce1'],
+    }),
+    ('modelr', '0.1.8', {
+        'checksums': ['825ba77d95d60cfb94920bec910872ca2ffe7790a44148b2992be2759cb361c4'],
+    }),
+    ('debugme', '1.1.0', {
+        'checksums': ['4dae0e2450d6689a6eab560e36f8a7c63853abbab64994028220b8fd4b793ab1'],
+    }),
+    ('reprex', '2.0.1', {
+        'checksums': ['0e6d8667cacb63135476a766fba3a4f91e5ad86274ea66d2b1e6d773b5ca6426'],
+    }),
+    ('selectr', '0.4-2', {
+        'checksums': ['5588aed05f3f5ee63c0d29953ef53da5dac7afccfdd04b7b22ef24e1e3b0c127'],
+    }),
+    ('rvest', '1.0.2', {
+        'checksums': ['89bb477e0944c80298a52ccf650db8f6377fd7ed3c1bc7034d000f695fdf05a4'],
+    }),
+    ('dtplyr', '1.2.1', {
+        'checksums': ['2640e9cde4eaa06f02cff29e3f2b99fdd08488df07ea2e6629b2ed6a8285d0f3'],
+    }),
+    ('gargle', '1.2.0', {
+        'checksums': ['4d46ca2933f19429ca5a2cfe47b4130a75c7cd9931c7758ade55bac0c091d73b'],
+    }),
+    ('googledrive', '2.0.0', {
+        'checksums': ['605c469a6a086ef4b049909c2e20a35411c165ce7ce4f62d68fd39ffed8c5a26'],
+    }),
+    ('ids', '1.0.1', {
+        'checksums': ['b6212a186063c23116c5cbd3cca65dbb8977dd737261e4526ebee8f64852cfe8'],
+    }),
+    ('googlesheets4', '1.0.0', {
+        'checksums': ['0a107d76aac99d6db48d97ce55810c1412b2197f457b8476f676169a36c7cc7a'],
+    }),
+    ('tidyverse', '1.3.1', {
+        'checksums': ['83cf95109d4606236274f5a8ec2693855bf75d3a1b3bc1ab4426dcc275ed6632'],
+    }),
+    ('R.rsp', '0.44.0', {
+        'checksums': ['8969075bdcabd43bad40eef6b82223e119426279fded041163fd41e55cee3a59'],
+    }),
+    ('gdistance', '1.3-6', {
+        'checksums': ['2ccabeb2f8cf44630c0bd2da79815fe357b812737ebece1bed8f90b27c126a24'],
+    }),
+    ('vioplot', '0.3.7', {
+        'checksums': ['06475d9a47644245ec91598e9aaef7db1c393802d9fc314420ac5139ae56adb6'],
+    }),
+    ('emulator', '1.2-21', {
+        'checksums': ['9b50b2c1e673dbc5e846a4fa72e8bd03434add9f659bde6d7b0c4f1bbd713346'],
+    }),
+    ('gmm', '1.6-6', {
+        'checksums': ['b1b321ad1b4a4a14a2825a2c3eb939ce2f2bcef995247a1d638eca250e59739b'],
+    }),
+    ('tmvtnorm', '1.5', {
+        'checksums': ['1c7a606bdce4319a6fdb4180fef499c293df3412d8583e296869521ece5460fe'],
+    }),
+    ('IDPmisc', '1.1.20', {
+        'checksums': ['bcb9cd7b8097e5089d1936286ef310ac2030ea7791350df706382ba470afc67f'],
+    }),
+    ('gap.datasets', '0.0.5', {
+        'checksums': ['2299b52efee322ce0eaf66c66ae440f46618b647701cd741568c08bdc3111c9c'],
+    }),
+    ('plotly', '4.10.0', {
+        'checksums': ['bd995c654dbc8c09a84adaba8def99766919e3894caf18b551bb26b2f591389a'],
+    }),
+    ('gap', '1.2.3-6', {
+        'checksums': ['0ef352aa98a3bf27908b256f27a903058502176ea9112a4ffc41928ebbc48c22'],
+    }),
+    ('qrnn', '2.0.5', {
+        'checksums': ['3bd83ee8bd83941f9defdab1b5573d0ceca02bf06759a67665e5b9358ff92f52'],
+    }),
+    ('TMB', '1.9.0', {
+        'checksums': ['2c9dd281d911c2cb1cc01c6a8e114826891280f15e0ed4a00b4f195e15df25d7'],
+    }),
+    ('glmmTMB', '1.1.3', {
+        'checksums': ['b9d1e97587b213e52ff304f62480ddee77c658f29a7e99334a4032d0df60b275'],
+    }),
+    ('gmp', '0.6-5', {
+        'checksums': ['8ae76f3d17542eab3e7468341dabeebe28b11da8c1b4b3f7bbdb00d379689e52'],
+    }),
+    ('ROI', '1.0-0', {
+        'checksums': ['b0d87fb4ed2137d982734f3c5cdc0305aabe6e80f95de29655d02a9e82a0a341'],
+    }),
+    ('Rglpk', '0.6-4', {
+        'checksums': ['a28dbc3130b9618d6ed2ef718d2c55df8ed8c44a47161097c53fe15fa3bfbfa6'],
+    }),
+    ('ROI.plugin.glpk', '1.0-0', {
+        'checksums': ['b361b0d4222d74b21432cdc6990762affecdbcec8fd6bbdb13b78b59cb04b444'],
+    }),
+    ('spaMM', '3.12.0', {
+        'checksums': ['ff3af7ab107655bd521bba68093696f343de29294602d00dee7601cc91245f2d'],
+    }),
+    ('qgam', '1.3.4', {
+        'checksums': ['7633120a48a85ab73f7e1bc8b02c98319285c2abd05f9d13d25339d7aaaacacb'],
+    }),
+    ('DHARMa', '0.4.5', {
+        'checksums': ['0fcd41099ababedff010d8fe05f8efa630cceb829dbb87af8b8d650ad49d88bf'],
+    }),
+    ('mvnfast', '0.2.7', {
+        'checksums': ['b67d50936c9a466977669ef6bb7b23df8e7c90a820ac916328c20e41ef8e0b72'],
+    }),
+    ('bridgesampling', '1.1-2', {
+        'checksums': ['54ecd39aa2e36d4d521d3d36425f9fe56a3f8547df6048c814c5931d790f3e6b'],
+    }),
+    ('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.2', {
+        'checksums': ['9b85be7b12b31ac076f2456853a5b18d8a79ce2b86d00055264529a0cd28515c'],
+    }),
+    ('cghFLasso', '0.2-1', {
+        'checksums': ['6e697959b35a3ceb2baa1542ef81f0335006a5a9c937f0173c6483979cb4302c'],
+    }),
+    ('svd', '0.5.1', {
+        'checksums': ['d4dcb650757bfbf8ae388622686be20e8d55cca68096146a30aee8ced96aa113'],
+    }),
+    ('Rssa', '1.0.4', {
+        'checksums': ['4115b516f6782d52f02695bbbd52921a474aafc7232d49aca85010f1c33b08a7'],
+    }),
+    ('JBTools', '0.7.2.9', {
+        'checksums': ['b33cfa17339df7113176ad1832cbb0533acf5d25c36b95e888f561d586c5d62f'],
+    }),
+    ('RUnit', '0.4.32', {
+        'checksums': ['23a393059989000734898685d0d5509ece219879713eb09083f7707f167f81f1'],
+    }),
+    ('DistributionUtils', '0.6-0', {
+        'checksums': ['7443d6cd154760d55b6954142908eae30385672c4f3f838dd49876ec2f297823'],
+    }),
+    ('gapfill', '0.9.6-1', {
+        'checksums': ['22f04755873e34a9077bb1b1de8d16f5bc56cb8c395c4f797f9ad0b209b1b996'],
+    }),
+    ('gee', '4.13-23', {
+        'checksums': ['f8217c3bb077cb805e0cd7761efecac1231035bfc195246b9f185f744c550e6c'],
+    }),
+    ('Matching', '4.10-2', {
+        'checksums': ['1e75dc61553c1687b2b520dc52688409c2e84285e4b6c16c94d8d85fd5ccece0'],
+    }),
+    ('MatchIt', '4.4.0', {
+        'checksums': ['e79a96e7972097829a839c855c0bc97638eeae4b148e01340dfa5296323e6c06'],
+    }),
+    ('RItools', '0.1-18', {
+        'checksums': ['714685d8e04acafe5d5ddf93edac69afec0c62045a7b93478734771b6a0fa928'],
+    }),
+    ('mitools', '2.4', {
+        'checksums': ['f204f3774e29d79810f579f128de892539518f2cbe6ed237e08c8e7283155d30'],
+    }),
+    ('survey', '4.1-1', {
+        'checksums': ['05e89a1678a39e32bfb41af8a31d643b04fc4d2660a96e701825e6bffcd75a52'],
+    }),
+    ('rlemon', '0.2.0', {
+        'checksums': ['e06792875f05a0c6cd637b7bf16bd51c3891e0df6bad78ffba0ee195abe8d3a0'],
+    }),
+    ('optmatch', '0.10.3', {
+        'checksums': ['ed09be71b0e293273412d4a181c1f085ad93f4038996dc7c90beae8466574aeb'],
+    }),
+    ('SPAtest', '3.1.2', {
+        'checksums': ['b3d74ed2b0a6475a9966dd50eb5d363d0b2985636271dfbf82f0472b8d22b9f4'],
+    }),
+    ('RSpectra', '0.16-1', {
+        'checksums': ['cba5d3403d6a7d0e27abf6279fbfea6e0d0fe36b28c688bbadb8eafb3841329a'],
+    }),
+    ('SKAT', '2.2.4', {
+        'checksums': ['2b349896560ad18c3428e245fc25b17e9c2946676044fa56025ddf9c87ff08bf'],
+    }),
+    ('GillespieSSA', '0.6.2', {
+        'checksums': ['f4233b4a44c7d4b9e3459b1efa9a8087a602ef93806b4d70eadbb537b67567c2'],
+    }),
+    ('startupmsg', '0.9.6', {
+        'checksums': ['1d60ff13bb260630f797bde66a377a5d4cd65d78ae81a3936dc4374572ec786e'],
+    }),
+    ('distr', '2.8.0', {
+        'checksums': ['bb7df05d6b946bcdbbec2e3397c7c7e349b537cabfcbb13a34bcf6312a71ceb7'],
+    }),
+    ('distrEx', '2.8.0', {
+        'checksums': ['b064cde7d63ce93ec9969c8c4463c1e327758b6f8ea7765217d77f9ba9d590bf'],
+    }),
+    ('minerva', '1.5.10', {
+        'checksums': ['2f26353d8fcc989ac698c4e45bb683801b1a7bb60b14903d05a4d73c629c590f'],
+    }),
+    ('KODAMA', '1.9', {
+        'checksums': ['e4f8bbfeae9d2f628f7338c708a538aae481a633e59e86727f9b6f9c72920ecf'],
+    }),
+    ('locfdr', '1.1-8', {
+        'checksums': ['42d6e12593ae6d541e6813a140b92591dabeb1df94432a515507fc2eee9a54b9'],
+    }),
+    ('ica', '1.0-2', {
+        'checksums': ['e721596fc6175d3270a60d5e0b5b98be103a8fd0dd93ef16680af21fe0b54179'],
+    }),
+    ('dtw', '1.22-3', {
+        'checksums': ['df7cf9adf613422ddb22a160597eb5f5475ab6c67c0d790092edb7f72ba98f00'],
+    }),
+    ('SDMTools', '1.1-221.2', {
+        'checksums': ['f0dd8c5f98d2f2c012536fa56d8f7a58aaf0c11cbe3527e66d4ee3194f6a6cf7'],
+    }),
+    ('ggridges', '0.5.3', {
+        'checksums': ['f5eafab17f2d4a8a2a83821ad3e96ae7c26b62bbce9de414484c657383c7b42e'],
+    }),
+    ('TFisher', '0.2.0', {
+        'checksums': ['bd9b7484d6fba0165841596275b446f85ba446d40e92f3b9cb37381a3827e76f'],
+    }),
+    ('lsei', '1.3-0', {
+        'checksums': ['6289058f652989ca8a5ad6fa324ce1762cc9e36c42559c00929b70f762066ab6'],
+    }),
+    ('npsurv', '0.5-0', {
+        'checksums': ['bc87db76e7017e178c2832a684fcd49c42e20054644b21b586413d26c8821dc6'],
+    }),
+    ('fitdistrplus', '1.1-8', {
+        'checksums': ['f3c72310f40773b3839a9506c3cb781d044e09b94f2f38d332bb24e5f9960f5a'],
+    }),
+    ('here', '1.0.1', {
+        'checksums': ['08ed908033420d3d665c87248b3a14d1b6e2b37844bf736be620578c20ca346b'],
+    }),
+    ('RcppTOML', '0.1.7', {
+        'checksums': ['2f09f00cbee6c6eeff5d5f0195c10de0155496de15fbe8189c18627ee3090541'],
+    }),
+    ('reticulate', '1.25', {
+        'checksums': ['2125af9e75939c3b7c0dc74f28f42606e816d63aa1143baf631c318ff5ff3a2c'],
+    }),
+    ('hdf5r', '1.3.5', {
+        'installopts': '--configure-args="--with-hdf5=$EBROOTHDF5/bin/h5cc"',
+        'preinstallopts': "unset LIBS && ",
+        'checksums': ['87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f'],
+    }),
+    ('DTRreg', '1.7', {
+        'checksums': ['f0fad2244d960cec8fc33d9a1078df359ceb0aadff980ce6149aa9f01c62223b'],
+    }),
+    ('pulsar', '0.3.7', {
+        'checksums': ['78c9f7e3b2bf8a8d16a81d6ee43bb05b0c360219be473d920c8c8ccb2aba4e3d'],
+    }),
+    ('bayesm', '3.1-4', {
+        'checksums': ['061b216c62bc72eab8d646ad4075f2f78823f9913344a781fa53ea7cf4a48f94'],
+    }),
+    ('gsl', '2.1-7.1', {
+        'checksums': ['ee98d1382d37ffa77538a90ccdbf44affbf1710a9e66b8ada73fa72e67921985'],
+    }),
+    ('energy', '1.7-10', {
+        'checksums': ['543de4875c46cc90e711e71c45b082d962fbb5158a094f9f10d37d3f57e1bea7'],
+    }),
+    ('compositions', '2.0-4', {
+        'checksums': ['7b9c7a3bf654fb02d9eb1b4a7566469b2f5232f3b2c1b324c02239fd31060faf'],
+    }),
+    ('clustree', '0.4.4', {
+        'checksums': ['7a6100f88c9a6e8d10b253ee227ecf1dc4e84e418eb8da64cd801d2a158b956f'],
+    }),
+    ('tweedie', '2.3.3', {
+        'checksums': ['a032cad512dac37a8619e6f66cb513eb82a88a5a2ffbe91e92c2d44d1756d0d9'],
+    }),
+    ('RcppGSL', '0.3.11', {
+        'checksums': ['f094ea26c99b04d9e203986a1f2003f02472ceca0e2ef1c3beefd3ae80aeada8'],
+    }),
+    ('mvabund', version, {
+        'checksums': ['ed6946c95609443584081100cd38624d2309f7f5d210fd4b8ec12ad25bd27a06'],
+    }),
+    ('fishMod', '0.29', {
+        'checksums': ['5989e49ca6d6b2c5d514655e61f75b019528a8c975f0d6056143f17dc4277a5d'],
+    }),
+    ('gllvm', '1.3.1', {
+        'checksums': ['cd3f72b84f0c722e9c0b21c2b2de7683ec742345d7f8e62f67c8c93342c1a5c6'],
+    }),
+    ('grpreg', '3.4.0', {
+        'checksums': ['fd57d20baf63d2cc5821998bca5c3fdcbe46c933c9553caa492911b12654d6ad'],
+    }),
+    ('trust', '0.1-8', {
+        'checksums': ['952e348b62aec35988b103fd152329662cb6a451538f184549252fbf49d7dcac'],
+    }),
+    ('lpSolveAPI', '5.5.2.0-17.7', {
+        'checksums': ['9ebc8e45ad73eb51e0b25049598a5bc758370cf89508e2328cf4bd93d68d55bb'],
+    }),
+    ('ergm', '4.2.2', {
+        'checksums': ['ced92b0a32c78c85546d665c32fb3993fe77a3809aa88f43c3eee39e2577f2f0'],
+    }),
+    ('networkDynamic', '0.11.2', {
+        'checksums': ['beefaf50eb8609528358b75f5814a8f1cdc4d2db8059b99be69919da2bc02beb'],
+    }),
+    ('tergm', '4.1.0', {
+        'checksums': ['abff35b48b53a182d9424c78c5240bde1259b695c2328861000193bf88044a50'],
+    }),
+    ('ergm.count', '4.1.1', {
+        'checksums': ['446893614ad8b41aa39c37c2bf45a167f575536bb6778b8ad1fbcddb7b934932'],
+    }),
+    ('tsna', '0.3.5', {
+        'checksums': ['4ee2f773d573f0f4bd93131156fdccf01d7f1a3f725eff3e885021098c6bff65'],
+    }),
+    ('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.6-3', {
+        'checksums': ['cb14ba20690b31fd813b05565484c866425f072a5ad99a5cbf1da63588958db3'],
+    }),
+    ('shinythemes', '1.2.0', {
+        'checksums': ['37d68569ce838c7da9f0ea7e2b162ecf38fba2ae448a4888b6dd29c4bb5b2963'],
+    }),
+    ('csSAM', '1.2.4', {
+        'checksums': ['3d6442ad8c41fa84633cbbc275cd67e88490a160927a5c55d29da55a36e148d7'],
+    }),
+    ('bridgedist', '0.1.1', {
+        'checksums': ['14f67ce96dd8f1cb457614271b0b4376dd6fd3073a2e727a17c0964be67272cb'],
+    }),
+    ('asnipe', '1.1.16', {
+        'checksums': ['be50f9fdef0f4bf9676b9c3c2906d0431afc678af55cf48b1119f9fc0adac44f'],
+    }),
+    ('liquidSVM', '1.2.4', {
+        'patches': ['liquidSVM-1.2.4-fix_ppc_and_aarch64_build.patch'],
+        'preinstallopts': 'LIQUIDSVM_TARGET="empty"',
+        'checksums': [
+            {'liquidSVM_1.2.4.tar.gz': '15a9c7f2930e2ed3f4c5bcd9b042884ea580d2b2e52e1c68041600c196046aba'},
+            {'liquidSVM-1.2.4-fix_ppc_and_aarch64_build.patch':
+             '46b09e441c3b59af535f20d8db0dee7f1d6a7ddd511175d252115b53cb8b86f8'},
+        ],
+    }),
+    ('oddsratio', '2.0.1', {
+        'checksums': ['2097e7a8bf623379d55652de5dce4946d05163e85d30df50dc19055962bf60b5'],
+    }),
+    ('mltools', '0.3.5', {
+        'checksums': ['7093ffceccdf5d4c3f045d8c8143deaa8ab79935cc6d5463973ffc7d3812bb10'],
+    }),
+    ('h2o', '3.36.1.2', {
+        'checksums': ['d470dc71e637d589bf228e59ddb021ade240d74536323d8ca77ac1fb334d3535'],
+    }),
+    ('mlegp', '3.1.9', {
+        'checksums': ['63296d17a162fdce0958b10f45cb7d5dab4b3ee29340528d33cedcae08a040b3'],
+    }),
+    ('itertools', '0.1-3', {
+        'checksums': ['b69b0781318e175532ad2d4f2840553bade9637e04de215b581704b5635c45d3'],
+    }),
+    ('missForest', '1.5', {
+        'checksums': ['417055a03b02ad8359cf1bdc8f89d49531a3a8ee2c98edf90c8a01432f44838d'],
+    }),
+    ('bartMachineJARs', '1.1', {
+        'checksums': ['f2c31cb94d7485174a2519771127a102e35b9fe7f665e27beda3e76a56feeef2'],
+    }),
+    ('bartMachine', '1.2.6', {
+        'checksums': ['5e1ac0033da5b41a96d95782886a167e51ff8e43822800e8d40874ff9c13847f'],
+    }),
+    ('lqa', '1.0-3', {
+        'checksums': ['3889675dc4c8cbafeefe118f4f20c3bd3789d4875bb725933571f9991a133990'],
+    }),
+    ('PresenceAbsence', '1.1.10', {
+        'checksums': ['59266ffdf702ab1ecca7cbcf0538afe38d1a15abea66056734b62c0c15609c7c'],
+    }),
+    ('GUTS', '1.2.3', {
+        'checksums': ['40061ec1677def40b410b5ef90d01e0bcb0095abed1545513a33a01d4444adc2'],
+    }),
+    ('GenSA', '1.1.7', {
+        'checksums': ['9d99d3d0a4b7770c3c3a6de44206811272d78ab94481713a8c369f7d6ae7b80f'],
+    }),
+    ('parsedate', '1.3.0', {
+        'checksums': ['1e9399d6b16079e6cdc43fa33742d6b7e6e2b6bb2ba470bfe9d30d55b7be4cb0'],
+    }),
+    ('circular', '0.4-95', {
+        'checksums': ['483d3e31e9c7afe59e6bcb98ad17c4f6333d19b6c70f948b168c9ee16e90bce2'],
+    }),
+    ('cobs', '1.3-5', {
+        'checksums': ['7fae7da8f940975d544120c836e2d3b874f9b0cbab9631851ce986709f51c611'],
+    }),
+    ('resample', '0.6', {
+        'checksums': ['1b958009b18c92a47971847c782af76952ea4e85d5f1e3e1e70fa35c67b95265'],
+    }),
+    ('MIIVsem', '0.5.8', {
+        'checksums': ['a908f51e1598290d25864c358d57201bd50c1c40775d4d0405cbc8077bee61e1'],
+    }),
+    ('medflex', '0.6-7', {
+        'checksums': ['d28107a4bbbb0ace1d571f0aa6884ee4c50d7731c04bceba207fd55a39b83b9c'],
+    }),
+    ('Rserve', '1.8-10', {
+        'checksums': ['af63a28a4958dbe82597586494d0277272842bb3869db70c547d0896f1345d2c'],
+    }),
+    ('spls', '2.2-3', {
+        'checksums': ['bbd693da80487eef2939c37aba199f6d811ec289828c763d9416a05fa202ab2e'],
+    }),
+    ('Boruta', '7.0.0', {
+        'checksums': ['6ff520d27d68637058c33a34c547a656bb44d5e351b7cc7afed6cd4216275c78'],
+    }),
+    ('dr', '3.0.10', {
+        'checksums': ['ce523c1bdb62a9dda30afc12b1dd96975cc34695c61913012236f3b80e24bf36'],
+    }),
+    ('CovSel', '1.2.1', {
+        'checksums': ['b375d00cc567e125ff106b4357654f43bba3abcadeed2238b6dea4b7a68fda09'],
+    }),
+    ('tmle', '1.5.0.2', {
+        'checksums': ['4772c352e8d3d9b5a0b7480c0e0962de4f5060fb7bf3fcb8ee4fa1cb10f93fd4'],
+    }),
+    ('ctmle', '0.1.2', {
+        'checksums': ['e3fa0722cd87aa0e0b209c2dddf3fc44c6d09993f1e66a6c43285fe950948161'],
+    }),
+    ('BayesPen', '1.0', {
+        'checksums': ['772df9ae12cd8a3da1d5b7d1f1629602c7693f0eb03945784df2809e2bb061b0'],
+    }),
+    ('inline', '0.3.19', {
+        'checksums': ['0ee9309bb7dab0b97761ddd18381aa12bd7d54678ccd7bec00784e831f4c99d5'],
+    }),
+    ('BMA', '3.18.17', {
+        'checksums': ['6d8c514fa179f8a48c2105b551a8a08e28ea4375d06150a4b8ab4ccda577daf5'],
+    }),
+    ('BCEE', '1.3.0', {
+        'checksums': ['82afc9b8c6d617f5f728341960ae32922194f637c550916b3bea12c231414fa7'],
+    }),
+    ('bacr', '1.0.1', {
+        'checksums': ['c847272e2c03fd08ed79b3b739f57fe881af77404b6fd087caa0c398c90ef993'],
+    }),
+    ('clue', '0.3-61', {
+        'checksums': ['71311b16ce380fd9a8834be95b55b3d1b47e4ee2b8acb35b8d481138c314dc31'],
+    }),
+    ('bdsmatrix', '1.3-6', {
+        'checksums': ['f9c871d54378408902931792b3dbf8bda863d6aa67af6a0472a6ec1c420760bc'],
+    }),
+    ('fftwtools', '0.9-11', {
+        'checksums': ['f1f0c9a9086c7b2f72c5fb0334717cc917213a004eaef8448eab4940c9852c7f'],
+    }),
+    ('imagerExtra', '1.3.2', {
+        'checksums': ['0ebfa1eabb89459d774630ab73c7a97a93b9481ea5afc55482975475acebd5b8'],
+    }),
+    ('MALDIquant', '1.21', {
+        'checksums': ['0771f82034aa6a77af67f3572c900987b7e6b578d04d707c6e06689d021a2ff8'],
+    }),
+    ('threejs', '0.3.3', {
+        'checksums': ['76c759c8b20fb34f4f7a01cbd1b961296e1f19f4df6dded69aae7f1bca80219c'],
+    }),
+    ('LaplacesDemon', '16.1.6', {
+        'checksums': ['57b53882fd7a195b38bbdbbf0b17745405eb3159b1b42f7f11ce80c78ab94eb7'],
+    }),
+    ('rda', '1.0.2-2.1', {
+        'checksums': ['eea3a51a2e132a023146bfbc0c384f5373eb3ea2b61743d7658be86a5b04949e'],
+    }),
+    ('sampling', '2.9', {
+        'checksums': ['7f5ba5978f6cdbbbdb6f51958197b28b6fc63e7eeee59e6845ea09fb37d1b187'],
+    }),
+    ('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', '4.3', {
+        'checksums': ['f755808fcb618582acb862729b20e267d9c2214f22e6e7a0c8d29073d8faa7b8'],
+    }),
+    ('bbmle', '1.0.25', {
+        'checksums': ['86a8c69902fbf6caf337f9bc532afe89dc2a59dd24287a2423d781797010b255'],
+    }),
+    ('emdbook', '1.3.12', {
+        'checksums': ['0646caf9e15aaa61ff917a4b5fdf82c06ac17ef221a61dec3fbb554e7bff4353'],
+    }),
+    ('SOAR', '0.99-11', {
+        'checksums': ['d5a0fba3664087308ce5295a1d57d10bad149eb9771b4fe67478deae4b7f68d8'],
+    }),
+    ('rasterVis', '0.51.2', {
+        'checksums': ['c116f979ed891ec55f3e1e7b9a92436b5ec9430c1170439a501ecb7e2a33ef4d'],
+    }),
+    ('tictoc', '1.0.1', {
+        'checksums': ['a09a1535c417ddf6637bbbda5fca6edab6c7f7b252a64e57e99d4d0748712705'],
+    }),
+    ('ISOcodes', '2022.01.10', {
+        'checksums': ['b25ddec624b46f5630c29267bdf4a749cfb9d001ef029fb9ca84dafe56b1c73f'],
+    }),
+    ('stopwords', '2.3', {
+        'checksums': ['c5ec1c6ab1bad1786d87d7823d4b63abc94d2fd84ed7d8e985906e96fb6321b2'],
+    }),
+    ('janeaustenr', '0.1.5', {
+        'checksums': ['992f6673653daf7010fe176993a01cd4127d9a88be428da8da7a28241826d6f3'],
+    }),
+    ('SnowballC', '0.7.0', {
+        'checksums': ['b10fee9d322f567a22c580b49b5d4ba1c86eae40a71794ca92552c726b3895f3'],
+    }),
+    ('tokenizers', '0.2.1', {
+        'checksums': ['28617cdc5ddef5276abfe14a2642999833322b6c34697de1d4e9d6dc7670dd00'],
+    }),
+    ('hunspell', '3.0.1', {
+        'checksums': ['1fedbb913bc13c790d2fabfe4edda0a987db3a078bea8c0ca9b777d20af08662'],
+    }),
+    ('topicmodels', '0.2-12', {
+        'checksums': ['afd83a4381bf39e470446ebefd41ed03f314be400c1b2f702a4b1060eb8fd1b4'],
+    }),
+    ('tidytext', '0.3.3', {
+        'checksums': ['753b2bcea6e343ac439869b92e7c11b0aaf98ce5c0373965da6c7d087d57924e'],
+    }),
+    ('splitstackshape', '1.4.8', {
+        'checksums': ['656032c3f1e3dd5b8a3ee19ffcae617e07104c0e342fc3da4d863637a770fe56'],
+    }),
+    ('grImport2', '0.2-0', {
+        'checksums': ['a102a2d877e42cd4e4e346e5510a77b2f3e57b43ae3c6d5c272fdceb506b00a7'],
+    }),
+    ('preseqR', '4.0.0', {
+        'checksums': ['0143db473fb9a811f9cf582a348226a5763e62d9857ce3ef4ec41412abb559bc'],
+    }),
+    ('idr', '1.3', {
+        'checksums': ['6b3910dc48495439cd01828f8999823864a6712f73560ee3e6c903065c67d1e4'],
+    }),
+    ('entropy', '1.3.1', {
+        'checksums': ['6f5a89f5ce0e90cbed1695b81259326c976e7a8f538157e223ee5f63b54412b8'],
+    }),
+    ('kedd', '1.0.3', {
+        'checksums': ['38760abd8c8e8f69ad85ca7992803060acc44ce68358de1763bd2415fdf83c9f'],
+    }),
+    ('HiddenMarkov', '1.8-13', {
+        'checksums': ['7186d23e561818f3e1f01376a4fb2af9ccee775ce5afc1e3175f3b07a81db515'],
+    }),
+    ('lmerTest', '3.1-3', {
+        'checksums': ['35aa75e9f5f2871398ff56a482b013e6828135ef04916ced7d1d7e35257ea8fd'],
+    }),
+    ('loo', '2.5.1', {
+        'checksums': ['866a2f54a4e8726cc3062e27daa8a073e6ac4aeb6719af7845284f7a668745f1'],
+    }),
+    ('RcppParallel', '5.1.5', {
+        'checksums': ['6396322b3b6d6f7019aac808ceb74707bc5c4ed01677fab408372c2a5508c2ea'],
+    }),
+    ('StanHeaders', '2.21.0-7', {
+        'checksums': ['27546e064f0e907e031d9185ad55245d118d82fbe3074ecb1d76fae8b9f2336b'],
+    }),
+    ('V8', '4.2.0', {
+        'installopts': '--configure-vars="INCLUDE_DIR=$CPATH LIB_DIR=$LIBRARY_PATH"',
+        'preinstallopts': "export CPATH=$EBROOTNODEJS/include/node:$CPATH && ",
+        'checksums': ['6c62fdc974cc30fa975cad4ccb1e3796112fc2490a807f6e3d7878c3a5544743'],
+    }),
+    ('rstan', '2.21.5', {
+        'checksums': ['86e4fe562d8ddcd0b02336f35a420fa8786dd21de7ca2bebb4ed6e9c252bb9ea'],
+    }),
+    ('Rborist', '0.2-3', {
+        'checksums': ['f3b3f953ca99e0d17425ac6ba9a7b1e9d6098343abace575cdb492bca2a9c461'],
+    }),
+    ('VSURF', '1.1.0', {
+        'checksums': ['eee99e0c441795c2ccb21cc6e0a37b24f580241e494c83e811b726b43469eeab'],
+    }),
+    ('mRMRe', '2.1.2', {
+        'checksums': ['a59a3cb3cca89f51d9ee6702cd479fd7db8bc2e25b72f45cb6712da983777ca0'],
+    }),
+    ('dHSIC', '2.1', {
+        'checksums': ['94c86473790cf69f11c68ed8ba9d6ae98218c7c69b7a9a093f235d175cf83db0'],
+    }),
+    ('ggsci', '2.9', {
+        'checksums': ['4af14e6f3657134c115d5ac5e65a2ed74596f9a8437c03255447cd959fe9e33c'],
+    }),
+    ('ggsignif', '0.6.3', {
+        'checksums': ['ca8545b25590e531512a90a18449a2cbab945f7434a1d60188c41f7d1839a7a9'],
+    }),
+    ('corrplot', '0.92', {
+        'checksums': ['e8c09f963f9c4837036c439ebfe00fa3a6e462ccbb786d2cf90850ddcd9428bd'],
+    }),
+    ('rstatix', '0.7.0', {
+        'checksums': ['a5ae17dc32cc26fc5dcab9ff0a9747ce3786c9fe091699247ad8b9f823f2600c'],
+    }),
+    ('ggfan', '0.1.3', {
+        'checksums': ['5c888b203ecf5e3dc7a317a790ca059c733002fbca4b4bc1a4f62b7ded5f70dc'],
+    }),
+    ('ggpubr', '0.4.0', {
+        'checksums': ['abb21ec0b1ae3fa1c58eedca2d59b9b009621b30e3660f1247b3880c5fa50675'],
+    }),
+    ('yaImpute', '1.0-32', {
+        'checksums': ['08eee5d851b80aad9c7c80f9531aadd50d60e4b16b3a80657a50212269cd73ff'],
+    }),
+    ('intrinsicDimension', '1.2.0', {
+        'checksums': ['6cc9180a83aa0d123f1e420136bb959c0d5877867fa170b79536f5ee22106a32'],
+    }),
+    ('patchwork', '1.1.1', {
+        'checksums': ['cf0d7d9f92945729b499d6e343441c55007d5b371206d5389b9e5154dc7cf481'],
+    }),
+    ('leiden', '0.4.2', {
+        'checksums': ['cace86748c4aa1720508210658ee2f63f7875be5bac215084001fdc59d22e2bd'],
+    }),
+    ('sctransform', '0.3.3', {
+        'checksums': ['83af125c40f211e1ddae5098f88766aea1453c02ae98486081f3efadb3620b2b'],
+    }),
+    ('packrat', '0.8.0', {
+        'checksums': ['3025b9052974bec00fb09299226b80004d48e611e15a65e5a0bc49d3538844ef'],
+    }),
+    ('colourpicker', '1.1.1', {
+        'checksums': ['a0d09982b048b143e2c3438ccec039dd20d6f892fa0dedc9fdcb0d40de883ce0'],
+    }),
+    ('ggExtra', '0.10.0', {
+        'checksums': ['dc6855bbb7e81ffa58d6b65b594d22718fa36b7f50b2284386f70fa8ccc6a3e5'],
+    }),
+    ('findpython', '1.0.7', {
+        'checksums': ['59f904b9c2ec84b589380de59d13afbf14d1ec3b670e3a07e820298aaf04c149'],
+    }),
+    ('argparse', '2.1.5', {
+        'checksums': ['83e112beb47733849980b286d93ac930f0cbe6ac78fcb94fc9f6b0eea882658d'],
+    }),
+    ('intergraph', '2.0-2', {
+        'checksums': ['6cbe77f1e87fa1c110db2d46010f2f3ae72bfdb708ce2ca84c1cdc2cd6eb47a1'],
+    }),
+    ('ggnetwork', '0.5.10', {
+        'checksums': ['1b655dbab8eed8d0aa3ab2148aac8e0e5bfa190468f5e3c06b001ce88b7f0d3f'],
+    }),
+    ('qqman', '0.1.8', {
+        'checksums': ['58da8317df8d726d1fde4805919da5d64f880894a423ee20937cafb479b9d8a8'],
+    }),
+    ('rstantools', '2.2.0', {
+        'checksums': ['cb810baeb90c67668361b666c6862df9917aff6aaec63d2c3a485f28407c4eb7'],
+    }),
+    ('distributional', '0.3.0', {
+        'checksums': ['fab36c7346617d8f2ca4b3cd0e3c9da93cb2f95fb7f102a3ae88670e694751d6'],
+    }),
+    ('posterior', '1.2.2', {
+        'checksums': ['d615ed75b43b2927002b79d2982c624a6144c851aac7b81fa14e4ec9cc3d353b'],
+    }),
+    ('bayesplot', '1.9.0', {
+        'checksums': ['0a81a4b99cf781334e57cfc3c469fad8b932a68204016a3bbca33cab4e2a1e43'],
+    }),
+    ('dygraphs', '1.1.1.6', {
+        'checksums': ['c3d331f30012e721a048e04639f60ea738cd7e54e4f930ac9849b95f0f005208'],
+    }),
+    ('rsconnect', '0.8.26', {
+        'checksums': ['faafabbed803743799b345051f221aef2b4497b421fc98092ca41c05ef6b5fed'],
+    }),
+    ('shinystan', '2.6.0', {
+        'checksums': ['a084856a2d66d8744f2c72e3e19ca35e600a508ed7ef1f7ebed8c7fc0738d529'],
+    }),
+    ('optimx', '2022-4.30', {
+        'checksums': ['ebe9887a22296cf4b2db07981aaa1f898bf7c17fb61a4b398c228d4077d0b410'],
+    }),
+    ('gamm4', '0.2-6', {
+        'checksums': ['57c5b66582b2adc32f6a3bb6a259f5b95198e283a96d966a6007e8e48b380c89'],
+    }),
+    ('projpred', '2.1.2', {
+        'checksums': ['a88a651e533c118aad0e8c2c905cfcf688d9c419ed195896036b8f6667b5cfb0'],
+    }),
+    ('brms', '2.17.0', {
+        'checksums': ['24e5a3a40b81bea558e8f660d0de7fd1a4c2080c7553baac98f34dd2682ece71'],
+    }),
+    ('drgee', '1.1.10', {
+        'checksums': ['e684f07f7dfec922380d4202922c11094f859721f77b31ff38b0d35d0f42c743'],
+    }),
+    ('stdReg', '3.4.1', {
+        'checksums': ['285335dbe29b6898641e1151ab2f06acf76c6f4d6fbeadd66d151c25d7e38a74'],
+    }),
+    ('mcmcse', '1.5-0', {
+        'checksums': ['4a820dc22c48efd32b7f9d1e1b897b4b3f165cd64b2ff85ba7029621cf9e7463'],
+    }),
+    ('copCAR', '2.0-4', {
+        'checksums': ['8b4ed53c58a665f70e48bdca689a992a81d5ecb5a6051ca7361d3870e13c77f3'],
+    }),
+    ('batchmeans', '1.0-4', {
+        'checksums': ['8694573009d9070a76007281407d3314da78902e122a9d8aec1f819d3bbe562c'],
+    }),
+    ('ngspatial', '1.2-2', {
+        'checksums': ['3fa79e45d3a502a58c1454593ec83dfc73144e92b34c14f617a6126557dd0d26'],
+    }),
+    ('BIGL', '1.6.6', {
+        'checksums': ['8edb6607c5d91cea5ba32290eeb76c35317383a24d726bde6eca61f9cce96bb9'],
+    }),
+    ('drugCombo', '1.2.1', {
+        'checksums': ['9a605c655c159604033558d757711e6d83d33dfc286c1280f722d4cb7d130f80'],
+    }),
+    ('betareg', '3.1-4', {
+        'checksums': ['5106986096a68b2b516215968158589b71969ce7912879253d6e930355a18101'],
+    }),
+    ('unmarked', '1.2.5', {
+        'checksums': ['a54f49f42d30a7a69eb6c3db00d3cd2e1f8e549aec28fa5487fcdd27a37f87fe'],
+    }),
+    ('maxlike', '0.1-8', {
+        'checksums': ['90aaab9602f259cbfae61fe96e105cc4a0c2a385b42380f85c14f5d544107251'],
+    }),
+    ('coxme', '2.2-17', {
+        'checksums': ['dd0565f97adb7ff978d1dbd6cb7d6e44edee5e2a31cf6d5d4806a0151d1b1318'],
+    }),
+    ('AICcmodavg', '2.3-1', {
+        'checksums': ['d0517da15a38e9b1df20fa73f5342b586624e65792d266e7dff278ad7fc458b0'],
+    }),
+    ('pacman', '0.5.1', {
+        'checksums': ['9ec9a72a15eda5b8f727adc877a07c4b36f8372fe7ed80a1bc6c2068dab3ef7c'],
+    }),
+    ('spaa', '0.2.2', {
+        'checksums': ['a5a54454d4a7af473ce797875f849bd893005cb04325bf3e0dbddb19fe8d7198'],
+    }),
+    ('maxnet', '0.1.4', {
+        'checksums': ['fd21e5ecf3c1ac00ef1bbe79fab4cdd62789e0c4c45f126f1b64bda667238216'],
+    }),
+    ('oai', '0.3.2', {
+        'checksums': ['ebfa756e08f6ac0aa61556b1a5bbe611f407bfff8aef1f8d075a24c361678bfd'],
+    }),
+    ('wellknown', '0.7.4', {
+        'checksums': ['483e6fc43edf09ed583e74ce5ca7e2d7838ef8a32291e06d774c37546eed1a34'],
+    }),
+    ('rgbif', '3.7.2', {
+        'checksums': ['460f9e80bb3d90618bb80a8b57ac6fed99a22e8919279df47b6d0710b6a89d5f'],
+    }),
+    ('rgdal', '1.5-32', {
+        'checksums': ['4583a4e187492eb936b59bc6bfeefea687b115bc3ae25172e0ed348b38f473ed'],
+    }),
+    ('rgeos', '0.5-9', {
+        'checksums': ['ab90cbfe6a3680a9d2eed5e655064a075adc66788e304468969ab7cc2df0e3d4'],
+    }),
+    ('mapproj', '1.2.8', {
+        'checksums': ['865f108f1ee54cda38571b86cd46063a903824d9b4eabfdf75218023d08a7781'],
+    }),
+    ('rbison', '1.0.0', {
+        'checksums': ['9957e5f85ce68f5dd0ddc3c4b2b3c9d2f52d6f37587e1022ab8a44863534a83c'],
+    }),
+    ('rebird', '1.3.0', {
+        'checksums': ['b238d3f246aa0249145894e1f3a90f46902f6615fc2f23b24c99bb5feecc55d3'],
+    }),
+    ('rvertnet', '0.8.2', {
+        'checksums': ['2de9a3ec33a213c7592b49cca1d510a25aef0625369376d9b1b4e5d0da519226'],
+    }),
+    ('ridigbio', '0.3.5', {
+        'checksums': ['e5cfb2e4dd8ddd1452a5afcf24fcc260889179d0f52eff4f41835adf99b64614'],
+    }),
+    ('spocc', '1.2.0', {
+        'checksums': ['4bac45db5e69bfa3bf6cebd1b0c9241214c95561f275cee6d31e00911aa79d84'],
+    }),
+    ('spThin', '0.2.0', {
+        'checksums': ['2e997afb79a2a990eded34c71afaac83986669cfa9ac51b15ae3f2b558902048'],
+    }),
+    ('rangeModelMetadata', '0.1.4', {
+        'checksums': ['529d529ca90437db3d1e45118443e27a920422806383c7edaa2102beb43f5f80'],
+    }),
+    ('ENMeval', '2.0.3', {
+        'checksums': ['4b39173a8d9dc4f36d09509e0177abcf91b7b1b51dc219eebcb007a0fb8c3c41'],
+    }),
+    ('plotmo', '3.6.2', {
+        'checksums': ['cde33a8ec558b12d8e11d7d0531e73f6678a25ee589b79897d2fc425a3fd353c'],
+    }),
+    ('earth', '5.3.1', {
+        'checksums': ['0bbe06ba974ceb8ec5de1d59cb53f9487d1828d7130fe2503c48b6cb449c4b03'],
+    }),
+    ('mda', '0.5-3', {
+        'checksums': ['bda6409c17f385fae97da458cc742334e7b47aab8217a975b7551e2e18d38463'],
+    }),
+    ('biomod2', '3.5.1', {
+        'checksums': ['30ed33ff980558a59782ec9e35f9c2c710a540718010654363f63878cdc0ac18'],
+    }),
+    ('poLCA', '1.6.0.1', {
+        'checksums': ['ed8c60a42bff0402c9ba2f9ce1422dd171e711c1a64498c4d96010ddb29f6b16'],
+    }),
+    ('PermAlgo', '1.2', {
+        'checksums': ['aa2c774d6c6dcfeec882c1936e8723ef49bd36030fb10c17ca60bb9d4a519443'],
+    }),
+    ('coxed', '0.3.3', {
+        'checksums': ['d0d6cb8fea9516b3c63b34d0d81f3804c18a07f97a83e51555575c8ed4c75626'],
+    }),
+    ('testit', '0.13', {
+        'checksums': ['90d47168ab6bdbd1274b600b457626ac07697ce09792c92b2043be5f5b678d80'],
+    }),
+    ('NISTunits', '1.0.1', {
+        'checksums': ['eaccd68db5c73d6a089ce5b323cdd51bc6a6a58ce467987158ba8c9be6a0a94e'],
+    }),
+    ('celestial', '1.4.6', {
+        'checksums': ['9f647f41465ac65b254717698f1978871c378ad8e6ccaa693abf579437069abe'],
+    }),
+    ('fasterize', '1.0.3', {
+        'checksums': ['62b459625e9bdb00251ec5f6cb873e0c59713f3e86dc1e2c8332adc0cea17f81'],
+    }),
+    ('RPMM', '1.25', {
+        'checksums': ['f04a524b13918062616beda50c4e759ce2719ce14150a0e677d07132086c88c8'],
+    }),
+    ('RefFreeEWAS', '2.2', {
+        'checksums': ['de2812f166caabf6ea01c0533402e5cd9d8a525a2a7583e4757decf22319caab'],
+    }),
+    ('wordcloud', '2.6', {
+        'checksums': ['53716954430acd4f164bfd8eacd7068a908ee3358293ded6cd992d53b7f72649'],
+    }),
+    ('JADE', '2.0-3', {
+        'checksums': ['56d68a993fa16fc6dec758c843960eee840814c4ca2271e97681a9d2b9e242ba'],
+    }),
+    ('awsMethods', '1.1-1', {
+        'checksums': ['50934dc20cf4e015f1304a89de6703fed27e7bd54c6b9fc9fb253cdf2ecb7541'],
+    }),
+    ('aws', '2.5-1', {
+        'checksums': ['e8abadc5614f132edc3fb9cb1c82ce4dacc1315b727fbd49db7399aee24115ba'],
+    }),
+    ('ruv', '0.9.7.1', {
+        'checksums': ['a0c54e56ba3d8f6ae178ae4d0e417a79295abf5dcb68bbae26c4b874734d98d8'],
+    }),
+    ('mhsmm', '0.4.16', {
+        'checksums': ['fab573abdc0dd44e8c8bc7242a1428df20b3ec64c4c194e5f1f907393f902d01'],
+    }),
+    ('dbarts', '0.9-22', {
+        'checksums': ['68fa2bfe274811c91ea7b67da46c4ffe527eb662d75edbec26ffe934ddc7150a'],
+    }),
+    ('proftools', '0.99-3', {
+        'checksums': ['e034eb1531af54013143da3e15229e1d4c2260f8eb79c93846014db3bdefb724'],
+    }),
+    ('NCmisc', '1.1.6', {
+        'checksums': ['2aa85997d5ec2222e610604022684c004a4925241761d9a0104919f1cf3a8c79'],
+    }),
+    ('reader', '1.0.6', {
+        'checksums': ['905c7c5a1b035ac8213fc533fa26e511abfeea40bd22e3edfde42a49074e88f4'],
+    }),
+    ('gnumeric', '0.7-8', {
+        'checksums': ['28b10c91d693b938ebca610933889095ca160b22e6ca750c46103dfd2b009447'],
+    }),
+    ('tcltk2', '1.2-11', {
+        'checksums': ['ad183ae3b7190501504a0589e0b3be480f04267303e3384fef00987446a37dc5'],
+    }),
+    ('readODS', '1.7.0', {
+        'checksums': ['f6a8ec724df68983c9b176a1b3b3b01239cc4e99aac4bfb42ce1c2b3d40922c2'],
+    }),
+    ('nortest', '1.0-4', {
+        'checksums': ['a3850a048181d5d059c1e74903437569873b430c915b709808237d71fee5209f'],
+    }),
+    ('EnvStats', '2.7.0', {
+        'checksums': ['09a6f0d5b60856c7298371e4a8a085a1db7abf0e71ccb9a2dc9ca24248fb5d81'],
+    }),
+    ('outliers', '0.15', {
+        'checksums': ['cc31d7f2faefd2c3a27f8ce78c7e67d3b321dcd6690292fad2468125e5e635fb'],
+    }),
+    ('elementR', '1.3.7', {
+        'checksums': ['4275f88f372a2efe96ccd0afc20f4f12be92f28c7db35c68b80bb0ffb2c2ab07'],
+    }),
+    ('gWidgets2', '1.0-9', {
+        'checksums': ['d4d9ef7b2788efeb8209aa8dd610af4cd86286392fbdf9ea70bcfeafda95d4c5'],
+    }),
+    ('gWidgets2tcltk', '1.0-8', {
+        'modulename': False,
+        'preinstallopts': "xvfb-run ",
+        'checksums': ['10399cc636eeeb5484c3379970c37c56df10d979bf866a35b66d0c75b7222c0a'],
+    }),
+    ('mgsub', '1.7.3', {
+        'checksums': ['c9ae2560fe2690bedc5248af3fc89e7ef2bc6c147d46ced28f9824584c3791d5'],
+    }),
+    ('ie2misc', '0.8.8', {
+        'checksums': ['c81441af7588c62ab019ef2fbf31f61e0c2e3440a5e131938b1c5946cd2bce1a'],
+    }),
+    ('assertive.base', '0.0-9', {
+        'checksums': ['4bf0910b0eaa507e0e11c3c43c316b524500c548d307eb045d6f89047e6ba01e'],
+    }),
+    ('assertive.properties', '0.0-5', {
+        'checksums': ['b68954f53082561f0242682611bf3373e0bf30d8ac2256d82474edc5f992f4dd'],
+    }),
+    ('assertive.types', '0.0-3', {
+        'checksums': ['ab6db2eb926e7bc885f2043fab679330aa336d07755375282d89bf9f9d0cb87f'],
+    }),
+    ('assertive.numbers', '0.0-2', {
+        'checksums': ['bae18c0b9e5b960a20636e127eb738ecd8a266e5fc29d8bc5ca712498cd68349'],
+    }),
+    ('assertive.strings', '0.0-3', {
+        'checksums': ['d541d608a01640347d661cc9a67af8202904142031a20caa270f1c83d0ccd258'],
+    }),
+    ('assertive.datetimes', '0.0-3', {
+        'checksums': ['014e2162f5a8d95138ed8330f7477e71c908a29341697c09a1b7198b7e012d94'],
+    }),
+    ('assertive.files', '0.0-2', {
+        'checksums': ['be6adda6f18a0427449249e44c2deff4444a123244b16fe82c92f15d24faee0a'],
+    }),
+    ('assertive.sets', '0.0-3', {
+        'checksums': ['876975a16ed911ea1ad12da284111c6eada6abfc0118585033abc0edb5801bb3'],
+    }),
+    ('assertive.matrices', '0.0-2', {
+        'checksums': ['3462a7a7e11d7cc24180330d48cc3067cf92eab1699b3e4813deec66d99f5e9b'],
+    }),
+    ('assertive.models', '0.0-2', {
+        'checksums': ['b9a6d8786f352d53371dbe8c5f2f2a62a7866e30313f268e69626d5c3691c42e'],
+    }),
+    ('assertive.data', '0.0-3', {
+        'checksums': ['5a00fb48ad870d9b3c872ce3d6aa20a7948687a980f49fe945b455339e789b01'],
+    }),
+    ('assertive.data.uk', '0.0-2', {
+        'checksums': ['ab48dab6977e8f43d6fffb33228d158865f68dde7026d123c693d77339dcf2bb'],
+    }),
+    ('assertive.data.us', '0.0-2', {
+        'checksums': ['180e64dfe6339d25dd27d7fe9e77619ef697ef6e5bb6a3cf4fb732a681bdfaad'],
+    }),
+    ('assertive.reflection', '0.0-5', {
+        'checksums': ['c2ca9b27cdddb9b9876351afd2ebfaf0fbe72c636cd12aa2af5d64e33fbf34bd'],
+    }),
+    ('assertive.code', '0.0-3', {
+        'checksums': ['ef80e8d1d683d776a7618e78ddccffca7f72ab4a0fcead90c670bb8f8cb90be2'],
+    }),
+    ('assertive', '0.3-6', {
+        'checksums': ['c403169e83c433b65e911f7fd640b378e2a4a4765a36063584b8458168a4ea0a'],
+    }),
+    ('rdrop2', '0.8.2.1', {
+        'checksums': ['b9add765fe8e7c966f0d36eef939a9e38f253958bd2a3c656b890cbb0366300b'],
+    }),
+    ('Exact', '3.1', {
+        'checksums': ['d67f5c71b1209bea655d1e8d7530fa72359e0bcac25312551524501d0287e3cf'],
+    }),
+    ('lmom', '2.9', {
+        'checksums': ['363e62751a73e0870fd0206206f1743a884a23aeac9b31b9afc71c0a1b51bb90'],
+    }),
+    ('gld', '2.6.4', {
+        'checksums': ['0db6daee1b6e256d64d292c1f6795c505677331dcf2f97e04e264566ded93323'],
+    }),
+    ('DescTools', '0.99.45', {
+        'checksums': ['8dfe7057fdcec475bc444761b00db59f6fb7313fd39c7bd6aebeca7f67aceb05'],
+    }),
+    ('orthopolynom', '1.0-6', {
+        'checksums': ['17576157374c927da2959459caf2ed161b49a4a7768ea3d3fbe47656cafacc5b'],
+    }),
+    ('gaussquad', '1.0-3', {
+        'checksums': ['a3337ce52bc53435cb4565a38bf48b72b384be397d2e86bb66f62973004dc810'],
+    }),
+    ('nlsem', '0.8', {
+        'checksums': ['495a5d07aa5f59efdcd43acf429ae842453abd6c0720a80e2102d663fa997c60'],
+    }),
+    ('tableone', '0.13.2', {
+        'checksums': ['b1cf15579abd4240e24435d2d9aad255c839d2a0293e28cb2eef0c808c4727af'],
+    }),
+    ('jstable', '1.0.7', {
+        'checksums': ['a8f66172973dc75d1d751d7015e0f028c441263f6649909bd25fa944be0042c3'],
+    }),
+    ('RCAL', '2.0', {
+        'checksums': ['10f5f938a8322d8737159e1e49ce9d12419a5130699b8a19c6ca53d6508da8cc'],
+    }),
+    ('stargazer', '5.2.3', {
+        'checksums': ['208e9b48a11cf56ce142731c204f3d2bcb5b68719f84309a36362cd925414265'],
+    }),
+    ('sensemakr', '0.1.4', {
+        'checksums': ['6a1354f05392fa9343b90f69a54022c995651fb3c3d05cb08fa088ef52258caf'],
+    }),
+    ('CompQuadForm', '1.4.3', {
+        'checksums': ['042fc56c800dd8f5f47a017e2efa832caf74f0602824abf7099898d9708660c4'],
+    }),
+    ('nonnest2', '0.5-5', {
+        'checksums': ['027f510e322122fc75c936251a95ddd392f96047ac86e0fae6cf8f883ac7aab5'],
+    }),
+    ('blavaan', '0.4-3', {
+        'checksums': ['a9f9f7b32aab7e7f179340c9f0f9d154b5fac51352c4fd590d317c201fe81b74'],
+    }),
+    ('mathjaxr', '1.6-0', {
+        'checksums': ['ecc47607111b788d84789459af7f4f9102719f98640b7a23bd5a4eb1a6d3c179'],
+    }),
+    ('metadat', '1.2-0', {
+        'checksums': ['f0cce5e30c3d256eaf5a41e4f52ffc7108e195016a4b99409e0ab4c2ef58f5b8'],
+    }),
+    ('metafor', '3.4-0', {
+        'checksums': ['92e1bc21c4d135b6e651fbefc4b40666fc02c66a6a4f6f28effee0e73a21c26e'],
+    }),
+    ('fmri', '1.9.6', {
+        'checksums': ['7614290d880667512744d3450480a670cc38abdb270f3f776ac9a17a793f07f2'],
+    }),
+    ('linkcomm', '1.0-14', {
+        'checksums': ['36f1557c65d862fc87635eedfad77f18a5deb66da00895e50e2d5eac0f23b597'],
+    }),
+    ('rnetcarto', '0.2.5', {
+        'checksums': ['2cab23b60d9d97474c946da7369e859c19dee20288eeccdcb123fccdc50a3999'],
+    }),
+    ('DEoptim', '2.2-6', {
+        'checksums': ['8c63397d83a067212d003ef3e639fd81f5f00bf61e3c271b4e4999031a69e2e1'],
+    }),
+    ('optextras', '2019-12.4', {
+        'checksums': ['59006383860826be502ea8757e39ed94338f04d246c4fc398a088e004d8b13eb'],
+    }),
+    ('setRNG', '2022.4-1', {
+        'checksums': ['61c06e6bd6b43c295472c6990266fe87ca41e57db04d3460e756a35ef24e0824'],
+    }),
+    ('Rvmmin', '2018-4.17.1', {
+        'checksums': ['55000ac4ff57d42f172c46c7d6b0a603da3b65866d6440d6b32bac4d2b81814e'],
+    }),
+    ('Rcgmin', '2022-4.30', {
+        'checksums': ['2684b8e7fb970da2afbc00e482031cf4447416249d04c4c1740400ad112fb911'],
+    }),
+    ('optimr', '2019-12.16', {
+        'checksums': ['73b1ed560ffd74599517e8baa4c5b293aa062e9c8d50219a3a24b63e72fa7c00'],
+    }),
+    ('DMCfun', '2.0.2', {
+        'checksums': ['430cbc18f17db11a7941e6a8274a0eefbb8a6b0bdac8800970530d60d5881fde'],
+    }),
+    ('miceadds', '3.13-12', {
+        'checksums': ['74ab5503d6f3c0d016166a4c664918d60f1adb0672d8aefbc57385be3d287c3a'],
+    }),
+    ('visdat', '0.5.3', {
+        'checksums': ['527c76b6643b8475a58516763ef40238cdc61ec62d2dcf690f7c316b93b878c6'],
+    }),
+    ('UpSetR', '1.4.0', {
+        'checksums': ['351e5fee64204cf77fd378cf2a2c0456cc19d4d98a2fd5f3dac74b69a505f100'],
+    }),
+    ('norm', '1.0-10.0', {
+        'checksums': ['4384791af74c1008238f036abe0dda4b4048b9700cc4acd7b45025598fd20cc7'],
+    }),
+    ('naniar', '0.6.1', {
+        'checksums': ['d546ca15bf6c224f3103eb1441abef91d34feebb7320c2398d598f5d50177450'],
+    }),
+    ('stringdist', '0.9.8', {
+        'checksums': ['efccd6ccc5c74c578be95b7dae1099c52b0d7805452ab14ee91ca34adb8261bb'],
+    }),
+    ('image.binarization', '0.1.2', {
+        'checksums': ['0621ca94a74264bb73f689b1a00484b5a3bbef93fc203d9c001d791a18fcc13f'],
+    }),
+    ('lassosum', '0.4.5', {
+        'source_urls': ['https://github.com/tshmak/%(name)s/releases/download/v%(version)s/'],
+        'sources': ['%(name)s_%(version)s.tar.gz'],
+        'checksums': ['18c0d0b5022bcf81a9bf1b3b6647da3e080f221828b473ea2a45a9bf98474fbc'],
+    }),
+    ('lslx', '0.6.10', {
+        'checksums': ['adc2b2a621625b52165245ab2f3a0bfba4f4db64fcc6ad48a3e5b219c3bd2fa1'],
+    }),
+    ('truncnorm', '1.0-8', {
+        'checksums': ['49564e8d87063cf9610201fbc833859ed01935cc0581b9e21c42a0d21a47c87e'],
+    }),
+    ('Rsolnp', '1.16', {
+        'checksums': ['3142776062beb8e2b45cdbc4fe6e5446b6d33505253d79f2890fe4178d9cf670'],
+    }),
+    ('regsem', '1.8.0', {
+        'checksums': ['28ff1c2dbddcafc6ed6c30154f46074aa0c8974757466680529b71a5f3e463ec'],
+    }),
+    ('semPLS', '1.0-10', {
+        'checksums': ['cb587ccfdaf970f426dc7146035c7e010b1c51c17bf4fc089fd796eda58db460'],
+    }),
+    ('GxEScanR', '2.0.2', {
+        'checksums': ['6d42fd15d83dd1491405b282d26fa472f9f9902a9dc68836d6a48b459ada6a4c'],
+    }),
+    ('alabama', '2022.4-1', {
+        'checksums': ['a8c62859b39a8340ecf7bbf411fac303c059e4237d28ff7bba9ba3daaca1d36c'],
+    }),
+    ('admisc', '0.29', {
+        'checksums': ['ce46df3d75afd47dd97824bc3e740c708b25ae023d007f1a180dcb88ca14740b'],
+    }),
+    ('polycor', '0.8-1', {
+        'checksums': ['f05f53e0b5c992de0e5b4c6b2e998148cf83310358821e1bba180d81face0509'],
+    }),
+    ('multipol', '1.0-7', {
+        'checksums': ['0abe3c894c0d8e928a920e73708a397133386a0d73a1e7952c4075afe67879e6'],
+    }),
+    ('symmoments', '1.2.1', {
+        'checksums': ['9a6be1f8fe44f6ab5a1790e870fd8b18de1686a48a14a9fca2d035bfb5458672'],
+    }),
+    ('cSEM', '0.4.0', {
+        'checksums': ['7753ac7db9d2c0392e51dd31ec8638e1a7fcbb2546dd9103f5ecc03dd51836c1'],
+    }),
+    ('cubelyr', '1.0.1', {
+        'checksums': ['740a34100592b2c6b7bc89a31bddccf4c8fd95720caf68f530104f17aada77bc'],
+    }),
+    ('furrr', '0.3.0', {
+        'checksums': ['3fe91cc1614f9404c708ea3a15b6a40289fa57f40f3ece54452093408d91fd84'],
+    }),
+    ('broom.mixed', '0.2.9.4', {
+        'checksums': ['7631cd29316a32050b9e72057754e053d7f9064a75900bb7e69b29ebca6c60b2'],
+    }),
+    ('DiceKriging', '1.6.0', {
+        'checksums': ['ab5d1332809f2bb16d156ed234b102eb9fbd6de792e4291f9f6ea4652215cb49'],
+    }),
+    ('grf', '2.1.0', {
+        'checksums': ['02a4fe9c8147768f1345be2f8ca73fca079af5f07ccaa4900f9ec255ca66bb19'],
+    }),
+    ('xgboost', '1.6.0.1', {
+        'checksums': ['9ae99a20997e1b02ffd21cabada2a55e53f5754746238ee900de5eb6cd964ebd'],
+    }),
+    ('twang', '2.5', {
+        'checksums': ['fc355527c57e4f6e0f60d26d7c690c4475fcd5fb165d125fea7cc6b9fafc4ce5'],
+    }),
+    ('neuralnet', '1.44.2', {
+        'checksums': ['5f66cd255db633322c0bd158b9320cac5ceff2d56f93e4864a0540f936028826'],
+    }),
+    ('PCAmatchR', '0.3.2', {
+        'checksums': ['fe0c67cda541639a1a2147f68cae29d17cd05ff8edb6f7bea8d44be346a5f1b6'],
+    }),
+    ('origami', '1.0.5', {
+        'checksums': ['8d0d08aaecc428cbbf5db4615ad3623777c10c6d7947a1cc3ccc7f8db8cb5263'],
+    }),
+    ('hal9001', '0.4.3', {
+        'checksums': ['f2489e7a0a16db6dc65da8ce13bfb7f0854e6f303c9ec05f6158d46c66b6588c'],
+    }),
+    ('cobalt', '4.3.2', {
+        'checksums': ['b9bfd0746e41de6a61fd8f3fa51eb344190a226445e51ef032931b026d5d314c'],
+    }),
+    ('CBPS', '0.23', {
+        'checksums': ['ed8fe09b642db459a516bdeb03a49e718a7d5ad915cbf82400029508efe9b32d'],
+    }),
+    ('SBdecomp', '1.2', {
+        'checksums': ['0be4e1c9e8bed87fd1712e62346a97148a1a295ff56981e832921cc390006e5c'],
+    }),
+    ('naturalsort', '0.1.3', {
+        'checksums': ['cd38a9c5f323f61459e6096cdbf4493851d40497baf671af4f8dfe9a7c00e857'],
+    }),
+    ('lwgeom', '0.2-8', {
+        'checksums': ['f48a92de222da0590b37a30d5cbf2364555044a842795f6b488afecc650b8b34'],
+    }),
+    ('finalfit', '1.0.4', {
+        'checksums': ['446940d300c8b725e798bf2a2829a41165d25a939d2c59425768234438a2deb1'],
+    }),
+    ('broom.helpers', '1.7.0', {
+        'checksums': ['2b7087ca73af04a130e78dfbf4941590e3557bcce4ec7e0106b012df061581f5'],
+    }),
+    ('gt', '0.6.0', {
+        'checksums': ['469384e0daecd4b09d5814e4e56b17e9220d872a1906625cc6f609d22ce226fb'],
+    }),
+    ('gtsummary', '1.6.1', {
+        'checksums': ['fe04caf79826ecf4fd9da0ef5d4705775a15bf18a7d508a53492a086798ce35c'],
+    }),
+    ('ncdf4', '1.19', {
+        'checksums': ['cb8d139211fc7475c435ce9f6a43e47710603409dc523b053c8b7de9848dfb63'],
+    }),
+    ('geex', '1.0.12', {
+        'checksums': ['037aece09bc0c4349897cd1d8f5dcf1e680598cdfdf72148b6d1506e02690e7f'],
+    }),
+    ('momentfit', '0.2', {
+        'checksums': ['a10d43ac23bb61b9c67efa4800e3e2b6a444c1afaca8bad351648accd7e003f6'],
+    }),
+    ('StatMatch', '1.4.1', {
+        'checksums': ['0c5479c444cb831d21b6305fc4cdcdf2653723ff08a31427dc2b236ca4f25bc5'],
+    }),
+    ('stars', '0.5-5', {
+        'checksums': ['f359577c9e08066cb9ea6aab9b8eae574efea95ba6efcc250663f2c350fe8b41'],
+    }),
+    ('rapidjsonr', '1.2.0', {
+        'checksums': ['62c94fcdcf5d0fbdfa2f6168affe526bf547c37c16d94e2e1b78d7bf608eed1f'],
+    }),
+    ('jsonify', '1.2.1', {
+        'checksums': ['929191ab32e34af6a02ad991e29314cc78ea40763fcf232388ef2d132137fbce'],
+    }),
+    ('geometries', '0.2.0', {
+        'checksums': ['8cf5094f3c2458fef5d755799c766afd27c66cd1c292574a6ab532d608360314'],
+    }),
+    ('sfheaders', '0.4.0', {
+        'checksums': ['86bcd61018a0491fc8a1e7fb0422c918296287b82be299a79ccee8fcb515e045'],
+    }),
+    ('geojsonsf', '2.0.3', {
+        'checksums': ['275ca14672d982e6a95884515f49d8a0aad14f3be62ea01b675a91b0bffb46d1'],
+    }),
+    ('leaflet.providers', '1.9.0', {
+        'checksums': ['9e8fc75c83313ab24663c2e718135459599549ed6e7396086cacb44e36cfd67b'],
+    }),
+    ('leaflet', '2.1.1', {
+        'checksums': ['32f6a043759a0d2d98ea05739b7b4c55a266aa01272e48243e3c44046c7a5677'],
+    }),
+    ('leafsync', '0.1.0', {
+        'checksums': ['7d8fd8dbbbf66417cf32575f14c0fe68199762ecf1c036c7905c7c5ff859d75c'],
+    }),
+    ('leafem', '0.2.0', {
+        'checksums': ['97eb78b3eaf6012940f2c4f73effd8ff2d39aa46fef5f2ddf0005990b07dba8d'],
+    }),
+    ('widgetframe', '0.3.1', {
+        'checksums': ['44089a2cf8b0941a6f3da55da36353e2f44653ca58bfec7960ee5b71ea380d48'],
+    }),
+    ('tmaptools', '3.1-1', {
+        'checksums': ['fd89cb0d7fb44e0a5dd5311fa3e75a729746bf2e8e158d5ec423e5963f1b542d'],
+    }),
+    ('tmap', '3.3-3', {
+        'checksums': ['60e58eef0f8c723db855d59117ca9f9b5e3663ba34b5ca783dc889bf20285e04'],
+    }),
+    ('collapse', '1.8.6', {
+        'checksums': ['9c13f4322d496702255652c9467fc2a202bfdb36cee6d78791780b7ab988f3ef'],
+    }),
+    ('genoPlotR', '0.8.11', {
+        'checksums': ['f127f7fe8b19c899ecfdf98bf69d2e18926afb593a72fc40097acca66d401607'],
+    }),
+    ('VineCopula', '2.4.4', {
+        'checksums': ['8449b1181fd7f325a2f0539cdaa4a4ff895c41424f462f52258729436078c90a'],
+    }),
+    ('Rmpfr', '0.8-9', {
+        'checksums': ['cfee5ab47d49c6433c372a267f7d849c8f7c61a84e00d08afb047eaafcdbbc8a'],
+    }),
+    ('scam', '1.2-12', {
+        'checksums': ['0ce5f844221370884719424eb5b2b22c34a8a8ad64eac3de981e5539b6e88f4a'],
+    }),
+    ('copula', '1.1-0', {
+        'checksums': ['9ab76e6256534db2a18d3880143b8c67e385767010de861bbde25212aa75d924'],
+    }),
+    ('evd', '2.3-6', {
+        'checksums': ['8edb8bc4f06d246c4343fd923bb5d5df99724d6db8821bfd996220343a834cb6'],
+    }),
+    ('ismev', '1.42', {
+        'checksums': ['0d57fbeca83bd478e84fcff795967d51d8448c629abe7adc6c4c18c7fb8bf1a5'],
+    }),
+    ('GJRM', '0.2-6', {
+        'checksums': ['f8abe1900a83892a9ee96bc62cdb1a42fabf8ba66eed60e44f59bd203b5f6779'],
+    }),
+    ('penfa', '0.1.1', {
+        'checksums': ['a22a8ac3d4a040c77e50ddc92328c1989eae536d79fe56013e9372ba27c114e5'],
+    }),
+    ('rngWELL', '0.10-7', {
+        'checksums': ['0c00c54e69d7d552cfa08d766e4854c01c6c1c8e2c558f387760b91a55ef2d38'],
+    }),
+    ('randtoolbox', '2.0.1', {
+        'checksums': ['c4f28963fe5dbc821427691527a204aa6e08ab40bf00337f220cc60b81d552dc'],
+    }),
+    ('kde1d', '1.0.4', {
+        'checksums': ['124eb2e427e08fd24ca37e0baa697736601785d6c6fb1c97c2ebcc5146bb4556'],
+    }),
+    ('RcppThread', '2.1.3', {
+        'checksums': ['127e3d333dd412334d89d633e92f40135f65d68c91b7945fa63ce0e35abcf946'],
+    }),
+    ('wdm', '0.2.3', {
+        'checksums': ['5f0184f6f0f9e9b8c47fb571e4d34dff309644a50afe5f18e42b9c37f52c593b'],
+    }),
+    ('rvinecopulib', '0.6.1.1.3', {
+        'checksums': ['212189441b4cd2383e485c2aa410837456ba70357834f443c9275e4775b8bf22'],
+    }),
+    ('PearsonDS', '1.2.2', {
+        'checksums': ['443a0619b824332ba5e50733a2aaf2913230925a64960a9f589ae368bcba3dc8'],
+    }),
+    ('covsim', '1.0.0', {
+        'checksums': ['3788e91ee7f7fd44b290feb22185637493e8301a64f9511ca80e1ed361c3f44f'],
+    }),
+    ('semTools', '0.5-6', {
+        'checksums': ['f522ce3c02ac580ad49af7a7278141dae39fdfaeccc7d1379faf1266ce9fcaf2'],
+    }),
+    ('GPArotation', '2022.4-1', {
+        'checksums': ['231e7edcdcc091fbecfb4f2e88d1a4344967cf7ea58074b385a4b8b48d9da224'],
+    }),
+    ('dcurver', '0.9.2', {
+        'checksums': ['cc6c55090d3607910515981ea0c7221e40e7a29e0da0c5a5f42c3847012290ec'],
+    }),
+    ('mirt', '1.36.1', {
+        'checksums': ['5215a0f4eb5949a3985a84a7d4776d4dd7471973a980c1d158ce82b3bde185bb'],
+    }),
+    ('rpf', '1.0.11', {
+        'checksums': ['e1fd670ae7c3e947db08ce50d6b16ce1b3b8f63a9016b03baba760aee78921fb'],
+    }),
+    ('OpenMx', '2.20.6', {
+        'checksums': ['65c50ce09f9c006b41b7311ec05eba3ae77926d84fb44e3905905208404826ed'],
+    }),
+    ('matlab', '1.0.4', {
+        'checksums': ['1988a2220703444a575f2bad4eb090a0da71478599eb53081dd7237b7ec216ea'],
+    }),
+    ('FactorCopula', '0.8', {
+        'checksums': ['d95b0ccd1b0eebcf27a90286e9392f662b878a669c693fbbb4145798045134ff'],
+    }),
+    ('rpact', '3.3.0', {
+        'checksums': ['a568bb04b4dcecf163024269042124a4d75c5431edbf06776515aa524506f11c'],
+    }),
+    ('ldbounds', '2.0.0', {
+        'checksums': ['d4279d5f9952643f9051cf37eeb8441fff7ac050a49ef6363a9f5cbc8287a26a'],
+    }),
+    ('catlearn', '0.9.1', {
+        'checksums': ['c6c492f5cc6a9ec6fdbd3721dd64a4bb2e146152d64eeeab4db3d0575bd2f650'],
+    }),
+    ('MetaUtility', '2.1.2', {
+        'checksums': ['e38c21588c239aa8926e64d916aa0f3b04108c2992f0e801095e4c7920b9ad5d'],
+    }),
+    ('EValue', '4.1.3', {
+        'checksums': ['52a8d4df8ddc80eddf7c2f6684ed6f0fd71f3bd1bfc096ed07cfe875a367e446'],
+    }),
+    ('dagitty', '0.3-1', {
+        'checksums': ['7d44b5d259ec3fef776a7e3fcb21d1c379f930d6ae9ae5fbfff54494ad78e8a8'],
+    }),
+    ('ggdag', '0.2.4', {
+        'checksums': ['372ec4ef0ded9637304a19b50bce908e84a034e54dbd2a52a061bb747b2b08a0'],
+    }),
+    ('simex', '1.8', {
+        'checksums': ['80c7841196b9377a9367eb6960ad80ca0bf8de511b8b18a0031bfbe7bde289a0'],
+    }),
+    ('hash', '2.2.6.2', {
+        'checksums': ['75a3a64014d2a99f08d12594d14fdade136f278abcf6252119cc20558ed14c9f'],
+    }),
+    ('nabor', '0.5.0', {
+        'checksums': ['47938dcc987279281c13abfd667660bf1b3b76af116136a27eb066ee1a4b43da'],
+    }),
+    ('harmony', '0.1.0', {
+        'checksums': ['e0598c220ae90d1334e47c9958ccccf7defbe6ac530159bc69424923894f724a'],
+    }),
+    ('apcluster', '1.4.10', {
+        'checksums': ['a214f72fa2f84563f3ca1aabb5322ef3e266007a6273ee8434bc2e2a7b9040a0'],
+    }),
+    ('DataCombine', '0.2.21', {
+        'checksums': ['352b235612e2cf8234b3ab5f9aa6f7a394b006b98d24e315940ccc65c4218b47'],
+    }),
+    ('docstring', '1.0.0', {
+        'checksums': ['14528bc85bbb299fb8fe1a7116034f8df49ae0c26fb299376185b5d56176e5a7'],
+    }),
+    ('gdalUtils', '2.0.3.2', {
+        'checksums': ['4c6faabee2db8a87b7ea0f8e67e9fce3c5db7f4be353d7d86ea559507cbb2a4f'],
+    }),
+    ('openair', '2.10-0', {
+        'checksums': ['1acdeafa1b96bbcb13c73f2ef965efb635e6306678cc22468d383c4bb5098a92'],
+    }),
+    ('pdp', '0.8.1', {
+        'checksums': ['e23db66e5d575337d5c8fd664ccd0548cc85da2aca6613d90ce187be1dca376c'],
+    }),
+    ('date', '1.2-39', {
+        'checksums': ['b5b1935638b73373809c009f94b77f993cd301744488d9bdf71ef79c82099757'],
+    }),
+    ('cmprsk', '2.2-11', {
+        'checksums': ['844027cb2c162cf7ef97034d01237ad7b81aa192fe302250d22d2c5528110e14'],
+    }),
+    ('mets', '1.2.9', {
+        'checksums': ['5faccc064e715c44234def40f4f560e90f2dbd34c915a8687b48103b39814ab5'],
+    }),
+    ('Publish', '2020.12.23', {
+        'checksums': ['a7a98fc52801bee30b9c8cb423e4e0082ea42d05134f7d3324ac3e95242cfbe2'],
+    }),
+    ('riskRegression', '2022.03.22', {
+        'checksums': ['4e1a66a45be73ae07bbc537192d3132e1cfc67ad24bc4b281b5cffa44282a047'],
+    }),
+    ('pec', '2022.05.04', {
+        'checksums': ['47a1079b5d4aa5df8aaa716324ee48c55660025c4cf10c93b5ee1d7250761468'],
+    }),
+    ('pammtools', '0.5.8', {
+        'checksums': ['37197edd0984f8bf0e0a39a4ac1cfce897050dbb7f610553c349118fceb3ca93'],
+    }),
+    ('relsurv', '2.2-7', {
+        'checksums': ['82c84bbe0a3eb9b391cbb885b3f3e7114adda5243aa83f974922d2edca918317'],
+    }),
+    ('mstate', '0.3.2', {
+        'checksums': ['3c473dff6854e31cdbdaf79f8fe7eaf97119b01a581874a894b283555afe8d14'],
+    }),
+    ('microbenchmark', '1.4.9', {
+        'checksums': ['443d2caf370ef33e4ac2773176ad9eb86f8790f43b430968ef9647699dbbffd2'],
+    }),
+    ('prettyGraphs', '2.1.6', {
+        'checksums': ['fece08924fc7ed05ec419afa14a2216a2bb23d9da5ed3fc61472d6e45be7577a'],
+    }),
+    ('ExPosition', '2.8.23', {
+        'checksums': ['0510bc51b1c8c883ff3652a5ed56242f91c2b7b7cf3100755436bffa1e002475'],
+    }),
+    ('alluvial', '0.1-2', {
+        'checksums': ['77b6dc4651b33b03aaaf1e09a35f9c3536e5fddac2eda34f5a34e0ae33cf2e0d'],
+    }),
+    ('SNFtool', '2.3.1', {
+        'checksums': ['982fe7c57f52c0c272b8cb5863dc5d50623b368e24ff6e27fc8b17acc0101f16'],
+    }),
+    ('BayesLogit', '2.1', {
+        'checksums': ['3a423f68339ed1bf25e21be53b1fd68452ed7807b17c36239fba759dc6fc6b70'],
+    }),
+    ('Hmsc', '3.0-11', {
+        'checksums': ['318e95ea88a15939dac33691886a9ce0c54765b25a3f4ef483d168bfc699098a'],
+    }),
+    ('MonteCarlo', '1.0.6', {
+        'checksums': ['f21aecfba957bbea9576b09f75b1f7c7621637a04532a8fed2c6bb8ffc1a98cb'],
+    }),
+    ('RhpcBLASctl', '0.21-247.1', {
+        'checksums': ['5be55fd5ddd8173167a48b9f072835a34062ad0268308f2b3fbd1781a5c99769'],
+    }),
+    ('chkptstanr', '0.1.1', {
+        'checksums': ['433b29d597d7ea6c21ed652782a7bf2d766f9223a3b7bfed235c8fe7fffd175c'],
+    }),
+    ('MLmetrics', '1.1.1', {
+        'checksums': ['777f1b76b16837387b830e2b65304ede234b9299d17efd09c7fd403356122118'],
+    }),
+    ('renv', '0.15.5', {
+        'checksums': ['b4f1a9a7daa82f0c3123ebd4eeba06e98d5485215518e5292b25bc56741d582e'],
+    }),
+    ('elliptic', '1.4-0', {
+        'checksums': ['b65729b1a1c7a84a5b1a59bfc893a2d35106853eaadcae31cda5c9ee3c500bb6'],
+    }),
+    ('contfrac', '1.1-12', {
+        'checksums': ['95bfc5e970513416c080486a1cd8dfd9f8d59fb691b02ef6ccbe0ce1ed61056b'],
+    }),
+    ('hypergeo', '1.2-13', {
+        'checksums': ['6d5b78353aad1d13091ccbeb340867dad7b9eb00d0e2185286dc7e13848f4d8e'],
+    }),
+    ('rtdists', '0.11-5', {
+        'checksums': ['97cf2ea758aa02b1dfaeef5032c6e50570777552aa771ed9a86df048b7871eed'],
+    }),
+    ('AMAPVox', '0.12.0', {
+        'checksums': ['b30fefef8661e27ffe3883665204b623eda2143dbcd3084a1d5810f8ea834c85'],
+    }),
+    ('LCFdata', '2.0', {
+        'checksums': ['b58f4d93b9023dd1ba2db96a59ddfc058397085933d8de4cdb38ee064d5e7bf4'],
+    }),
+    ('LMERConvenienceFunctions', '3.0', {
+        'checksums': ['eb430de9fbf836173f716960d60afc2de91de7f986471f406c3ca9027142e849'],
+    }),
+]
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/r/R/liquidSVM-1.2.4-fix_ppc_and_aarch64_build.patch b/Golden_Repo/r/R/liquidSVM-1.2.4-fix_ppc_and_aarch64_build.patch
new file mode 100644
index 0000000000000000000000000000000000000000..56af45097b778929832cdb4b0af770543e61c5ce
--- /dev/null
+++ b/Golden_Repo/r/R/liquidSVM-1.2.4-fix_ppc_and_aarch64_build.patch
@@ -0,0 +1,49 @@
+The code requires C++11 but nvcc is not passed any flag for it, do that to avoid 'error: identifier "__ieee128" is undefined' on PPC
+Use uppercase __PPC64__ to detect PPC 64bit (defined by GCC)
+Use lowercase __aarch64__ to detect aarch64 (defined by GCC)
+diff -aur liquidSVM-orig/MD5 liquidSVM/MD5
+--- liquidSVM-orig/MD5  2020-02-20 15:51:17.387058566 +0100
++++ liquidSVM/MD5   2020-02-20 16:48:06.042078399 +0100
+@@ -66,7 +66,7 @@
+ e0ea06f050a2ae8ed2f2e401d968f0ce *man/test.liquidSVM.Rd
+ 8874fc45419e3174bf06013d887f6582 *man/trainSVMs.Rd
+ 4cf2abf7c6d415a4a8cd7f5dee2df959 *man/write.liquidData.Rd
+-854c1eecccd169acdb80b03ad6d768dc *src/Makevars.in
++8c4346267f7b7f649ff27fb5288d4e23 *src/Makevars.in
+ e6d47b428caa2cc55798b431cb5e504f *src/kernel_calculator.cpp
+ 13af8529f5c2bccd4ea03288e9adf908 *src/kernel_calculator.h
+ dc2c86cbe61e7b7c5dd433f9fa41fac6 *src/liquidSVM.cpp
+@@ -155,7 +155,7 @@
+ 8b39ec05680bf3416bc1de3ad92f043f *src/sources/shared/system_support/cuda_simple_vector_operations.h
+ 806ca83732bff4b1b89adfc3494e90da *src/sources/shared/system_support/full_64bit_support.h
+ dfb08cdb449d490d86dd33bee186aac5 *src/sources/shared/system_support/memory_allocation.cpp
+-aec0000be577e69e88c040b641d6818a *src/sources/shared/system_support/memory_allocation.h
++f0231e65bd627116f1b5ebcc45ab1e66 *src/sources/shared/system_support/memory_allocation.h
+ 683d4ee517b1c760dc410c69c5508ce2 *src/sources/shared/system_support/memory_allocation.ins.cpp
+ cbd209324ad752e19be10d8975d65e2f *src/sources/shared/system_support/os_specifics.h
+ 54e8583d2e8e269ff2b6d7a79d57cbd5 *src/sources/shared/system_support/parallel_control.cpp
+diff -aur liquidSVM-orig/src/Makevars.in liquidSVM/src/Makevars.in
+--- liquidSVM-orig/src/Makevars.in  2020-02-20 15:51:17.377058962 +0100
++++ liquidSVM/src/Makevars.in   2020-02-20 16:47:44.042949538 +0100
+@@ -39,7 +39,7 @@
+ # The architecure flag can be set to higher values, if the hardware supports this.
+ # The value below should be safe for essentially all non stone-age systems.
+
+-NVCCFLAGS= -arch sm_30 -L$(CUDA_LIB_PATH) -DCOMPILE_WITH_CUDA__ -U__SSE2__ -U__AVX__ 
++NVCCFLAGS= -arch sm_30 -L$(CUDA_LIB_PATH) -DCOMPILE_WITH_CUDA__ -U__SSE2__ -U__AVX__ -std=c++11
+
+
+ #----------- CUDA related flags for GCC ----------------------------------------------------
+diff -aur liquidSVM-orig/src/sources/shared/system_support/memory_allocation.h liquidSVM/src/sources/shared/system_support/memory_allocation.h
+--- liquidSVM-orig/src/sources/shared/system_support/memory_allocation.h    2020-02-20 15:51:17.377058962 +0100
++++ liquidSVM/src/sources/shared/system_support/memory_allocation.h 2020-02-20 15:56:04.905673381 +0100
+@@ -42,7 +42,7 @@
+
+ // Check for GCC
+ #if __GNUC__
+-	#if __x86_64__ || __ppc64__
++	#if __x86_64__ || __ppc64__ || __PPC64__ || __aarch64__
+	#define SYSTEM_WITH_64BIT
+	#else
+	#define SYSTEM_WITH_32BIT
+
diff --git a/Golden_Repo/r/Rust/Rust-1.67.1-GCCcore-11.3.0.eb b/Golden_Repo/r/Rust/Rust-1.67.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..576b77803195085ba32d339244a3dba233a997af
--- /dev/null
+++ b/Golden_Repo/r/Rust/Rust-1.67.1-GCCcore-11.3.0.eb
@@ -0,0 +1,58 @@
+easyblock = 'ConfigureMake'
+
+name = 'Rust'
+version = '1.67.1'
+
+homepage = 'https://www.rust-lang.org'
+description = """Rust is a systems programming language that runs blazingly fast, prevents segfaults,
+ and guarantees thread safety."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://static.rust-lang.org/dist/']
+sources = ['rustc-%(version)s-src.tar.gz']
+patches = ['Rust-1.60_sysroot-fix-interpreter.patch']
+checksums = [
+    {'rustc-1.67.1-src.tar.gz': '46483d3e5de85a3bd46f8e7a3ae1837496391067dbe713a25d3cf051b3d9ff6e'},
+    {'Rust-1.60_sysroot-fix-interpreter.patch': 'b59ed4c2591fc9098277299be21dd6752654f6f193d8652b7d21cb0fa0dd8716'},
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('Python', '3.10.4', '-bare'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('OpenSSL', '1.1', '', True),
+]
+
+configopts = "--enable-extended --sysconfdir=%(installdir)s/etc "
+
+# avoid build dependency on Ninja, which requires Python,
+# since Rust is a build dependency for cryptography that is included with Python
+configopts += "--set=llvm.ninja=false "
+
+# Use ./x.py to bootstrap so that options like -j N are correctly passed through
+# see: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html#what-is-xpy
+# (ConfigureMake already adds `-j %(parallel)s` to the `build_cmd`)
+build_cmd = "./x.py build"
+install_cmd = "./x.py install -j %(parallel)s"
+
+# avoid failure when home directory is an NFS mount,
+# see https://github.com/rust-lang/cargo/issues/6652
+prebuildopts = "export CARGO_HOME=%(builddir)s/cargo && "
+preinstallopts = prebuildopts
+
+sanity_check_paths = {
+    'files': ['bin/cargo', 'bin/rustc', 'bin/rustdoc'],
+    'dirs': ['lib/rustlib', 'share/doc', 'share/man'],
+}
+
+sanity_check_commands = [
+    "cargo --version",
+    "rustc --version",
+]
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/s/SCOTCH/SCOTCH-7.0.1-ipsmpi-2022a.eb b/Golden_Repo/s/SCOTCH/SCOTCH-7.0.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1d47aa91d17ca338eef759973dc9d1f1f503a99f
--- /dev/null
+++ b/Golden_Repo/s/SCOTCH/SCOTCH-7.0.1-ipsmpi-2022a.eb
@@ -0,0 +1,48 @@
+name = 'SCOTCH'
+
+version = '7.0.1'
+
+homepage = 'http://gforge.inria.fr/projects/scotch/'
+
+description = """Software package and libraries for sequential and parallel graph partitioning,
+
+static mapping, and sparse matrix block ordering, and sequential mesh and hypergraph partitioning.
+
+"""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+
+toolchainopts = {'pic': True}
+
+source_urls = ['https://gitlab.inria.fr/scotch/scotch/-/archive/v%(version)s/']
+sources = ['%(namelower)s-v%(version)s.tar.gz']
+checksums = ['0618e9bc33c02172ea7351600fce4fccd32fe00b3359c4aabb5e415f17c06fed']
+
+builddependencies = [
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+]
+
+configopts = '-DIDXSIZE64 '
+
+modloadmsg = """
+
+Notice: We do not support the Fortran interface
+
+"""
+
+modextravars = {
+
+    'SCOTCH_ROOT': '%(installdir)s',
+
+    'SCOTCH_INCLUDE': '%(installdir)s/include/',
+
+    'SCOTCH_LIB': '%(installdir)s/lib',
+
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/s/SLEPc/SLEPc-3.18.2-gpsmkl-2022a.eb b/Golden_Repo/s/SLEPc/SLEPc-3.18.2-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1f739b100355a8d227f63e8023828b16db456ee8
--- /dev/null
+++ b/Golden_Repo/s/SLEPc/SLEPc-3.18.2-gpsmkl-2022a.eb
@@ -0,0 +1,29 @@
+name = 'SLEPc'
+
+version = '3.18.2'
+
+homepage = 'http://slepc.upv.es/'
+
+description = """SLEPc (Scalable Library for Eigenvalue Problem Computations) is a software library for the solution 
+of large scale sparse eigenvalue problems on parallel computers. It is an extension of PETSc and can be used for 
+either standard or generalized eigenproblems, with real or complex arithmetic. It can also be used for computing a 
+partial SVD of a large, sparse, rectangular matrix, and to solve quadratic eigenvalue problems."""
+examples = 'Examples can be found in $EBROOTSLEPC/share/slepc/examples/'
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'usempi': True, 'openmp': True}
+source_urls = ['http://slepc.upv.es/download/distrib']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['5bd90a755934e702ab1fdb3320b9fe75ab5fc28c93d364248ea86a372fbe6a62']
+
+dependencies = [('PETSc', '3.18.5')]
+petsc_arch = 'installed-arch-linux2-c-opt'
+
+modextravars = {
+    'SLEPc_ROOT': '%(installdir)s',
+    'SLEPcROOT': '%(installdir)s',
+    'SLEPc_INCLUDE': '%(installdir)s/include/',
+    'SLEPc_LIB': '%(installdir)s/lib',
+}
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/s/SciPy-Stack/SciPy-Stack-2022a-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/s/SciPy-Stack/SciPy-Stack-2022a-gcccoremkl-11.3.0-2022.1.0.eb
index 75e2b199c39e9233a05d8f8b0c6e58b05488623a..a90454d685879b08b33bd8d1ba8bf1e7a25678be 100644
--- a/Golden_Repo/s/SciPy-Stack/SciPy-Stack-2022a-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/s/SciPy-Stack/SciPy-Stack-2022a-gcccoremkl-11.3.0-2022.1.0.eb
@@ -5,7 +5,7 @@ version = '2022a'
 homepage = 'http://www.scipy.org'
 description = """SciPy Stack is a collection of open source software for scientific computing in Python.
 SciPy Stack includes SciPy-bundle/2022.05, matplotlib/3.5.2, Seaborn/0.12.1, sympy/1.11.1, xarray/2022.9.0
-and IPython 8.5.0.
+and IPython 8.14.0.
 """
 
 toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
@@ -17,7 +17,7 @@ dependencies = [
     ('Seaborn', '0.12.1'),
     ('sympy', '1.11.1'),
     ('xarray', '2022.9.0'),
-    ('IPython', '8.5.0'),
+    ('IPython', '8.14.0'),
 ]
 
 moduleclass = 'vis'
diff --git a/Golden_Repo/s/SciPy-bundle/SciPy-bundle-2022.05-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/s/SciPy-bundle/SciPy-bundle-2022.05-gcccoremkl-11.3.0-2022.1.0.eb
index 788dd8af5a41d3d9c8202e9505fb78313fd319c4..3c50e33aad5ef06a900ecd416ccec68f58aca9cf 100644
--- a/Golden_Repo/s/SciPy-bundle/SciPy-bundle-2022.05-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/s/SciPy-bundle/SciPy-bundle-2022.05-gcccoremkl-11.3.0-2022.1.0.eb
@@ -77,12 +77,8 @@ exts_list = [
     ('mpmath', '1.2.1', {
         'checksums': ['79ffb45cf9f4b101a807595bcb3e72e0396202e0b1d25d689134b48c4216a81a'],
     }),
-    ('deap', '1.3.1', {
-        'patches': ['deap-1.3.1_no_2to3.patch'],
-        'checksums': [
-            '11f54493ceb54aae10dde676577ef59fc52d52f82729d5a12c90b0813c857a2f',  # deap-1.3.1.tar.gz
-            '3fa9fac74b0750ac6667371ce0634c797d62d270c76eee9c258b55f4a5a5e689',  # deap-1.3.1_no_2to3.patch
-        ],
+    ('deap', '1.3.3', {
+        'checksums': ['8772f1b0fff042d5e516b0aebac2c706243045aa7d0de8e0b8658f380181cf31'],
     }),
 ]
 
diff --git a/Golden_Repo/s/Score-P/Score-P-8.1-gompi-2022a.eb b/Golden_Repo/s/Score-P/Score-P-8.1-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..322e24504bfaa6c3941bf7699eb8b543344ed118
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-8.1-gompi-2022a.eb
@@ -0,0 +1,67 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '8.1'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-%(version)s']
+sources = ['scorep-%(version)s.tar.gz']
+checksums = [
+    '3a40b481fce610871ddf6bdfb88a6d06b9e5eb38c6080faac6d5e44990060a37',  # scorep-8.1.tar.gz
+]
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.1'),
+    ('CubeWriter', '4.8.1'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.7'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-8.1-gpsmpi-2022a.eb b/Golden_Repo/s/Score-P/Score-P-8.1-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ac63d8bbb423b929edf36c9d4ce03a64ce2408af
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-8.1-gpsmpi-2022a.eb
@@ -0,0 +1,67 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '8.1'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-%(version)s']
+sources = ['scorep-%(version)s.tar.gz']
+checksums = [
+    '3a40b481fce610871ddf6bdfb88a6d06b9e5eb38c6080faac6d5e44990060a37',  # scorep-8.1.tar.gz
+]
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.1'),
+    ('CubeWriter', '4.8.1'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.7'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-8.1-ipsmpi-2022a.eb b/Golden_Repo/s/Score-P/Score-P-8.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9c4b609723f5ba69f2efb3715e03aaf359f9f490
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-8.1-ipsmpi-2022a.eb
@@ -0,0 +1,67 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '8.1'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-%(version)s']
+sources = ['scorep-%(version)s.tar.gz']
+checksums = [
+    '3a40b481fce610871ddf6bdfb88a6d06b9e5eb38c6080faac6d5e44990060a37',  # scorep-8.1.tar.gz
+]
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.1'),
+    ('CubeWriter', '4.8.1'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.7'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-8.1-npsmpic-2022a.eb b/Golden_Repo/s/Score-P/Score-P-8.1-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..17d41f01eef781abdf5c54f9ae6cf8ab7a229b27
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-8.1-npsmpic-2022a.eb
@@ -0,0 +1,67 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '8.1'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-%(version)s']
+sources = ['scorep-%(version)s.tar.gz']
+checksums = [
+    '3a40b481fce610871ddf6bdfb88a6d06b9e5eb38c6080faac6d5e44990060a37',  # scorep-8.1.tar.gz
+]
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.1'),
+    ('CubeWriter', '4.8.1'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.7'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-8.1-nvompic-2022a.eb b/Golden_Repo/s/Score-P/Score-P-8.1-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2464a970ac4184b5fee64a350378ff63f809648b
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-8.1-nvompic-2022a.eb
@@ -0,0 +1,67 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '8.1'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+
+source_urls = ['http://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-%(version)s']
+sources = ['scorep-%(version)s.tar.gz']
+checksums = [
+    '3a40b481fce610871ddf6bdfb88a6d06b9e5eb38c6080faac6d5e44990060a37',  # scorep-8.1.tar.gz
+]
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.1'),
+    ('CubeWriter', '4.8.1'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.7'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/SymEngine-python/SymEngine-python-0.9.2-GCC-11.3.0.eb b/Golden_Repo/s/SymEngine-python/SymEngine-python-0.9.2-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e4abee3bc07b376ba3bfd45c84e7b6b453e684d4
--- /dev/null
+++ b/Golden_Repo/s/SymEngine-python/SymEngine-python-0.9.2-GCC-11.3.0.eb
@@ -0,0 +1,34 @@
+easyblock = 'PythonPackage'
+
+name = 'SymEngine-python'
+version = '0.9.2'
+
+homepage = 'https://github.com/symengine/symengine.py'
+description = "Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library."
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/symengine/symengine.py/archive/refs/tags/']
+sources = ['v%(version)s.tar.gz']
+patches = ['py_modules.patch']
+checksums = [
+    '9da048692d741bb001d9947a0e2bdf8909600cb4e6f3b9273d518cf93300955d',
+    '8ad1b29de924ab8589ee86658c6a7bb6921f867b26b03fdf1491a109c7df1e97',
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('SymEngine', '0.9.0'),
+    ('Python', '3.10.4'),
+]
+
+use_pip = True
+download_dep_fail = True
+sanity_pip_check = True
+
+options = {'modulename': 'symengine'}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/s/SymEngine-python/py_modules.patch b/Golden_Repo/s/SymEngine-python/py_modules.patch
new file mode 100644
index 0000000000000000000000000000000000000000..15a6235e12b25b9ef0ce2d1fd2e7b9753d47c41f
--- /dev/null
+++ b/Golden_Repo/s/SymEngine-python/py_modules.patch
@@ -0,0 +1,11 @@
+diff -Naur symengine.py-0.9.2.orig/setup.py symengine.py-0.9.2/setup.py
+--- symengine.py-0.9.2.orig/setup.py	2022-03-07 23:39:26.000000000 +0100
++++ symengine.py-0.9.2/setup.py	2023-02-05 09:58:50.534749182 +0100
+@@ -238,5 +238,6 @@
+         'Programming Language :: Python :: 3.8',
+         'Programming Language :: Python :: 3.9',
+         'Programming Language :: Python :: 3.10',
+-        ]
++        ],
++      py_modules=[]
+       )
diff --git a/Golden_Repo/s/scikit-image/scikit-image-0.19.3-foss-2022a.eb b/Golden_Repo/s/scikit-image/scikit-image-0.19.3-foss-2022a.eb
deleted file mode 100644
index d0f19c038b4264631acf12b9692cbbf47cd282d7..0000000000000000000000000000000000000000
--- a/Golden_Repo/s/scikit-image/scikit-image-0.19.3-foss-2022a.eb
+++ /dev/null
@@ -1,43 +0,0 @@
-easyblock = 'PythonBundle'
-
-name = 'scikit-image'
-version = '0.19.3'
-
-homepage = 'https://scikit-image.org/'
-description = "scikit-image is a collection of algorithms for image processing."
-
-toolchain = {'name': 'foss', 'version': '2022a'}
-
-dependencies = [
-    ('Python', '3.10.4'),
-    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-    ('Pillow-SIMD', '9.2.0'),
-    ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-    ('dask', '2022.10.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-    ('imageio', '2.22.2'),
-]
-
-use_pip = True
-sanity_pip_check = True
-
-exts_list = [
-    ('PyWavelets', '1.4.1', {
-        'modulename': 'pywt',
-        'checksums': ['6437af3ddf083118c26d8f97ab43b0724b956c9f958e9ea788659f6a2834ba93'],
-    }),
-    ('imread', '0.7.4', {
-        'checksums': ['0487adef11a22168700968c1727020361a72f6132b6ced2b8826b02d8cbf744f'],
-    }),
-    ('pooch', '1.6.0', {
-        'checksums': ['57d20ec4b10dd694d2b05bb64bc6b109c6e85a6c1405794ce87ed8b341ab3f44'],
-    }),
-    ('tifffile', '2022.10.10', {
-        'checksums': ['50b61ba943b866d191295bc38a00191c9fdab23ece063544c7f1a264e3f6aa8e'],
-    }),
-    (name, version, {
-        'modulename': 'skimage',
-        'checksums': ['24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450'],
-    }),
-]
-
-moduleclass = 'vis'
diff --git a/Golden_Repo/s/scikit-image/scikit-image-0.19.3-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/s/scikit-image/scikit-image-0.19.3-gcccoremkl-11.3.0-2022.1.0.eb
index 434e5161cffc25c54576b18682a45026d1a7dbf1..1d1e65d6f84ce4abf03c191d775c3922bf4362fa 100644
--- a/Golden_Repo/s/scikit-image/scikit-image-0.19.3-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/s/scikit-image/scikit-image-0.19.3-gcccoremkl-11.3.0-2022.1.0.eb
@@ -13,7 +13,7 @@ dependencies = [
     ('matplotlib', '3.5.2'),
     ('Pillow-SIMD', '9.2.0'),
     ('networkx', '2.8.4'),
-    ('dask', '2022.10.2'),
+    ('dask', '2022.12.0'),
     ('imageio', '2.22.2'),
 ]
 
diff --git a/Golden_Repo/s/scikit-learn/scikit-learn-1.1.2-foss-2022a.eb b/Golden_Repo/s/scikit-learn/scikit-learn-1.1.2-foss-2022a.eb
deleted file mode 100644
index a2a04fa2ba1d6533415dad716ab243dc9ff95743..0000000000000000000000000000000000000000
--- a/Golden_Repo/s/scikit-learn/scikit-learn-1.1.2-foss-2022a.eb
+++ /dev/null
@@ -1,32 +0,0 @@
-easyblock = 'PythonBundle'
-
-name = 'scikit-learn'
-version = '1.1.2'
-
-homepage = 'https://scikit-learn.org/stable/index.html'
-description = """Scikit-learn integrates machine learning algorithms in the tightly-knit scientific Python world,
-building upon numpy, scipy, and matplotlib. As a machine-learning module,
-it provides versatile tools for data mining and analysis in any field of science and engineering.
-It strives to be simple and efficient, accessible to everybody, and reusable in various contexts."""
-
-toolchain = {'name': 'foss', 'version': '2022a'}
-
-dependencies = [
-    ('Python', '3.10.4'),
-    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
-]
-
-use_pip = True
-sanity_pip_check = True
-
-exts_list = [
-    (name, version, {
-        'modulename': 'sklearn',
-        'checksums': ['7c22d1305b16f08d57751a4ea36071e2215efb4c09cb79183faa4e8e82a3dbf8'],
-    }),
-    ('sklearn', '0.0', {
-        'checksums': ['e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31'],
-    }),
-]
-
-moduleclass = 'data'
diff --git a/Golden_Repo/s/shpc/shpc-0.1.17-GCCcore-11.3.0.eb b/Golden_Repo/s/shpc/shpc-0.1.19-GCCcore-11.3.0.eb
similarity index 93%
rename from Golden_Repo/s/shpc/shpc-0.1.17-GCCcore-11.3.0.eb
rename to Golden_Repo/s/shpc/shpc-0.1.19-GCCcore-11.3.0.eb
index 04e02382d017cdd8ca86d6d9ffea5e80fcbc6614..664f4a179d95a7013ee2cb46add918a9dd7e2014 100644
--- a/Golden_Repo/s/shpc/shpc-0.1.17-GCCcore-11.3.0.eb
+++ b/Golden_Repo/s/shpc/shpc-0.1.19-GCCcore-11.3.0.eb
@@ -1,7 +1,7 @@
 easyblock = 'PythonBundle'
 
 name = 'shpc'
-version = '0.1.17'
+version = '0.1.19'
 
 homepage = 'https://github.com/singularityhub/singularity-hpc'
 
@@ -10,8 +10,6 @@ Environement Modules. Works for users and admins."""
 
 toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
 
-#
-# sources = ['%(version)s.tar.gz']
 
 builddependencies = [('binutils', '2.38')]
 
@@ -37,7 +35,7 @@ exts_list = [
     (name, version, {
         'source_urls': ['https://github.com/singularityhub/singularity-hpc/archive/refs/tags/'],
         'sources': ['%(version)s.tar.gz'],
-        'checksums': ['ca5315142d0b3690a07fc12ea147c404a05ed75f9552ce7f563f833cf8832b58'],
+        'checksums': ['5dbccd6e05d09a547a6d70e137ed626f514ac29623d4557799b076f7db04b0a5'],
     }),
 ]
 
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-foss-2022a-CUDA-11.7.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-foss-2022a-CUDA-11.7.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a7347f45536d400834abb7f705036277d411b9bd
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-foss-2022a-CUDA-11.7.eb
@@ -0,0 +1,231 @@
+easyblock = 'PythonBundle'
+
+name = 'TensorFlow'
+version = '2.11.0'
+versionsuffix = '-CUDA-%(cudaver)s'
+
+homepage = 'https://www.tensorflow.org/'
+description = "An open-source software library for Machine Intelligence"
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('Bazel', '5.1.1'),
+    ('protobuf', '3.19.4'),
+    # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053
+    ('git', '2.36.0', '-nodocs'),
+    ('pybind11', '2.9.2'),
+    ('UnZip', '6.0'),
+    ('LLVM', '14.0.3'),  # for debugging with llvm-symbolizer, to be removed
+]
+dependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('cuDNN', '8.6.0.163', versionsuffix, SYSTEM),
+    ('NCCL', 'default', versionsuffix),
+    ('Python', '3.10.4'),
+    ('h5py', '3.7.0'),
+    ('cURL', '7.83.0'),
+    ('dill', '0.3.6'),
+    ('double-conversion', '3.2.0'),
+    ('flatbuffers', '2.0.7'),
+    ('giflib', '5.2.1'),
+    ('hwloc', '2.7.1'),
+    ('ICU', '71.1'),
+    ('JsonCpp', '1.9.5'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('LMDB', '0.9.29'),
+    ('NASM', '2.15.05'),
+    ('nsync', '1.25.0'),
+    ('SQLite', '3.38.3'),
+    ('protobuf-python', '3.19.4'),
+    ('libpng', '1.6.37'),
+    ('snappy', '1.1.9'),
+    ('zlib', '1.2.12'),
+    ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # required for pythran
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# Dependencies created and updated using findPythonDeps.sh:
+# https://gist.github.com/Flamefire/49426e502cd8983757bd01a08a10ae0d
+exts_list = [
+    ('wrapt', '1.14.1', {
+        'checksums': ['380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d'],
+    }),
+    ('termcolor', '1.1.0', {
+        'checksums': ['1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b'],
+    }),
+    ('tensorflow-estimator', version, {
+        'source_tmpl': 'tensorflow_estimator-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['ea3b64acfff3d9a244f06178c9bdedcbdd3f125b67d0888dba8229498d06468b'],
+    }),
+    ('Werkzeug', '2.2.2', {
+        'checksums': ['7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f'],
+    }),
+    ('tensorboard-plugin-wit', '1.8.1', {
+        'source_tmpl': 'tensorboard_plugin_wit-%(version)s-py3-none-any.whl',
+        'checksums': ['ff26bdd583d155aa951ee3b152b3d0cffae8005dc697f72b44a8e8c2a77a8cbe'],
+    }),
+    ('tensorboard-data-server', '0.6.1', {
+        'source_tmpl': 'tensorboard_data_server-%(version)s-py3-none-any.whl',
+        'checksums': ['809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7'],
+    }),
+    ('Markdown', '3.4.1', {
+        'checksums': ['3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff'],
+    }),
+    ('grpcio', '1.51.1', {
+        'modulename': 'grpc',
+        'preinstallopts': "export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=%(parallel)s && ",
+        'checksums': ['e6dfc2b6567b1c261739b43d9c59d201c1b89e017afd9e684d85aa7a186c9f7a'],
+    }),
+    ('oauthlib', '3.2.2', {
+        'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'],
+    }),
+    ('requests-oauthlib', '1.3.1', {
+        'checksums': ['75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a'],
+    }),
+    ('rsa', '4.9', {
+        'checksums': ['e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21'],
+    }),
+    ('pyasn1-modules', '0.2.8', {
+        'checksums': ['905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e'],
+    }),
+    ('cachetools', '5.2.1', {
+        'checksums': ['5991bc0e08a1319bb618d3195ca5b6bc76646a49c21d55962977197b301cc1fe'],
+    }),
+    ('google-auth', '2.16.0', {
+        'modulename': 'google.auth',
+        'checksums': ['ed7057a101af1146f0554a769930ac9de506aeca4fd5af6543ebe791851a9fbd'],
+    }),
+    ('google-auth-oauthlib', '0.4.6', {
+        'checksums': ['a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a'],
+    }),
+    ('absl-py', '1.4.0', {
+        'modulename': 'absl',
+        'checksums': ['d2c244d01048ba476e7c080bd2c6df5e141d211de80223460d5b3b8a2a58433d'],
+    }),
+    ('tensorboard', '2.11.1', {
+        'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl',
+        'checksums': ['0c7529f3f43691e8cc2ece8e564c2e103c51ade317c6af626d415239b5088018'],
+    }),
+    ('opt-einsum', '3.3.0', {
+        'source_tmpl': 'opt_einsum-%(version)s.tar.gz',
+        'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'],
+    }),
+    ('keras', version, {
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['38c6fff0ea9a8b06a2717736565c92a73c8cd9b1c239e7125ccb188b7848f65e'],
+    }),
+    ('google-pasta', '0.2.0', {
+        'modulename': 'pasta',
+        'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'],
+    }),
+    ('astunparse', '1.6.3', {
+        'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'],
+    }),
+    ('gast', '0.4.0', {
+        'checksums': ['40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1'],
+    }),
+    ('beniget', '0.3.0', {
+        'checksums': ['062c893be9cdf87c3144fb15041cce4d81c67107c1591952cd45fdce789a0ff1'],
+    }),
+    ('pythran', '0.9.11', {
+        'checksums': ['a317f91e2aade9f6550dc3bf40b5caeb45b7e012daf27e2b3e4ad928edb01667'],
+    }),
+    ('portpicker', '1.5.2', {
+        'checksums': ['c55683ad725f5c00a41bc7db0225223e8be024b1fa564d039ed3390e4fd48fb3'],
+    }),
+    ('tblib', '1.7.0', {
+        'checksums': ['059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c'],
+    }),
+    ('astor', '0.8.1', {
+        'checksums': ['6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e'],
+    }),
+    ('gviz-api', '1.10.0', {
+        'source_tmpl': 'gviz_api-%(version)s.tar.gz',
+        'checksums': ['846692dd8cc73224fc31b18e41589bd934e1cc05090c6576af4b4b26c2e71b90'],
+    }),
+    ('tensorboard-plugin-profile', '2.11.1', {
+        'source_tmpl': 'tensorboard_plugin_profile-%(version)s.tar.gz',
+        'checksums': ['7a97c02d502fde98a0336aadcab15b37169744d5bf6966af7d576c7a3f0a89f4'],
+    }),
+    (name, version, {
+        'patches': [
+            '%(name)s-2.4.0_dont-use-var-lock.patch',
+            '%(name)s-2.5.0-fix-alias-violation-in-absl.patch',
+            '%(name)s-2.5.0_fix-crash-on-shutdown.patch',
+            '%(name)s-2.8.4_exclude-xnnpack-on-ppc.patch',
+            '%(name)s-2.8.4_resolve-gcc-symlinks.patch',
+            '%(name)s-2.9.1_remove-duplicate-gpu-tests.patch',
+            '%(name)s-%(version)s_disable-avx512-extensions.patch',
+            '%(name)s-%(version)s_fix-eigen-atan-on-PPC.patch',
+            '%(name)s-%(version)s_fix-eigen-gemm-on-PPC.patch',
+            '%(name)s-%(version)s_fix-link-error.patch',
+            '%(name)s-%(version)s_remove-libclang-and-io-gcs-deps.patch',
+            ('tensorboard-2.11.1-jupyter.fix', 'tools'),
+        ],
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'],
+        'test_script': 'TensorFlow-2.x_mnist-test.py',
+        'test_tag_filters_cpu': '-gpu,-tpu,-no_cuda_on_cpu_tap,-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only',
+        'test_tag_filters_gpu': "gpu,-no_gpu,-nogpu,-gpu_cupti, \
+                                -no_cuda11,-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only",
+        'test_targets': [
+            '//tensorflow/core/...',
+            '-//tensorflow/core:example_java_proto',
+            '-//tensorflow/core/example:example_protos_closure',
+            '//tensorflow/cc/...',
+            '//tensorflow/c/...',
+            '//tensorflow/python/...',
+            '-//tensorflow/c/eager:c_api_test_gpu',
+            '-//tensorflow/c/eager:c_api_distributed_test',
+            '-//tensorflow/c/eager:c_api_distributed_test_gpu',
+            '-//tensorflow/c/eager:c_api_cluster_test_gpu',
+            '-//tensorflow/c/eager:c_api_remote_function_test_gpu',
+            '-//tensorflow/c/eager:c_api_remote_test_gpu',
+            '-//tensorflow/core/common_runtime:collective_param_resolver_local_test',
+            '-//tensorflow/core/common_runtime:mkl_layout_pass_test',
+            '-//tensorflow/core/kernels/mkl:mkl_fused_ops_test',
+            '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test',
+            '-//tensorflow/core/ir/importexport/tests/roundtrip/...',
+        ],
+        'testopts': "--test_timeout=3600 --test_size_filters=small",
+        'testopts_gpu': "--test_timeout=3600 --test_size_filters=small \
+                         --run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute",
+        'with_xla': True,
+        'checksums': [
+            {'v2.11.0.tar.gz': '99c732b92b1b37fc243a559e02f9aef5671771e272758aa4aec7f34dc92dac48'},
+            {'TensorFlow-2.4.0_dont-use-var-lock.patch':
+             'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'},
+            {'TensorFlow-2.5.0-fix-alias-violation-in-absl.patch':
+             '12454fda3330fb45cd380377e283f04488b40e0b8ae7378e786ddf731a581f75'},
+            {'TensorFlow-2.5.0_fix-crash-on-shutdown.patch':
+             '578c7493221ebd3dc25ca43d63a72cbb28fdf4112b1e2baa7390f25781bd78fd'},
+            {'TensorFlow-2.8.4_exclude-xnnpack-on-ppc.patch':
+             'ebd404ac56cc4ca662483f1f591e62e11749361be57a7ba5f4b2f0d03e829884'},
+            {'TensorFlow-2.8.4_resolve-gcc-symlinks.patch':
+             '43ce9acc6bffff68a31d2263d0064d272999b2e0a2c6546690287cd1c9c90f04'},
+            {'TensorFlow-2.9.1_remove-duplicate-gpu-tests.patch':
+             '6fe50faab28387c622c68dc3fc0cbfb2a51000cd750c1a82f8420b54fcd2509f'},
+            {'TensorFlow-2.11.0_disable-avx512-extensions.patch':
+             'fb8e7694b5d2377cc44e6674ff85a7c50dc725f2f507cbcfda65f129f534b1cc'},
+            {'TensorFlow-2.11.0_fix-eigen-atan-on-PPC.patch':
+             'd9f4779f72ffd2c5f9c5da0a7735328dd25756515edccf603087dba2bf4d1612'},
+            {'TensorFlow-2.11.0_fix-eigen-gemm-on-PPC.patch':
+             '4f18ff0563b0ef8556904db1bb4974f8068bf0d2ee1effb24e0c779eb32517e3'},
+            {'TensorFlow-2.11.0_fix-link-error.patch':
+             '0a2f5c9c5be425f305bdc08f5a5ffce210e66f6ad4120d94ea0209246fc0449f'},
+            {'TensorFlow-2.11.0_remove-libclang-and-io-gcs-deps.patch':
+             '21d5723ab4e9a3be349cf3d57bb55cbe43e28785a8c8b19c52cee9dcc4dcf0de'},
+            {'tensorboard-2.11.1-jupyter.fix':
+             '8a1c3bf40880f8522bcfe6849604bb2084e8c7a4526c035f617795138a405ff7'},
+        ],
+    }),
+]
+
+postinstallcmds = [
+    'patch -p0 -d %(installdir)s < %(builddir)s/TensorFlow/tensorflow-%(version)s/tools/tensorboard-2.11.1-jupyter.fix']
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-gcccoremkl-11.3.0-2022.1.0-CUDA-11.7.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-gcccoremkl-11.3.0-2022.1.0-CUDA-11.7.eb
new file mode 100644
index 0000000000000000000000000000000000000000..17c8e10eb126320520c2d12524f70e20c6297ce8
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0-gcccoremkl-11.3.0-2022.1.0-CUDA-11.7.eb
@@ -0,0 +1,232 @@
+# This file is part of JSC's public easybuild repository (https://github.com/easybuilders/jsc)
+easyblock = 'PythonBundle'
+
+name = 'TensorFlow'
+version = '2.11.0'
+versionsuffix = '-CUDA-%(cudaver)s'
+
+homepage = 'https://www.tensorflow.org/'
+description = "An open-source software library for Machine Intelligence"
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('Bazel', '5.1.1'),
+    ('protobuf', '3.19.4'),
+    # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053
+    ('git', '2.36.0', '-nodocs'),
+    ('pybind11', '2.9.2'),
+    ('UnZip', '6.0'),
+    ('LLVM', '14.0.3'),  # for debugging with llvm-symbolizer, to be removed
+]
+dependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('cuDNN', '8.6.0.163', versionsuffix, SYSTEM),
+    ('NCCL', 'default', versionsuffix),
+    ('Python', '3.10.4'),
+    ('h5py', '3.7.0', '-serial'),
+    ('cURL', '7.83.0'),
+    ('dill', '0.3.6'),
+    ('double-conversion', '3.2.0'),
+    ('flatbuffers', '2.0.7'),
+    ('giflib', '5.2.1'),
+    ('hwloc', '2.7.1'),
+    ('ICU', '71.1'),
+    ('JsonCpp', '1.9.5'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('LMDB', '0.9.29'),
+    ('NASM', '2.15.05'),
+    ('nsync', '1.25.0'),
+    ('SQLite', '3.38.3'),
+    ('protobuf-python', '3.19.4'),
+    ('libpng', '1.6.37'),
+    ('snappy', '1.1.9'),
+    ('zlib', '1.2.12'),
+    ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # required for pythran
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# Dependencies created and updated using findPythonDeps.sh:
+# https://gist.github.com/Flamefire/49426e502cd8983757bd01a08a10ae0d
+exts_list = [
+    ('wrapt', '1.14.1', {
+        'checksums': ['380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d'],
+    }),
+    ('termcolor', '1.1.0', {
+        'checksums': ['1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b'],
+    }),
+    ('tensorflow-estimator', version, {
+        'source_tmpl': 'tensorflow_estimator-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['ea3b64acfff3d9a244f06178c9bdedcbdd3f125b67d0888dba8229498d06468b'],
+    }),
+    ('Werkzeug', '2.2.2', {
+        'checksums': ['7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f'],
+    }),
+    ('tensorboard-plugin-wit', '1.8.1', {
+        'source_tmpl': 'tensorboard_plugin_wit-%(version)s-py3-none-any.whl',
+        'checksums': ['ff26bdd583d155aa951ee3b152b3d0cffae8005dc697f72b44a8e8c2a77a8cbe'],
+    }),
+    ('tensorboard-data-server', '0.6.1', {
+        'source_tmpl': 'tensorboard_data_server-%(version)s-py3-none-any.whl',
+        'checksums': ['809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7'],
+    }),
+    ('Markdown', '3.4.1', {
+        'checksums': ['3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff'],
+    }),
+    ('grpcio', '1.51.1', {
+        'modulename': 'grpc',
+        'preinstallopts': "export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=%(parallel)s && ",
+        'checksums': ['e6dfc2b6567b1c261739b43d9c59d201c1b89e017afd9e684d85aa7a186c9f7a'],
+    }),
+    ('oauthlib', '3.2.2', {
+        'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'],
+    }),
+    ('requests-oauthlib', '1.3.1', {
+        'checksums': ['75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a'],
+    }),
+    ('rsa', '4.9', {
+        'checksums': ['e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21'],
+    }),
+    ('pyasn1-modules', '0.2.8', {
+        'checksums': ['905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e'],
+    }),
+    ('cachetools', '5.2.1', {
+        'checksums': ['5991bc0e08a1319bb618d3195ca5b6bc76646a49c21d55962977197b301cc1fe'],
+    }),
+    ('google-auth', '2.16.0', {
+        'modulename': 'google.auth',
+        'checksums': ['ed7057a101af1146f0554a769930ac9de506aeca4fd5af6543ebe791851a9fbd'],
+    }),
+    ('google-auth-oauthlib', '0.4.6', {
+        'checksums': ['a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a'],
+    }),
+    ('absl-py', '1.4.0', {
+        'modulename': 'absl',
+        'checksums': ['d2c244d01048ba476e7c080bd2c6df5e141d211de80223460d5b3b8a2a58433d'],
+    }),
+    ('tensorboard', '2.11.1', {
+        'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl',
+        'checksums': ['0c7529f3f43691e8cc2ece8e564c2e103c51ade317c6af626d415239b5088018'],
+    }),
+    ('opt-einsum', '3.3.0', {
+        'source_tmpl': 'opt_einsum-%(version)s.tar.gz',
+        'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'],
+    }),
+    ('keras', version, {
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['38c6fff0ea9a8b06a2717736565c92a73c8cd9b1c239e7125ccb188b7848f65e'],
+    }),
+    ('google-pasta', '0.2.0', {
+        'modulename': 'pasta',
+        'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'],
+    }),
+    ('astunparse', '1.6.3', {
+        'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'],
+    }),
+    ('gast', '0.4.0', {
+        'checksums': ['40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1'],
+    }),
+    ('beniget', '0.3.0', {
+        'checksums': ['062c893be9cdf87c3144fb15041cce4d81c67107c1591952cd45fdce789a0ff1'],
+    }),
+    ('pythran', '0.9.11', {
+        'checksums': ['a317f91e2aade9f6550dc3bf40b5caeb45b7e012daf27e2b3e4ad928edb01667'],
+    }),
+    ('portpicker', '1.5.2', {
+        'checksums': ['c55683ad725f5c00a41bc7db0225223e8be024b1fa564d039ed3390e4fd48fb3'],
+    }),
+    ('tblib', '1.7.0', {
+        'checksums': ['059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c'],
+    }),
+    ('astor', '0.8.1', {
+        'checksums': ['6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e'],
+    }),
+    ('gviz-api', '1.10.0', {
+        'source_tmpl': 'gviz_api-%(version)s.tar.gz',
+        'checksums': ['846692dd8cc73224fc31b18e41589bd934e1cc05090c6576af4b4b26c2e71b90'],
+    }),
+    ('tensorboard-plugin-profile', '2.11.1', {
+        'source_tmpl': 'tensorboard_plugin_profile-%(version)s.tar.gz',
+        'checksums': ['7a97c02d502fde98a0336aadcab15b37169744d5bf6966af7d576c7a3f0a89f4'],
+    }),
+    (name, version, {
+        'patches': [
+            '%(name)s-2.4.0_dont-use-var-lock.patch',
+            '%(name)s-2.5.0-fix-alias-violation-in-absl.patch',
+            '%(name)s-2.5.0_fix-crash-on-shutdown.patch',
+            '%(name)s-2.8.4_exclude-xnnpack-on-ppc.patch',
+            '%(name)s-2.8.4_resolve-gcc-symlinks.patch',
+            '%(name)s-2.9.1_remove-duplicate-gpu-tests.patch',
+            '%(name)s-%(version)s_disable-avx512-extensions.patch',
+            '%(name)s-%(version)s_fix-eigen-atan-on-PPC.patch',
+            '%(name)s-%(version)s_fix-eigen-gemm-on-PPC.patch',
+            '%(name)s-%(version)s_fix-link-error.patch',
+            '%(name)s-%(version)s_remove-libclang-and-io-gcs-deps.patch',
+            ('tensorboard-2.11.1-jupyter.fix', 'tools'),
+        ],
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'],
+        'test_script': 'TensorFlow-2.x_mnist-test.py',
+        'test_tag_filters_cpu': '-gpu,-tpu,-no_cuda_on_cpu_tap,-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only',
+        'test_tag_filters_gpu': "gpu,-no_gpu,-nogpu,-gpu_cupti, \
+                                -no_cuda11,-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only",
+        'test_targets': [
+            '//tensorflow/core/...',
+            '-//tensorflow/core:example_java_proto',
+            '-//tensorflow/core/example:example_protos_closure',
+            '//tensorflow/cc/...',
+            '//tensorflow/c/...',
+            '//tensorflow/python/...',
+            '-//tensorflow/c/eager:c_api_test_gpu',
+            '-//tensorflow/c/eager:c_api_distributed_test',
+            '-//tensorflow/c/eager:c_api_distributed_test_gpu',
+            '-//tensorflow/c/eager:c_api_cluster_test_gpu',
+            '-//tensorflow/c/eager:c_api_remote_function_test_gpu',
+            '-//tensorflow/c/eager:c_api_remote_test_gpu',
+            '-//tensorflow/core/common_runtime:collective_param_resolver_local_test',
+            '-//tensorflow/core/common_runtime:mkl_layout_pass_test',
+            '-//tensorflow/core/kernels/mkl:mkl_fused_ops_test',
+            '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test',
+            '-//tensorflow/core/ir/importexport/tests/roundtrip/...',
+        ],
+        'testopts': "--test_timeout=3600 --test_size_filters=small",
+        'testopts_gpu': "--test_timeout=3600 --test_size_filters=small \
+                         --run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute",
+        'with_xla': True,
+        'checksums': [
+            {'v2.11.0.tar.gz': '99c732b92b1b37fc243a559e02f9aef5671771e272758aa4aec7f34dc92dac48'},
+            {'TensorFlow-2.4.0_dont-use-var-lock.patch':
+             'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'},
+            {'TensorFlow-2.5.0-fix-alias-violation-in-absl.patch':
+             '12454fda3330fb45cd380377e283f04488b40e0b8ae7378e786ddf731a581f75'},
+            {'TensorFlow-2.5.0_fix-crash-on-shutdown.patch':
+             '578c7493221ebd3dc25ca43d63a72cbb28fdf4112b1e2baa7390f25781bd78fd'},
+            {'TensorFlow-2.8.4_exclude-xnnpack-on-ppc.patch':
+             'ebd404ac56cc4ca662483f1f591e62e11749361be57a7ba5f4b2f0d03e829884'},
+            {'TensorFlow-2.8.4_resolve-gcc-symlinks.patch':
+             '43ce9acc6bffff68a31d2263d0064d272999b2e0a2c6546690287cd1c9c90f04'},
+            {'TensorFlow-2.9.1_remove-duplicate-gpu-tests.patch':
+             '6fe50faab28387c622c68dc3fc0cbfb2a51000cd750c1a82f8420b54fcd2509f'},
+            {'TensorFlow-2.11.0_disable-avx512-extensions.patch':
+             'fb8e7694b5d2377cc44e6674ff85a7c50dc725f2f507cbcfda65f129f534b1cc'},
+            {'TensorFlow-2.11.0_fix-eigen-atan-on-PPC.patch':
+             'd9f4779f72ffd2c5f9c5da0a7735328dd25756515edccf603087dba2bf4d1612'},
+            {'TensorFlow-2.11.0_fix-eigen-gemm-on-PPC.patch':
+             '4f18ff0563b0ef8556904db1bb4974f8068bf0d2ee1effb24e0c779eb32517e3'},
+            {'TensorFlow-2.11.0_fix-link-error.patch':
+             '0a2f5c9c5be425f305bdc08f5a5ffce210e66f6ad4120d94ea0209246fc0449f'},
+            {'TensorFlow-2.11.0_remove-libclang-and-io-gcs-deps.patch':
+             '21d5723ab4e9a3be349cf3d57bb55cbe43e28785a8c8b19c52cee9dcc4dcf0de'},
+            {'tensorboard-2.11.1-jupyter.fix':
+             '8a1c3bf40880f8522bcfe6849604bb2084e8c7a4526c035f617795138a405ff7'},
+        ],
+    }),
+]
+
+postinstallcmds = [
+    'patch -p0 -d %(installdir)s < %(builddir)s/TensorFlow/tensorflow-%(version)s/tools/tensorboard-2.11.1-jupyter.fix']
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_disable-avx512-extensions.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_disable-avx512-extensions.patch
new file mode 100644
index 0000000000000000000000000000000000000000..491872e541eab3c9ae1bb3ecabc6662be7496a27
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_disable-avx512-extensions.patch
@@ -0,0 +1,19 @@
+(Some of the) AVX512 extensions to Eigen introduced by TensorFlow are broken and return wrong values.
+So disable them for now to keep AVX512 in the other code parts working.
+See https://github.com/tensorflow/tensorflow/issues/49944
+
+Author: Alexander Grund (TU Dresden)
+
+diff --git a/tensorflow/tsl/framework/fixedpoint/FixedPoint.h b/tensorflow/tsl/framework/fixedpoint/FixedPoint.h
+index bb3def15189..85affe89c54 100644
+--- a/tensorflow/tsl/framework/fixedpoint/FixedPoint.h
++++ b/tensorflow/tsl/framework/fixedpoint/FixedPoint.h
+@@ -20,7 +20,7 @@ limitations under the License.
+ #include "tensorflow/tsl/framework/fixedpoint_types.h"
+ 
+ // Use optimized implementations whenever available
+-#if defined(EIGEN_VECTORIZE_AVX512DQ) || defined(EIGEN_VECTORIZE_AVX512BW)
++#if 0
+ #include "tensorflow/tsl/framework/fixedpoint/PacketMathAVX512.h"
+ #include "tensorflow/tsl/framework/fixedpoint/TypeCastingAVX512.h"
+ 
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-atan-on-PPC.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-atan-on-PPC.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3d57bed62cbb8e26988c603947ed0f4aa7b56c2a
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-atan-on-PPC.patch
@@ -0,0 +1,38 @@
+Fix compilation failure on PowerPC:
+external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/src/Core/GenericPacketMath.h:862:67: error: no matching function for call to 'atan(const __vector(2) double&)'
+
+Add the upstream commit https://gitlab.com/libeigen/eigen/-/commit/886aad136111eeeb7604e1d17f62efcc4d824568
+
+Author: Alexander Grund (TU Dresden)
+
+diff --git a/third_party/eigen3/disable-atan-on-ppc.patch b/third_party/eigen3/disable-atan-on-ppc.patch
+new file mode 100644
+index 00000000000..4614799b66a
+--- /dev/null
++++ b/third_party/eigen3/disable-atan-on-ppc.patch
+@@ -0,0 +1,13 @@
++diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h
++index 37398de15..d9ddb5e35 100644
++--- a/Eigen/src/Core/arch/AltiVec/PacketMath.h
+++++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h
++@@ -2708,7 +2708,7 @@ template<> struct packet_traits<double> : default_packet_traits
++     HasAbs  = 1,
++     HasSin  = 0,
++     HasCos  = 0,
++-    HasATan = 1,
+++    HasATan = 0,
++     HasLog  = 0,
++     HasExp  = 1,
++     HasSqrt = 1,
+diff --git a/third_party/eigen3/workspace.bzl b/third_party/eigen3/workspace.bzl
+index 91f471c3def..9fa96a38310 100644
+--- a/third_party/eigen3/workspace.bzl
++++ b/third_party/eigen3/workspace.bzl
+@@ -14,6 +14,7 @@ def repo():
+     tf_http_archive(
+         name = "eigen_archive",
+         build_file = "//third_party/eigen3:eigen_archive.BUILD",
++        patch_file = ["//third_party/eigen3:disable-atan-on-ppc.patch"],
+         sha256 = EIGEN_SHA256,
+         strip_prefix = "eigen-{commit}".format(commit = EIGEN_COMMIT),
+         urls = tf_mirror_urls("https://gitlab.com/libeigen/eigen/-/archive/{commit}/eigen-{commit}.tar.gz".format(commit = EIGEN_COMMIT)),
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-gemm-on-PPC.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-gemm-on-PPC.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1cbf1a35a039c0bbd6c1fd1a334a53db5b712d68
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-eigen-gemm-on-PPC.patch
@@ -0,0 +1,72 @@
+Fix a SIGSEGV in e.g. //tensorflow/core/grappler/optimizers:arithmetic_optimizer_test_cpu
+See https://gitlab.com/libeigen/eigen/-/issues/2608
+
+fix-ppc-gemm.patch based on https://gitlab.com/libeigen/eigen/-/merge_requests/1208
+
+Author: Alexander Grund (TU Dresden)
+
+diff --git a/third_party/eigen3/fix-ppc-gemm.patch b/third_party/eigen3/fix-ppc-gemm.patch
+new file mode 100644
+index 00000000000..c674c4b590e
+--- /dev/null
++++ b/third_party/eigen3/fix-ppc-gemm.patch
+@@ -0,0 +1,46 @@
++diff --git a/Eigen/src/Core/arch/AltiVec/MatrixProduct.h b/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
++index 3b3b558..44f9e16 100644
++--- a/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
+++++ b/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
++@@ -1760,7 +1760,7 @@ EIGEN_ALWAYS_INLINE void gemm_cols(
++   gemm_cols<Scalar, Packet, DataMapper, N, accCols>(res, blockA, blockB, depth, strideA, offsetA, strideB, offsetB, col, rows, remaining_rows, pAlpha, pMask);
++ 
++ template<typename Scalar, typename Packet, typename DataMapper, const Index accCols>
++-EIGEN_STRONG_INLINE void gemm_extra_cols(
+++EIGEN_ALWAYS_INLINE void gemm_extra_cols(
++   const DataMapper& res,
++   const Scalar* blockA,
++   const Scalar* blockB,
++@@ -2194,7 +2194,7 @@ EIGEN_ALWAYS_INLINE void gemm_complex_cols(
++   gemm_complex_cols<Scalar, Packet, Packetc, DataMapper, N, accCols, ConjugateLhs, ConjugateRhs, LhsIsReal, RhsIsReal>(res, blockA, blockB, depth, strideA, offsetA, strideB, offsetB, col, rows, remaining_rows, pAlphaReal, pAlphaImag, pMask);
++ 
++ template<typename Scalar, typename Packet, typename Packetc, typename DataMapper, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
++-EIGEN_STRONG_INLINE void gemm_complex_extra_cols(
+++EIGEN_ALWAYS_INLINE void gemm_complex_extra_cols(
++   const DataMapper& res,
++   const Scalar* blockA,
++   const Scalar* blockB,
++diff --git a/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h b/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h
++index 28868ca..1ac6629 100644
++--- a/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h
+++++ b/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h
++@@ -30,8 +30,8 @@ EIGEN_ALWAYS_INLINE void gemm_extra_row(
++   const Packet& pAlpha,
++   const Packet& pMask);
++ 
++-template<typename Scalar, typename Packet, typename DataMapper, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
++-EIGEN_STRONG_INLINE void gemm_extra_cols(
+++template<typename Scalar, typename Packet, typename DataMapper, const Index accCols>
+++EIGEN_ALWAYS_INLINE void gemm_extra_cols(
++   const DataMapper& res,
++   const Scalar* blockA,
++   const Scalar* blockB,
++@@ -67,7 +67,7 @@ EIGEN_ALWAYS_INLINE void gemm_complex_extra_row(
++   const Packet& pMask);
++ 
++ template<typename Scalar, typename Packet, typename Packetc, typename DataMapper, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
++-EIGEN_STRONG_INLINE void gemm_complex_extra_cols(
+++EIGEN_ALWAYS_INLINE void gemm_complex_extra_cols(
++   const DataMapper& res,
++   const Scalar* blockA,
++   const Scalar* blockB,
+diff --git a/third_party/eigen3/workspace.bzl b/third_party/eigen3/workspace.bzl
+index 6c8744aeec4..2a2a7b474c9 100644
+--- a/third_party/eigen3/workspace.bzl
++++ b/third_party/eigen3/workspace.bzl
+@@ -14,7 +14,7 @@ def repo():
+     tf_http_archive(
+         name = "eigen_archive",
+         build_file = "//third_party/eigen3:eigen_archive.BUILD",
+-        patch_file = ["//third_party/eigen3:disable-atan-on-ppc.patch"],
++        patch_file = ["//third_party/eigen3:disable-atan-on-ppc.patch", "//third_party/eigen3:fix-ppc-gemm.patch"],
+         sha256 = EIGEN_SHA256,
+         strip_prefix = "eigen-{commit}".format(commit = EIGEN_COMMIT),
+         urls = tf_mirror_urls("https://gitlab.com/libeigen/eigen/-/archive/{commit}/eigen-{commit}.tar.gz".format(commit = EIGEN_COMMIT)),
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-link-error.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-link-error.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a492897700d35a01a0f87f041bb637992dce5992
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_fix-link-error.patch
@@ -0,0 +1,39 @@
+Fix errors during build such as
+Traceback (most recent call last):
+  File "/bazel-root/21e00dc5c04b924b70ed7bedd0c3533e/execroot/org_tensorflow/bazel-out/ppc-opt/bin/tensorflow/create_tensorflow.python_api_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/pywrap_tensorflow.py", line 62, in <module>
+    from tensorflow.python._pywrap_tensorflow_internal import *
+ImportError: /bazel-root/21e00dc5c04b924b70ed7bedd0c3533e/execroot/org_tensorflow/bazel-out/ppc-opt/bin/tensorflow/create_tensorflow.python_api_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: LLVMInitializePowerPCAsmParser
+
+See https://github.com/tensorflow/tensorflow/pull/59326
+
+Author: Alexander Grund (TU Dresden)
+
+diff --git a/tensorflow/compiler/xla/mlir/transforms/runtime/BUILD b/tensorflow/compiler/xla/mlir/transforms/runtime/BUILD
+index 587d4b184c0..5ff10743cf8 100644
+--- a/tensorflow/compiler/xla/mlir/transforms/runtime/BUILD
++++ b/tensorflow/compiler/xla/mlir/transforms/runtime/BUILD
+@@ -250,7 +250,23 @@ cc_library(
+         "@llvm-project//mlir:Parser",
+         "@llvm-project//mlir:Pass",
+         "@llvm-project//mlir:ToLLVMIRTranslation",
+-    ],
++    ] + select({
++        "//tensorflow:arm_any": [
++            "@llvm-project//llvm:AArch64AsmParser",
++        ],
++        "//tensorflow:linux_ppc64le": [
++            "@llvm-project//llvm:PowerPCAsmParser",
++        ],
++        "//tensorflow:macos_arm64": [
++            "@llvm-project//llvm:AArch64AsmParser",
++        ],
++        "//tensorflow:linux_s390x": [
++            "@llvm-project//llvm:SystemZAsmParser",
++        ],
++        "//conditions:default": [
++            "@llvm-project//llvm:X86AsmParser",
++        ],
++    }),
+ )
+ 
+ cc_library(
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_remove-libclang-and-io-gcs-deps.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_remove-libclang-and-io-gcs-deps.patch
new file mode 100644
index 0000000000000000000000000000000000000000..77b9f524938d5e6773ff3787edaf8b0694903e41
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.11.0_remove-libclang-and-io-gcs-deps.patch
@@ -0,0 +1,38 @@
+This combines two patches from TensorFlow 2.7.1.
+
+tensorflow-io-gcs-filesystem is not available as a binary for all architectures and
+building it requires TensorFlow to be installed, i.e. there is a cyclic dependency.
+As it is not actually required (but optional) remove it from `REQUIRED_PACKAGES`.
+See https://github.com/tensorflow/tensorflow/issues/56636
+
+libclang was introduced in
+https://github.com/tensorflow/tensorflow/commit/c211472000ff57bac7fcec9b0465cf73b37bf135
+> This is in preparation to open-source TF's TFRT backend.
+> TFRT generates code using libclang python bindings as part of the build.
+Hence it is not currently used and as it is not (easily) available for all architectures
+simply remove it.
+
+Patch added by Simon Branford (University of Birmingham)
+Updated by Alexander Grund (TU Dresden)
+
+diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py
+index 74a1962c334..e8f6eabe4a6 100644
+--- a/tensorflow/tools/pip_package/setup.py
++++ b/tensorflow/tools/pip_package/setup.py
+@@ -88,7 +88,6 @@ REQUIRED_PACKAGES = [
+     'gast >= 0.2.1, <= 0.4.0',
+     'google_pasta >= 0.1.1',
+     'h5py >= 2.9.0',
+-    'libclang >= 13.0.0',
+     'numpy >= 1.20',
+     'opt_einsum >= 2.3.2',
+     'packaging',
+@@ -105,8 +104,6 @@ REQUIRED_PACKAGES = [
+     'termcolor >= 1.1.0',
+     'typing_extensions >= 3.6.6',
+     'wrapt >= 1.11.0',
+-    'tensorflow-io-gcs-filesystem >= 0.23.1;platform_machine!="arm64" or ' +
+-    'platform_system!="Darwin"',
+     # grpcio does not build correctly on big-endian machines due to lack of
+     # BoringSSL support.
+     # See https://github.com/tensorflow/tensorflow/issues/17882.
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.4.0_dont-use-var-lock.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.4.0_dont-use-var-lock.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e33d0028a40a53df6315e7094ec2dce79256e5ce
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.4.0_dont-use-var-lock.patch
@@ -0,0 +1,37 @@
+diff --git a/tensorflow/tools/ci_build/gpu_build/parallel_gpu_execute.sh b/tensorflow/tools/ci_build/gpu_build/parallel_gpu_execute.sh
+index ee70f2f608b..ab5cbe7d7b5 100755
+--- a/tensorflow/tools/ci_build/gpu_build/parallel_gpu_execute.sh
++++ b/tensorflow/tools/ci_build/gpu_build/parallel_gpu_execute.sh
+@@ -53,7 +53,7 @@ TEST_BINARY="$(rlocation $TEST_WORKSPACE/${1#./})"
+ shift
+ # *******************************************************************
+ 
+-mkdir -p /var/lock
++mkdir -p /tmp/tf-test-lock
+ # Try to acquire any of the TF_GPU_COUNT * TF_TESTS_PER_GPU
+ # slots to run a test at.
+ #
+@@ -61,7 +61,7 @@ mkdir -p /var/lock
+ # So, we iterate over TF_TESTS_PER_GPU first.
+ for j in `seq 0 $((TF_TESTS_PER_GPU-1))`; do
+   for i in `seq 0 $((TF_GPU_COUNT-1))`; do
+-    exec {lock_fd}>/var/lock/gpulock${i}_${j} || exit 1
++    exec {lock_fd}>/tmp/tf-test-lock/gpulock${i}_${j} || exit 1
+     if flock -n "$lock_fd";
+     then
+       (
+@@ -70,6 +70,7 @@ for j in `seq 0 $((TF_TESTS_PER_GPU-1))`; do
+         export CUDA_VISIBLE_DEVICES=$i
+         export HIP_VISIBLE_DEVICES=$i
+         echo "Running test $TEST_BINARY $* on GPU $CUDA_VISIBLE_DEVICES"
++        set +e
+         "$TEST_BINARY" $@
+       )
+       return_code=$?
+@@ -79,5 +80,5 @@ for j in `seq 0 $((TF_TESTS_PER_GPU-1))`; do
+   done
+ done
+ 
+-echo "Cannot find a free GPU to run the test $* on, exiting with failure..."
++echo "Cannot find a free GPU to run the test $TEST_BINARY $* on, exiting with failure..."
+ exit 1
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0-fix-alias-violation-in-absl.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0-fix-alias-violation-in-absl.patch
new file mode 100644
index 0000000000000000000000000000000000000000..427f7555ecbf9a8bb785cbf5678598e05f548a89
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0-fix-alias-violation-in-absl.patch
@@ -0,0 +1,26 @@
+The behavior relied on by Abseil is unsupported by GCC and leads to misoptimizations.
+See https://github.com/tensorflow/tensorflow/issues/47179
+
+Author: Alexander Grund
+
+diff --git a/third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch b/third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch
+index 6301119ab2c..0b8b4838726 100644
+--- a/third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch
++++ b/third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch
+@@ -1,3 +1,16 @@
++diff --git a/absl/container/internal/container_memory.h b/absl/container/internal/container_memory.h
++index d24b0f8..f8847b5 100644
++--- a/absl/container/internal/container_memory.h
+++++ b/absl/container/internal/container_memory.h
++@@ -338,7 +338,7 @@ struct map_slot_policy {
++   // If pair<const K, V> and pair<K, V> are layout-compatible, we can accept one
++   // or the other via slot_type. We are also free to access the key via
++   // slot_type::key in this case.
++-  using kMutableKeys = memory_internal::IsLayoutCompatible<K, V>;
+++  using kMutableKeys = std::false_type;
++
++  public:
++   static value_type& element(slot_type* slot) { return slot->value; }
+ diff --git a/absl/container/internal/compressed_tuple.h b/absl/container/internal/compressed_tuple.h
+ index 4bfe92f..01db713 100644
+ --- a/absl/container/internal/compressed_tuple.h
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0_fix-arm-vector-intrinsics.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0_fix-arm-vector-intrinsics.patch
new file mode 100644
index 0000000000000000000000000000000000000000..eaed0decf234248767ce6cf0270aec088384b41f
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.5.0_fix-arm-vector-intrinsics.patch
@@ -0,0 +1,42 @@
+Fix compile error on ARM:
+> ./tensorflow/lite/kernels/internal/optimized/depthwiseconv_3x3_filter_common.h:132:58: error: cannot convert 'int32x2_t' to 'int8x8_t'
+
+From https://github.com/tensorflow/tensorflow/pull/53782
+
+From 4463f25d1622d162f870ff685da20f2c6df5bc6a Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 15 Jan 2022 21:06:27 +0100
+Subject: [PATCH] Fix casting in vdotq_four_lane_s32() in TFLite
+
+When building with GCC and dotprod ARM extension enabled,
+vreinterpret_s32_s8() casts int8x8_t to int32x2_t. However, third
+argument of vdotq_lane_s32() expects parameter of type int8x8_t.
+---
+ .../optimized/depthwiseconv_3x3_filter_common.h        | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/tensorflow/lite/kernels/internal/optimized/depthwiseconv_3x3_filter_common.h b/tensorflow/lite/kernels/internal/optimized/depthwiseconv_3x3_filter_common.h
+index 916edd561ff32..c519a81bc864d 100644
+--- a/tensorflow/lite/kernels/internal/optimized/depthwiseconv_3x3_filter_common.h
++++ b/tensorflow/lite/kernels/internal/optimized/depthwiseconv_3x3_filter_common.h
+@@ -129,16 +129,14 @@ inline int32x4_t vdotq_four_lane_s32(int32x4_t acc, int8x16_t lhs,
+                                      int8x16_t rhs, const int lane) {
+   switch (lane) {
+     case 0:
+-      return vdotq_lane_s32(acc, lhs, vreinterpret_s32_s8(vget_low_s8(rhs)), 0);
++      return vdotq_lane_s32(acc, lhs, vget_low_s8(rhs), 0);
+     case 1:
+-      return vdotq_lane_s32(acc, lhs, vreinterpret_s32_s8(vget_low_s8(rhs)), 1);
++      return vdotq_lane_s32(acc, lhs, vget_low_s8(rhs), 1);
+     case 2:
+-      return vdotq_lane_s32(acc, lhs, vreinterpret_s32_s8(vget_high_s8(rhs)),
+-                            0);
++      return vdotq_lane_s32(acc, lhs, vget_high_s8(rhs), 0);
+     case 3:
+     default:
+-      return vdotq_lane_s32(acc, lhs, vreinterpret_s32_s8(vget_high_s8(rhs)),
+-                            1);
++      return vdotq_lane_s32(acc, lhs, vget_high_s8(rhs), 1);
+   }
+ }
+ 
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_exclude-xnnpack-on-ppc.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_exclude-xnnpack-on-ppc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1a0938252be1b632f8e27e12e55e712fec868e65
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_exclude-xnnpack-on-ppc.patch
@@ -0,0 +1,18 @@
+XNNPACK is not supported on PowerPC so disable it by default.
+See https://github.com/tensorflow/tensorflow/issues/58768
+
+Author: Alexander Grund (TU Dresden)
+
+diff --git a/tensorflow/lite/BUILD b/tensorflow/lite/BUILD
+index 198f949b341..d15dcf9a80d 100644
+--- a/tensorflow/lite/BUILD
++++ b/tensorflow/lite/BUILD
+@@ -709,6 +709,8 @@ cc_library(
+     deps = select({
+         "//tensorflow:macos": [],
+         "//tensorflow:fuchsia": [],
++        # XNNPACK is not supported on PPC
++        "//tensorflow:linux_ppc64le": [],
+         "//conditions:default": [":tflite_with_xnnpack_enabled"],
+     }),
+ )
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_resolve-gcc-symlinks.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_resolve-gcc-symlinks.patch
new file mode 100644
index 0000000000000000000000000000000000000000..42cdce7c9fd0cba69a35d5a4a4bae81d629c3499
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.8.4_resolve-gcc-symlinks.patch
@@ -0,0 +1,28 @@
+Fix for "undeclared inclusion(s) in rule" errors when the installation directory
+for GCC is hosted in a path that is a symlink to another path.
+
+From https://github.com/tensorflow/tensorflow/pull/56360
+
+From b3a8fdbcb79e723f8d62f86bddcfdfb73fe76291 Mon Sep 17 00:00:00 2001
+From: Jinzhe Zeng <jinzhe.zeng@rutgers.edu>
+Date: Sat, 4 Jun 2022 19:06:58 -0400
+Subject: [PATCH] resolve gcc_host_compiler_path in a symlink directory
+
+Resolves a missing dependency declarations error, when gcc_host_compiler_path is in a symlink directory resolving to other directories.
+---
+ configure.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.py b/configure.py
+index bf338bdda2297..77af09a22a05d 100644
+--- a/configure.py
++++ b/configure.py
+@@ -619,7 +619,7 @@ def prompt_loop_or_load_from_env(environ_cp,
+                          'Assuming to be a scripting mistake.' %
+                          (var_name, n_ask_attempts))
+ 
+-  if resolve_symlinks and os.path.islink(val):
++  if resolve_symlinks:
+     val = os.path.realpath(val)
+   environ_cp[var_name] = val
+   return val
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_fix-protobuf-include-def.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_fix-protobuf-include-def.patch
new file mode 100644
index 0000000000000000000000000000000000000000..790492e7152465e8101f019ba66f3de7f058438d
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_fix-protobuf-include-def.patch
@@ -0,0 +1,14 @@
+Fix an issue where google/protobuf/port_def.inc is not found.
+
+diff -ruN tensorflow-2.9.1_old/third_party/systemlibs/protobuf.BUILD tensorflow-2.9.1/third_party/systemlibs/protobuf.BUILD
+--- tensorflow-2.9.1_old/third_party/systemlibs/protobuf.BUILD	2022-11-10 16:57:13.649126750 +0100
++++ tensorflow-2.9.1/third_party/systemlibs/protobuf.BUILD	2022-11-10 17:00:42.548576599 +0100
+@@ -43,4 +43,6 @@
+         ],
+     ),
+     "wrappers": ("google/protobuf/wrappers.proto", []),
++    "port_def": ("google/protobuf/port_def.inc", []),
++    "coded_stream": ("google/protobuf/io/coded_stream.h", []),
+ }
+
+ RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()]
\ No newline at end of file
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_remove-duplicate-gpu-tests.patch b/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_remove-duplicate-gpu-tests.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7701d85e6126d2d6c66c97a2a3a23d1c1f176acd
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.9.1_remove-duplicate-gpu-tests.patch
@@ -0,0 +1,55 @@
+TensorFlow adds some GPU tests twice increasing the runtime of the test suite.
+This filters out the test part meant for CPU.
+
+See https://github.com/tensorflow/tensorflow/issues/47081
+From https://github.com/tensorflow/tensorflow/pull/59129
+
+Author: Alexander Grund (TU Dresden)
+---
+ tensorflow/tensorflow.bzl | 33 +++++++++++++++++----------------
+ 1 file changed, 17 insertions(+), 16 deletions(-)
+
+diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl
+index 649c8e22dcc95..d3fc0e3221497 100644
+--- a/tensorflow/tensorflow.bzl
++++ b/tensorflow/tensorflow.bzl
+@@ -1461,22 +1461,23 @@ def tf_gpu_cc_test(
+         linkopts = [],
+         **kwargs):
+     targets = []
+-    tf_cc_test(
+-        name = name,
+-        size = size,
+-        srcs = srcs,
+-        args = args,
+-        data = data,
+-        extra_copts = extra_copts + if_cuda(["-DNV_CUDNN_DISABLE_EXCEPTION"]),
+-        kernels = kernels,
+-        linkopts = linkopts,
+-        linkstatic = linkstatic,
+-        suffix = "_cpu",
+-        tags = tags,
+-        deps = deps,
+-        **kwargs
+-    )
+-    targets.append(name + "_cpu")
++    if 'gpu' not in tags:
++        tf_cc_test(
++            name = name,
++            size = size,
++            srcs = srcs,
++            args = args,
++            data = data,
++            extra_copts = extra_copts + if_cuda(["-DNV_CUDNN_DISABLE_EXCEPTION"]),
++            kernels = kernels,
++            linkopts = linkopts,
++            linkstatic = linkstatic,
++            suffix = "_cpu",
++            tags = tags,
++            deps = deps,
++            **kwargs
++        )
++        targets.append(name + "_cpu")
+     tf_cc_test(
+         name = name,
+         size = size,
diff --git a/Golden_Repo/t/TensorFlow/tensorboard-2.11.1-jupyter.fix b/Golden_Repo/t/TensorFlow/tensorboard-2.11.1-jupyter.fix
new file mode 100644
index 0000000000000000000000000000000000000000..e3d809144a593a1dfea65cc53b6fb61c734b7c40
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/tensorboard-2.11.1-jupyter.fix
@@ -0,0 +1,93 @@
+--- lib/python3.10/site-packages/tensorboard/notebook.py.orig	2022-04-04 15:13:24.242666542 +0200
++++ lib/python3.10/site-packages/tensorboard/notebook.py	2022-04-04 15:22:16.791830780 +0200
+@@ -34,6 +34,7 @@
+ # details).
+ _CONTEXT_COLAB = "_CONTEXT_COLAB"
+ _CONTEXT_IPYTHON = "_CONTEXT_IPYTHON"
++_CONTEXT_JUPYTERHUB = "_CONTEXT_JUPYTERHUB"
+ _CONTEXT_NONE = "_CONTEXT_NONE"
+ 
+ 
+@@ -70,11 +71,27 @@
+     else:
+         ipython = IPython.get_ipython()
+         if ipython is not None and ipython.has_trait("kernel"):
++            if os.environ.get("JUPYTERHUB_SERVICE_PREFIX") is not None:
++                return _CONTEXT_JUPYTERHUB
+             return _CONTEXT_IPYTHON
+ 
+     # Otherwise, we're not in a known notebook context.
+     return _CONTEXT_NONE
+ 
++def _prefix_jupyterhub(port):
++    prefix = os.path.join(os.environ["JUPYTERHUB_SERVICE_PREFIX"], 'proxy/absolute')
++    return "%s/%d/" % (prefix, port)
++
++
++def _patch_args_jupyterhub(parsed_args):
++    if "--port" in parsed_args:
++        arg_idx = parsed_args.index("--port")
++        port = int(parsed_args[arg_idx+1])
++    else:
++        port = 6006
++        parsed_args += ["--port", str(port)]
++    return parsed_args + ["--path_prefix", _prefix_jupyterhub(port)]
++
+ 
+ def load_ipython_extension(ipython):
+     """Deprecated: use `%load_ext tensorboard` instead.
+@@ -149,6 +166,9 @@
+             handle.update(IPython.display.Pretty(message))
+ 
+     parsed_args = shlex.split(args_string, comments=True, posix=True)
++    if context == _CONTEXT_JUPYTERHUB:
++        parsed_args = _patch_args_jupyterhub(parsed_args)
++
+     start_result = manager.start(parsed_args)
+ 
+     if isinstance(start_result, manager.StartLaunched):
+@@ -305,6 +325,7 @@
+     fn = {
+         _CONTEXT_COLAB: _display_colab,
+         _CONTEXT_IPYTHON: _display_ipython,
++        _CONTEXT_JUPYTERHUB: _display_jupyterhub,
+         _CONTEXT_NONE: _display_cli,
+     }[_get_context()]
+     return fn(port=port, height=height, display_handle=display_handle)
+@@ -401,6 +422,36 @@
+     for (k, v) in replacements:
+         shell = shell.replace(k, v)
+     iframe = IPython.display.HTML(shell)
++    if display_handle:
++        display_handle.update(iframe)
++    else:
++        IPython.display.display(iframe)
++
++
++def _display_jupyterhub(port, height, display_handle):
++    import IPython.display
++
++    frame_id = "tensorboard-frame-{:08x}".format(random.getrandbits(64))
++    shell = """
++      <iframe id="%HTML_ID%" width="100%" height="%HEIGHT%" frameborder="0">
++      </iframe>
++      <script>
++        (function() {
++          const frame = document.getElementById(%JSON_ID%);
++          const url = new URL("%PREFIX%", window.location);
++          frame.src = url;
++        })();
++      </script>
++  """
++    replacements = [
++        ("%HTML_ID%", html.escape(frame_id, quote=True)),
++        ("%JSON_ID%", json.dumps(frame_id)),
++        ("%PREFIX%", _prefix_jupyterhub(port)),
++        ("%HEIGHT%", "%d" % height),
++    ]
++    for (k, v) in replacements:
++        shell = shell.replace(k, v)
++    iframe = IPython.display.HTML(shell)
+     if display_handle:
+         display_handle.update(iframe)
+     else:
diff --git a/Golden_Repo/t/tensorboard/tensorboard-2.10.0-foss-2022a.eb b/Golden_Repo/t/tensorboard/tensorboard-2.11.2-foss-2022a.eb
similarity index 95%
rename from Golden_Repo/t/tensorboard/tensorboard-2.10.0-foss-2022a.eb
rename to Golden_Repo/t/tensorboard/tensorboard-2.11.2-foss-2022a.eb
index c4b18c5c9d02cb6fb8fb9f13e37551377fd804cc..ae0a7471ccd66ca691a50f1ff7bbb5f0e12097db 100644
--- a/Golden_Repo/t/tensorboard/tensorboard-2.10.0-foss-2022a.eb
+++ b/Golden_Repo/t/tensorboard/tensorboard-2.11.2-foss-2022a.eb
@@ -1,7 +1,7 @@
 easyblock = 'PythonBundle'
 
 name = 'tensorboard'
-version = '2.10.0'
+version = '2.11.2'
 
 homepage = 'https://github.com/tensorflow/tensorboard'
 description = """TensorBoard is a suite of web applications for inspecting and understanding your TensorFlow runs
@@ -63,7 +63,7 @@ exts_list = [
     }),
     (name, version, {
         'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl',
-        'checksums': ['76c91a5e8959cd2208cc32cb17a0cb002badabb66a06ac2af02a7810f49a59e3'],
+        'checksums': ['cbaa2210c375f3af1509f8571360a19ccc3ded1d9641533414874b5deca47e89'],
     }),
 ]
 
diff --git a/Golden_Repo/u/uftp/uftp-1.5.0.eb b/Golden_Repo/u/uftp/uftp-1.6.0.eb
similarity index 62%
rename from Golden_Repo/u/uftp/uftp-1.5.0.eb
rename to Golden_Repo/u/uftp/uftp-1.6.0.eb
index 91b9c31e1255108d531a5ffafaed507ec4c7841f..439c887f61b278a68b88db5f913db5743ef634d7 100644
--- a/Golden_Repo/u/uftp/uftp-1.5.0.eb
+++ b/Golden_Repo/u/uftp/uftp-1.6.0.eb
@@ -1,9 +1,9 @@
 easyblock = 'Tarball'
 
 name = 'uftp'
-version = '1.5.0'
+version = '1.6.0'
 
-homepage = 'https://unicore-dev.zam.kfa-juelich.de/documentation/uftpclient-%(version)s/uftpclient-manual.html'
+homepage = 'https://uftp-docs.readthedocs.io/en/latest/user-docs/uftp-client/'
 description = """The UFTP standalone client provides high-performance file transfer."""
 
 toolchain = SYSTEM
@@ -11,7 +11,7 @@ toolchain = SYSTEM
 source_urls = [
     'https://master.dl.sourceforge.net/project/unicore/Clients/UFTP-Client/%(version)s/']
 sources = ['uftp-client-%(version)s-all.zip']
-checksums = ['05e405d13156a76a839997792053f80e6f8f545f8c4516a68968eea6845fe659']
+checksums = ['09cfc39cfe1162def95fc6066125d28e594cecdaedc016a46b91dd7462d6fa32']
 
 dependencies = [
     ('Java', '11'),
@@ -22,8 +22,8 @@ postinstallcmds = [
 ]
 
 modextravars = {
-    'UFTP_SHARE_URL': 'https://uftp.fz-juelich.de:7112/UFTP_Auth/rest/share/JUDAC',
-    'UFTP_JUDAC': 'https://uftp.fz-juelich.de:7112/UFTP_Auth/rest/auth/JUDAC:'
+    'UFTP_SHARE_URL': 'https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/share/JUDAC',
+    'UFTP_JUDAC': 'https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/auth/JUDAC:'
 }
 
 sanity_check_paths = {
diff --git a/Golden_Repo/u/uftp/uftp-1.6.1.eb b/Golden_Repo/u/uftp/uftp-1.6.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..25e092181371a3d23bd850b9a53e86dd41ddbe7e
--- /dev/null
+++ b/Golden_Repo/u/uftp/uftp-1.6.1.eb
@@ -0,0 +1,33 @@
+easyblock = 'Tarball'
+
+name = 'uftp'
+version = '1.6.1'
+
+homepage = 'https://uftp-docs.readthedocs.io/en/latest/user-docs/uftp-client/'
+description = """The UFTP standalone client provides high-performance file transfer."""
+
+toolchain = SYSTEM
+
+source_urls = [
+    'https://master.dl.sourceforge.net/project/unicore/Clients/UFTP-Client/%(version)s/']
+sources = ['uftp-client-%(version)s-all.zip']
+checksums = ['0ef450c1c3db7d18a8bb35701b24f4d2549b04ce353dbe99ddbf02f522f82bc3']
+dependencies = [
+    ('Java', '11'),
+]
+
+postinstallcmds = [
+    'chmod +x %(installdir)s/bin/uftp',
+]
+
+modextravars = {
+    'UFTP_SHARE_URL': 'https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/share/JUDAC',
+    'UFTP_JUDAC': 'https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/auth/JUDAC:'
+}
+
+sanity_check_paths = {
+    'files': ['bin/uftp'],
+    'dirs': ['bin'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch b/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f4cf63549263fd9462ccfefa556b6508369e9a25
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch
@@ -0,0 +1,29 @@
+Fix hard coded compiler, flags and tcl lib version for plugins
+
+Ake Sandgren, 20190823
+--- plugins/Make-arch.orig	2016-10-21 23:34:39.000000000 +0200
++++ plugins/Make-arch	2019-08-23 10:45:51.403545042 +0200
+@@ -337,17 +337,17 @@
+ 	"ARCH = LINUXAMD64" \
+ 	"COPTO = -fPIC -m64 -o " \
+ 	"LOPTO = -fPIC -m64 -lstdc++ -o " \
+-	"CC = gcc" \
+-	"CXX = g++" \
++	"CC = $(CC)" \
++	"CXX = $(CXX)" \
+ 	"DEF = -D" \
+-	"CCFLAGS = -m64 -O2 -fPIC -Wall" \
+-	"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
+-	"TCLLDFLAGS = -ltcl8.5 -ldl" \
++	"CCFLAGS = $(CFLAGS)" \
++	"CXXFLAGS = $(CXXFLAGS)" \
++	"TCLLDFLAGS = $(TCLLDFLAGS)" \
+ 	"NETCDFLDFLAGS = -lnetcdf " \
+ 	"AR = ar" \
+ 	"NM = nm -p" \
+ 	"RANLIB = touch" \
+-	"SHLD = gcc -shared"
++	"SHLD = $(CC) -shared"
+ 
+ LINUXCARMA:
+ 	$(MAKE) dynlibs staticlibs bins \
diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch b/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9011384eff52af2075f6d7977d0b0de7e5bad400
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch
@@ -0,0 +1,15 @@
+Increase number of atoms allowed per residues as per stride README from VMD
+
+Ã…ke Sandgren, 2017-05-02
+diff -ru vmd-1.9.3.orig/lib/stride/stride.h vmd-1.9.3/lib/stride/stride.h
+--- vmd-1.9.3.orig/lib/stride/stride.h	2017-05-02 13:47:26.484463970 +0200
++++ vmd-1.9.3/lib/stride/stride.h	2017-05-02 13:47:43.748279797 +0200
+@@ -40,7 +40,7 @@
+ #define MAX_BOND                  100
+ #define MAX_ASSIGN                500
+ #define MAX_INFO                  1000
+-#define MAX_AT_IN_RES             75
++#define MAX_AT_IN_RES             100
+ #define MAX_AT_IN_HETERORES       200
+ #define MAXRESDNR                 6
+ #define MAXRESACC                 6 
diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch b/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..036430db8ffe77867d6e4ebf20fc57e422ff95f3
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch
@@ -0,0 +1,37 @@
+Make stride use CC, CFLAGS and LDFLAGS from EB.
+
+Ã…ke Sandgren, 2017-05-02
+diff -ru vmd-1.9.3.orig/lib/stride/Makefile vmd-1.9.3/lib/stride/Makefile
+--- vmd-1.9.3.orig/lib/stride/Makefile	2003-04-08 14:03:14.000000000 +0200
++++ vmd-1.9.3/lib/stride/Makefile	2017-05-02 13:46:01.973365383 +0200
+@@ -1,13 +1,14 @@
+ #FLAGS = -lm -L/usr/pub/lib -lefence -o
+ #CC = cc -O2 -fullwarn -TENV:large_GOT
+ #CC = cc -g -Wall
+-CC = gcc -O2  # at least for SunOS
++#CC = gcc -O2  # at least for SunOS
+ #CC = cc -g
+ 
+ #CC = cc -O2 -fullwarn
+ 
+ #CC = cc -O2
+-FLAGS = -lm  -o
++#FLAGS = -lm  -o
++LIBS = -lm
+ 
+ SOURCE = stride.c splitstr.c rdpdb.c initchn.c geometry.c thr2one.c one2thr.c filename.c tolostr.c strutil.c place_h.c hbenergy.c memory.c helix.c sheet.c rdmap.c phipsi.c command.c molscr.c die.c hydrbond.c mergepat.c fillasn.c escape.c p_jrnl.c p_rem.c p_atom.c p_helix.c p_sheet.c p_turn.c p_ssbond.c p_expdta.c p_model.c p_compnd.c report.c nsc.c area.c ssbond.c chk_res.c chk_atom.c turn.c pdbasn.c dssp.c outseq.c chkchain.c elem.c measure.c asngener.c p_endmdl.c stred.c contact_order.c contact_map.c
+ 
+@@ -15,12 +16,9 @@
+ 
+ BINDIR = .
+ 
+-.c.o: 
+-	$(CC) -c $< -o $@
+-
+ 
+ stride : $(OBJECT)
+-	$(CC) $(OBJECT) $(FLAGS)  $(BINDIR)/stride${ARCH}
++	$(CC) $(LDFLAGS) $(OBJECT) $(LIBS) -o stride
+ 
+ $(OBJECT) : stride.h protot.h
+ 
diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch b/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..93f430a64a158b7c7ca07cfee06a7e00b5251307
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch
@@ -0,0 +1,112 @@
+Fix surf Makefile.
+Use CC, CFLAGS, etc from EB.
+Drop bad make depend lines.
+
+Ã…ke Sandgren, 2017-05-02
+diff -ru vmd-1.9.3.orig/lib/surf/Makefile vmd-1.9.3/lib/surf/Makefile
+--- vmd-1.9.3.orig/lib/surf/Makefile	1994-03-22 16:44:20.000000000 +0100
++++ vmd-1.9.3/lib/surf/Makefile	2017-05-02 13:41:51.911991381 +0200
+@@ -1,12 +1,7 @@
+ # Compilation flags
+-#CC	    = cc
+-CC	    = cc
+ INCLUDE     = -I. 
+-#LINCLUDE    = -lcurses -ltermcap -lm
+-LINCLUDE    = -lm
+-OPT_CFLAGS  = -O2 $(FLAGS) $(INCLUDE)
+-#CFLAGS	    = -g $(FLAGS) $(INCLUDE)
+-CFLAGS	    = -O2 $(FLAGS) $(INCLUDE)
++LIBS    = -lm
++CFLAGS	    = $(OPT) $(INCLUDE)
+ 
+ # These are the user object files in the application
+ SRCS        = surf.c io.c compute.c dual.c utils.c lp.c chull.c tessel_cases.c \
+@@ -18,7 +13,7 @@
+ 
+ # make objects
+ surf: $(OBJS) Makefile 
+-	$(CC) $(CFLAGS) $(OBJS) -o surf $(LINCLUDE)
++	$(CC) $(LDFLAGS) $(OBJS) -o surf $(LIBS)
+ 
+ lint:
+ 	lint $(INCLUDE) $(SRCS)
+@@ -30,9 +25,6 @@
+ 	tar -cvf surf.tar README *.[hc] Makefile
+ 	compress surf.tar
+ 
+-.c.o: 
+-	$(CC) $(CFLAGS) -c $*.c
+-
+ 
+ # make depend makes the proper include file dependencies.  You _could_ run
+ # it on a sun4, but there's a bug in the SunOS version of sed that causes
+@@ -61,48 +53,3 @@
+ 	@ echo '  ' >> Makefile
+ 
+ # DO NOT DELETE THIS LINE -- make depend depends on it.
+-  
+- 
+-# DO NOT DELETE THIS LINE -- make depend depends on it.
+-
+-surf.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h
+-surf.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h
+-surf.o: linalg.h
+-io.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h
+-io.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h
+-io.o: linalg.h
+-compute.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-compute.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h
+-compute.o: /usr/include/sys/time.h linalg.h chull.h dual.h
+-dual.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h
+-dual.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h
+-dual.o: linalg.h dual.h chull.h
+-utils.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-utils.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h
+-utils.o: /usr/include/sys/time.h linalg.h
+-lp.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h
+-lp.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h
+-lp.o: linalg.h
+-chull.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-chull.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h
+-chull.o: /usr/include/sys/time.h linalg.h chull.h
+-tessel_cases.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-tessel_cases.o: /usr/include/stdlib.h /usr/include/sgidefs.h
+-tessel_cases.o: /usr/include/string.h /usr/include/sys/time.h linalg.h dual.h
+-tessel_patches.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-tessel_patches.o: /usr/include/stdlib.h /usr/include/sgidefs.h
+-tessel_patches.o: /usr/include/string.h /usr/include/sys/time.h linalg.h
+-tessel_convex.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-tessel_convex.o: /usr/include/stdlib.h /usr/include/sgidefs.h
+-tessel_convex.o: /usr/include/string.h /usr/include/sys/time.h linalg.h
+-tessel_concave.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-tessel_concave.o: /usr/include/stdlib.h /usr/include/sgidefs.h
+-tessel_concave.o: /usr/include/string.h /usr/include/sys/time.h linalg.h
+-tessel_torus.o: surf.h /usr/include/stdio.h /usr/include/math.h
+-tessel_torus.o: /usr/include/stdlib.h /usr/include/sgidefs.h
+-tessel_torus.o: /usr/include/string.h /usr/include/sys/time.h linalg.h
+-  
+-# DEPENDENCIES MUST END AT END OF FILE
+-# IF YOU PUT STUFF HERE IT WILL GO AWAY
+-# see make depend above
+-  
+diff -ru vmd-1.9.3.orig/lib/surf/surf.c vmd-1.9.3/lib/surf/surf.c
+--- vmd-1.9.3.orig/lib/surf/surf.c	1994-03-21 10:33:00.000000000 +0100
++++ vmd-1.9.3/lib/surf/surf.c	2017-05-02 13:41:51.911991381 +0200
+@@ -7,7 +7,7 @@
+ #define	EXTERN	
+ #include "surf.h"
+ 
+-void
++int
+ main(ac,av)
+ int	ac;
+ char*	av[];
+@@ -56,6 +56,8 @@
+    if (Write_Option == 2) output_dataset();
+ 
+    if (Write_Option) end_output_dataset();
++
++   return(0);
+ }
+ 
+ 
diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch b/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9b9db3889bf08c48fb6a469303e1db1423d2b734
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch
@@ -0,0 +1,74 @@
+Fix some bad printfs in surf.
+
+Ã…ke Sandgren, 2017-05-02
+diff -ru vmd-1.9.3.orig/lib/surf/chull.c vmd-1.9.3/lib/surf/chull.c
+--- vmd-1.9.3.orig/lib/surf/chull.c	1994-03-19 06:50:54.000000000 +0100
++++ vmd-1.9.3/lib/surf/chull.c	2017-05-02 13:44:07.046582827 +0200
+@@ -378,7 +378,7 @@
+ print_out( v )
+ struct tvertex *v;
+ {
+-	fprintf( stderr, "\nAdding vertex %6x :\n", v );
++	fprintf( stderr, "\nAdding vertex %6p :\n", v );
+ 	print_verts();
+ 	print_edges();
+ 	print_fs();
+@@ -398,11 +398,11 @@
+ 	temp = vertices;
+ 	fprintf (stderr, "Vertex List\n");
+ 	if (vertices) do {
+-            fprintf(stderr,"  addr %6x\t", vertices );
++            fprintf(stderr,"  addr %6p\t", vertices );
+             fprintf(stderr,"(%g,%g,%g)",vertices->v[X],
+                     vertices->v[Y], vertices->v[Z] );
+             fprintf(stderr,"   active:%3d", vertices->active );
+-            fprintf(stderr,"   duplicate:%5x", vertices->duplicate );
++            fprintf(stderr,"   duplicate:%5p", vertices->duplicate );
+             fprintf(stderr,"   mark:%2d\n", vertices->mark );
+             vertices = vertices->next;
+             } while ( vertices != temp );
+@@ -424,13 +424,13 @@
+ 	temp = edges;
+ 	fprintf (stderr, "Edge List\n");
+ 	if (edges) do {
+-            fprintf( stderr, "  addr: %6x\t", edges );
++            fprintf( stderr, "  addr: %6p\t", edges );
+             fprintf( stderr, "adj: ");
+             for (i=0; i<3; ++i) 
+-                 fprintf( stderr, "%6x", edges->adjface[i] );
++                 fprintf( stderr, "%6p", edges->adjface[i] );
+             fprintf( stderr, "  endpts:");
+             for (i=0; i<2; ++i) 
+-                 fprintf( stderr, "%8x", edges->endpts[i]);
++                 fprintf( stderr, "%8p", edges->endpts[i]);
+             fprintf( stderr, "  del:%3d\n", edges->deleted );
+             edges = edges->next; 
+             } while (edges != temp );
+@@ -452,13 +452,13 @@
+ 	temp = faces;
+ 	fprintf (stderr, "Face List\n");
+ 	if (faces) do {
+-            fprintf(stderr, "  addr: %6x\t", faces );
++            fprintf(stderr, "  addr: %6p\t", faces );
+             fprintf(stderr, "  edges:");
+             for( i=0; i<3; ++i )
+-                 fprintf(stderr, "%6x", faces->edg[i] );
++                 fprintf(stderr, "%6p", faces->edg[i] );
+             fprintf(stderr, "  vert:");
+             for ( i=0; i<3; ++i)
+-                  fprintf(stderr, "%6x", faces->vert[i] );
++                  fprintf(stderr, "%6p", faces->vert[i] );
+             fprintf(stderr, "  vis: %d\n", faces->visible );
+             faces= faces->next;
+             } while ( faces != temp );
+@@ -552,8 +552,8 @@
+                 temp_v = temp_v->next;
+                 } while ( temp_v != vertices );
+              do {                           
+-                printf("3%5d%6d%6d\n", temp_f->vert[0]->vnum,
+-                        temp_f->vert[1]->vnum, temp_f->vert[2]->vnum );
++                printf("3%5d%6d%6d\n", temp_f->vert[0]->vnum[0],
++                        temp_f->vert[1]->vnum[0], temp_f->vert[2]->vnum[0] );
+                 temp_f = temp_f->next;
+                 } while ( temp_f != faces );
+ }
diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch b/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch
new file mode 100644
index 0000000000000000000000000000000000000000..26e9ba954dbbbb816975a947d97c4d1a69ca1f95
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch
@@ -0,0 +1,46 @@
+Add some additional colors, e.g. to allow for color blind compatible rendering.
+Bob Dröge, 2020-06-23
+--- src/Scene.C.orig	2020-06-23 09:37:41.000000000 +0200
++++ src/Scene.C		2020-06-23 09:40:59.000000000 +0200
+@@ -63,7 +63,10 @@
+  ,"yellow2",  "yellow3",   "green2",    "green3",
+   "cyan2",    "cyan3",     "blue2",     "blue3",
+   "violet",   "violet2",   "magenta",   "magenta2",  
+-  "red2",     "red3",      "orange2",   "orange3"
++  "red2",     "red3",      "orange2",   "orange3",
++  "matisse", "flamenco", "forest_green", "punch",
++  "wisteria", "spicy_mix", "orchid", "gray2",
++  "lime_pie", "java"
+ #endif
+ 
+ };
+@@ -89,7 +92,17 @@
+    0.27f, 0.00f, 0.98f,  0.45f, 0.00f, 0.90f, // violet
+    0.90f, 0.00f, 0.90f,  1.00f, 0.00f, 0.66f, // magenta
+    0.98f, 0.00f, 0.23f,  0.81f, 0.00f, 0.00f, // red
+-   0.89f, 0.35f, 0.00f,  0.96f, 0.72f, 0.00f  // orange
++   0.89f, 0.35f, 0.00f,  0.96f, 0.72f, 0.00f, // orange
++   0.1f, 0.5f, 0.7f, // MPL1, matisse
++   1.0f, 0.5f, 0.1f, // MPL2, flamenco
++   0.2f, 0.6f, 0.2f, // MPL3, forest green
++   0.8f, 0.2f, 0.2f, // MPL4, punch
++   0.6f, 0.4f, 0.7f, // MPL5, wisteria
++   0.5f, 0.3f, 0.3f, // MPL6, spicy mix
++   0.9f, 0.5f, 0.8f, // MPL7, orchid
++   0.5f, 0.5f, 0.5f, // MPL8, gray
++   0.7f, 0.7f, 0.1f, // MPL9, key lime pie
++   0.1f, 0.7f, 0.8f // MPL10, java
+ #endif
+ 
+ };
+--- src/Scene.h.orig	2020-06-23 09:37:45.000000000 +0200
++++ src/Scene.h		2020-06-23 09:42:21.000000000 +0200
+@@ -37,7 +37,7 @@
+ #define DISP_LIGHTS 4
+ 
+ // total number of colors defined here
+-#define REGCLRS         33
++#define REGCLRS         43
+ #define EXTRACLRS       1
+ #define VISCLRS         (REGCLRS - EXTRACLRS)
+ #define MAPCLRS         1024    
diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e10877f760359227728ec9262448704d50ab4cc1
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,73 @@
+##
+# Author:    Robert Mijakovic <robert.mijakovic@lxp.lu>
+##
+name = 'VMD'
+version = '1.9.4a57'
+
+homepage = 'https://www.ks.uiuc.edu/Research/vmd'
+description = """VMD is a molecular visualization program for displaying, animating, and analyzing large biomolecular
+ systems using 3-D graphics and built-in scripting."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+source_urls = [
+    'https://www.ks.uiuc.edu/Research/vmd/vmd-1.9.4/files/alpha/',
+    'https://www.ks.uiuc.edu/Research/vmd/vmd-%(version)s/files/final',
+    'http://webclu.bio.wzw.tum.de/stride/'
+]
+sources = [
+    'vmd-%(version)s.src.tar.gz',
+    {'filename': 'stride.tar.gz', 'extract_cmd': "tar -C vmd-%(version)s/lib/stride -xf %s"},
+]
+patches = [
+    ('VMD-1.9.3_plugins.patch'),
+    ('VMD-1.9.3_surf_Makefile.patch', 'vmd-%(version)s'),
+    ('VMD-1.9.3_surf_bad_printfs.patch', 'vmd-%(version)s'),
+    ('VMD-1.9.3_stride_Makefile.patch', 'vmd-%(version)s'),
+    ('VMD-1.9.3_stride_MAX_AT_IN_RES.patch', 'vmd-%(version)s'),
+    ('VMD-1.9.4a57_configure.patch', 'vmd-%(version)s'),
+    ('VMD-1.9.4a51_extra_colors.patch', 'vmd-%(version)s'),
+]
+checksums = [
+    'de278d0c5d969336d89068e0806fb50aaa0cb0f546ba985d840b279357860679',  # vmd-1.9.4a57.src.tar.gz
+    '51a8bc2988bb184bd08216124f61725225bb1a6f563bdf8cd35154cb5d621c1a',  # stride.tar.gz
+    '85760d6ae838e2b09801e34b36b484532383f7aaf2e8634b3ef808002a92baa3',  # VMD-1.9.3_plugins.patch
+    'd5cfa88064b7cffbc75accd69707d4e45fda974e8127de9ab606fdad501bd68a',  # VMD-1.9.3_surf_Makefile.patch
+    'f3c2a8c155e38db8e644cee6a01f6beaea5988e72ac74cde26b71670b151cc34',  # VMD-1.9.3_surf_bad_printfs.patch
+    'eb194ac0d8c086b73f87b29f7d732687f902431b1cdfa139c090401fefdee51e',  # VMD-1.9.3_stride_Makefile.patch
+    'eff1ca00cec637a6c8a156b2fb038e078d1835ba0eb15a571ed820bca5a866d9',  # VMD-1.9.3_stride_MAX_AT_IN_RES.patch
+    'ad22b02f0261bb94768e084b42c74c1c6cd4d2a3428f4f22534565e232f2d237',  # VMD-1.9.4a51_configure.patch
+    '253eba282b570eb00e4764f46f77fd5ca898d10360d5707dd50ad1f14615af80',  # VMD-1.9.4a51_extra_colors.patch
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('tcsh', '6.24.01'),
+    ('Tcl', '8.6.12'),
+    ('Tk', '8.6.12'),
+    ('FLTK', '1.3.8'),
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05'),
+    ('Tkinter', '%(pyver)s'),
+    ('X11', '20220504'),
+    ('fontconfig', '2.14.0'),
+    ('OpenGL', '2022a'),
+    ('netCDF', '4.9.0', '-serial'),
+    ('FFmpeg', '4.4.2'),
+    ('ImageMagick', '7.1.0-37'),
+    ('ACTC', '1.1'),
+    ('OptiX', '6.5.0', '', SYSTEM),
+    ('zlib', '1.2.12'),
+    ('libpng', '1.6.37'),
+    ('POV-Ray', '3.7.0.10'),
+    ('CUDA', '11.7', '', SYSTEM),
+]
+
+postinstallcmds = [
+    'sed -i "s%#!/bin/csh%#!$EBROOTTCSH/bin/tcsh%g" %(installdir)s/bin/vmd ',
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch b/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch
new file mode 100644
index 0000000000000000000000000000000000000000..42c726a4c397fb84f660782dd9d69b83ccfa911c
--- /dev/null
+++ b/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch
@@ -0,0 +1,179 @@
+diff -Naur vmd-1.9.4a57.orig/configure vmd-1.9.4a57/configure
+--- vmd-1.9.4a57.orig/configure	2022-04-27 08:21:11.000000000 +0200
++++ vmd-1.9.4a57/configure	2023-02-06 22:04:22.188887855 +0100
+@@ -498,17 +498,16 @@
+ 
+ $arch_cc          = "cc";
+ $arch_ccpp        = "CC";
+-$arch_nvcc        = "/usr/local/cuda-10.2/bin/nvcc";
++$arch_nvcc        = "$ENV{'EBROOTCUDA'}/bin/nvcc";
+ $arch_nvccflags   = "-lineinfo --ptxas-options=-v " . 
+-                    "-gencode arch=compute_30,code=compute_30 " .
+-                    "-gencode arch=compute_30,code=sm_35 " .
+-                    "-gencode arch=compute_30,code=sm_37 " .
+                     "-gencode arch=compute_50,code=compute_50 " .
+                     "-gencode arch=compute_50,code=sm_50 " .
+                     "-gencode arch=compute_60,code=compute_60 " .
+                     "-gencode arch=compute_60,code=sm_60 " .
+                     "-gencode arch=compute_70,code=compute_70 " .
+                     "-gencode arch=compute_70,code=sm_70 " .
++                    "-gencode arch=compute_75,code=sm_75 " .
++                    "-gencode arch=compute_80,code=sm_80 " .
+                     "--ftz=true ";
+ #                    "-gencode arch=compute_75,code=sm_75 " .
+ $arch_gcc         = "gcc";
+@@ -634,17 +633,17 @@
+ # location of Mesa library and include files; basically does the same
+ # as OpenGL.  This is based on the default instructions from the Mesa
+ # README; the include files should by default be in /usr/local/include/GL.
+-$mesa_dir         = "$vmd_library_dir/Mesa";
++$mesa_dir         = $ENV{'EBROOTMESA'};
+ $mesa_include     = "-I$mesa_dir/include";
+ $mesa_library     = "-L$mesa_dir/lib_$config_arch";
+ #$mesa_libs        = "-lMesaGL -lMesaGLU"; 
+-$mesa_libs        = "-lMesaGL"; 
++$mesa_libs        = "-lGL -lGLU"; 
+ $mesa_defines     = "-DUSELINEAXES -DVMDMESA -DVMDOPENGL";
+ @mesa_cc          = ();
+ @mesa_cu          = ();
+-@mesa_ccpp        = @opengl_ccpp;
+-@mesa_h           = @opengl_h;
+-@mesa_extra       = @opengl_extra;
++@mesa_ccpp        = ();
++@mesa_h           = ();
++@mesa_extra       = ();
+ 
+ 
+ #
+@@ -720,10 +719,10 @@
+ 
+ ################ FLTK GUI
+ $fltk_defines     = "-DVMDGUI -DVMDFLTK";
+-$fltk_dir         = "$vmd_library_dir/fltk";
++$fltk_dir         = $ENV{'EBROOTFLTK'};
+ $fltk_include     = "-I$fltk_dir/include";
+ $fltk_library     = "-L$fltk_dir/$config_arch";
+-$fltk_libs        = "-lfltk -lX11";
++$fltk_libs        = "-lfltk -lX11 -lXfixes -lXcursor -lXinerama";
+ #@fltk_cc          = ('forms_ui.c');
+ @fltk_cu          = ();
+ @fltk_ccpp        = ( 'ColorFltkMenu.C',
+@@ -765,7 +764,6 @@
+ $stock_tcl_include_dir=$ENV{"TCL_INCLUDE_DIR"} || "$vmd_library_dir/tcl/include";
+ $stock_tcl_library_dir=$ENV{"TCL_LIBRARY_DIR"} || "$vmd_library_dir/tcl/lib_$config_arch";
+ 
+-
+ # location of Tk (for TK option)
+ #$stock_tk_include_dir=$ENV{"TK_INCLUDE_DIR"} || "/usr/local/include";
+ #$stock_tk_library_dir=$ENV{"TK_LIBRARY_DIR"} || "/usr/local/lib";
+@@ -783,8 +781,8 @@
+ if ($config_tk) { $tcl_include .= " -I$stock_tk_include_dir"; }
+ $tcl_library      = "-L$stock_tcl_library_dir";
+ if ($config_tk) { $tcl_library .= " -L$stock_tk_library_dir"; }
+-$tcl_libs         = "-ltcl8.5";  
+-if ($config_tk) { $tcl_libs = "-ltk8.5 -lX11 " . $tcl_libs; }
++$tcl_libs         = "-ltcl8.6";  
++if ($config_tk) { $tcl_libs = "-ltk8.6 -lX11 " . $tcl_libs; }
+ 
+ @tcl_cc           = ();
+ @tcl_cu           = ();
+@@ -1006,7 +1004,7 @@
+ #   This option enables the use of CUDA GPU acceleration functions.
+ #######################
+ $cuda_defines     = "-DVMDCUDA -DMSMPOT_CUDA";
+-$cuda_dir         = "/usr/local/cuda-10.2";
++$cuda_dir         = "$ENV{'CUDA_HOME'}";
+ $cuda_include     = "";
+ $cuda_library     = "";
+ $cuda_libs        = "-Wl,-rpath -Wl,\$\$ORIGIN/ -lcudart_static -lrt";
+@@ -1215,7 +1213,7 @@
+ # $liboptix_dir         = "/usr/local/encap/NVIDIA-OptiX-SDK-5.0.1-linux64";
+ # $liboptix_dir         = "/usr/local/encap/NVIDIA-OptiX-SDK-5.1.0-linux64";
+ # $liboptix_dir         = "/usr/local/encap/NVIDIA-OptiX-SDK-6.0.0-linux64";
+-$liboptix_dir         = "/usr/local/encap/NVIDIA-OptiX-SDK-6.5.0-linux64";
++$liboptix_dir         = "$ENV{'EBROOTOPTIX'}";
+ # $liboptix_dir         = "/usr/local/encap/NVIDIA-OptiX-SDK-7.0.0-linux64";
+ 
+ # NCSA Blue Waters
+@@ -1370,7 +1368,7 @@
+   die "LIBPNG option requires ZLIB!";
+ }
+ $libpng_defines     = "-DVMDLIBPNG";
+-$libpng_dir         = "/Projects/vmd/vmd/lib/libpng";
++$libpng_dir         = "$ENV{'EBROOTLIBPNG'}";
+ $libpng_include     = "-I$libpng_dir/include";
+ $libpng_library     = "-L$libpng_dir/lib_$config_arch";
+ $libpng_libs        = "-lpng16";
+@@ -1398,7 +1396,7 @@
+ # OPTIONAL COMPONENT: Data compresssion library 
+ # This may be commented out if not required.
+ $zlib_defines     = "-DVMDZLIB";
+-$zlib_dir         = "/Projects/vmd/vmd/lib/zlib";
++$zlib_dir         = "$ENV{'EBROOTZLIB'}";
+ $zlib_include     = "-I$zlib_dir/include";
+ $zlib_library     = "-L$zlib_dir/lib_$config_arch";
+ $zlib_libs        = "-lz";
+@@ -1589,7 +1587,7 @@
+ #   primitives.
+ #######################
+ $actc_defines     = "-DVMDACTC";
+-$actc_dir         = "$vmd_library_dir/actc";
++$actc_dir         = "$ENV{'EBROOTACTC'}";
+ $actc_include     = "-I$actc_dir/include";
+ $actc_library     = "-L$actc_dir/lib_$config_arch";
+ $actc_libs        = "-lactc";
+@@ -1604,7 +1602,7 @@
+ # OPTIONAL COMPONENT: NetCDF I/O Library (Used by cdfplugin)
+ #######################
+ $netcdf_defines     = "";
+-$netcdf_dir         = "$vmd_library_dir/netcdf";
++$netcdf_dir         = "$ENV{'EBROOTNETCDF'}";
+ $netcdf_include     = "-I$netcdf_dir/include";
+ $netcdf_library     = "-L$netcdf_dir/lib_$config_arch";
+ $netcdf_libs        = "-lnetcdf";
+@@ -1662,7 +1660,7 @@
+   $stock_python_library_dir=$ENV{"PYTHON_LIBRARY_DIR"} || "$conda_root/lib/python3.7/config-3.7m-x86_64-linux-gnu";
+   $stock_numpy_include_dir=$ENV{"NUMPY_INCLUDE_DIR"} || "$conda_root/lib/python3.7/site-packages/numpy/core/include/numpy";
+   $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "$conda_root/lib/python-3.7/site-packages/numpy/core/include";
+-  $python_libs        = "-fno-lto -lpython3.7m -lpthread";
++  $python_libs        = "$ENV{'PYTHON_LIBRARIES'}" || "-fno-lto -lpython3.7m -lpthread";
+ } else {
+ #  $stock_python_include_dir=$ENV{"PYTHON_INCLUDE_DIR"} || "/usr/local/include";
+ #  $stock_python_library_dir=$ENV{"PYTHON_LIBRARY_DIR"} || "/usr/local/lib";
+@@ -1673,7 +1671,7 @@
+ #  $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "/usr/local/lib";
+   $stock_numpy_include_dir=$ENV{"NUMPY_INCLUDE_DIR"} || "$vmd_library_dir/numpy/lib_$config_arch/include";
+   $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "$vmd_library_dir/python/lib_$config_arch/lib/python2.5/site-packages/numpy/core/include";
+-  $python_libs        = "-lpython2.5 -lpthread";
++  $python_libs        = "$ENV{'PYTHON_LIBRARIES'}" || "-lpython2.5 -lpthread";
+ }
+ 
+ $python_defines     = "-DVMDPYTHON";
+@@ -2593,7 +2591,7 @@
+ 
+     if ($config_cuda) {
+       $arch_nvccflags   .= " --machine 64 -O3 $cuda_include";
+-      $cuda_library     = "-L/usr/local/cuda-10.2/lib64";
++      $cuda_library     = "-L/$ENV{'EBROOTCUDA'}/lib64";
+     }
+ 
+     $arch_lex		= "flex"; # has problems with vendor lex
+@@ -2603,7 +2601,7 @@
+     # they likely serve no useful purpose going forward.
+     if (!$config_opengl_dispatch) {
+       $opengl_dep_libs	= "-L/usr/X11R6/lib64 -lGL -lX11";
+-      $mesa_libs          = "-lMesaGL -L/usr/X11R6/lib64 -lXext -lX11";
++      $mesa_libs          = "-lGL -lGLU -L/usr/X11R6/lib64 -lXext -lX11";
+     }
+ 
+     # this is to make tcl happy
+@@ -3789,8 +3787,7 @@
+ 
+ .cu.ptx:
+ 	\$(ECHO) "Compiling " \$< " --> " \$*.ptx " ..."; \\
+-	\$(NVCC) \$(DEFINES) --use_fast_math $liboptix_include -gencode arch=compute_50,code=compute_50 -ptx \$< $arch_coptout$vmd_arch_dir/\$\@
+-
++        \$(NVCC) \$(DEFINES) --use_fast_math $liboptix_include -gencode arch=compute_80,code=compute_80 -ptx \$< $arch_coptout$vmd_arch_dir/\$\@
+ .y.o:
+ 
+ .l.o:
diff --git a/Golden_Repo/v/VTK/VTK-9.2.5-GCCcore-11.3.0-nompi.eb b/Golden_Repo/v/VTK/VTK-9.2.5-GCCcore-11.3.0-nompi.eb
index 34fbf0ab9bce9e1a0b34dbb44909bc3b98b9fd5c..f86212993ab8a6139492b998a8a823e7f907b85e 100644
--- a/Golden_Repo/v/VTK/VTK-9.2.5-GCCcore-11.3.0-nompi.eb
+++ b/Golden_Repo/v/VTK/VTK-9.2.5-GCCcore-11.3.0-nompi.eb
@@ -33,7 +33,7 @@ builddependencies = [
 dependencies = [
     ('Python', '3.10.4'),
     ('HDF5', '1.12.2', '-serial'),
-    ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
     # ('libxc', '5.2.3'),  # not in GCCcore toolchain
     ('netCDF', '4.9.0', '-serial'),
     ('X11', '20220504'),
diff --git a/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9336ae0dc69e96a32d6d56f27bd84ffd9c935ce7
--- /dev/null
+++ b/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb
@@ -0,0 +1,187 @@
+easyblock = 'CMakeMake'
+
+name = 'VTK'
+version = '9.2.5'
+
+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."""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+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-version.egg-info', '.')]
+checksums = [
+    '128d601baa980e98ee034207974b33fb38d2c98ab9cf4a5756efdb09ed6c0949',  # VTK-9.2.5.tar.gz
+    '8a812f96346b3a38ff0fc3b1a1a372f3727a71ebf450c02d659a75dbe1113515',  # VTKData-9.2.5.tar.gz
+    '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b',  # vtk-version.egg-info
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('HDF5', '1.12.2',),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('mpi4py', '3.1.4'),
+    ('libxc', '5.2.3'),
+    ('netCDF', '4.9.0',),
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+]
+
+separate_build_dir = True
+
+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_USE_MPI=ON "
+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_OPTIONAL_LINK=OFF "
+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=ON "
+# 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']}
+
+local_vtk_exec = ['vtk%s-%%(version_major_minor)s' % x
+                  for x in ['WrapJava', 'ParseJava', 'WrapPythonInit', 'WrapPython', 'WrapHierarchy']]
+local_vtk_exec += ['vtkpython']
+local_vtk_libs = ['CommonCore', 'IONetCDF', 'ParallelCore', 'RenderingOpenGL2']
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_vtk_exec] + ['include/vtk-%(version_major_minor)s/vtkMPI.h'] +
+             ['lib/libvtk%s-%%(version_major_minor)s.%s' % (l, SHLIB_EXT) for l in local_vtk_libs],
+    '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\")'",
+    # make sure that VTK Python libraries link to libpython (controlled via DVTK_PYTHON_OPTIONAL_LINK=OFF),
+    # see https://gitlab.kitware.com/vtk/vtk/-/issues/17881
+    "ldd $EBROOTVTK/lib/libvtkPythonContext2D-%%(version_major_minor)s.%s | grep /libpython" % SHLIB_EXT,
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb
similarity index 97%
rename from Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb
rename to Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb
index 2afb89cd458dee3b364c96ba27e987f6881933f6..32a8a375cac30d799a22665a94faf22395ca030e 100644
--- a/Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb
+++ b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb
@@ -11,7 +11,7 @@ description = """The Visualization Toolkit (VTK) is an open-source, freely avail
  such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation."""
 
 
-toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
 toolchainopts = {'pic': True, 'usempi': True}
 
 source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s']
@@ -32,11 +32,11 @@ builddependencies = [
 
 dependencies = [
     ('Python', '3.10.4'),
-    ('HDF5', '1.12.2', '-serial'),
-    ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('HDF5', '1.12.2',),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
     ('mpi4py', '3.1.4'),
     ('libxc', '5.2.3'),
-    ('netCDF', '4.9.0', '-serial'),
+    ('netCDF', '4.9.0',),
     ('X11', '20220504'),
     ('OpenGL', '2022a'),
 ]
diff --git a/Golden_Repo/v/Vampir/Vampir-10.3.0.eb b/Golden_Repo/v/Vampir/Vampir-10.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..36faeffc4f0d160ad2fd8c9d760617f6fbd31bb0
--- /dev/null
+++ b/Golden_Repo/v/Vampir/Vampir-10.3.0.eb
@@ -0,0 +1,45 @@
+# 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/
+##
+
+# For using $SYSTEMNAME to determine license path. The local prefix is to appease the checker
+import os as local_os
+
+easyblock = 'Binary'
+
+name = "Vampir"
+version = "10.3.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.
+
+"""
+
+toolchain = SYSTEM
+
+sources = ['vampir-%s%s-setup.sh' % (version, local_archsuffix)]
+checksums = ['5721ff30daa38622dd1550f5b7638d3a3261a3abc894a305bf2302e80ee4f66e']
+
+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': []
+}
+
+local_licdir = '/p/software/%s/licenses/vampir/vampir.license' % local_os.environ['SYSTEMNAME']
+
+modextravars = {
+    'VAMPIR_LICENSE': '/p/software/%s/licenses/vampir/vampir.license' % local_os.environ['SYSTEMNAME'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/v/VampirServer/VampirServer-10.3.0-gpsmpi-2022a.eb b/Golden_Repo/v/VampirServer/VampirServer-10.3.0-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b485a8063f2351d757b508f148791895f018eb71
--- /dev/null
+++ b/Golden_Repo/v/VampirServer/VampirServer-10.3.0-gpsmpi-2022a.eb
@@ -0,0 +1,64 @@
+# 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/
+##
+
+# For using $SYSTEMNAME to determine license path. The local prefix is to appease the checker
+import os as local_os
+
+easyblock = 'Binary'
+
+name = "VampirServer"
+version = "10.3.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>
+"""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+
+toolchainopts = {"usempi": True}
+
+sources = ['vampirserver-%s-linux-x86_64-setup.sh' % (version)]
+checksums = ['07ec746bff46e5d54296daf450e5fd10f5affb7f971aa4dd2d8719b8042df22a']
+
+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/%s/licenses/vampir/vampir.license' % local_os.environ['SYSTEMNAME'],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/x/XServer/0002-Constant-DPI.patch b/Golden_Repo/x/XServer/0002-Constant-DPI.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f91e53d1e4934d615e16b7d975d2a6bb8ddc9238
--- /dev/null
+++ b/Golden_Repo/x/XServer/0002-Constant-DPI.patch
@@ -0,0 +1,96 @@
+--- a/src/dummy.h	2016-12-17 23:02:53.396287041 +0100
++++ b/src/dummy.h	2016-12-17 23:03:30.319616550 +0100
+@@ -51,6 +51,7 @@
+     /* options */
+     OptionInfoPtr Options;
+     Bool swCursor;
++    Bool constantDPI;
+     /* proc pointer */
+     CloseScreenProcPtr CloseScreen;
+     xf86CursorInfoPtr CursorInfo;
+--- a/src/dummy_driver.c	2016-12-14 21:54:20.000000000 +0100
++++ b/src/dummy_driver.c	2016-12-17 23:04:59.916416126 +0100
+@@ -17,6 +17,12 @@
+ /* All drivers using the mi colormap manipulation need this */
+ #include "micmap.h"
+ 
++#ifdef RANDR
++#include "randrstr.h"
++#endif
++
++#include "windowstr.h"
++
+ /* identifying atom needed by magnifiers */
+ #include <X11/Xatom.h>
+ #include "property.h"
+@@ -115,11 +121,15 @@
+ };
+ 
+ typedef enum {
+-    OPTION_SW_CURSOR
++    OPTION_SW_CURSOR,
++    OPTION_CONSTANT_DPI
+ } DUMMYOpts;
+ 
+ static const OptionInfoRec DUMMYOptions[] = {
+     { OPTION_SW_CURSOR,	"SWcursor",	OPTV_BOOLEAN,	{0}, FALSE },
++#ifdef RANDR
++    { OPTION_CONSTANT_DPI,	"ConstantDPI",	OPTV_BOOLEAN,	{0}, FALSE },
++#endif
+     { -1,                  NULL,           OPTV_NONE,	{0}, FALSE }
+ };
+ 
+@@ -359,6 +369,7 @@
+     xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, dPtr->Options);
+ 
+     xf86GetOptValBool(dPtr->Options, OPTION_SW_CURSOR,&dPtr->swCursor);
++    xf86GetOptValBool(dPtr->Options, OPTION_CONSTANT_DPI, &dPtr->constantDPI);
+ 
+     if (device->videoRam != 0) {
+ 	pScrn->videoRam = device->videoRam;
+@@ -639,10 +650,45 @@
+     return TRUE;
+ }
+ 
++const char *XDPY_PROPERTY = "dummy-constant-xdpi";
++const char *YDPY_PROPERTY = "dummy-constant-ydpi";
++static int get_dpi_value(WindowPtr root, const char *property_name, int default_dpi)
++{
++    PropertyPtr prop;
++    Atom type_atom = MakeAtom("CARDINAL", 8, TRUE);
++    Atom prop_atom = MakeAtom(property_name, strlen(property_name), FALSE);
++
++    for (prop = wUserProps(root); prop; prop = prop->next) {
++       if (prop->propertyName == prop_atom && prop->type == type_atom && prop->data) {
++           int v = (int) (*((CARD32 *) prop->data));
++           if ((v>0) && (v<4096)) {
++               xf86DrvMsg(0, X_INFO, "get_constant_dpi_value() found property \"%s\" with value=%i\n", property_name, (int) v);
++               return (int) v;
++           }
++           break;
++       }
++    }
++    return default_dpi;
++}
++
+ /* Mandatory */
+ Bool
+ DUMMYSwitchMode(SWITCH_MODE_ARGS_DECL)
+ {
++    SCRN_INFO_PTR(arg);
++#ifdef RANDR
++    DUMMYPtr dPtr = DUMMYPTR(pScrn);
++    if (dPtr->constantDPI) {
++        int xDpi = get_dpi_value(pScrn->pScreen->root, XDPY_PROPERTY, pScrn->xDpi);
++        int yDpi = get_dpi_value(pScrn->pScreen->root, YDPY_PROPERTY, pScrn->yDpi);
++        //25.4 mm per inch: (254/10)
++        pScrn->pScreen->mmWidth = mode->HDisplay * 254 / xDpi / 10;
++        pScrn->pScreen->mmHeight = mode->VDisplay * 254 / yDpi / 10;
++        xf86DrvMsg(pScrn->scrnIndex, X_INFO, "mm(dpi %ix%i)=%ix%i\n", xDpi, yDpi, pScrn->pScreen->mmWidth, pScrn->pScreen->mmHeight);
++        RRScreenSizeNotify(pScrn->pScreen);
++        RRTellChanged(pScrn->pScreen);
++    }
++#endif
+     return TRUE;
+ }
+ 
diff --git a/Golden_Repo/x/XServer/0003-fix-pointer-limits.patch b/Golden_Repo/x/XServer/0003-fix-pointer-limits.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3dbb6fd179ffde507036c62700c004914acc5cfb
--- /dev/null
+++ b/Golden_Repo/x/XServer/0003-fix-pointer-limits.patch
@@ -0,0 +1,39 @@
+--- xf86-video-dummy-0.3.6/src/dummy_driver.c	2014-11-05 19:24:02.668656601 +0700
++++ xf86-video-dummy-0.3.6.new/src/dummy_driver.c	2014-11-05 19:37:53.076061853 +0700
+@@ -55,6 +55,9 @@
+ #include <X11/extensions/xf86dgaproto.h>
+ #endif
+ 
++/* Needed for fixing pointer limits on resize */
++#include "inputstr.h"
++
+ /* Mandatory functions */
+ static const OptionInfoRec *	DUMMYAvailableOptions(int chipid, int busid);
+ static void     DUMMYIdentify(int flags);
+@@ -713,6 +716,26 @@
+         RRTellChanged(pScrn->pScreen);
+     }
+ #endif
++    //ensure the screen dimensions are also updated:
++    pScrn->pScreen->width = mode->HDisplay;
++    pScrn->pScreen->height = mode->VDisplay;
++    pScrn->virtualX = mode->HDisplay;
++    pScrn->virtualY = mode->VDisplay;
++    pScrn->frameX1 = mode->HDisplay;
++    pScrn->frameY1 = mode->VDisplay;
++
++    //ensure the pointer uses the new limits too:
++    DeviceIntPtr pDev;
++    SpritePtr pSprite;
++    for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
++        if (pDev->spriteInfo!=NULL && pDev->spriteInfo->sprite!=NULL) {
++            pSprite = pDev->spriteInfo->sprite;
++            pSprite->hotLimits.x2 = mode->HDisplay;
++            pSprite->hotLimits.y2 = mode->VDisplay;
++            pSprite->physLimits.x2 = mode->HDisplay;
++            pSprite->physLimits.y2 = mode->VDisplay;
++        }
++    }
+     return TRUE;
+ }
+ 
diff --git a/Golden_Repo/x/XServer/XServer-21.1.6-GCCcore-11.3.0.eb b/Golden_Repo/x/XServer/XServer-21.1.6-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..52e47fdb3bf7a8ca3c704a8690f534ae3070d847
--- /dev/null
+++ b/Golden_Repo/x/XServer/XServer-21.1.6-GCCcore-11.3.0.eb
@@ -0,0 +1,280 @@
+easyblock = 'Bundle'
+
+name = 'XServer'
+version = '21.1.6'
+
+homepage = 'https://www.x.org'
+
+description = """
+XServer: X Window System display server.
+
+This module provides a stripped-down installation with minimal driver support.
+"""
+
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [
+    'https://www.x.org/archive/individual/xserver/',
+    'https://www.x.org/archive/individual/driver/'
+]
+
+# OS dependency should be preferred for security reasons
+osdependencies = [
+    ('openssl-devel', 'libssl-dev', 'libopenssl-devel'),
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+    ('Bison', '3.8.2'),
+    ('Meson', '0.62.1'),
+    ('Ninja', '1.10.2'),
+    ('flex', '2.6.4'),
+    ('Bison', '3.8.2'),
+]
+
+dependencies = [
+    ('libdrm', '2.4.110'),
+    ('OpenGL', '2022a'),
+    ('pixman', '0.40.0'),
+    ('X11', '20220504'),
+    ('freetype', '2.12.1'),
+    ('fontconfig', '2.14.0'),
+    ('ncurses', '6.3'),
+    ('libepoxy', '1.5.10'),
+    ('eudev', '3.2.11'),
+    ('libtirpc', '1.3.2'),
+]
+
+local_font_preconfigopts = "export PKG_CONFIG_PATH=%(installdir)s/lib/pkgconfig:$PKG_CONFIG_PATH && "
+local_font_preconfigopts += "export PATH=%(installdir)s/bin:$PATH && "
+local_font_preconfigopts += "export FONTCONFIG_FILE=%(installdir)s/config/fontconfig/fonts.conf && "
+
+# https://github.com/freedesktop/xorg-xserver/blob/master/meson_options.txt
+local_xorg_configopts = "-D default_font_path=%(installdir)s/share/fonts/X11 "
+local_xorg_configopts += "-D xorg=true "
+local_xorg_configopts += "-D xvfb=true "
+local_xorg_configopts += "-D xnest=true "
+local_xorg_configopts += "-D xephyr=true "
+local_xorg_configopts += "-D udev=true "
+local_xorg_configopts += "-D glamor=true "
+local_xorg_configopts += "-D systemd_logind=false "
+# local_xorg_configopts += "-D suid_wrapper=true "
+local_xorg_configopts += "-D xkb_dir=%(installdir)s/share/X11/xkb "
+# local_xorg_configopts += "-D xkb_output_dir=/var/lib/xkb "
+
+default_easyblock = 'ConfigureMake'
+
+default_component_specs = {
+    'sources': [SOURCE_TAR_GZ],
+    'start_dir': '%(name)s-%(version)s',
+}
+
+components = [
+    ('fontconfig-config', '1.0.0', {
+        'easyblock': 'Binary',
+        'source_urls': ['https://gitlab.version.fz-juelich.de/goebbert1/fontconfig-config/-/archive/v%(version)s/'],
+        'sources': ['%(name)s-v%(version)s.tar.gz'],
+        'start_dir': '%(name)s-v%(version)s',
+        'extract_sources': True,
+        'install_cmd': (
+            'cp -a %(builddir)s/%(name)s-v%(version)s/* %(installdir)s/ && '
+            'sed -i \'s@$EBROOTXSERVER@\'"%(installdir)s"\'@g\' %(installdir)s/share/X11/xorg.conf.d/99-fonts.conf'
+        ),
+        'checksums': [('sha256', '68544c183d153f34105fa08573174650bfe643a6d750bd9da4accac399d375db')],
+        # to activate this fontconfig you need to export FONTCONFIG_FILE=${EBROOTXSERVER}/config/fontconfig/fonts.conf
+    }),
+    ('mkfontscale', '1.2.2', {
+        'source_urls': ['https://www.x.org/archive/individual/app/'],
+        'checksums': ['4a5af55e670713024639a7f7d10826d905d86faf574cd77e0f5aef2d00e70168'],
+    }),
+    ('mkfontdir', '1.0.7', {
+        'source_urls': ['https://www.x.org/archive/individual/app/'],
+        'checksums': ['bccc5fb7af1b614eabe4a22766758c87bfc36d66191d08c19d2fa97674b7b5b7'],
+    }),
+    ('bdftopcf', '1.1', {
+        'source_urls': ['https://www.x.org/archive/individual/app/'],
+        'checksums': ['699d1a62012035b1461c7f8e3f05a51c8bd6f28f348983249fb89bbff7309b47'],
+    }),
+    ('font-util', '1.3.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '2094dd4a1ca63a61deb101d2dc618682d6e287cdbe09679502223ac445d277dc')],
+    }),
+    ('encodings', '1.0.6', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', 'c89c0636cda8f34eb28304263fc9a5441635ac3cb9da23efefe8f584174cba29')],
+    }),
+    ('font-alias', '1.0.4', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '49525fa6f2c3f3b54f461b2e0649b0ac61af50c36bf40069355a25ced8ce2028')],
+    }),
+    ('dejavu', '2.37', {
+        'easyblock': 'Binary',
+        'source_urls': [SOURCEFORGE_SOURCE],
+        'sources': ['%(name)s-fonts-ttf-%(version)s.tar.bz2'],
+        'extract_sources': True,
+        'start_dir': 'dejavu-fonts-ttf-2.37',
+        'install_cmd': ('install -v -d -m755 %(installdir)s/share/fonts/dejavu && '
+                        'install -v -m644 ttf/*.ttf %(installdir)s/share/fonts/dejavu'),
+        'checksums': [('sha256', 'fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-adobe-75dpi', '1.0.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '61eb1fcfec89f7435cb92cd68712fbe4ba412ca562b1f5feec1f6daa1b8544f6')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-adobe-100dpi', '1.0.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '97d9c1e706938838e4134d74f0836ae9d9ca6705ecb405c9a0ac8fdcbd9c2159')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-cursor-misc', '1.0.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', 'a0b146139363dd0a704c7265ff9cd9150d4ae7c0d248091a9a42093e1618c427')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-adobe-utopia-type1', '1.0.4', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', 'd9e86a8805b0fb78222409169d839a8531a1f5c7284ee117ff2a0af2e5016c3f')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-misc-misc', '1.1.2', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '46142c876e176036c61c0c24c0a689079704d5ca5b510d48c025861ee2dbf829')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    #  Fails because it tries to create a directory outside of %(installdir)s
+    #  => test -z "<PKG_CONFIG-Fontconfig>/etc/fonts/conf.avail" ||
+    #              /usr/bin/mkdir -p "<PKG_CONFIG-Fontconfig>/etc/fonts/conf.avail"
+    # ('font-bh-ttf', '1.0.3', {
+    #     'source_urls': ['https://www.x.org/pub/individual/font/'],
+    #     'sources': ['%(name)s-%(version)s.tar.gz'],
+    #     'checksums': [('sha256', 'c583b4b968ffae6ea30d5b74041afeac83126682c490a9624b770d60d0e63d59')],
+    #     'preconfigopts': local_font_preconfigopts,
+    # }),
+    ('font-bh-type1', '1.0.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', 'd5602f1d749ccd31d3bc1bb6f0c5d77400de0e5e3ac5abebd2a867aa2a4081a4')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-ibm-type1', '1.0.3', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '4509703e9e581061309cf4823bffd4a93f10f48fe192a1d8be1f183fd6ab9711')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-misc-ethiopic', '1.0.4', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', 'f7901250fb746815065cfe13a814d92260348fede28d61dcab0d05c5d8eafd54')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('font-xfree86-type1', '1.0.4', {
+        'source_urls': ['https://www.x.org/pub/individual/font/'],
+        'sources': ['%(name)s-%(version)s.tar.gz'],
+        'checksums': [('sha256', '02b3839ae79ba6a7750525bb3b0c281305664b95bf63b4a0baa230a277b4f928')],
+        'preconfigopts': local_font_preconfigopts,
+    }),
+    ('xkbcomp', '1.4.6', {
+        'source_urls': ['https://www.x.org/archive//individual/app/'],
+        'checksums': ['b216a2c8c0eab83f3dc4a3d5ee2bdf7827b30e49c8907035d0f222138eca0987'],
+    }),
+    ('xkeyboard-config', '2.38', {
+        'easyblock': 'MesonNinja',
+        'source_urls': ['https://www.x.org/archive//individual/data/xkeyboard-config/'],
+        'sources': ['%(name)s-%(version)s.tar.xz'],
+        'checksums': ['0690a91bab86b18868f3eee6d41e9ec4ce6894f655443d490a2184bfac56c872'],
+        # https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/meson_options.txt
+        'configopts': '-Dxorg-rules-symlinks=true',
+    }),
+    ('xauth', '1.1', {
+        'source_urls': ['https://www.x.org/releases/individual/app/'],
+        'checksums': ['e9fce796c8c5c9368594b9e8bbba237fb54b6615f5fd60e8d0a5b3c52a92c5ef'],
+    }),
+    ('libxcvt', '0.1.2', {
+        'easyblock': 'MesonNinja',
+        'source_urls': ['https://www.x.org/archive/individual/lib/'],
+        'sources': [SOURCE_TAR_XZ],
+        'checksums': ['0561690544796e25cfbd71806ba1b0d797ffe464e9796411123e79450f71db38'],
+    }),
+    ('xorg-server', version, {
+        'easyblock': 'MesonNinja',
+        'patches': [('xvfb-run', '.')],
+        'checksums': [
+            ('sha256', '6f9c73ccc50e2731adac17671c8e33687738c8cd556b49ecb9f410ce7217be11'),
+            ('sha256', 'fd6d13182b77871d4f65fccdaebb8a72387a726426066d3f8e6aa26b010ea0e8'),
+        ],
+        'configopts': local_xorg_configopts,
+    }),
+    ('xf86-video-dummy', '0.4.0', {
+        'preconfigopts': 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:%(installdir)s/lib/pkgconfig',
+        'sources': ['%(name)s-%(version)s.tar.xz'],
+        'checksums': [
+            # xf86-video-dummy-0.4.0.tar.gz
+            ('sha256', 'e78ceae5c8c0588c7cb658f2afc3a9fac9ef665b52a75b01f8e9c5449a4e1e5a'),
+            # 0002-Constant-DPI.patch
+            ('sha256', '3add13392168d271822e694aba21327dc3219f61f2091a12ef7009d3f090c662'),
+            # 0003-fix-pointer-limits.patch
+            ('sha256', '8af95b0b0e7f4d7de3bd1654260c3677d76ef91b8d6a66cb57b9c3af1e024fa2'),
+        ],
+        'patches': [
+            '0002-Constant-DPI.patch',
+            '0003-fix-pointer-limits.patch',
+        ],
+    }),
+    ('xterm', '378', {
+        'source_urls': ['http://invisible-mirror.net/archives/xterm/'],
+        'sources': ['%(name)s-%(version)s.tgz'],
+        'checksums': [
+            # xterm-369.tgz
+            ('sha256', '649dfbfd5edd0ed9e47cf8e4d953b4b0d3c30bc280166dfc4ffd14973fec3e92'),
+            # xterm-cursesloc.patch
+            ('sha256', 'ff15331ba1a2c67f68e3da3595ffc457d7aea5392a75d8cdfe40e2126ece99a2'),
+        ],
+        'patches': ['xterm-cursesloc.patch'],
+        'configopts': " --with-app-defaults=%(installdir)s/app-defaults ",
+    }),
+]
+
+# we need to set the permissions our self to ensure no-one messes in this directory
+# FIXME: easybuild does not support this in 4.3.0 -> hence you have to do it manually
+skipsteps = ['permissions']
+postinstallcmds = [
+    'chmod -R ugo-w %(installdir)s/config',
+    'chmod -R ugo-w %(installdir)s/share',
+    'install -m 0755 %(builddir)s/xorg-server-%(version)s/xvfb-run %(installdir)s/bin/',
+]
+
+modextrapaths = {
+    'XDG_CONFIG_DIRS': 'config',
+    'XUSERFILESEARCHPATH': 'app-defaults/%N-%C',
+}
+
+# FONTCONFIG_FILE is used to override the default configuration file
+modextravars = {
+    'FONTCONFIG_FILE': '%(installdir)s/config/fontconfig/fonts.conf'}
+
+sanity_check_paths = {
+    'files': ['bin/Xorg', 'bin/Xvfb', 'bin/xvfb-run',
+              'lib/xorg/modules/drivers/dummy_drv.la', 'lib/xorg/modules/drivers/dummy_drv.so',
+              'bin/xterm'],
+    'dirs': [],
+}
+
+sanity_check_commands = [
+    "xvfb-run --help",
+    "xvfb-run --error-file %(builddir)s/xvfb-run-test.err echo hello",
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/x/XServer/xterm-cursesloc.patch b/Golden_Repo/x/XServer/xterm-cursesloc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..033c2776b7838ae1907a69f31d75d7ce7d28175f
--- /dev/null
+++ b/Golden_Repo/x/XServer/xterm-cursesloc.patch
@@ -0,0 +1,12 @@
+diff -Naur xterm-362.orig/xtermcap.h xterm-362/xtermcap.h
+--- xterm-362.orig/xtermcap.h	2013-06-23 17:34:37.000000000 +0200
++++ xterm-362/xtermcap.h	2021-02-16 14:00:48.976219215 +0100
+@@ -59,7 +59,7 @@
+ #undef ERR			/* workaround for glibc 2.1.3 */
+ 
+ #ifdef HAVE_NCURSES_CURSES_H
+-#include <ncurses/curses.h>
++#include <curses.h>
+ #else
+ #include <curses.h>
+ #endif
diff --git a/Golden_Repo/x/XServer/xvfb-run b/Golden_Repo/x/XServer/xvfb-run
new file mode 100644
index 0000000000000000000000000000000000000000..237e0dfc5938430d50fe8d30fde1b6defa9c6e42
--- /dev/null
+++ b/Golden_Repo/x/XServer/xvfb-run
@@ -0,0 +1,194 @@
+#!/bin/sh
+
+# extracted from Debian package for xorg-server,
+# via http://deb.debian.org/debian/pool/main/x/xorg-server/xorg-server_1.20.4-1.diff.gz
+
+# This script starts an instance of Xvfb, the "fake" X server, runs a command
+# with that server available, and kills the X server when done.  The return
+# value of the command becomes the return value of this script.
+#
+# If anyone is using this to build a Debian package, make sure the package
+# Build-Depends on xvfb and xauth.
+
+set -e
+
+PROGNAME=xvfb-run
+SERVERNUM=99
+AUTHFILE=
+ERRORFILE=/dev/null
+XVFBARGS="-screen 0 1280x1024x24"
+LISTENTCP="-nolisten tcp"
+XAUTHPROTO=.
+
+# Query the terminal to establish a default number of columns to use for
+# displaying messages to the user.  This is used only as a fallback in the event
+# the COLUMNS variable is not set.  ($COLUMNS can react to SIGWINCH while the
+# script is running, and this cannot, only being calculated once.)
+DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
+case "$DEFCOLUMNS" in
+    *[!0-9]*|'') DEFCOLUMNS=80 ;;
+esac
+
+# Display a message, wrapping lines at the terminal width.
+message () {
+    echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
+}
+
+# Display an error message.
+error () {
+    message "error: $*" >&2
+}
+
+# Display a usage message.
+usage () {
+    if [ -n "$*" ]; then
+        message "usage error: $*"
+    fi
+    cat <<EOF
+Usage: $PROGNAME [OPTION ...] COMMAND
+Run COMMAND (usually an X client) in a virtual X server environment.
+Options:
+-a        --auto-servernum          try to get a free server number, starting at
+                                    --server-num
+-e FILE   --error-file=FILE         file used to store xauth errors and Xvfb
+                                    output (default: $ERRORFILE)
+-f FILE   --auth-file=FILE          file used to store auth cookie
+                                    (default: ./.Xauthority)
+-h        --help                    display this usage message and exit
+-n NUM    --server-num=NUM          server number to use (default: $SERVERNUM)
+-l        --listen-tcp              enable TCP port listening in the X server
+-p PROTO  --xauth-protocol=PROTO    X authority protocol name to use
+                                    (default: xauth command's default)
+-s ARGS   --server-args=ARGS        arguments (other than server number and
+                                    "-nolisten tcp") to pass to the Xvfb server
+                                    (default: "$XVFBARGS")
+EOF
+}
+
+# Find a free server number by looking at .X*-lock files in /tmp.
+find_free_servernum() {
+    # Sadly, the "local" keyword is not POSIX.  Leave the next line commented in
+    # the hope Debian Policy eventually changes to allow it in /bin/sh scripts
+    # anyway.
+    #local i
+
+    i=$SERVERNUM
+    while [ -f /tmp/.X$i-lock ]; do
+        i=$(($i + 1))
+    done
+    echo $i
+}
+
+# Clean up files
+clean_up() {
+    if [ -e "$AUTHFILE" ]; then
+        XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
+    fi
+    if [ -n "$XVFB_RUN_TMPDIR" ]; then
+        if ! rm -r "$XVFB_RUN_TMPDIR"; then
+            error "problem while cleaning up temporary directory"
+            exit 5
+        fi
+    fi
+    if [ -n "$XVFBPID" ]; then
+        kill "$XVFBPID" >>"$ERRORFILE" 2>&1
+    fi
+}
+
+# Parse the command line.
+ARGS=$(getopt --options +ae:f:hn:lp:s:w: \
+       --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
+       --name "$PROGNAME" -- "$@")
+GETOPT_STATUS=$?
+
+if [ $GETOPT_STATUS -ne 0 ]; then
+    error "internal error; getopt exited with status $GETOPT_STATUS"
+    exit 6
+fi
+
+eval set -- "$ARGS"
+
+while :; do
+    case "$1" in
+        -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;;
+        -e|--error-file) ERRORFILE="$2"; shift ;;
+        -f|--auth-file) AUTHFILE="$2"; shift ;;
+        -h|--help) SHOWHELP="yes" ;;
+        -n|--server-num) SERVERNUM="$2"; shift ;;
+        -l|--listen-tcp) LISTENTCP="" ;;
+        -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
+        -s|--server-args) XVFBARGS="$2"; shift ;;
+        -w|--wait) shift ;;
+        --) shift; break ;;
+        *) error "internal error; getopt permitted \"$1\" unexpectedly"
+           exit 6
+           ;;
+    esac
+    shift
+done
+
+if [ "$SHOWHELP" ]; then
+    usage
+    exit 0
+fi
+
+if [ -z "$*" ]; then
+    usage "need a command to run" >&2
+    exit 2
+fi
+
+if ! command -v xauth >/dev/null; then
+    error "xauth command not found"
+    exit 3
+fi
+
+# tidy up after ourselves
+trap clean_up EXIT
+
+# If the user did not specify an X authorization file to use, set up a temporary
+# directory to house one.
+if [ -z "$AUTHFILE" ]; then
+    XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)"
+    AUTHFILE="$XVFB_RUN_TMPDIR/Xauthority"
+    # Create empty file to avoid xauth warning
+    touch "$AUTHFILE"
+fi
+
+# Start Xvfb.
+MCOOKIE=$(mcookie)
+tries=10
+while [ $tries -gt 0 ]; do
+    tries=$(( $tries - 1 ))
+    XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
+add :$SERVERNUM $XAUTHPROTO $MCOOKIE
+EOF
+    # handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept
+    # connections
+    trap : USR1
+    (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) &
+    XVFBPID=$!
+
+    wait || :
+    if kill -0 $XVFBPID 2>/dev/null; then
+        break
+    elif [ -n "$AUTONUM" ]; then
+        # The display is in use so try another one (if '-a' was specified).
+        SERVERNUM=$((SERVERNUM + 1))
+        SERVERNUM=$(find_free_servernum)
+        continue
+    fi
+    error "Xvfb failed to start" >&2
+    XVFBPID=
+    exit 1
+done
+
+# Start the command and save its exit status.
+set +e
+DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@"
+RETVAL=$?
+set -e
+
+# Return the executed command's exit status.
+exit $RETVAL
+
+# vim:set ai et sts=4 sw=4 tw=80:
diff --git a/Golden_Repo/x/xarray/xarray-2022.9.0-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/x/xarray/xarray-2022.9.0-gcccoremkl-11.3.0-2022.1.0.eb
index 722fc8708b73a4f63e38a1065d03745a07d83a1e..176a4fa78fb99dcdc9e108de39c5d70d03e0101d 100644
--- a/Golden_Repo/x/xarray/xarray-2022.9.0-gcccoremkl-11.3.0-2022.1.0.eb
+++ b/Golden_Repo/x/xarray/xarray-2022.9.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -16,6 +16,11 @@ checksums = ['a2a5b48ec0a3890b71ef48853fe9d5107d2f75452722f319cb8ed6ff8e72e883']
 dependencies = [
     ('Python', '3.10.4'),
     ('SciPy-bundle', '2022.05'),  # required for numpy, pandas
+    ('netcdf4-python', '1.6.1', '-serial'),
+    ('h5py', '3.7.0', '-serial'),
+    ('dask', '2022.12.0'),
+    ('matplotlib', '3.5.2'),
+    ('Seaborn', '0.12.1'),
 ]
 
 download_dep_fail = True
diff --git a/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch b/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5b9bd50cbd49041765a9758ca2f9dafd0a4e00a8
--- /dev/null
+++ b/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch
@@ -0,0 +1,29 @@
+diff -Naur xpra-4.4.3.orig/xpra/scripts/config.py xpra-4.4.3/xpra/scripts/config.py
+--- xpra-4.4.3.orig/xpra/scripts/config.py	2022-11-27 15:21:57.000000000 +0100
++++ xpra-4.4.3/xpra/scripts/config.py	2023-02-08 00:44:55.979689272 +0100
+@@ -69,6 +69,13 @@
+     xorg = os.environ.get("XPRA_XORG_BIN")
+     if xorg:
+         return xorg
++
++    #look for it in $PATH:
++    for x in os.environ.get("PATH").split(os.pathsep): # pragma: no cover
++        xorg = os.path.join(x, "Xorg")
++        if os.path.isfile(xorg):
++            return xorg
++
+     # Detect Xorg Binary
+     if is_arm() and is_Debian() and os.path.exists("/usr/bin/Xorg"):
+         #Raspbian breaks if we use a different binary..
+@@ -82,11 +89,6 @@
+               ):
+         if os.path.exists(p):
+             return p
+-    #look for it in $PATH:
+-    for x in os.environ.get("PATH").split(os.pathsep): # pragma: no cover
+-        xorg = os.path.join(x, "Xorg")
+-        if os.path.isfile(xorg):
+-            return xorg
+     return None
+ 
+ 
diff --git a/Golden_Repo/x/xpra/xpra-4.4.6-GCCcore-11.3.0.eb b/Golden_Repo/x/xpra/xpra-4.4.6-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8faafd7fe008a8c8156c7675cfd22af1b0267b55
--- /dev/null
+++ b/Golden_Repo/x/xpra/xpra-4.4.6-GCCcore-11.3.0.eb
@@ -0,0 +1,234 @@
+easyblock = 'Bundle'
+
+name = 'xpra'
+version = '4.4.6'
+local_xprahtml5_version = '8.1'
+
+homepage = "http://www.xpra.org"
+description = """Xpra is an open-source multi-platform persistent remote display server and client
+for forwarding applications and desktop screens.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+    ('Brotli', '1.0.9'),
+    ('uglifyjs', '3.17.4'),
+    ('CMake', '3.23.1'),
+    ('Meson', '0.62.1'),
+    ('scikit-build', '0.15.0'),  # for patchelf
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('PyCairo', '1.23.0'),
+    ('PyGObject', '3.42.2'),
+    ('Pandoc', '2.19.2', '', SYSTEM),
+    ('GTK+', '3.24.34'),
+    ('rencode', '1.0.5'),
+    ('lz4', '1.9.3'),
+    ('yuicompressor', '2.4.8'),
+    ('x264', '20220620'),
+    ('x265', '3.5'),
+    ('libvpx', '1.12.0'),
+    ('FFmpeg', '4.4.2'),
+    ('GStreamer', '1.20.2'),
+    ('libwebp', '1.2.4'),
+    ('libpng', '1.6.37'),
+    ('libspng', '0.7.3'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('zlib', '1.2.12'),
+    ('LibTIFF', '4.3.0'),
+    ('nvidia-Video_Codec_SDK', '11.1.5', '', SYSTEM),
+    ('freetype', '2.12.1'),
+    ('libyuv', '20210428'),
+    ('DBus', '1.14.0'),
+    ('XServer', '21.1.6'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('PyCUDA', '2022.1'),
+]
+
+prebuildopts = 'export CFLAGS="-Wno-error=unused-function" && '
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'use_pip': True,
+    'source_urls': [PYPI_SOURCE],
+    'sanity_pip_check':  True,
+    'use_pip_for_deps': False,
+    'download_dep_fail': True,
+}
+
+exts_list = [
+    ('pyinotify', '0.9.6', {
+        'checksums': ['9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4'],
+    }),
+    ('pyproject-metadata', '0.7.1', {
+        'checksums': ['0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67'],
+    }),
+    ('meson', '1.0.0', {
+        'modulename': False,
+        'checksums': ['aa50a4ba4557c25e7d48446abfde857957dcdf58385fffbe670ba0e8efacce05'],
+    }),
+    ('meson_python', '0.12.0', {
+        'modulename': 'mesonpy',
+        'checksums': ['8cb159a8093a2e73cfa897f8092ec93b74e3842f94dff7fde381c6fe0e0b064d'],
+    }),
+    ('patchelf', '0.17.2.0', {
+        'modulename': False,
+        'checksums': ['dedf987a83d7f6d6f5512269e57f5feeec36719bd59567173b6d9beabe019efe'],
+    }),
+    ('dbus-python', '1.3.2', {
+        'modulename': 'dbus',
+        'checksums': ['ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8'],
+    }),
+    ('pyxdg', '0.28', {
+        'modulename': 'xdg',
+        'checksums': ['3267bb3074e934df202af2ee0868575484108581e6f3cb006af1da35395e88b4'],
+    }),
+    # kernel module for uinput not loaded on hpc systems
+    ('python-uinput', '0.11.2', {
+        'modulename': 'uinput',
+        'checksums': ['99392b676c77b5795b86b7d75274db33fe754fd1e06fb3d58b167c797dc47f0c'],
+    }),
+    ('ifaddr', '0.2.0', {
+        'checksums': ['cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4'],
+    }),
+    ('async-timeout', '4.0.2', {
+        'checksums': ['2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15'],
+    }),
+    ('zeroconf', '0.47.1', {
+        'checksums': ['65ab91068f8fafe00856b63756c72296b69682709681e96e8bb5d101345d5011'],
+    }),
+    ('Pillow', '9.5.0', {
+        'modulename': 'PIL',
+        'checksums': ['bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1'],
+    }),
+    ('Brotli', '1.0.9', {
+        'modulename': 'brotli',
+        'source_tmpl': '%(name)s-%(version)s.zip',
+        'checksums': ['4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438'],
+    }),
+    (name, version, {
+        'modulename': False,
+        'buildopts': (
+            '--without-strict --without-uinput --with-Xdummy '
+            '--with-nvenc --with-nvjpeg_encoder --with-enc_x264 --with-enc_x265 '
+        ),
+        'installopts': "--with-tests --without-service",
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/Xpra-org/%(name)s/archive/'],
+        'patches': ['xpra-4.4.3-use_Xorg_on_PATH_first.patch'],
+        'use_pip': False,
+        'checksums': [
+            '7fec998cf9816df3f0fa5ded01903b07211b0c36a7316c9e9bf6db8b80fb477a',
+            'ff1e8984f367ebcc90b56d2c1b87012a7ce53fe4f68686cf042e5bbce16be198',
+        ],
+    }),
+    ('xpra-html5', local_xprahtml5_version, {
+        'modulename': False,
+        'skipsteps': [
+            'configure',
+            'build',
+            'install',
+        ],
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/Xpra-org/%(name)s/archive/'],
+        'use_pip': False,
+        'patches': [
+            'xprahtml_OffscreenCanvas.patch',
+            'xprahtml_uint8_p255.patch',
+            'xprahtml_timeout.patch',
+            'xprahtml_depcleanup_p257.patch',
+        ],
+        'checksums': [
+            '3b1765aa3aacde03d7e6f53aecb9d96421808bf63b322f74f9ec77a2a8b5b379',
+            '4ebc8ce718daa9bf9f7c7900746b2e484feda9b269505c723d2fc40682802d60',
+            '74f1edc64fbbc151740b10020d18caebf83c890fa27f641d84ca090a9f693739',
+            '86e46d5fb377701e767386b372d7d238c41aa788d560d334596afb662ef897f4',
+            '60f7e77530a3faf640188b5dbf5f1a2d288b8d8ab9af817d74d5faba37081940',
+        ],
+    }),
+]
+
+postinstallcmds = [
+    # link to dirs in installed xpra-egg
+    (
+        'EGGPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages'
+        '/xpra-%(version)s-py%(pyshortver)s-linux-x86_64.egg/ && '
+        'mkdir -p %(installdir)s/share && '
+        'mv %(installdir)s/share/man %(installdir)s/share/man.bk || true && '
+        'ln -s ${EGGPATH}/share/* %(installdir)s/share/ && '
+        'mkdir -p %(installdir)s/etc/ && '
+        'ln -s ${EGGPATH}/etc/* %(installdir)s/etc/ '
+    ),
+    # installing xpra-html5
+    (
+        'pushd %%(builddir)s/xprahtml5/xpra-html5-%s && '
+        './setup.py install %%(installdir)s /share/xpra/www /etc/xpra/html5-client && '
+        'popd && '
+        'pushd %%(installdir)s/share/xpra/www && '
+        'ln -sf ../../../etc/xpra/html5-client/default-settings.txt && '
+        'popd'
+    ) % (local_xprahtml5_version),
+    # set specific configurations
+    (
+        # fix the xvfb call
+        "sed -i '/^[[:space:]]* \"${XORG_CONFIG_PREFIX}/c\ "
+        "   \"%(installdir)s/etc/xpra/xorg.conf\"'"
+        "   %(installdir)s/etc/xpra/conf.d/55_server_x11.conf && "
+        # initialize script that can modify the environment of the server
+        'touch %(installdir)s/etc/xpra/server.env && '
+        "sed -i 's!^source =.*!source = %(installdir)s/etc/xpra/server.env!' "
+        "       %(installdir)s/etc/xpra/conf.d/60_server.conf && "
+        # limit socket-dirs to /tmp
+        "sed -i 's/^socket-dirs =/#&/' "
+        "       %(installdir)s/etc/xpra/conf.d/10_network.conf && "
+        "sed -i 's/^#socket-dirs = \/tmp/socket-dirs = \/tmp/' "
+        "       %(installdir)s/etc/xpra/conf.d/10_network.conf "
+    ),
+    # make Xpra randomly choose a GPU for acceleration if present
+    'mv %(installdir)s/bin/xpra %(installdir)s/bin/xpra.orig',
+    'head -1 %(installdir)s/bin/xpra.orig > %(installdir)s/bin/xpra',
+    (
+        '{ cat >> %(installdir)s/bin/xpra; } << \'EOF\'\n'
+        'from os import environ \n'
+        'if not \'CUDA_VISIBLE_DEVICES\' in environ: \n'
+        '  try: \n'
+        '    from pycuda import driver \n'
+        '    driver.init() \n'
+        '    num_gpus = driver.Device.count() \n'
+        '  except: \n'
+        '    num_gpus = 0 \n'
+        '\n'
+        '  if num_gpus > 0: \n'
+        '    from random import randint \n'
+        '    active_gpuid=randint(0,num_gpus-1) \n'
+        '    environ[\'CUDA_VISIBLE_DEVICES\'] = str(active_gpuid) \n'
+        'EOF'
+    ),
+    'tail -n +2 %(installdir)s/bin/xpra.orig >> %(installdir)s/bin/xpra',
+    'chmod +x %(installdir)s/bin/xpra',
+]
+
+modextravars = {
+    'XPRA_SYSTEM_CONF_DIRS': '%(installdir)s/etc/xpra',
+    # 'XPRA_XORG_BIN': '%(installdir)s/bin/xpra',  # fails if defined at install time. Added patch instead.
+}
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_paths = {
+    'files': ['bin/xpra'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/x/xpra/xprahtml_OffscreenCanvas.patch b/Golden_Repo/x/xpra/xprahtml_OffscreenCanvas.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f360470026c86cfc6446df2a26dbcbf928a8e6fc
--- /dev/null
+++ b/Golden_Repo/x/xpra/xprahtml_OffscreenCanvas.patch
@@ -0,0 +1,57 @@
+diff -Naur xprahtml5.orig/xpra-html5-8.1/html5/js/OffscreenDecodeWorkerHelper.js xprahtml5/xpra-html5-8.1/html5/js/OffscreenDecodeWorkerHelper.js
+--- xprahtml5.orig/xpra-html5-8.1/html5/js/OffscreenDecodeWorkerHelper.js	2023-07-06 09:03:43.499513815 +0200
++++ xprahtml5/xpra-html5-8.1/html5/js/OffscreenDecodeWorkerHelper.js	2023-07-06 09:01:44.073357671 +0200
+@@ -12,10 +12,40 @@
+  */
+ 
+ const XpraOffscreenWorker = {
++
++  // OffscreenCanvas req. this bugfix https://github.com/WebKit/WebKit/pull/11534
++  isSafariVersionSupported() {
++    var match = navigator.userAgent.match(/version\/(\d+\.\d+)/i);
++    if (match && match[1]) {
++      var version = parseFloat(match[1]);
++      return version >= 999.0;
++    }
++    return false;
++  },
++
++  // OffscreenCanvas supported since v.106
++  // transferToimageBitmap fixed since v.108 (bug-id: 1794956)
++  isFirefoxVersionSupported() {
++    var match = navigator.userAgent.match(/firefox\/(\d+)/i);
++    if (match && match[1]) {
++      var version = parseInt(match[1], 10);
++      return version >= 108;
++    }
++    return false;
++  },
++
+   isAvailable() {
+-    // We do not support firefox as it makes canvases flicker
+-    const isFirefox = navigator.userAgent.toLowerCase().includes("firefox");
+-    if (typeof OffscreenCanvas !== "undefined" && !isFirefox) {
++    var isSafari = navigator.userAgent.toLowerCase().includes("safari");
++    if (isSafari && !this.isSafariVersionSupported()) {
++      return false;
++    }
++
++    var isFirefox = navigator.userAgent.toLowerCase().includes("firefox");
++    if (isFirefox && this.isFirefoxVersionSupported()) {
++      return false;
++    }
++
++    if (typeof OffscreenCanvas !== "undefined") {
+       //we also need the direct constructor:
+       try {
+         new OffscreenCanvas(256, 256);
+@@ -25,7 +55,8 @@
+       }
+     }
+     console.warn(
+-      "Offscreen decoding is not available. Please consider using Google Chrome for better performance."
++      "Offscreen decoding is not available. Please consider using " +
++      "Google Chrome, Firefox >= 108 or Safari >= 16.4 for better performance."
+     );
+     return false;
+   },
diff --git a/Golden_Repo/x/xpra/xprahtml_depcleanup_p257.patch b/Golden_Repo/x/xpra/xprahtml_depcleanup_p257.patch
new file mode 100644
index 0000000000000000000000000000000000000000..310b21dc4f4830f04787ef009684c63cf9a07fba
--- /dev/null
+++ b/Golden_Repo/x/xpra/xprahtml_depcleanup_p257.patch
@@ -0,0 +1,128 @@
+From eaaee8a1a07e07159feaa93e5bf83f0dab706c52 Mon Sep 17 00:00:00 2001
+From: Jens Henrik Goebbert <j.goebbert@fz-juelich.de>
+Date: Thu, 6 Jul 2023 16:43:05 +0200
+Subject: [PATCH 1/3] load Utilities.js in index.html first
+
+In general Utilities.js should be loaded first as it provides functions for others.
+---
+ html5/index.html | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/html5/index.html b/html5/index.html
+index f58b13f7..ae0e9f1d 100644
+--- a/html5/index.html
++++ b/html5/index.html
+@@ -63,12 +63,12 @@
+     <script type="text/javascript" src="js/lib/jszip.js"></script>
+     <script type="text/javascript" src="js/lib/detect-zoom.js"></script>
+ 
++    <script type="text/javascript" src="js/Utilities.js"></script>
+     <script type="text/javascript" src="js/Keycodes.js"></script>
+     <script type="text/javascript" src="js/Protocol.js"></script>
+     <script type="text/javascript" src="js/Window.js"></script>
+     <script type="text/javascript" src="js/Notifications.js"></script>
+     <script type="text/javascript" src="js/Constants.js"></script>
+-    <script type="text/javascript" src="js/Utilities.js"></script>
+     <script type="text/javascript" src="js/MediaSourceUtil.js"></script>
+     <script type="text/javascript" src="js/RgbHelpers.js"></script>
+     <script type="text/javascript" src="js/VideoDecoder.js"></script>
+
+From 37009b28dbd259d1ddfa2544dbeeab96e70ae765 Mon Sep 17 00:00:00 2001
+From: Jens Henrik Goebbert <j.goebbert@fz-juelich.de>
+Date: Thu, 6 Jul 2023 16:46:36 +0200
+Subject: [PATCH 2/3] add function ord() to Utilities.js
+
+---
+ html5/js/Utilities.js | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/html5/js/Utilities.js b/html5/js/Utilities.js
+index acfa18ba..129ab7e7 100644
+--- a/html5/js/Utilities.js
++++ b/html5/js/Utilities.js
+@@ -55,6 +55,10 @@ const Utilities = {
+     return s.join("");
+   },
+ 
++  ord(c) {
++    return c.charCodeAt(0);
++  },
++
+   getSecureRandomString(length_) {
+     const crypto = window.crypto || window.mscrypto;
+     if (!crypto) {
+
+From 5996e3ef60a861627399e150514bf7b70054495c Mon Sep 17 00:00:00 2001
+From: Jens Henrik Goebbert <j.goebbert@fz-juelich.de>
+Date: Thu, 6 Jul 2023 16:49:56 +0200
+Subject: [PATCH 3/3] use functions from Utilities.js
+
+---
+ html5/js/Protocol.js | 19 ++++++-------------
+ 1 file changed, 6 insertions(+), 13 deletions(-)
+
+diff --git a/html5/js/Protocol.js b/html5/js/Protocol.js
+index ed1ed0ad..67f5de4d 100644
+--- a/html5/js/Protocol.js
++++ b/html5/js/Protocol.js
+@@ -234,14 +234,6 @@ class XpraProtocol {
+     console.log.apply(console, arguments);
+   }
+ 
+-  StringToUint8(string_) {
+-    return Uint8Array.from([...string_].map((x) => x.charCodeAt(0)));
+-  }
+-
+-  ord(c) {
+-    return c.charCodeAt(0);
+-  }
+-
+   do_process_receive_queue() {
+     if (this.header.length < 8 && this.rQ.length > 0) {
+       //add from receive queue data to header until we get the 8 bytes we need:
+@@ -360,7 +352,7 @@ class XpraProtocol {
+ 
+     // decrypt if needed
+     if (proto_crypto) {
+-      this.cipher_in.update(forge.util.createBuffer(Uint8ToString(packet_data)));
++      this.cipher_in.update(forge.util.createBuffer(Utilities.Uint8ToString(packet_data)));
+       const decrypted = this.cipher_in.output.getBytes();
+       if (!decrypted || decrypted.length < packet_size - padding) {
+         this.error("error decrypting packet using", this.cipher_in);
+@@ -376,7 +368,7 @@ class XpraProtocol {
+         this.raw_packets = [];
+         return this.rQ.length > 0;
+       }
+-      packet_data = this.StringToUint8(
++      packet_data = Utilities.StringToUint8(
+         decrypted.slice(0, packet_size - padding)
+       );
+     }
+@@ -472,7 +464,7 @@ class XpraProtocol {
+           this.cipher_out_block_size -
+           (payload_size % this.cipher_out_block_size);
+         let input_data =
+-          typeof bdata === "string" ? bdata : Uint8ToString(bdata);
++          typeof bdata === "string" ? bdata : Utilities.Uint8ToString(bdata);
+         if (padding_size) {
+           const padding_char = String.fromCharCode(padding_size);
+           input_data += padding_char.repeat(padding_size);
+@@ -498,7 +490,7 @@ class XpraProtocol {
+       } else {
+         //copy string one character at a time..
+         for (let index = 0; index < actual_size; index++) {
+-          packet_data[8 + index] = this.ord(bdata[index]);
++          packet_data[8 + index] = Utilities.ord(bdata[index]);
+         }
+       }
+       // put into buffer before send
+@@ -624,7 +616,8 @@ if (
+     "lib/lz4.js",
+     "lib/brotli_decode.js",
+     "lib/forge.js",
+-    "lib/rencode.js"
++    "lib/rencode.js",
++    "Utilities.js"
+   );
+   // make protocol instance
+   const protocol = new XpraProtocol();
diff --git a/Golden_Repo/x/xpra/xprahtml_timeout.patch b/Golden_Repo/x/xpra/xprahtml_timeout.patch
new file mode 100644
index 0000000000000000000000000000000000000000..bffade67cf5807077fa3952efabfdfecec79ef67
--- /dev/null
+++ b/Golden_Repo/x/xpra/xprahtml_timeout.patch
@@ -0,0 +1,31 @@
+diff -Naur xprahtml5.orig/xpra-html5-8.1/html5/js/Client.js xprahtml5/xpra-html5-8.1/html5/js/Client.js
+--- xprahtml5.orig/xpra-html5-8.1/html5/js/Client.js	2023-06-15 19:31:48.000000000 +0200
++++ xprahtml5/xpra-html5-8.1/html5/js/Client.js	2023-07-06 17:21:36.569495387 +0200
+@@ -134,11 +134,11 @@
+     this.reconnect_delay = 1000; //wait 1 second before retrying
+     this.reconnect_attempt = 0;
+     this.swap_keys = Utilities.isMacOS();
+-    this.HELLO_TIMEOUT = 30_000;
+-    this.PING_TIMEOUT = 15_000;
+-    this.PING_GRACE = 2000;
++    this.HELLO_TIMEOUT = 60_000;
++    this.PING_TIMEOUT = 30_000;
++    this.PING_GRACE = 4000;
+     this.PING_FREQUENCY = 5000;
+-    this.INFO_FREQUENCY = 1000;
++    this.INFO_FREQUENCY = 2000;
+     this.uuid = Utilities.getHexUUID();
+     this.offscreen_api = DECODE_WORKER && XpraOffscreenWorker.isAvailable();
+     this.try_gpu = TRY_GPU_TRIGGER;
+diff -Naur xprahtml5.orig/xpra-html5-8.1/html5/js/Protocol.js xprahtml5/xpra-html5-8.1/html5/js/Protocol.js
+--- xprahtml5.orig/xpra-html5-8.1/html5/js/Protocol.js	2023-07-06 17:07:50.029528940 +0200
++++ xprahtml5/xpra-html5-8.1/html5/js/Protocol.js	2023-07-06 17:22:02.235743758 +0200
+@@ -15,7 +15,7 @@
+  *  brotli_decode.js
+  */
+ 
+-const CONNECT_TIMEOUT = 15_000;
++const CONNECT_TIMEOUT = 30_000;
+ 
+ if (!Object.hasOwn) {
+     Object.hasOwn = Object.call.bind(Object.hasOwnProperty);
diff --git a/Golden_Repo/x/xpra/xprahtml_uint8_p255.patch b/Golden_Repo/x/xpra/xprahtml_uint8_p255.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ef551915d763708d8554d19ffbfffa43162230de
--- /dev/null
+++ b/Golden_Repo/x/xpra/xprahtml_uint8_p255.patch
@@ -0,0 +1,68 @@
+From 740724ad355a1b6d30fef6ba3be0a78135ad76c9 Mon Sep 17 00:00:00 2001
+From: Jens Henrik Goebbert <j.goebbert@fz-juelich.de>
+Date: Wed, 5 Jul 2023 19:45:13 +0200
+Subject: [PATCH] fix Protocol.js
+
+- uintToString(..) does not exist. Hence, Uint8ToString(..) from lib/rencode.js imported at line 627 is used
+- Utilities is not in scope so Utilities.StringToUint8(..) fails. Hence, StringToUint8(..) got added to class XpraProtocol
+- Utilities is not in scope so Utilities.Uint8ToString(..) fails. Hence, Uint8ToString(..) from lib/rencode.js imported at line 627 is used
+- ord(..) is not defined. Hence, ord(..) got added to class XpraProtocol
+---
+ html5/js/Protocol.js | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/html5/js/Protocol.js b/html5/js/Protocol.js
+index 3a90d571..ed1ed0ad 100644
+--- a/html5/js/Protocol.js
++++ b/html5/js/Protocol.js
+@@ -234,6 +234,14 @@ class XpraProtocol {
+     console.log.apply(console, arguments);
+   }
+ 
++  StringToUint8(string_) {
++    return Uint8Array.from([...string_].map((x) => x.charCodeAt(0)));
++  }
++
++  ord(c) {
++    return c.charCodeAt(0);
++  }
++
+   do_process_receive_queue() {
+     if (this.header.length < 8 && this.rQ.length > 0) {
+       //add from receive queue data to header until we get the 8 bytes we need:
+@@ -352,7 +360,7 @@ class XpraProtocol {
+ 
+     // decrypt if needed
+     if (proto_crypto) {
+-      this.cipher_in.update(forge.util.createBuffer(uintToString(packet_data)));
++      this.cipher_in.update(forge.util.createBuffer(Uint8ToString(packet_data)));
+       const decrypted = this.cipher_in.output.getBytes();
+       if (!decrypted || decrypted.length < packet_size - padding) {
+         this.error("error decrypting packet using", this.cipher_in);
+@@ -368,7 +376,7 @@ class XpraProtocol {
+         this.raw_packets = [];
+         return this.rQ.length > 0;
+       }
+-      packet_data = Utilities.StringToUint8(
++      packet_data = this.StringToUint8(
+         decrypted.slice(0, packet_size - padding)
+       );
+     }
+@@ -464,7 +472,7 @@ class XpraProtocol {
+           this.cipher_out_block_size -
+           (payload_size % this.cipher_out_block_size);
+         let input_data =
+-          typeof bdata === "string" ? bdata : Utilities.Uint8ToString(bdata);
++          typeof bdata === "string" ? bdata : Uint8ToString(bdata);
+         if (padding_size) {
+           const padding_char = String.fromCharCode(padding_size);
+           input_data += padding_char.repeat(padding_size);
+@@ -490,7 +498,7 @@ class XpraProtocol {
+       } else {
+         //copy string one character at a time..
+         for (let index = 0; index < actual_size; index++) {
+-          packet_data[8 + index] = ord(bdata[index]);
++          packet_data[8 + index] = this.ord(bdata[index]);
+         }
+       }
+       // put into buffer before send
diff --git a/Golden_Repo/y/YAXT/README.md b/Golden_Repo/y/YAXT/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..822a675453eb1d5c808dc285cfabc2b291d961da
--- /dev/null
+++ b/Golden_Repo/y/YAXT/README.md
@@ -0,0 +1,7 @@
+# YAXT
+
+YAXT installation requires MPI. At JSC, it is neccessary to have an active `salloc` session and to specify a buildpath. For example on JUWELS:
+```
+salloc --time=1:00:00 --nodes=1 --ntasks=16 --partition=devel -A cswmanage
+eb YAXT-0.9.3.1-gpsmpi-2022a.eb --buildpath=/p/scratch/cswmanage/$USER/builddir/$SYSTEMNAME/
+```
\ No newline at end of file
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gompi-2022a.eb b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9dc55488ff492b6e9d873aa7d91174a753a5c907
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gompi-2022a.eb
@@ -0,0 +1,30 @@
+# Updated to new URL and version 0.9.3.1
+
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.9.3.1'
+
+homepage = 'https://swprojects.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [
+    'https://swprojects.dkrz.de/redmine/attachments/download/523/',
+    'https://www.dkrz.de/redmine/attachments/download/523/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['5cc2ffeedf1604f825f22867753b637d41507941b7a0fbbfa6ea40637a77605a']
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+preconfigopts = 'MPI_LAUNCH="$(which srun)"'
+
+sanity_check_paths = {
+    'files': ['include/yaxt.h', 'include/yaxt.mod', 'lib/libyaxt.a', 'lib/libyaxt.%s' % SHLIB_EXT],
+    'dirs': ['include/xt'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gpsmpi-2022a.eb b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d26e22b76a77fb6c5953ea6e3227c7344a0b6a3f
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-gpsmpi-2022a.eb
@@ -0,0 +1,30 @@
+# Updated to new URL and version 0.9.3.1
+
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.9.3.1'
+
+homepage = 'https://swprojects.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [
+    'https://swprojects.dkrz.de/redmine/attachments/download/523/',
+    'https://www.dkrz.de/redmine/attachments/download/523/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['5cc2ffeedf1604f825f22867753b637d41507941b7a0fbbfa6ea40637a77605a']
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+preconfigopts = 'MPI_LAUNCH="$(which srun)"'
+
+sanity_check_paths = {
+    'files': ['include/yaxt.h', 'include/yaxt.mod', 'lib/libyaxt.a', 'lib/libyaxt.%s' % SHLIB_EXT],
+    'dirs': ['include/xt'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1-ipsmpi-2022a.eb b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e9c844d99f7c661dcfcffdac4c0f6536ea3ac44d
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-ipsmpi-2022a.eb
@@ -0,0 +1,30 @@
+# Updated to new URL and version 0.9.3.1
+
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.9.3.1'
+
+homepage = 'https://swprojects.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [
+    'https://swprojects.dkrz.de/redmine/attachments/download/523/',
+    'https://www.dkrz.de/redmine/attachments/download/523/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['5cc2ffeedf1604f825f22867753b637d41507941b7a0fbbfa6ea40637a77605a']
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+preconfigopts = 'MPI_LAUNCH="$(which srun)"'
+
+sanity_check_paths = {
+    'files': ['include/yaxt.h', 'include/yaxt.mod', 'lib/libyaxt.a', 'lib/libyaxt.%s' % SHLIB_EXT],
+    'dirs': ['include/xt'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1-npsmpic-2022a.eb b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-npsmpic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2991e4d0da5cbb6d3d57dec027c0f016af3c86ec
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-npsmpic-2022a.eb
@@ -0,0 +1,36 @@
+# Updated to new URL and version 0.9.3.1
+
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.9.3.1'
+
+homepage = 'https://swprojects.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [
+    'https://swprojects.dkrz.de/redmine/attachments/download/523/',
+    'https://www.dkrz.de/redmine/attachments/download/523/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+patches = [
+    ('YAXT-%(version)s_remove_pgi-specific.patch', 1),
+]
+checksums = [
+    {'yaxt-0.9.3.1.tar.gz': '5cc2ffeedf1604f825f22867753b637d41507941b7a0fbbfa6ea40637a77605a'},
+    {'YAXT-0.9.3.1_remove_pgi-specific.patch': '1cbff4767e075636feef7b34f6c0e1498fce53399c38c14abf2fe8f09c244e9b'},
+]
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+preconfigopts = 'MPI_LAUNCH="$(which srun)"'
+
+sanity_check_paths = {
+    'files': ['include/yaxt.h', 'include/yaxt.mod', 'lib/libyaxt.a', 'lib/libyaxt.%s' % SHLIB_EXT],
+    'dirs': ['include/xt'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1-nvompic-2022a.eb b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-nvompic-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..29d4f831fe5c5a403a89738c5ed2ddcf5885c53d
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1-nvompic-2022a.eb
@@ -0,0 +1,36 @@
+# Updated to new URL and version 0.9.3.1
+
+easyblock = 'ConfigureMake'
+
+name = 'YAXT'
+version = '0.9.3.1'
+
+homepage = 'https://swprojects.dkrz.de/redmine/projects/yaxt'
+description = "Yet Another eXchange Tool"
+
+toolchain = {'name': 'nvompic', 'version': '2022a'}
+toolchainopts = {'usempi': True}
+
+source_urls = [
+    'https://swprojects.dkrz.de/redmine/attachments/download/523/',
+    'https://www.dkrz.de/redmine/attachments/download/523/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+patches = [
+    ('YAXT-%(version)s_remove_pgi-specific.patch', 1),
+]
+checksums = [
+    {'yaxt-0.9.3.1.tar.gz': '5cc2ffeedf1604f825f22867753b637d41507941b7a0fbbfa6ea40637a77605a'},
+    {'YAXT-0.9.3.1_remove_pgi-specific.patch': '1cbff4767e075636feef7b34f6c0e1498fce53399c38c14abf2fe8f09c244e9b'},
+]
+
+configopts = 'FC="$F90" FCFLAGS="$F90FLAGS -cpp"'
+
+preconfigopts = 'MPI_LAUNCH="$(which srun)"'
+
+sanity_check_paths = {
+    'files': ['include/yaxt.h', 'include/yaxt.mod', 'lib/libyaxt.a', 'lib/libyaxt.%s' % SHLIB_EXT],
+    'dirs': ['include/xt'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/y/YAXT/YAXT-0.9.3.1_remove_pgi-specific.patch b/Golden_Repo/y/YAXT/YAXT-0.9.3.1_remove_pgi-specific.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3a56927032f2468415761dfab84c660963656cbc
--- /dev/null
+++ b/Golden_Repo/y/YAXT/YAXT-0.9.3.1_remove_pgi-specific.patch
@@ -0,0 +1,42 @@
+Comment out dedicated PGI-code, as NVHPC does not support several intrinsics in the initialization phase.
+Author: s.griessbach@fz-juelich.de
+--- yaxt-0.9.3.1/tests/ftest_common.f90.orig	2023-02-14 17:04:33.099320000 +0100
++++ yaxt-0.9.3.1/tests/ftest_common.f90	2023-02-14 17:03:57.795024000 +0100
+@@ -1,3 +1,4 @@
++
+ !>
+ !! @file ftest_common.f90
+ !!
+@@ -1214,21 +1215,21 @@
+     ! double precision real and gfortran warns about that. For that
+     ! reason the below expression limits scale_val to those 1-bits
+     ! which can be represented in a double precision constant
+-#if ! defined __PGI || __PGIC__ > 21
+-    INTEGER(i8), PARAMETER :: scale_val &
+-         = IAND(HUGE(a), NOT(ISHFT(1_i8, BIT_SIZE(1_i8) &
+-         &                               - DIGITS(0.0_c_double))  - 1 ) )
+-#else
++    !#if defined __PGI || __PGIC__ > 21
++    !    INTEGER(i8), PARAMETER :: scale_val &
++    !         = IAND(HUGE(a), NOT(ISHFT(1_i8, BIT_SIZE(1_i8) &
++    !         &                               - DIGITS(0.0_c_double))  - 1 ) )
++    !#else
+     INTEGER(i8) :: scale_val
+-#endif
++    !#endif
+     REAL(c_double) :: rand_nums(block_len), sc
+     n = SIZE(a)
+     nb = n/block_len
+-#if defined __PGI && __PGIC__ <= 21
+-    scale_val &
+-         = IAND(HUGE(a), NOT(ISHFT(1_i8, BIT_SIZE(1_i8) &
+-         &                               - DIGITS(0.0_c_double))  - 1 ) )
+-#endif
++    !#if defined __PGI && __PGIC__ <= 21
++    !    scale_val &
++    !         = IAND(HUGE(a), NOT(ISHFT(1_i8, BIT_SIZE(1_i8) &
++    !         &                               - DIGITS(0.0_c_double))  - 1 ) )
++    !#endif
+ 
+     sc = REAL(scale_val, c_double)
+     DO j = 1, nb
diff --git a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-11.3.0.eb b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f4fc2a28aece72fd5d97e3b829fcd5a6180d5d88
--- /dev/null
+++ b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-11.3.0.eb
@@ -0,0 +1,34 @@
+easyblock = 'PythonPackage'
+
+name = 'yuicompressor'
+version = '2.4.8'
+
+homepage = 'https://github.com/sprat/yuicompressor'
+description = """YUI Compressor is a JavaScript and CSS minifier written in Java."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/sprat/yuicompressor/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['0054abb77cc151147597aeaa5b47b6843925d3293e2e44d5b36e68ee54a1154f']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Java', '11', '', SYSTEM),
+]
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+sanity_check_paths = {
+    'files': ['bin/%(name)s'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'],
+}
+
+moduleclass = 'vis'
diff --git a/Overlays/deep_overlay/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb b/Overlays/deep_overlay/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e64184da3ec0490b11b5b1c7abe497703bcec7d1
--- /dev/null
+++ b/Overlays/deep_overlay/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb
@@ -0,0 +1,36 @@
+easyblock = 'ConfigureMake'
+
+name = 'GPicView'
+version = '0.2.5'
+
+homepage = 'http://lxde.sourceforge.net/gpicview'
+description = """GPicView - A Simple and Fast Image Viewer for X"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [
+    'https://sourceforge.net/projects/lxde/files/GPicView%20%28image%20Viewer%29/0.2.x/']
+sources = [SOURCELOWER_TAR_XZ]
+checksums = ['38466058e53702450e5899193c4b264339959b563dd5cd81f6f690de32d82942']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('pkgconf', '1.8.0'),
+    ('Perl', '5.34.1'),
+    ('intltool', '0.51.0'),
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('GTK+', '3.24.34'),
+    ('libjpeg-turbo', '2.1.3'),
+]
+
+configopts = '--enable-gtk3 '
+
+sanity_check_paths = {
+    'files': ['bin/gpicview'],
+    'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/Overlays/deep_overlay/g/gpsmpi/gpsmpi-2022a-mt.eb b/Overlays/deep_overlay/g/gpsmpi/gpsmpi-2022a-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a527127047dd2c6bc8d3a9086b21bcfed81fcc9f
--- /dev/null
+++ b/Overlays/deep_overlay/g/gpsmpi/gpsmpi-2022a-mt.eb
@@ -0,0 +1,20 @@
+easyblock = 'Toolchain'
+
+name = 'gpsmpi'
+version = '2022a'
+versionsuffix = '-mt'
+
+homepage = '(none)'
+description = 'GCC and GFortran based compiler toolchain, including Parastation MPICH2 for MPI support.'
+
+
+toolchain = SYSTEM
+
+local_compiler = ('GCC', '11.3.0')
+
+dependencies = [
+    local_compiler,
+    ('psmpi', '5.7.0-1', versionsuffix, local_compiler),
+]
+
+moduleclass = 'toolchain'
diff --git a/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb b/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5f099296322b2e56b87c2530b0a72ab3fc36280c
--- /dev/null
+++ b/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb
@@ -0,0 +1,62 @@
+easyblock = 'ConfigureMake'
+
+name = 'OpenMPI'
+version = '4.1.4'
+
+homepage = 'https://www.open-mpi.org/'
+description = """The Open MPI Project is an open source MPI-3 implementation."""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+    'https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
+sources = [SOURCELOWER_TAR_BZ2]
+checksums = ['92912e175fd1234368c8730c03f4996fe5942e7479bb1d10059405e7f2b3930d']
+
+osdependencies = [
+    # needed for --with-verbs
+    ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'),
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('hwloc', '2.7.1'),
+    ('UCX', 'default'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('libevent', '2.1.12'),
+    ('UCC', 'default'),
+    ('PMIx', '3.2.3'),
+]
+
+configopts = '--enable-shared '
+configopts += '--with-hwloc=$EBROOTHWLOC '  # hwloc support
+configopts += '--with-ucx=$EBROOTUCX '
+configopts += '--with-verbs '
+configopts += '--with-libevent=$EBROOTLIBEVENT '
+configopts += '--without-orte '
+configopts += '--without-psm2 '
+configopts += '--disable-oshmem '
+configopts += '--with-cuda=$EBROOTCUDA '
+# No IME or GPFS in DEEP
+# configopts += '--with-ime=/opt/ddn/ime '
+# configopts += '--with-gpfs '
+
+# to enable SLURM integration (site-specific)
+configopts += '--with-slurm --with-pmix=external --with-libevent=external --with-ompi-pmix-rte'
+
+local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
+sanity_check_paths = {
+    'files': ["bin/%s" % local_binfile for local_binfile in ["ompi_info", "opal_wrapper"]] +
+             ["lib/lib%s.%s" % (local_libfile, SHLIB_EXT) for local_libfile in local_libs] +
+             ["include/%s.h" % x for x in ["mpi-ext", "mpif-config",
+                                           "mpif", "mpi", "mpi_portable_platform"]],
+    'dirs': [],
+}
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb b/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5bb7a448efc9018c201e7ffe08768e3833795e29
--- /dev/null
+++ b/Overlays/deep_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
@@ -0,0 +1,62 @@
+easyblock = 'ConfigureMake'
+
+name = 'OpenMPI'
+version = '4.1.4'
+
+homepage = 'https://www.open-mpi.org/'
+description = """The Open MPI Project is an open source MPI-3 implementation."""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+    'https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
+sources = [SOURCELOWER_TAR_BZ2]
+checksums = ['92912e175fd1234368c8730c03f4996fe5942e7479bb1d10059405e7f2b3930d']
+
+osdependencies = [
+    # needed for --with-verbs
+    ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'),
+]
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('hwloc', '2.7.1'),
+    ('UCX', 'default'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('libevent', '2.1.12'),
+    ('UCC', 'default'),
+    ('PMIx', '3.2.3'),
+]
+
+configopts = '--enable-shared '
+configopts += '--with-hwloc=$EBROOTHWLOC '  # hwloc support
+configopts += '--with-ucx=$EBROOTUCX '
+configopts += '--with-verbs '
+configopts += '--with-libevent=$EBROOTLIBEVENT '
+configopts += '--without-orte '
+configopts += '--without-psm2 '
+configopts += '--disable-oshmem '
+configopts += '--with-cuda=$EBROOTCUDA '
+# No IME or GPFS in DEEP
+# configopts += '--with-ime=/opt/ddn/ime '
+# configopts += '--with-gpfs '
+
+# to enable SLURM integration (site-specific)
+configopts += '--with-slurm --with-pmix=external --with-libevent=external --with-ompi-pmix-rte'
+
+local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
+sanity_check_paths = {
+    'files': ["bin/%s" % local_binfile for local_binfile in ["ompi_info", "opal_wrapper"]] +
+             ["lib/lib%s.%s" % (local_libfile, SHLIB_EXT) for local_libfile in local_libs] +
+             ["include/%s.h" % x for x in ["mpi-ext", "mpif-config",
+                                           "mpif", "mpi", "mpi_portable_platform"]],
+    'dirs': [],
+}
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/PAPI/PAPI-7.0.0-GCCcore-11.3.0.eb b/Overlays/deep_overlay/p/PAPI/PAPI-7.0.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..283ab732da45ecfb9404ae657fcb4d9f68ea518d
--- /dev/null
+++ b/Overlays/deep_overlay/p/PAPI/PAPI-7.0.0-GCCcore-11.3.0.eb
@@ -0,0 +1,49 @@
+##
+# Author:    Robert Mijakovic <robert.mijakovic@lxp.lu>
+##
+
+easyblock = 'ConfigureMake'
+
+name = 'PAPI'
+version = '7.0.0'
+
+homepage = 'https://icl.cs.utk.edu/projects/papi/'
+
+description = """
+ PAPI provides the tool designer and application engineer with a consistent
+ interface and methodology for use of the performance counter hardware found
+ in most major microprocessors. PAPI enables software engineers to see, in near
+ real time, the relation between software performance and processor events.
+ In addition Component PAPI provides access to a collection of components
+ that expose performance measurement opportunites across the hardware and
+ software stack.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://icl.cs.utk.edu/projects/papi/downloads/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['799dcc317a47da96beaeed445812ecb6ae49df7c0504a4569797c1f7d74c4fd2']
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+start_dir = 'src'
+
+configopts = "--with-components='rapl sde' "  # for energy measurements
+
+parallel = 1
+# Deep neither passes nor fails any test
+# runtest = 'fulltest'
+
+sanity_check_paths = {
+    'files': ["bin/papi_%s" % x
+              for x in ["avail", "clockres", "command_line", "component_avail",
+                        "cost", "decode", "error_codes", "event_chooser",
+                        "mem_info", "multiplex_cost", "native_avail",
+                        "version", "xml_event_info"]],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..94894cfd869e9813cb17e75732d4bdfab0f7d85e
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,46 @@
+name = 'psmpi'
+version = '5.7.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.0-1.tar.gz
+    '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
similarity index 96%
rename from Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb
rename to Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
index 125606353501b4c3bb343cae4665845d849d3dfc..8f16abaa8fb8ef6d4ea0f0966c1b9b90bb3b44b1 100644
--- a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-22.11.eb
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
@@ -7,7 +7,7 @@ based on MPICH v3. It provides extra low level communication libraries and integ
 various batch systems for tighter process control.
 """
 
-toolchain = {'name': 'NVHPC', 'version': '22.11'}
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
 
 sources = [SOURCE_TAR_GZ]
 source_urls = ['https://github.com/ParaStation/psmpi/archive/']
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b06425298eec656f626de2d1f803aa44adb59902
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
@@ -0,0 +1,45 @@
+name = 'psmpi'
+version = '5.7.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.0-1.tar.gz
+    '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cf308960ed923a6717e7e7ddbfae4bf0980de7b1
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,45 @@
+name = 'psmpi'
+version = '5.7.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.0-1.tar.gz
+    '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ee88e31c810cc1832a21e571f2393869cf16637e
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,46 @@
+name = 'psmpi'
+version = '5.7.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5d26f62e0d0666f635eb02df230419f598014763
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
@@ -0,0 +1,45 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2b8f13ff0059a4e07b241b903df85476703a21b2
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
@@ -0,0 +1,45 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8ee4350c73a6f25dcf1dba3766d723402b35f9dd
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,45 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8cfa9819f407f0d75182d8125937dd31f7d22c0a
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..22cb3dd4d5b32fffd89c52d995769937dd5525e7
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0fc1509ed86d101433ba55004b46fac25e06f24c
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0fa389de7f74df7f34e7db6e3ca07400c44332f8
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..842e9f5382fd60f13e939d60e6604618171c9c1d
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..840f68f544f0268568fe7f48cdab0b98be7cad85
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d6061205647d46decad7ddce5350feb5bccbb54b
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ea4f7babdfc2c66a51e626833a5115b729cdb188
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..86ead34e6fbcad43db1ad1bcf451387e2251f608
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3eb8cb38b8b671de6627af51042915fa37fcf3c7
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1dba7676bd6fa2a20ba50deeb0a30b06de3f8d16
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,34 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9a5fce231f0f2a141f4f9f280ab19887863d3f99
--- /dev/null
+++ b/Overlays/deep_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,33 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/hdfml_overlay/n/nvidia-driver/nvidia-driver-default.eb
index 6bce31f65d212b5ff775161523125f6dbf5c1c0e..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2 100644
--- a/Overlays/hdfml_overlay/n/nvidia-driver/nvidia-driver-default.eb
+++ b/Overlays/hdfml_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -1,6 +1,6 @@
 name = 'nvidia-driver'
 version = 'default'
-realversion = '515.86.01'
+realversion = '525.105.17'
 
 homepage = 'https://developer.nvidia.com/cuda-toolkit'
 description = f"""
@@ -15,7 +15,7 @@ toolchain = SYSTEM
 
 source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
 sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
-checksums = ['141777e1ca2f11e97d8d33260213f1be327eb73922ae22f4ddab404bb2ef4664']
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
 
 # To avoid conflicts between NVML and the kernel driver
 postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
diff --git a/Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb b/Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
similarity index 97%
rename from Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb
rename to Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
index 348634fadade0b5685c82e83dfa1f8748a0e0d3b..894b648ec0ea3c94c8f2ff461c97be37bedae4d8 100644
--- a/Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-22.11.eb
+++ b/Overlays/hdfml_overlay/o/OpenMPI/OpenMPI-4.1.4-NVHPC-23.1.eb
@@ -4,7 +4,7 @@ version = '4.1.4'
 homepage = 'https://www.open-mpi.org/'
 description = """The Open MPI Project is an open source MPI-3 implementation."""
 
-toolchain = {'name': 'NVHPC', 'version': '22.11'}
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
 toolchainopts = {'pic': True}
 
 source_urls = [
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
index 8f16abaa8fb8ef6d4ea0f0966c1b9b90bb3b44b1..e74b7633708d4591d8195905305d9b5b811de53b 100644
--- a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-GCC-11.3.0.eb
@@ -2,7 +2,7 @@ name = 'psmpi'
 version = '5.7.0-1'
 
 homepage = 'https://github.com/ParaStation/psmpi2'
-description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
 based on MPICH v3. It provides extra low level communication libraries and integration with
 various batch systems for tighter process control.
 """
@@ -15,6 +15,8 @@ checksums = [
     # psmpi-5.7.0-1.tar.gz
     '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
     '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
 ]
 
 dependencies = [
@@ -28,7 +30,8 @@ dependencies = [
 patches = [
     'psmpi_shebang.patch',
     # We don't have IME in HDFML so we skip this
-    # 'psmpi-5.5.0-1_ime.patch'
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
 ]
 
 # We don't have IME in HDFML so we skip this
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9d30e1df616b07152b1518d05c2f4068b6db154c
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-NVHPC-23.1.eb
@@ -0,0 +1,48 @@
+name = 'psmpi'
+version = '5.7.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.0-1.tar.gz
+    '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
index cf308960ed923a6717e7e7ddbfae4bf0980de7b1..e998460844606905802d39c1808e157704b0f4dc 100644
--- a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.0-1-intel-compilers-2022.1.0.eb
@@ -2,7 +2,7 @@ name = 'psmpi'
 version = '5.7.0-1'
 
 homepage = 'https://github.com/ParaStation/psmpi2'
-description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
 based on MPICH v3. It provides extra low level communication libraries and integration with
 various batch systems for tighter process control.
 """
@@ -15,6 +15,8 @@ checksums = [
     # psmpi-5.7.0-1.tar.gz
     '0c1c8556afedfb08cd612f379ddb6327ef1bb0867d6f6fed3d610f3d8c790883',
     '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
 ]
 
 dependencies = [
@@ -28,7 +30,8 @@ dependencies = [
 patches = [
     'psmpi_shebang.patch',
     # We don't have IME in HDFML so we skip this
-    # 'psmpi-5.5.0-1_ime.patch'
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
 ]
 
 # We don't have IME in HDFML so we skip this
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..63bce372abcbbde979f69c7a5356f206780d307b
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-GCC-11.3.0.eb
@@ -0,0 +1,48 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cfd22989cb50fbf4ef55a1146813eb8ea29f5ed0
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-NVHPC-23.1.eb
@@ -0,0 +1,48 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d21dcf25e4856af5801ff60ea95a1a79d384fa58
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.7.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,48 @@
+name = 'psmpi'
+version = '5.7.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.1 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://github.com/ParaStation/psmpi/archive/']
+checksums = [
+    # psmpi-5.7.1-1.tar.gz
+    'fe6fee71ff7586295347c4d06e1be872adcbe136119152c5a0983bad643e967b',
+    '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156',  # psmpi_shebang.patch
+    # psmpi-5.7.0-1_singleton-fix.patch
+    '5ab46de53f6025367f444e77cd3374fe36a0728cde38c72db55603ebc08b50a2',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+patches = [
+    'psmpi_shebang.patch',
+    # We don't have IME in HDFML so we skip this
+    # 'psmpi-5.5.0-1_ime.patch',
+    'psmpi-5.7.0-1_singleton-fix.patch'
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..31fda169323f420a62b2292f4d472dda43986e27
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..964ea62932cecdf7befbaa222c1947fa319cf362
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1c25fc6b62a1178f5f4563e72fd3d422d598cb58
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..62eb40e8270c36a1e7a11677a09bcf14261a9fa8
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-23.1.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..06e6cac1b4223e5d8944f6581aa87941fa9aca10
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.0-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..55412bb5e6e696685a8c60f474225396121cf083
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.0-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.0-1.tar.gz
+    'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f3bb6e99757bd6168f96602306a9f034e30b9314
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0653692a96665a15d7eac386b0d024da04177853
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..11aeb75054e07d6113e2c525f304e70573d51737
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e82080e74606c0824f32a35387676d50023e2e50
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-NVHPC-23.1.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'NVHPC', 'version': '23.1'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9a3c8beaef5a698e917ec6922af4af5f9be830fc
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0-mt.eb
@@ -0,0 +1,39 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-mt'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = True
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8b1e3ff65e94065f26d5a6d9a3c3660b20a8ac00
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.1-1-intel-compilers-2022.1.0.eb
@@ -0,0 +1,38 @@
+name = 'psmpi'
+version = '5.8.1-1'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 4.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+# We don't have IME in HDFML so we skip this
+# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio'
+#
+# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && '
+# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && '
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Overlays/jureca_spr_overlay/c/CUDA/CUDA-12.0.eb b/Overlays/jureca_spr_overlay/c/CUDA/CUDA-12.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..25b9e239029ce37de14133c7a9747a625d2fa503
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/c/CUDA/CUDA-12.0.eb
@@ -0,0 +1,26 @@
+name = 'CUDA'
+version = '12.0'
+local_nv_version = '525.60.13'
+
+homepage = 'https://developer.nvidia.com/cuda-toolkit'
+description = """CUDA (formerly Compute Unified Device Architecture) is a parallel
+ computing platform and programming model created by NVIDIA and implemented by the
+ graphics processing units (GPUs) that they produce. CUDA gives developers access
+ to the virtual instruction set and memory of the parallel computational elements in CUDA GPUs."""
+
+toolchain = SYSTEM
+
+source_urls = ['https://developer.download.nvidia.com/compute/cuda/%(version)s.0/local_installers/']
+sources = ['cuda_%%(version)s.0_%s_linux%%(cudaarch)s.run' % local_nv_version]
+checksums = [{
+    'cuda_%%(version)s.0_%s_linux.run' % local_nv_version:
+        '905e9b9516900839fb76064719db752439f38b8cb730b49335d8bd53ddfad392',
+    'cuda_%%(version)s.0_%s_linux_ppc64le.run' % local_nv_version:
+        '117fe045c71668e45d41c6119b6f27875370c78e33fc56795b6fe014c796ec60',
+    'cuda_%%(version)s.0_%s_linux_sbsa.run' % local_nv_version:
+        'cd13e9c65d4c8f895a968706f46064d536be09f9706bce081cc864b7e4fa4544'
+}]
+
+dependencies = [('nvidia-driver', 'default', '', SYSTEM)]
+
+moduleclass = 'system'
diff --git a/Overlays/jureca_spr_overlay/i/intel-compilers/intel-compilers-2023.1.0.eb b/Overlays/jureca_spr_overlay/i/intel-compilers/intel-compilers-2023.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6c6a39ee30aca282f79546f01aa8e51e6cc4bbbb
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/i/intel-compilers/intel-compilers-2023.1.0.eb
@@ -0,0 +1,37 @@
+name = 'intel-compilers'
+version = '2023.1.0'
+
+homepage = 'https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit.html'
+description = "Intel C, C++ & Fortran compilers (classic and oneAPI)"
+
+toolchain = SYSTEM
+
+# see https://software.intel.com/content/www/us/en/develop/articles/oneapi-standalone-components.html
+sources = [
+    {
+        'source_urls': [
+            'https://registrationcenter-download.intel.com/akdlm/IRC_NAS/89283df8-c667-47b0-b7e1-c4573e37bd3e/',
+        ],
+        'filename': 'l_dpcpp-cpp-compiler_p_%(version)s.46347_offline.sh',
+    },
+    {
+        'source_urls': [
+            'https://registrationcenter-download.intel.com/akdlm/IRC_NAS/150e0430-63df-48a0-8469-ecebff0a1858/',
+        ],
+        'filename': 'l_fortran-compiler_p_%(version)s.46348_offline.sh',
+    },
+]
+checksums = [
+    {'l_dpcpp-cpp-compiler_p_2023.1.0.46347_offline.sh':
+     '3ac1c1179501a2646cbb052b05426554194573b4f8e2344d7699eed03fbcfa1d'},
+    {'l_fortran-compiler_p_2023.1.0.46348_offline.sh':
+     '7639af4b6c928e9e3ba92297a054f78a55f4f4d0db9db0d144cc6653004e4f24'},
+]
+
+local_gccver = '11.3.0'
+dependencies = [
+    ('GCCcore', local_gccver),
+    ('binutils', '2.38', '', ('GCCcore', local_gccver)),
+]
+
+moduleclass = 'compiler'
diff --git a/Overlays/jureca_spr_overlay/n/NCCL/NCCL-default-GCCcore-11.3.0-CUDA-12.0.eb b/Overlays/jureca_spr_overlay/n/NCCL/NCCL-default-GCCcore-11.3.0-CUDA-12.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..788c447550869a12320301c5977c34034c3c5461
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/n/NCCL/NCCL-default-GCCcore-11.3.0-CUDA-12.0.eb
@@ -0,0 +1,35 @@
+name = 'NCCL'
+version = 'default'
+local_realversion = '2.15.1-1'
+versionsuffix = '-CUDA-%(cudashortver)s'
+
+homepage = 'https://developer.nvidia.com/nccl'
+description = f"""
+The NVIDIA Collective Communications Library (NCCL) implements multi-GPU and multi-node collective
+communication primitives that are performance optimized for NVIDIA GPUs.
+
+The real version of this package is {local_realversion}
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+github_account = 'NVIDIA'
+sources = [{
+    'filename': f'%(name)s-{local_realversion}.tar.gz',
+    'git_config': {
+        'url': 'https://github.com/NVIDIA/',
+        'repo_name': 'nccl',
+        'tag': f'v{local_realversion}',
+        'recursive': True,
+    },
+}]
+checksums = ['3623d28598ec7283358d571ffcde1b5660c2b6050f0bd6731fe03fe8bad2a337']
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('CUDA', '12.0', '', SYSTEM),
+    ('UCX', 'default'),
+]
+
+moduleclass = 'lib'
diff --git a/Overlays/jureca_spr_overlay/n/NVSHMEM/NVSHMEM-2.8.0-gompi-2022a-CUDA-12.0.eb b/Overlays/jureca_spr_overlay/n/NVSHMEM/NVSHMEM-2.8.0-gompi-2022a-CUDA-12.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0d7ea683290a3e2b4b33714a5fb72b6f3079df0c
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/n/NVSHMEM/NVSHMEM-2.8.0-gompi-2022a-CUDA-12.0.eb
@@ -0,0 +1,71 @@
+easyblock = 'ConfigureMake'
+
+name = 'NVSHMEM'
+version = '2.8.0'
+versionsuffix = '-CUDA-%(cudaver)s'
+
+local_cuda_version = '12.0'
+
+homepage = 'https://developer.nvidia.com/nvshmem'
+description = """NVSHMEM is a parallel programming interface based on OpenSHMEM that provides 
+efficient and scalable communication for NVIDIA GPU clusters. NVSHMEM creates a 
+global address space for data that spans the memory of multiple GPUs and can be 
+accessed with fine-grained GPU-initiated operations, CPU-initiated operations, 
+and operations on CUDA streams.
+"""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+
+download_instructions = """The sources of NVSHMEM can be downloaded at NVIDIA's webpage when you have signed up for
+their (free) developer program:
+https://developer.nvidia.com/nvshmem-downloads"""
+
+sources = ['%(namelower)s_src_%(version)s-3.txz']
+checksums = ['7d4ef226630a94b587d18e02c27decc8b41d6f4ee52a26e25644b23cd18da81f']
+
+builddependencies = [
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('CUDA', local_cuda_version, '', SYSTEM),
+    ('NCCL', 'default', f'-CUDA-{local_cuda_version}'),
+]
+
+skipsteps = ['configure']
+
+prebuildopts = 'export %s &&' % ' '.join([
+    'NVSHMEM_USE_GDRCOPY=1',
+    'GDRCOPY_HOME=${EBROOTGDRCOPY}',
+
+    'MPI_HOME=${EBROOTOPENMPI}',
+    'NVSHMEM_MPI_SUPPORT=1',
+    'NVSHMEMTEST_USE_MPI_LAUNCHER=1',
+
+    'NCCL_HOME=${EBROOTNCCL}',
+    'NVSHMEM_USE_NCCL=1',
+
+    'NVSHMEM_BUILDDIR=%(builddir)s',
+    'NVSHMEM_EXAMPLES_BUILDDIR=${NVSHMEM_BUILDDIR}/examples/obj',
+    'NVSHMEM_OTHERTEST_BUILDDIR=${NVSHMEM_BUILDDIR}/othertest/obj',
+    'NVSHMEM_TEST_BUILDDIR=${NVSHMEM_BUILDDIR}/test/obj',
+    'NVSHMEM_PERFTEST_BUILDDIR=${NVSHMEM_BUILDDIR}/perftest/obj',
+
+    'NVSHMEM_PREFIX=%(installdir)s',
+    'NVSHMEM_EXAMPLES_INSTALL=${NVSHMEM_PREFIX}/examples',
+    'NVSHMEM_OTHERTEST_INSTALL=${NVSHMEM_PREFIX}/othertest',
+    'NVSHMEM_PERFTEST_INSTALL=${NVSHMEM_PREFIX}/perftest',
+    'NVSHMEM_TEST_INSTALL=${NVSHMEM_PREFIX}/test',
+])
+
+preinstallopts = prebuildopts
+
+sanity_check_paths = {
+    'files': ['lib/libnvshmem.a', 'lib/nvshmem_bootstrap_mpi.%s' % SHLIB_EXT],
+    'dirs': ['include']
+}
+
+modextravars = {'NVSHMEM_HOME': '%(installdir)s'}
+
+moduleclass = 'devel'
diff --git a/Overlays/jureca_spr_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/jureca_spr_overlay/n/nvidia-driver/nvidia-driver-default.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -0,0 +1,27 @@
+name = 'nvidia-driver'
+version = 'default'
+realversion = '525.105.17'
+
+homepage = 'https://developer.nvidia.com/cuda-toolkit'
+description = f"""
+This is a set of libraries normally installed by the NVIDIA driver installer.
+
+The real version of this package is {realversion}.
+"""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
+sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
+
+# To avoid conflicts between NVML and the kernel driver
+postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+moduleclass = 'system'
diff --git a/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.1_opal-datatype-cuda-performance.patch b/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.1_opal-datatype-cuda-performance.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8c1a1f8ec353b5e35b8ee3912b4ecb0373de0c94
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.1_opal-datatype-cuda-performance.patch
@@ -0,0 +1,456 @@
+If Open MPI is built with support for CUDA there's a small
+(up to 10%) performance penalty for small messages due to overhead
+in the datatype memory copy functionality.
+
+This eliminates most of this overhead as follows:
+1. Seperate compilation of CUDA code paths in pack/unpack routines
+   instead of runtime checks in inner loops, similar to the existing
+   checksum functionality.
+2. Expose opal_cuda_enabled variable so it can be checked directly
+   in opal_datatype_copy_content_same_ddt() instead of calling a
+   function.
+3. Eliminate cbmemcpy function pointer as it always points to
+   opal_cuda_memcpy(), and a direct call is cheaper.
+
+Signed off by Bart Oldeman <bart.oldeman@calculquebec.ca>
+
+diff --git a/opal/datatype/Makefile.am b/opal/datatype/Makefile.am
+index daaaa8e4b0..ef2da1cd81 100644
+--- a/opal/datatype/Makefile.am
++++ b/opal/datatype/Makefile.am
+@@ -44,6 +44,11 @@ noinst_LTLIBRARIES = \
+ # these sources will be compiled with the special -D
+ libdatatype_reliable_la_SOURCES = opal_datatype_pack.c opal_datatype_unpack.c
+ libdatatype_reliable_la_CFLAGS = -DCHECKSUM $(AM_CFLAGS)
++if OPAL_cuda_support
++libdatatype_gpu_la_SOURCES = opal_datatype_pack.c opal_datatype_unpack.c
++libdatatype_gpu_la_CFLAGS = -DOPAL_DATATYPE_PACK_UNPACK_GPU $(AM_CFLAGS)
++noinst_LTLIBRARIES += libdatatype_gpu.la
++endif
+ 
+ # these sources will be compiled with the normal CFLAGS only
+ libdatatype_la_SOURCES = \
+@@ -69,6 +74,9 @@ libdatatype_la_SOURCES = \
+         opal_datatype_unpack.c
+ 
+ libdatatype_la_LIBADD = libdatatype_reliable.la
++if OPAL_cuda_support
++libdatatype_la_LIBADD += libdatatype_gpu.la
++endif
+ 
+ # Conditionally install the header files
+ if WANT_INSTALL_HEADERS
+diff --git a/opal/datatype/opal_convertor.c b/opal/datatype/opal_convertor.c
+index 3931d99d17..33aebe2612 100644
+--- a/opal/datatype/opal_convertor.c
++++ b/opal/datatype/opal_convertor.c
+@@ -40,8 +40,6 @@
+ #include "opal/datatype/opal_convertor_internal.h"
+ #if OPAL_CUDA_SUPPORT
+ #include "opal/datatype/opal_datatype_cuda.h"
+-#define MEMCPY_CUDA( DST, SRC, BLENGTH, CONVERTOR ) \
+-    CONVERTOR->cbmemcpy( (DST), (SRC), (BLENGTH), (CONVERTOR) )
+ #endif
+ 
+ static void opal_convertor_construct( opal_convertor_t* convertor )
+@@ -51,9 +49,6 @@ static void opal_convertor_construct( opal_convertor_t* convertor )
+     convertor->partial_length = 0;
+     convertor->remoteArch     = opal_local_arch;
+     convertor->flags          = OPAL_DATATYPE_FLAG_NO_GAPS | CONVERTOR_COMPLETED;
+-#if OPAL_CUDA_SUPPORT
+-    convertor->cbmemcpy       = &opal_cuda_memcpy;
+-#endif
+ }
+ 
+ 
+@@ -241,11 +236,7 @@ int32_t opal_convertor_pack( opal_convertor_t* pConv,
+             if( OPAL_LIKELY(NULL == iov[i].iov_base) )
+                 iov[i].iov_base = (IOVBASE_TYPE *) base_pointer;
+             else
+-#if OPAL_CUDA_SUPPORT
+-                MEMCPY_CUDA( iov[i].iov_base, base_pointer, iov[i].iov_len, pConv );
+-#else
+                 MEMCPY( iov[i].iov_base, base_pointer, iov[i].iov_len );
+-#endif
+             pending_length -= iov[i].iov_len;
+             base_pointer += iov[i].iov_len;
+         }
+@@ -258,11 +249,7 @@ complete_contiguous_data_pack:
+         if( OPAL_LIKELY(NULL == iov[i].iov_base) )
+             iov[i].iov_base = (IOVBASE_TYPE *) base_pointer;
+         else
+-#if OPAL_CUDA_SUPPORT
+-            MEMCPY_CUDA( iov[i].iov_base, base_pointer, iov[i].iov_len, pConv );
+-#else
+             MEMCPY( iov[i].iov_base, base_pointer, iov[i].iov_len );
+-#endif
+         pConv->bConverted = pConv->local_size;
+         *out_size = i + 1;
+         pConv->flags |= CONVERTOR_COMPLETED;
+@@ -296,11 +283,7 @@ int32_t opal_convertor_unpack( opal_convertor_t* pConv,
+             if( iov[i].iov_len >= pending_length ) {
+                 goto complete_contiguous_data_unpack;
+             }
+-#if OPAL_CUDA_SUPPORT
+-            MEMCPY_CUDA( base_pointer, iov[i].iov_base, iov[i].iov_len, pConv );
+-#else
+             MEMCPY( base_pointer, iov[i].iov_base, iov[i].iov_len );
+-#endif
+             pending_length -= iov[i].iov_len;
+             base_pointer += iov[i].iov_len;
+         }
+@@ -310,11 +293,7 @@ int32_t opal_convertor_unpack( opal_convertor_t* pConv,
+ 
+ complete_contiguous_data_unpack:
+         iov[i].iov_len = pending_length;
+-#if OPAL_CUDA_SUPPORT
+-        MEMCPY_CUDA( base_pointer, iov[i].iov_base, iov[i].iov_len, pConv );
+-#else
+         MEMCPY( base_pointer, iov[i].iov_base, iov[i].iov_len );
+-#endif
+         pConv->bConverted = pConv->local_size;
+         *out_size = i + 1;
+         pConv->flags |= CONVERTOR_COMPLETED;
+@@ -530,7 +509,7 @@ size_t opal_convertor_compute_remote_size( opal_convertor_t* pConvertor )
+                                                                         \
+         convertor->remote_size = convertor->local_size;                 \
+         if( OPAL_LIKELY(convertor->remoteArch == opal_local_arch) ) {   \
+-            if( !(convertor->flags & CONVERTOR_WITH_CHECKSUM) &&        \
++            if( !(convertor->flags & (CONVERTOR_WITH_CHECKSUM | CONVERTOR_CUDA)) &&        \
+                 ((convertor->flags & OPAL_DATATYPE_FLAG_NO_GAPS) || \
+                  ((convertor->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS) && (1 == count))) ) { \
+                 return OPAL_SUCCESS;                                    \
+@@ -541,8 +520,8 @@ size_t opal_convertor_compute_remote_size( opal_convertor_t* pConvertor )
+         opal_convertor_compute_remote_size( convertor );                \
+         assert( NULL != convertor->use_desc->desc );                    \
+         /* For predefined datatypes (contiguous) do nothing more */     \
+-        /* if checksum is enabled then always continue */               \
+-        if( ((convertor->flags & (CONVERTOR_WITH_CHECKSUM | OPAL_DATATYPE_FLAG_NO_GAPS)) \
++        /* if checksum or cuda is enabled then always continue */       \
++        if( ((convertor->flags & (CONVERTOR_WITH_CHECKSUM | CONVERTOR_CUDA | OPAL_DATATYPE_FLAG_NO_GAPS)) \
+              == OPAL_DATATYPE_FLAG_NO_GAPS) &&                          \
+             ((convertor->flags & (CONVERTOR_SEND | CONVERTOR_HOMOGENEOUS)) == \
+              (CONVERTOR_SEND | CONVERTOR_HOMOGENEOUS)) ) {              \
+@@ -592,7 +571,19 @@ int32_t opal_convertor_prepare_for_recv( opal_convertor_t* convertor,
+             }
+         }
+     } else
+-#endif  /* defined(CHECKSUM) */
++#elif OPAL_CUDA_SUPPORT
++    if (OPAL_UNLIKELY(convertor->flags & CONVERTOR_CUDA)) {
++        if (OPAL_UNLIKELY(!(convertor->flags & CONVERTOR_HOMOGENEOUS))) {
++            convertor->fAdvance = opal_unpack_general_gpu;
++        } else {
++            if (convertor->pDesc->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS) {
++                convertor->fAdvance = opal_unpack_homogeneous_contig_gpu;
++            } else {
++                convertor->fAdvance = opal_generic_simple_unpack_gpu;
++            }
++        }
++    } else
++#endif  /* defined(CHECKSUM) || OPAL_CUDA_SUPPORT */
+         if( OPAL_UNLIKELY(!(convertor->flags & CONVERTOR_HOMOGENEOUS)) ) {
+             convertor->fAdvance = opal_unpack_general;
+         } else {
+@@ -636,7 +627,25 @@ int32_t opal_convertor_prepare_for_send( opal_convertor_t* convertor,
+             }
+         }
+     } else
+-#endif  /* defined(CHECKSUM) */
++#elif OPAL_CUDA_SUPPORT
++    if (OPAL_UNLIKELY(convertor->flags & CONVERTOR_CUDA)) {
++        if (CONVERTOR_SEND_CONVERSION
++            == (convertor->flags & (CONVERTOR_SEND_CONVERSION | CONVERTOR_HOMOGENEOUS))) {
++            convertor->fAdvance = opal_pack_general_gpu;
++        } else {
++            if (datatype->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS) {
++                if (((datatype->ub - datatype->lb) == (ptrdiff_t) datatype->size)
++                    || (1 >= convertor->count)) {
++                    convertor->fAdvance = opal_pack_homogeneous_contig_gpu;
++                } else {
++                    convertor->fAdvance = opal_pack_homogeneous_contig_with_gaps_gpu;
++                }
++            } else {
++                convertor->fAdvance = opal_generic_simple_pack_gpu;
++            }
++        }
++    } else
++#endif  /* defined(CHECKSUM) || OPAL_CUDA_SUPPORT */
+         if( CONVERTOR_SEND_CONVERSION == (convertor->flags & (CONVERTOR_SEND_CONVERSION|CONVERTOR_HOMOGENEOUS)) ) {
+             convertor->fAdvance = opal_pack_general;
+         } else {
+@@ -694,9 +703,6 @@ int opal_convertor_clone( const opal_convertor_t* source,
+         destination->bConverted = source->bConverted;
+         destination->stack_pos  = source->stack_pos;
+     }
+-#if OPAL_CUDA_SUPPORT
+-    destination->cbmemcpy   = source->cbmemcpy;
+-#endif
+     return OPAL_SUCCESS;
+ }
+ 
+diff --git a/opal/datatype/opal_convertor.h b/opal/datatype/opal_convertor.h
+index b24d94c37b..53b6f0d526 100644
+--- a/opal/datatype/opal_convertor.h
++++ b/opal/datatype/opal_convertor.h
+@@ -118,7 +118,6 @@ struct opal_convertor_t {
+     dt_stack_t                    static_stack[DT_STATIC_STACK_SIZE];  /**< local stack for small datatypes */
+ 
+ #if OPAL_CUDA_SUPPORT
+-    memcpy_fct_t                  cbmemcpy;       /**< memcpy or cuMemcpy */
+     void *                        stream;         /**< CUstream for async copy */
+ #endif
+ };
+diff --git a/opal/datatype/opal_datatype_copy.c b/opal/datatype/opal_datatype_copy.c
+index c70bdd24df..d7c10af3dc 100644
+--- a/opal/datatype/opal_datatype_copy.c
++++ b/opal/datatype/opal_datatype_copy.c
+@@ -86,14 +86,6 @@ static size_t opal_datatype_memop_block_size = 128 * 1024;
+ #define MEM_OP opal_cuda_memmove
+ #include "opal_datatype_copy.h"
+ 
+-#define SET_CUDA_COPY_FCT(cuda_device_bufs, fct, copy_function)     \
+-    do {                                                            \
+-        if (true == cuda_device_bufs) {                             \
+-            fct = copy_function;                                    \
+-        }                                                           \
+-    } while(0)
+-#else
+-#define SET_CUDA_COPY_FCT(cuda_device_bufs, fct, copy_function)
+ #endif
+ 
+ int32_t opal_datatype_copy_content_same_ddt( const opal_datatype_t* datatype, int32_t count,
+@@ -102,10 +94,6 @@ int32_t opal_datatype_copy_content_same_ddt( const opal_datatype_t* datatype, in
+     ptrdiff_t extent;
+     int32_t (*fct)( const opal_datatype_t*, int32_t, char*, char*);
+ 
+-#if OPAL_CUDA_SUPPORT
+-    bool cuda_device_bufs = opal_cuda_check_bufs(destination_base, source_base);
+-#endif
+-
+     DO_DEBUG( opal_output( 0, "opal_datatype_copy_content_same_ddt( %p, %d, dst %p, src %p )\n",
+                            (void*)datatype, count, (void*)destination_base, (void*)source_base ); );
+ 
+@@ -122,20 +110,25 @@ int32_t opal_datatype_copy_content_same_ddt( const opal_datatype_t* datatype, in
+     extent = (datatype->true_ub - datatype->true_lb) + (count - 1) * (datatype->ub - datatype->lb);
+ 
+     fct = non_overlap_copy_content_same_ddt;
+-    SET_CUDA_COPY_FCT(cuda_device_bufs, fct, non_overlap_cuda_copy_content_same_ddt);
+     if( destination_base < source_base ) {
+         if( (destination_base + extent) > source_base ) {
+             /* memmove */
+             fct = overlap_copy_content_same_ddt;
+-            SET_CUDA_COPY_FCT(cuda_device_bufs, fct, overlap_cuda_copy_content_same_ddt);
+         }
+     } else {
+         if( (source_base + extent) > destination_base ) {
+             /* memmove */
+             fct = overlap_copy_content_same_ddt;
+-            SET_CUDA_COPY_FCT(cuda_device_bufs, fct, overlap_cuda_copy_content_same_ddt);
+         }
+     }
++
++#if OPAL_CUDA_SUPPORT
++    if (OPAL_UNLIKELY(opal_cuda_enabled) && opal_cuda_check_bufs(destination_base, source_base)) {
++        fct = (fct == non_overlap_copy_content_same_ddt ?
++               non_overlap_cuda_copy_content_same_ddt : overlap_cuda_copy_content_same_ddt);
++    }
++#endif
++
+     return fct( datatype, count, destination_base, source_base );
+ }
+ 
+diff --git a/opal/datatype/opal_datatype_cuda.c b/opal/datatype/opal_datatype_cuda.c
+index 7869f17e90..f3b3cef8da 100644
+--- a/opal/datatype/opal_datatype_cuda.c
++++ b/opal/datatype/opal_datatype_cuda.c
+@@ -20,7 +20,7 @@
+ 
+ static bool initialized = false;
+ int opal_cuda_verbose = 0;
+-static int opal_cuda_enabled = 0; /* Starts out disabled */
++int opal_cuda_enabled = 1; /* Starts out enabled */
+ static int opal_cuda_output = 0;
+ static void opal_cuda_support_init(void);
+ static int (*common_cuda_initialization_function)(opal_common_cuda_function_table_t *) = NULL;
+@@ -48,10 +48,6 @@ void mca_cuda_convertor_init(opal_convertor_t* convertor, const void *pUserBuf)
+         opal_cuda_support_init();
+     }
+ 
+-    /* This is needed to handle case where convertor is not fully initialized
+-     * like when trying to do a sendi with convertor on the statck */
+-    convertor->cbmemcpy = (memcpy_fct_t)&opal_cuda_memcpy;
+-
+     /* If not enabled, then nothing else to do */
+     if (!opal_cuda_enabled) {
+         return;
+@@ -192,6 +188,7 @@ static void opal_cuda_support_init(void)
+ 
+     /* Callback into the common cuda initialization routine. This is only
+      * set if some work had been done already in the common cuda code.*/
++    opal_cuda_enabled = 0;
+     if (NULL != common_cuda_initialization_function) {
+         if (0 == common_cuda_initialization_function(&ftable)) {
+             opal_cuda_enabled = 1;
+diff --git a/opal/datatype/opal_datatype_cuda.h b/opal/datatype/opal_datatype_cuda.h
+index 2789320520..d512e24550 100644
+--- a/opal/datatype/opal_datatype_cuda.h
++++ b/opal/datatype/opal_datatype_cuda.h
+@@ -30,4 +30,6 @@ void* opal_cuda_memmove(void * dest, void * src, size_t size);
+ void opal_cuda_add_initialization_function(int (*fptr)(opal_common_cuda_function_table_t *));
+ void opal_cuda_set_copy_function_async(opal_convertor_t* convertor, void *stream);
+ 
++extern int opal_cuda_enabled;
++
+ #endif
+diff --git a/opal/datatype/opal_datatype_pack.c b/opal/datatype/opal_datatype_pack.c
+index b4e03a9bea..f42e292e0b 100644
+--- a/opal/datatype/opal_datatype_pack.c
++++ b/opal/datatype/opal_datatype_pack.c
+@@ -45,6 +45,11 @@
+ #define opal_pack_homogeneous_contig_with_gaps_function opal_pack_homogeneous_contig_with_gaps_checksum
+ #define opal_generic_simple_pack_function               opal_generic_simple_pack_checksum
+ #define opal_pack_general_function                      opal_pack_general_checksum
++#elif defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
++#define opal_pack_homogeneous_contig_function           opal_pack_homogeneous_contig_gpu
++#define opal_pack_homogeneous_contig_with_gaps_function opal_pack_homogeneous_contig_with_gaps_gpu
++#define opal_generic_simple_pack_function               opal_generic_simple_pack_gpu
++#define opal_pack_general_function                      opal_pack_general_gpu
+ #else
+ #define opal_pack_homogeneous_contig_function           opal_pack_homogeneous_contig
+ #define opal_pack_homogeneous_contig_with_gaps_function opal_pack_homogeneous_contig_with_gaps
+diff --git a/opal/datatype/opal_datatype_pack.h b/opal/datatype/opal_datatype_pack.h
+index 2a2e79180d..7fbf0c88e2 100644
+--- a/opal/datatype/opal_datatype_pack.h
++++ b/opal/datatype/opal_datatype_pack.h
+@@ -19,11 +19,12 @@
+ 
+ #include "opal_config.h"
+ 
+-#if !defined(CHECKSUM) && OPAL_CUDA_SUPPORT
++#if defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
+ /* Make use of existing macro to do CUDA style memcpy */
++#include "opal_datatype_cuda.h"
+ #undef MEMCPY_CSUM
+ #define MEMCPY_CSUM( DST, SRC, BLENGTH, CONVERTOR ) \
+-    CONVERTOR->cbmemcpy( (DST), (SRC), (BLENGTH), (CONVERTOR) )
++    opal_cuda_memcpy( (DST), (SRC), (BLENGTH), (CONVERTOR) )
+ #endif
+ 
+ /**
+diff --git a/opal/datatype/opal_datatype_prototypes.h b/opal/datatype/opal_datatype_prototypes.h
+index 668397112b..111f74f2a4 100644
+--- a/opal/datatype/opal_datatype_prototypes.h
++++ b/opal/datatype/opal_datatype_prototypes.h
+@@ -39,6 +39,16 @@ OPAL_DECLSPEC int32_t
+ opal_unpack_general_checksum( opal_convertor_t* pConvertor,
+                               struct iovec* iov, uint32_t* out_size,
+                               size_t* max_data );
++#if OPAL_CUDA_SUPPORT
++OPAL_DECLSPEC int32_t
++opal_pack_general_gpu( opal_convertor_t* pConvertor,
++                        struct iovec* iov, uint32_t* out_size,
++                        size_t* max_data );
++OPAL_DECLSPEC int32_t
++opal_unpack_general_gpu( opal_convertor_t* pConvertor,
++                          struct iovec* iov, uint32_t* out_size,
++                          size_t* max_data );
++#endif
+ 
+ /*
+  * Now the internal functions
+@@ -83,6 +93,28 @@ int32_t
+ opal_generic_simple_unpack_checksum( opal_convertor_t* pConvertor,
+                                      struct iovec* iov, uint32_t* out_size,
+                                      size_t* max_data );
++#if OPAL_CUDA_SUPPORT
++int32_t
++opal_pack_homogeneous_contig_gpu( opal_convertor_t* pConv,
++                                   struct iovec* iov, uint32_t* out_size,
++                                   size_t* max_data );
++int32_t
++opal_pack_homogeneous_contig_with_gaps_gpu( opal_convertor_t* pConv,
++                                             struct iovec* iov, uint32_t* out_size,
++                                             size_t* max_data );
++int32_t
++opal_generic_simple_pack_gpu( opal_convertor_t* pConvertor,
++                               struct iovec* iov, uint32_t* out_size,
++                               size_t* max_data );
++int32_t
++opal_unpack_homogeneous_contig_gpu( opal_convertor_t* pConv,
++                                     struct iovec* iov, uint32_t* out_size,
++                                     size_t* max_data );
++int32_t
++opal_generic_simple_unpack_gpu( opal_convertor_t* pConvertor,
++                                 struct iovec* iov, uint32_t* out_size,
++                                 size_t* max_data );
++#endif
+ 
+ END_C_DECLS
+ 
+diff --git a/opal/datatype/opal_datatype_unpack.c b/opal/datatype/opal_datatype_unpack.c
+index 26a5810dc0..668b6624aa 100644
+--- a/opal/datatype/opal_datatype_unpack.c
++++ b/opal/datatype/opal_datatype_unpack.c
+@@ -46,6 +46,10 @@
+ #define opal_unpack_general_function            opal_unpack_general_checksum
+ #define opal_unpack_homogeneous_contig_function opal_unpack_homogeneous_contig_checksum
+ #define opal_generic_simple_unpack_function     opal_generic_simple_unpack_checksum
++#elif defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
++#define opal_unpack_general_function            opal_unpack_general_gpu
++#define opal_unpack_homogeneous_contig_function opal_unpack_homogeneous_contig_gpu
++#define opal_generic_simple_unpack_function     opal_generic_simple_unpack_gpu
+ #else
+ #define opal_unpack_general_function            opal_unpack_general
+ #define opal_unpack_homogeneous_contig_function opal_unpack_homogeneous_contig
+@@ -204,10 +208,10 @@ opal_unpack_partial_predefined(opal_convertor_t *pConvertor, const dt_elem_desc_
+     MEMCPY( temporary + start_position, partial_data, length );
+ 
+     /* Save the original content of the user memory */
+-#if OPAL_CUDA_SUPPORT
++#if defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
+     /* In the case where the data is being unpacked from device memory, need to
+      * use the special host to device memory copy. */
+-    pConvertor->cbmemcpy(saved_data, user_data, data_length, pConvertor );
++    opal_cuda_memcpy(saved_data, user_data, data_length, pConvertor );
+ #else
+     MEMCPY( saved_data, user_data, data_length );
+ #endif
+@@ -222,15 +226,15 @@ opal_unpack_partial_predefined(opal_convertor_t *pConvertor, const dt_elem_desc_
+ 
+     /* Rebuild the data by pulling back the unmodified bytes from the original
+      * content in the user memory. */
+-#if OPAL_CUDA_SUPPORT
++#if defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
+     /* Need to copy the modified user_data again so we can see which
+      * bytes need to be converted back to their original values. */
+     {
+         char resaved_data[16];
+-        pConvertor->cbmemcpy(resaved_data, user_data, data_length, pConvertor );
++        opal_cuda_memcpy(resaved_data, user_data, data_length, pConvertor );
+         for(size_t i = 0; i < data_length; i++ ) {
+             if( unused_byte == resaved_data[i] )
+-                pConvertor->cbmemcpy(&user_data[i], &saved_data[i], 1, pConvertor);
++                opal_cuda_memcpy(&user_data[i], &saved_data[i], 1, pConvertor);
+         }
+     }
+ #else
+diff --git a/opal/datatype/opal_datatype_unpack.h b/opal/datatype/opal_datatype_unpack.h
+index 33db837882..4159a475fc 100644
+--- a/opal/datatype/opal_datatype_unpack.h
++++ b/opal/datatype/opal_datatype_unpack.h
+@@ -19,11 +19,12 @@
+ 
+ #include "opal_config.h"
+ 
+-#if !defined(CHECKSUM) && OPAL_CUDA_SUPPORT
++#if defined(OPAL_DATATYPE_PACK_UNPACK_GPU)
+ /* Make use of existing macro to do CUDA style memcpy */
++#include "opal_datatype_cuda.h"
+ #undef MEMCPY_CSUM
+ #define MEMCPY_CSUM( DST, SRC, BLENGTH, CONVERTOR ) \
+-    CONVERTOR->cbmemcpy( (DST), (SRC), (BLENGTH), (CONVERTOR) )
++    opal_cuda_memcpy( (DST), (SRC), (BLENGTH), (CONVERTOR) )
+ #endif
+ 
+ /**
diff --git a/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb b/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..49c9419c1eaa7ed650c95d3e37e88f289642688c
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/o/OpenMPI/OpenMPI-4.1.4-GCC-11.3.0.eb
@@ -0,0 +1,82 @@
+easyblock = 'ConfigureMake'
+
+name = 'OpenMPI'
+version = '4.1.4'
+
+homepage = 'https://www.open-mpi.org/'
+description = """The Open MPI Project is an open source MPI-3 implementation."""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
+sources = [SOURCELOWER_TAR_BZ2]
+patches = [
+    'OpenMPI-4.1.1_opal-datatype-cuda-performance.patch',
+]
+checksums = [
+    '92912e175fd1234368c8730c03f4996fe5942e7479bb1d10059405e7f2b3930d',  # openmpi-4.1.4.tar.bz2
+    # OpenMPI-4.1.1_opal-datatype-cuda-performance.patch
+    'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e',
+]
+
+osdependencies = [
+    # needed for --with-verbs
+    ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'),
+]
+
+builddependencies = [
+    ('pkgconf', '1.8.0'),
+    ('Perl', '5.34.1'),
+    ('Autotools', '20220317'),
+]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('hwloc', '2.7.1'),
+    ('UCX', 'default'),
+    ('CUDA', '12.0', '', SYSTEM),
+    ('libevent', '2.1.12'),
+    ('PMIx', '3.2.3'),  # We rely on this version since it is the newest supported by psmgmt
+    ('UCC', 'default'),
+]
+
+# Update configure to include changes from the "internal-cuda" patch
+# by running a subset of autogen.pl sufficient to achieve this
+# without doing the full, long-running regeneration.
+preconfigopts = ' && '.join([
+    'cd config',
+    'autom4te --language=m4sh opal_get_version.m4sh -o opal_get_version.sh',
+    'cd ..',
+    'autoconf',
+    'autoheader',
+    'aclocal',
+    'automake',
+    ''
+])
+
+configopts = '--enable-shared '
+configopts += '--with-hwloc=$EBROOTHWLOC '  # hwloc support
+configopts += '--with-ucx=$EBROOTUCX '
+configopts += '--with-verbs '
+configopts += '--with-libevent=$EBROOTLIBEVENT '
+configopts += '--without-orte '
+configopts += '--without-psm2 '
+configopts += '--disable-oshmem '
+configopts += '--with-cuda=$EBROOTCUDA '
+configopts += '--with-ime=/opt/ddn/ime '
+configopts += '--with-gpfs '
+
+# to enable SLURM integration (site-specific)
+configopts += '--with-slurm --with-pmix=external --with-libevent=external --with-ompi-pmix-rte'
+
+local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
+sanity_check_paths = {
+    'files': ["bin/%s" % local_binfile for local_binfile in ["ompi_info", "opal_wrapper"]] +
+             ["lib/lib%s.%s" % (local_libfile, SHLIB_EXT) for local_libfile in local_libs] +
+             ["include/%s.h" % x for x in ["mpi-ext", "mpif-config",
+                                           "mpif", "mpi", "mpi_portable_platform"]],
+    'dirs': [],
+}
+
+moduleclass = 'mpi'
diff --git a/Overlays/jureca_spr_overlay/u/UCC/UCC-default-GCCcore-11.3.0.eb b/Overlays/jureca_spr_overlay/u/UCC/UCC-default-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a508309e86fb8b4d1866250e5cc1b4923b4a0f2f
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/u/UCC/UCC-default-GCCcore-11.3.0.eb
@@ -0,0 +1,58 @@
+# For figuring out the correct GPU arch. Easyconfig templates can't be used,
+# since we have in some systems more than 1 compute capability.
+# The local prefix is to appease the checker
+import os as local_os
+
+easyblock = 'ConfigureMake'
+
+name = 'UCC'
+version = 'default'
+local_realversion = '1.2.0-rc1'
+
+homepage = 'https://www.openucx.org/'
+description = f"""UCC (Unified Collective Communication) is a collective
+communication operations API and library that is flexible, complete, and 
+feature-rich for current and emerging programming models and runtimes.
+
+The real version of this package is {local_realversion}
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/openucx/ucc/archive/refs/tags']
+sources = [f'v{local_realversion}.tar.gz']
+checksums = [
+    {'v1.2.0-rc1.tar.gz': 'ae6384eecec5054e2c5e960dfc03c083f5f98afaed17276a306c6fe27db4354b'},
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Autotools', '20220317'),
+]
+
+dependencies = [
+    ('UCX', 'default'),
+    ('CUDA', '12.0', '', SYSTEM),
+    ('NCCL', 'default', '-CUDA-%(cudashortver)s'),
+]
+
+preconfigopts = "./autogen.sh && "
+
+local_gpu_cc = local_os.environ["EASYBUILD_CUDA_COMPUTE_CAPABILITIES"].split(',')[0].replace('.', '')
+
+configopts = "--enable-optimizations "
+configopts += f"--with-nvcc-gencode=-gencode=arch=compute_{local_gpu_cc},code=sm_{local_gpu_cc} "
+configopts += "--with-ucx=$EBROOTUCX "
+configopts += "--with-cuda=$EBROOTCUDA "
+configopts += "--with-nccl=$EBROOTNCCL "
+# configopts += "--with-sharp=/opt/mellanox/sharp "
+
+sanity_check_paths = {
+    'files': ['bin/ucc_info'],
+    'dirs': ['include', 'lib']
+}
+
+sanity_check_commands = ["ucc_info -c"]
+
+moduleclass = 'lib'
diff --git a/Overlays/jureca_spr_overlay/u/UCX/UCX-default-GCCcore-11.3.0.eb b/Overlays/jureca_spr_overlay/u/UCX/UCX-default-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..428abc8959f099e384044ec0bb2927c572e7b91b
--- /dev/null
+++ b/Overlays/jureca_spr_overlay/u/UCX/UCX-default-GCCcore-11.3.0.eb
@@ -0,0 +1,79 @@
+easyblock = 'ConfigureMake'
+
+name = 'UCX'
+version = 'default'
+local_realversion = '1.13.1'
+
+homepage = 'https://www.openucx.org/'
+description = f"""Unified Communication X
+An open-source production grade communication framework for data centric
+and high-performance applications
+
+The real version of this package is {local_realversion}
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [f'https://github.com/openucx/ucx/releases/download/v{local_realversion}']
+sources = ['%%(namelower)s-%s.tar.gz' % local_realversion]
+checksums = ['efc37829b68e131d2acc82a3fd4334bfd611156a756837ffeb650ab9a9dd3828']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+]
+
+osdependencies = [OS_PKG_IBVERBS_DEV]
+
+dependencies = [
+    ('zlib', '1.2.12'),
+    ('numactl', '2.0.15'),
+    ('CUDA', '12.0', '', SYSTEM),
+]
+
+configopts = '--with-verbs '  # Build OpenFabrics support
+configopts += '--without-java '
+configopts += '--disable-doxygen-doc '
+
+# Enable machine-specific optimizations, default: NO
+configopts += '--enable-optimizations '
+# configopts += '--enable-tuning '       # Enable parameter tuning in run-time, default: NO
+# Enable thread support in UCP and UCT, default: NO
+configopts += '--enable-mt '
+configopts += '--disable-debug '
+configopts += '--disable-logging '
+configopts += '--disable-assertions '
+configopts += '--disable-params-check '
+configopts += '--disable-dependency-tracking '
+configopts += '--with-cuda=$EBROOTCUDA '
+
+configopts += '--enable-cma '           # Enable Cross Memory Attach
+
+# Compile with IB Reliable Connection support
+configopts += '--with-rc '
+# Compile with IB Unreliable Datagram support
+configopts += '--with-ud '
+# Compile with IB Dynamic Connection support
+configopts += '--with-dc '
+configopts += '--with-mlx5-dv '         # Compile with mlx5 Direct Verbs support
+configopts += '--with-ib-hw-tm '        # Compile with IB Tag Matching support
+configopts += '--with-dm '              # Compile with Device Memory support
+
+configopts += '--with-avx '             # Compile with AVX
+# configopts += '--with-gdrcopy '         # Compile with GDRCopy
+
+# Compile without IB Connection Manager support
+configopts += '--without-cm '
+
+buildopts = 'V=1'
+
+sanity_check_paths = {
+    'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'],
+    'dirs': ['include', 'lib', 'share']
+}
+
+sanity_check_commands = ["ucx_info -d"]
+
+moduleclass = 'system'
diff --git a/Overlays/jurecadc_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/jurecadc_overlay/n/nvidia-driver/nvidia-driver-default.eb
index 22e40535fb019858b9b56e057e9d844079138c3a..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2 100644
--- a/Overlays/jurecadc_overlay/n/nvidia-driver/nvidia-driver-default.eb
+++ b/Overlays/jurecadc_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -1,6 +1,6 @@
 name = 'nvidia-driver'
 version = 'default'
-realversion = '515.65.07'
+realversion = '525.105.17'
 
 homepage = 'https://developer.nvidia.com/cuda-toolkit'
 description = f"""
@@ -15,7 +15,7 @@ toolchain = SYSTEM
 
 source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
 sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
-checksums = ['c6876b9dfd7ff91918610c8117995b6be3c524914c3c2e2170b71a6ef929fa24']
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
 
 # To avoid conflicts between NVML and the kernel driver
 postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
diff --git a/Overlays/jusuf_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/jusuf_overlay/n/nvidia-driver/nvidia-driver-default.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2
--- /dev/null
+++ b/Overlays/jusuf_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -0,0 +1,27 @@
+name = 'nvidia-driver'
+version = 'default'
+realversion = '525.105.17'
+
+homepage = 'https://developer.nvidia.com/cuda-toolkit'
+description = f"""
+This is a set of libraries normally installed by the NVIDIA driver installer.
+
+The real version of this package is {realversion}.
+"""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
+sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
+
+# To avoid conflicts between NVML and the kernel driver
+postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+moduleclass = 'system'
diff --git a/Overlays/juwels_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/juwels_overlay/n/nvidia-driver/nvidia-driver-default.eb
index 22e40535fb019858b9b56e057e9d844079138c3a..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2 100644
--- a/Overlays/juwels_overlay/n/nvidia-driver/nvidia-driver-default.eb
+++ b/Overlays/juwels_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -1,6 +1,6 @@
 name = 'nvidia-driver'
 version = 'default'
-realversion = '515.65.07'
+realversion = '525.105.17'
 
 homepage = 'https://developer.nvidia.com/cuda-toolkit'
 description = f"""
@@ -15,7 +15,7 @@ toolchain = SYSTEM
 
 source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
 sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
-checksums = ['c6876b9dfd7ff91918610c8117995b6be3c524914c3c2e2170b71a6ef929fa24']
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
 
 # To avoid conflicts between NVML and the kernel driver
 postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
diff --git a/Overlays/juwelsbooster_overlay/n/nvidia-driver/nvidia-driver-default.eb b/Overlays/juwelsbooster_overlay/n/nvidia-driver/nvidia-driver-default.eb
index 22e40535fb019858b9b56e057e9d844079138c3a..2900da59e4083c0d7fe1a0d7fd1cae2fd1bd0bf2 100644
--- a/Overlays/juwelsbooster_overlay/n/nvidia-driver/nvidia-driver-default.eb
+++ b/Overlays/juwelsbooster_overlay/n/nvidia-driver/nvidia-driver-default.eb
@@ -1,6 +1,6 @@
 name = 'nvidia-driver'
 version = 'default'
-realversion = '515.65.07'
+realversion = '525.105.17'
 
 homepage = 'https://developer.nvidia.com/cuda-toolkit'
 description = f"""
@@ -15,7 +15,7 @@ toolchain = SYSTEM
 
 source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion]
 sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion]
-checksums = ['c6876b9dfd7ff91918610c8117995b6be3c524914c3c2e2170b71a6ef929fa24']
+checksums = ['c635a21a282c9b53485f19ebb64a0f4b536a968b94d4d97629e0bc547a58142a']
 
 # To avoid conflicts between NVML and the kernel driver
 postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*']
diff --git a/acls.yml b/acls.yml
index bbeabbf0d3013f741809620ca09846d4cbb68ffd..36b6b04413af2a74365c8a678a49fcf72938335e 100644
--- a/acls.yml
+++ b/acls.yml
@@ -51,7 +51,7 @@ compilers:
   - name: 'GCC'
     version: '11.3.0'
   - name: 'NVHPC'
-    version: '22'
+    version: '23'
   - name: 'intel'
     version: '2022'
 mpis:
@@ -83,8 +83,11 @@ software:
   - name: 'ceres-solver'
     owner: 'goebbert1'
     base: True
-  - name: 'Cirq'
+  - name: 'Catalyst'
     owner: 'goebbert1'
+    mpi: True
+  - name: 'Cirq'
+    owner: 'gonzalezcalaza1'
     base: True
   - name: 'Cling'
     owner: 'goebbert1'
@@ -103,7 +106,7 @@ software:
     base: True
   - name: 'Embree'
     owner: 'goebbert1'
-    base: True
+    compiler: True
   - name: 'freeglut'
     owner: 'goebbert1'
     base: True
@@ -119,6 +122,9 @@ software:
   - name: 'eudev'
     owner: 'goebbert1'
     base: True
+  - name: 'FLANN'
+    owner: 'goebbert1'
+    base: True
   - name: 'glog'
     owner: 'goebbert1'
     base: True
@@ -191,7 +197,7 @@ software:
     owner: 'goebbert1'
     base: True
   - name: 'JupyterKernel-PyQuantum'
-    owner: 'goebbert1'
+    owner: ['goebbert1', 'gonzalezcalaza1']
     base: True
   - name: 'JupyterKernel-PyDeepLearning'
     owner: 'goebbert1'
@@ -247,6 +253,9 @@ software:
   - name: 'muparserx'
     owner: 'goebbert1'
     base: True
+  - name: 'myqlm'
+    owner: ['gonzalezcalaza1', 'goebbert1']
+    base: True
   - name: 'nlohmann-json'
     owner: 'goebbert1'
     base: True
@@ -262,6 +271,9 @@ software:
   - name: 'nvidia-Video_Codec_SDK'
     owner: 'goebbert1'
     system: True
+  - name: 'Octave'
+    owner: 'goebbert1'
+    base: True
   - name: 'OpenCV'
     owner: 'goebbert1'
     base: True
@@ -295,6 +307,9 @@ software:
   - name: 'ParaViewPlugin-Nek5000'
     owner: 'goebbert1'
     mpi: True
+  - name: 'pulser'
+    owner: 'gonzalezcalaza1'
+    base: True
   - name: 'PyCairo'
     owner: 'goebbert1'
     base: True
@@ -314,16 +329,19 @@ software:
     owner: 'goebbert1'
     mpi: True
   - name: 'PyQuil'
-    owner: 'goebbert1'
+    owner: ['gonzalezcalaza1', 'goebbert1']
     base: True
+  - name: 'PySCF'
+    owner: 'goebbert1'
+    compiler: True
   - name: 'qcint'
     owner: 'gonzalezcalaza1'
     base: True
   - name: 'Qiskit'
-    owner: 'goebbert1'
+    owner: ['gonzalezcalaza1', 'goebbert1']
     mpi: True
   - name: 'Qiskit-juqcs'
-    owner: 'goebbert1'
+    owner: 'gonzalezcalaza1'
     mpi: True
   - name: 'Qt5'
     owner: 'goebbert1'
@@ -419,6 +437,9 @@ software:
   - name: 'Arrow'
     owner: 'strube1'
     mpi: True
+  - name: 'ArviZ'
+    owner: 'strube1'
+    mpi: True
   - name: 'ASE'
     owner: 'strube1'
     base: True
@@ -446,6 +467,9 @@ software:
     owner: 'strube1'
     base: True
     compiler: True
+  - name: 'BLAST+'
+    owner: 'strube1'
+    mpi: True
   - name: 'bokeh'
     owner: 'strube1'
     base: True
@@ -496,6 +520,9 @@ software:
   - name: 'DeepSpeed'
     owner: 'strube1'
     mpi: True
+  - name: 'dill'
+    owner: 'strube1'
+    base: True
   - name: 'distributed'
     owner: 'strube1'
     base: True
@@ -506,6 +533,9 @@ software:
   - name: 'Emacs'
     owner: 'strube1'
     base: True
+  - name: 'ESMF'
+    owner: ['griessbach1', 'strube1']
+    mpi: True
   - name: 'exiv2'
     owner: 'strube1'
     base: True
@@ -724,7 +754,7 @@ software:
     base: True
   - name: 'maeparser'
     owner: 'strube1'
-    mpi: True  
+    mpi: True
   - name: 'magma'
     owner: 'strube1'
     mpi: True
@@ -737,6 +767,9 @@ software:
   - name: 'MethPipe'
     owner: 'strube1'
     mpi: True
+  - name: 'MongoDB'
+    owner: 'strube1'
+    system: True
   - name: 'METIS'
     owner: 'schoebel1'
     base: True
@@ -794,6 +827,9 @@ software:
   - name: 'OpenBabel'
     owner: 'strube1'
     mpi: True
+  - name: 'openpyxl'
+    owner: 'strube1'
+    base: True
   - name: 'OpenSlide'
     owner: 'strube1'
     base: True
@@ -887,6 +923,9 @@ software:
   - name: 'rpmrebuild'
     owner: 'strube1'
     system: True
+  - name: 'Rust'
+    owner: 'strube1'
+    base: True
   - name: 'scikit-allel'
     owner: 'strube1'
     base: True
@@ -1015,6 +1054,9 @@ software:
   - name: 'utf8proc'
     owner: ['strube1', 'nassyr1']
     base: 'true'
+  - name: 'xarray'
+    owner: 'strube1'
+    base: 'true'
   - name: 'X11'
     owner: 'achilles4'
     base: 'true'
@@ -1149,7 +1191,7 @@ software:
     base: True
     mpi: True
   - name: 'h5py'
-    owner: ['griessbach1', 'strube1']
+    owner: ['griessbach1', 'strube1', 'goebbert1']
     base: True
     mpi: True
   - name: 'Eigen'
@@ -1216,7 +1258,7 @@ software:
     mpi: True
     base: True
   - name: 'netCDF-C++4'
-    owner: 'griessbach1'
+    owner: ['griessbach1', 'strube1']
     mpi: True
     base: True
   - name: 'netCDF-Fortran'
@@ -1263,6 +1305,9 @@ software:
   - name: 'CPMD'
     owner: 'mueller1'
     mpi: True
+  - name: 'GlobalArrays'
+    owner: 'mueller1'
+    mpi: True
   - name: 'Nsight-Compute'
     owner: 'herten1'
     base: True
@@ -1298,7 +1343,7 @@ software:
     owner: 'griessbach1'
     mpi: True
   - name: 'NCO'
-    owner: 'griessbach1'
+    owner: ['griessbach1', 'strube1']
     mpi: True
   - name: 'Extrae'
     owner: 'knobloch1'
@@ -1360,3 +1405,8 @@ software:
   - name: 'UDUNITS'
     owner: ['griessbach1', 'strube1']
     base: True
+  - name: 'libcdi'
+    owner: 'griessbach1'
+    base: True
+    mpi: True
+    
diff --git a/bin/table_generator b/bin/table_generator
index 90c01e0dd340699f4aff17b19a36c95fb617876d..d5c1a817155dfb59a137d27ab1591c07e00368e5 100755
--- a/bin/table_generator
+++ b/bin/table_generator
@@ -206,7 +206,7 @@ def table_formatter(table, compare_repo=False):
     global html
 
     sw_name_max_len = 30
-    owner_max_len = 16
+    owner_max_len = 32
 
     if emojis:
         len_padding = 1