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/Golden_Repo/a/ACTC/ACTC-1.1-GCCcore-11.3.0.eb b/Golden_Repo/a/ACTC/ACTC-1.1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..12bca02e2a66855033fd206a20568247765746a4
--- /dev/null
+++ b/Golden_Repo/a/ACTC/ACTC-1.1-GCCcore-11.3.0.eb
@@ -0,0 +1,35 @@
+easyblock = 'MakeCp'
+
+name = 'ACTC'
+version = '1.1'
+
+homepage = 'https://sourceforge.net/projects/actc'
+description = "ACTC converts independent triangles into triangle strips or fans."
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['3a1303291629b9de6008c3c9d7b020a4b854802408fb3f8222ec492808c8b44d']
+
+builddependencies = [('binutils', '2.38')]
+
+buildopts = 'CC="$CC" CFLAGS="$CFLAGS"'
+
+files_to_copy = [
+    (['tcsample', 'tctest', 'tctest2'], 'bin'),
+    (['tc.h'], 'include/ac'),
+    (['libactc.a'], 'lib'),
+    'COPYRIGHT', 'manual.html', 'prims.gif', 'README',
+]
+
+sanity_check_paths = {
+    'files': ['bin/tctest', 'bin/tctest2', 'bin/tcsample', 'include/ac/tc.h', 'lib/libactc.a',
+              'COPYRIGHT', 'manual.html', 'prims.gif', 'README'],
+    'dirs': [],
+}
+
+modextrapaths = {'CPATH': 'include/ac'}
+
+moduleclass = 'lib'
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..d435796303cea7959ac8b3213328a4d1109f768d
--- /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-Stack', '2022a', '', ('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..0fc2729db8570e1eedcd20fbf1d8529fc5f3ab9d
--- /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-Stack', '2022a', '', ('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/ant/ant-1.10.13-Java-11.eb b/Golden_Repo/a/ant/ant-1.10.13-Java-11.eb
new file mode 100644
index 0000000000000000000000000000000000000000..dee56183ce012ce98dc6e7bdd6f91da7b710860e
--- /dev/null
+++ b/Golden_Repo/a/ant/ant-1.10.13-Java-11.eb
@@ -0,0 +1,27 @@
+easyblock = 'PackedBinary'
+
+name = 'ant'
+version = '1.10.13'
+versionsuffix = '-Java-%(javaver)s'
+
+homepage = 'https://ant.apache.org/'
+description = """Apache Ant is a Java library and command-line tool whose mission is to drive processes described in
+ build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of
+ Java applications."""
+
+toolchain = SYSTEM
+
+source_urls = ['https://archive.apache.org/dist/ant/binaries/']
+sources = ['apache-%(name)s-%(version)s-bin.tar.gz']
+checksums = ['776be4a5704158f00ef3f23c0327546e38159389bc8f39abbfe114913f88bab1']
+
+dependencies = [('Java', '11')]
+
+sanity_check_paths = {
+    'files': ['bin/ant', 'lib/ant.jar'],
+    'dirs': [],
+}
+
+modextravars = {'ANT_HOME': '%(installdir)s'}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/b/Blender/Blender-3.4.1-GCCcore-11.3.0-binary.eb b/Golden_Repo/b/Blender/Blender-3.4.1-GCCcore-11.3.0-binary.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1d1c5bdbdc9b78259ce42c4fd9b3cce1ee7c663c
--- /dev/null
+++ b/Golden_Repo/b/Blender/Blender-3.4.1-GCCcore-11.3.0-binary.eb
@@ -0,0 +1,40 @@
+easyblock = 'PackedBinary'
+
+name = 'Blender'
+version = '3.4.1'
+versionsuffix = '-binary'
+
+homepage = 'https://www.blender.org'
+description = """
+Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline,
+modeling, rigging, animation, simulation, rendering, compositing and motion tracking, even video 
+editing and game creation.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['http://ftp.nluug.nl/pub/graphics/%(namelower)s/release/%(name)s%(version_major_minor)s/']
+sources = ['%(namelower)s-%(version)s-linux-x64.tar.xz']
+checksums = ['1497f83f93e9bbbde745422c795ed10fe15f92f5622b4421768f149fbe776981']
+
+dependencies = [
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('CUDA', '11.7', '', SYSTEM),
+]
+
+postinstallcmds = [
+    # remove Blenders OpenGL libs
+    'rm -rf %(installdir)s/lib/mesa',
+]
+
+sanity_check_paths = {
+    'files': ['%(namelower)s'],
+    'dirs': ['%(version_major_minor)s'],
+}
+
+modaliases = {
+    'blender': 'blender -- --cycles-device CUDA',
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/b/Blosc/Blosc-1.21.3-GCCcore-11.3.0.eb b/Golden_Repo/b/Blosc/Blosc-1.21.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..115e49c59acda6f273c99e4cf774fd60ef392bdf
--- /dev/null
+++ b/Golden_Repo/b/Blosc/Blosc-1.21.3-GCCcore-11.3.0.eb
@@ -0,0 +1,28 @@
+easyblock = 'CMakeMake'
+
+name = 'Blosc'
+version = '1.21.3'
+
+homepage = 'https://www.blosc.org/'
+
+description = "Blosc, an extremely fast, multi-threaded, meta-compressor library"
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True, 'cstd': 'c++11'}
+
+source_urls = ['https://github.com/Blosc/c-blosc/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['941016c4564bca662080bb01aea74f06630bd665e598c6f6967fd91b2e2e0bb6']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+]
+
+sanity_check_paths = {
+    'files': ['include/blosc-export.h', 'include/blosc.h', 'lib/libblosc.a',
+              'lib/libblosc.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/c/CVXOPT/CVXOPT-1.2.1-fix-setup-py.patch b/Golden_Repo/c/CVXOPT/CVXOPT-1.2.1-fix-setup-py.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5975c4bb3289692195062ef9c552f1b6d2373f75
--- /dev/null
+++ b/Golden_Repo/c/CVXOPT/CVXOPT-1.2.1-fix-setup-py.patch
@@ -0,0 +1,128 @@
+# Patches the setup.py to use EB settings for BLAS/LAPACK, FFTW, etc
+# original by wpoely86@gmail.com, ported to v1.2.1 by Kenneth Hoste (HPC-UGent)
+--- cvxopt-1.2.1/setup.py.orig	2018-08-30 19:54:12.000000000 +0200
++++ cvxopt-1.2.1/setup.py	2018-10-02 16:28:57.252340779 +0200
+@@ -91,9 +91,11 @@
+ LAPACK_LIB = os.environ.get("CVXOPT_LAPACK_LIB",LAPACK_LIB)
+ BLAS_LIB_DIR = os.environ.get("CVXOPT_BLAS_LIB_DIR",BLAS_LIB_DIR)
+ BLAS_EXTRA_LINK_ARGS = os.environ.get("CVXOPT_BLAS_EXTRA_LINK_ARGS",BLAS_EXTRA_LINK_ARGS)
++FFTW_EXTRA_LINK_ARGS = os.environ.get("CVXOPT_FFTW_EXTRA_LINK_ARGS",'')
+ if type(BLAS_LIB) is str: BLAS_LIB = BLAS_LIB.strip().split(';')
+ if type(LAPACK_LIB) is str: LAPACK_LIB = LAPACK_LIB.strip().split(';')
+-if type(BLAS_EXTRA_LINK_ARGS) is str: BLAS_EXTRA_LINK_ARGS = BLAS_EXTRA_LINK_ARGS.strip().split(';')
++if type(BLAS_EXTRA_LINK_ARGS) is str: BLAS_EXTRA_LINK_ARGS = BLAS_EXTRA_LINK_ARGS.strip().split(' ')
++if type(FFTW_EXTRA_LINK_ARGS) is str: FFTW_EXTRA_LINK_ARGS = FFTW_EXTRA_LINK_ARGS.strip().split(' ')
+ BUILD_GSL = int(os.environ.get("CVXOPT_BUILD_GSL",BUILD_GSL))
+ GSL_LIB_DIR = os.environ.get("CVXOPT_GSL_LIB_DIR",GSL_LIB_DIR)
+ GSL_INC_DIR = os.environ.get("CVXOPT_GSL_INC_DIR",GSL_INC_DIR)
+@@ -126,7 +128,7 @@
+ # optional modules
+ 
+ if BUILD_GSL:
+-    gsl = Extension('gsl', libraries = M_LIB + ['gsl'] + BLAS_LIB,
++    gsl = Extension('gsl', libraries = M_LIB + ['gsl'],
+         include_dirs = [ GSL_INC_DIR ],
+         library_dirs = [ GSL_LIB_DIR, BLAS_LIB_DIR ],
+         define_macros = GSL_MACROS,
+@@ -135,11 +137,11 @@
+     extmods += [gsl];
+ 
+ if BUILD_FFTW:
+-    fftw = Extension('fftw', libraries = ['fftw3'] + BLAS_LIB,
++    fftw = Extension('fftw',
+         include_dirs = [ FFTW_INC_DIR ],
+         library_dirs = [ FFTW_LIB_DIR, BLAS_LIB_DIR ],
+         define_macros = FFTW_MACROS,
+-        extra_link_args = BLAS_EXTRA_LINK_ARGS,
++        extra_link_args = BLAS_EXTRA_LINK_ARGS + FFTW_EXTRA_LINK_ARGS,
+         sources = ['src/C/fftw.c'] )
+     extmods += [fftw];
+ 
+@@ -151,7 +153,7 @@
+     extmods += [glpk];
+ 
+ if BUILD_DSDP:
+-    dsdp = Extension('dsdp', libraries = ['dsdp'] + LAPACK_LIB + BLAS_LIB,
++    dsdp = Extension('dsdp', libraries = ['dsdp'],
+         include_dirs = [ DSDP_INC_DIR ],
+         library_dirs = [ DSDP_LIB_DIR, BLAS_LIB_DIR ],
+         extra_link_args = BLAS_EXTRA_LINK_ARGS,
+@@ -160,19 +162,19 @@
+ 
+ # Required modules
+ 
+-base = Extension('base', libraries = M_LIB + LAPACK_LIB + BLAS_LIB,
++base = Extension('base',
+     library_dirs = [ BLAS_LIB_DIR ],
+     define_macros = MACROS,
+     extra_link_args = BLAS_EXTRA_LINK_ARGS,
+     sources = ['src/C/base.c','src/C/dense.c','src/C/sparse.c'])
+ 
+-blas = Extension('blas', libraries = BLAS_LIB,
++blas = Extension('blas',
+     library_dirs = [ BLAS_LIB_DIR ],
+     define_macros = MACROS,
+     extra_link_args = BLAS_EXTRA_LINK_ARGS,
+     sources = ['src/C/blas.c'] )
+ 
+-lapack = Extension('lapack', libraries = LAPACK_LIB + BLAS_LIB,
++lapack = Extension('lapack',
+     library_dirs = [ BLAS_LIB_DIR ],
+     define_macros = MACROS,
+     extra_link_args = BLAS_EXTRA_LINK_ARGS,
+@@ -180,9 +182,10 @@
+ 
+ if not SUITESPARSE_SRC_DIR:
+     umfpack = Extension('umfpack',
+-        libraries = ['umfpack','cholmod','amd','colamd','suitesparseconfig'] + LAPACK_LIB + BLAS_LIB + RT_LIB,
++        libraries = ['umfpack','cholmod','amd','colamd','suitesparseconfig'] + RT_LIB,
+         include_dirs = [SUITESPARSE_INC_DIR],
+         library_dirs = [SUITESPARSE_LIB_DIR, BLAS_LIB_DIR],
++        extra_link_args = BLAS_EXTRA_LINK_ARGS,
+         sources = ['src/C/umfpack.c'])
+ else:
+     umfpack = Extension('umfpack',
+@@ -193,7 +196,6 @@
+             SUITESPARSE_SRC_DIR + '/SuiteSparse_config' ],
+         library_dirs = [ BLAS_LIB_DIR ],
+         define_macros = MACROS + [('NTIMER', '1'), ('NCHOLMOD', '1')],
+-        libraries = LAPACK_LIB + BLAS_LIB,
+         extra_compile_args = UMFPACK_EXTRA_COMPILE_ARGS,
+         extra_link_args = BLAS_EXTRA_LINK_ARGS,
+         sources = [ 'src/C/umfpack.c',
+@@ -206,14 +208,13 @@
+ 
+ if not SUITESPARSE_SRC_DIR:
+     cholmod = Extension('cholmod',
+-        libraries = ['cholmod','colamd','amd','suitesparseconfig'] + LAPACK_LIB + BLAS_LIB + RT_LIB,
++        libraries = ['cholmod','colamd','amd','suitesparseconfig'] + RT_LIB,
+         include_dirs = [SUITESPARSE_INC_DIR],
+         library_dirs = [SUITESPARSE_LIB_DIR, BLAS_LIB_DIR],
+         sources = [ 'src/C/cholmod.c' ])
+ else:
+     cholmod = Extension('cholmod',
+         library_dirs = [ BLAS_LIB_DIR ],
+-        libraries = LAPACK_LIB + BLAS_LIB,
+         include_dirs = [ SUITESPARSE_SRC_DIR + '/CHOLMOD/Include',
+             SUITESPARSE_SRC_DIR + '/COLAMD',
+             SUITESPARSE_SRC_DIR + '/AMD/Include',
+@@ -235,17 +236,18 @@
+         libraries = ['amd','suitesparseconfig'] + RT_LIB,
+         include_dirs = [SUITESPARSE_INC_DIR],
+         library_dirs = [SUITESPARSE_LIB_DIR],
++        extra_link_args = BLAS_EXTRA_LINK_ARGS,
+         sources = ['src/C/amd.c'])
+ else:
+     amd = Extension('amd',
+         include_dirs = [SUITESPARSE_SRC_DIR + '/AMD/Include',
+             SUITESPARSE_SRC_DIR + '/SuiteSparse_config' ],
+         define_macros = MACROS + [('NTIMER', '1')],
++        extra_link_args = BLAS_EXTRA_LINK_ARGS,
+         sources = [ 'src/C/amd.c', SUITESPARSE_SRC_DIR + '/SuiteSparse_config/SuiteSparse_config.c'] +
+         glob(SUITESPARSE_SRC_DIR + '/AMD/Source/*.c') )
+ 
+ misc_solvers = Extension('misc_solvers',
+-    libraries = LAPACK_LIB + BLAS_LIB,
+     library_dirs = [ BLAS_LIB_DIR ],
+     define_macros = MACROS,
+     extra_link_args = BLAS_EXTRA_LINK_ARGS,
diff --git a/Golden_Repo/c/CVXOPT/CVXOPT-1.3.0-gpsmkl-2022a.eb b/Golden_Repo/c/CVXOPT/CVXOPT-1.3.0-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..58d9b1b972d528cf24a5063ec1a92e067a5b8d30
--- /dev/null
+++ b/Golden_Repo/c/CVXOPT/CVXOPT-1.3.0-gpsmkl-2022a.eb
@@ -0,0 +1,39 @@
+easyblock = 'PythonPackage'
+
+name = 'CVXOPT'
+version = '1.3.0'
+
+homepage = 'http://cvxopt.org'
+description = """CVXOPT is a free software package for convex optimization based on the Python programming language.
+ Its main purpose is to make the development of software for convex optimization applications straightforward by
+ building on Python's extensive standard library and on the strengths of Python as a high-level programming language.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = [PYPI_LOWER_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+patches = ['CVXOPT-1.2.1-fix-setup-py.patch']
+checksums = [
+    '00b1b232f9d1f902d578a9d75814b67fa020758d5ae422e28ca8cef6269fa5c6',  # cvxopt-1.3.0.tar.gz
+    '85d8475098895e9af45f330489a712b5b944489c5fb4a6c67f59bef8fed4303d',  # CVXOPT-1.2.1-fix-setup-py.patch
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SuiteSparse', '5.13.0'),
+    ('GSL', '2.7'),
+]
+
+download_dep_fail = True
+use_pip = True
+
+preinstallopts = 'CVXOPT_BUILD_FFTW=1 CVXOPT_BUILD_GSL=1 CVXOPT_BLAS_EXTRA_LINK_ARGS="$LIBLAPACK" '
+preinstallopts += 'CVXOPT_FFTW_EXTRA_LINK_ARGS="$LIBFFT" CVXOPT_SUITESPARSE_SRC_DIR=$EBROOTSUITESPARSE'
+
+moduleclass = 'math'
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/Cling/Cling-20230205-GCCcore-11.3.0.eb b/Golden_Repo/c/Cling/Cling-20230205-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..80bb6bf1f7fda7e559b43efe3d245560ae6ee5dd
--- /dev/null
+++ b/Golden_Repo/c/Cling/Cling-20230205-GCCcore-11.3.0.eb
@@ -0,0 +1,77 @@
+easyblock = 'CMakeMake'
+
+name = 'Cling'
+version = '20230205'
+
+local_commit = '1d93ee8d5855a82bbff2aab31515760630e8c1a4'
+
+homepage = "https://root.cern/cling/"
+description = """Cling is an interactive C++ interpreter, built on the top of LLVM and Clang libraries.
+Its advantages over the standard interpreters are that it has command line prompt
+and uses just-in-time (JIT) compiler for compilation.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/root-project/cling/archive/']
+sources = ['%s.tar.gz' % local_commit]
+patches = [
+    ('disable_demo.patch'),
+]
+checksums = [
+    {'1d93ee8d5855a82bbff2aab31515760630e8c1a4.tar.gz':
+     '5cbdac0a8a5229dd2613d3f83af7e38d9e44fba1e5c1e801a4d4349fa277688a'},
+    {'disable_demo.patch': '44c74ffd74f0c1d308c68001fa87d9a95d5274a07ea797a284b3b21e6da1c712'},
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('binutils', '2.38',),
+]
+
+separate_build_dir = True
+srcdir = "%(builddir)s/src"
+
+# get source
+preconfigopts = (
+
+    # get compatible LLVM version id
+    'pushd %%(builddir)s/cling-%s && '
+    'LLVM_RELEASE=$(cat LastKnownGoodLLVMSVNRevision.txt) && '
+
+    # clone compatible LLVM branch
+    'cd .. && '
+    'git clone http://root.cern.ch/git/llvm.git src && '
+    'cd src && '
+    'git checkout cling-patches-r${LLVM_RELEASE} && '
+
+    # clone compatible Clang branch to the correct position in LLVM src
+    'cd tools && '
+    'git clone http://root.cern.ch/git/clang.git && '
+    'cd clang && '
+    'git checkout cling-patches-r${LLVM_RELEASE} && '
+
+    # add cling src to the correct position LLVM src
+    'cd .. && '
+    'ln -s ../../cling-%s cling && '
+
+    # cd to easybuild standard build directory
+    'popd && '
+
+) % (local_commit, local_commit)
+
+# copy jupyter kernel files
+postinstallcmds = [
+    # copy Jupyter kernel install files
+    # https://cdn.rawgit.com/root-project/cling/master/www/jupyter.html
+    'mkdir -p %(installdir)s/share/cling/ ',
+    'cp -a %%(builddir)s/cling-%s/tools/Jupyter %%(installdir)s/share/cling ' % local_commit,
+]
+
+sanity_check_paths = {
+    'files': ['bin/cling'],
+    'dirs': ['bin', 'include', 'lib', 'share'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/c/Cling/disable_demo.patch b/Golden_Repo/c/Cling/disable_demo.patch
new file mode 100644
index 0000000000000000000000000000000000000000..041f894becf403c7807f11ede625668f75a3dafd
--- /dev/null
+++ b/Golden_Repo/c/Cling/disable_demo.patch
@@ -0,0 +1,11 @@
+diff -Naur cling-1d93ee8d5855a82bbff2aab31515760630e8c1a4.orig/tools/CMakeLists.txt cling-1d93ee8d5855a82bbff2aab31515760630e8c1a4/tools/CMakeLists.txt
+--- cling-1d93ee8d5855a82bbff2aab31515760630e8c1a4.orig/tools/CMakeLists.txt	2023-02-05 16:02:08.108301585 +0100
++++ cling-1d93ee8d5855a82bbff2aab31515760630e8c1a4/tools/CMakeLists.txt	2023-02-05 15:59:53.711904401 +0100
+@@ -11,7 +11,6 @@
+   add_subdirectory(driver)
+   add_subdirectory(Jupyter)
+   add_subdirectory(libcling)
+-  add_subdirectory(demo)
+ endif()
+ 
+ add_subdirectory(plugins)
diff --git a/Golden_Repo/c/ceres-solver/ceres-solver-2.1.0-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/c/ceres-solver/ceres-solver-2.1.0-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..927d32c82838e9b88b9d09a8707f8c44dcf2bf70
--- /dev/null
+++ b/Golden_Repo/c/ceres-solver/ceres-solver-2.1.0-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,38 @@
+easyblock = 'CMakeMake'
+
+name = 'ceres-solver'
+version = '2.1.0'
+
+homepage = 'http://ceres-solver.org'
+description = """
+Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems.
+"""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['http://ceres-solver.org/']
+sources = ['%(name)s-%(version)s.tar.gz']
+checksums = ['f7d74eecde0aed75bfc51ec48c91d01fe16a6bf16bce1987a7073286701e2fc6']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1')
+]
+
+dependencies = [
+    ('Eigen', '3.4.0'),
+    ('SuiteSparse', '5.13.0', '-nompi'),  # ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('gflags', '2.2.2'),
+    ('glog', '0.6.0'),
+]
+
+configopts = '-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF '
+configopts += '-DBUILD_SHARED_LIBS=on '
+
+sanity_check_paths = {
+    'files': ['lib/libceres.so', 'include/ceres/ceres.h'],
+    'dirs': [],
+}
+
+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/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/Exiv2/Exiv2-0.27.5-GCCcore-11.3.0.eb b/Golden_Repo/e/Exiv2/Exiv2-0.27.5-GCCcore-11.3.0.eb
deleted file mode 100644
index 764780cfb0f701c40c67a937721cd007538270ce..0000000000000000000000000000000000000000
--- a/Golden_Repo/e/Exiv2/Exiv2-0.27.5-GCCcore-11.3.0.eb
+++ /dev/null
@@ -1,34 +0,0 @@
-easyblock = 'CMakeMake'
-
-name = 'Exiv2'
-version = '0.27.5'
-
-homepage = 'http://www.exiv2.org'
-description = """
- Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write
- access to the Exif, IPTC and XMP metadata of digital images in various formats. Exiv2 is available as free software and
- with a commercial license, and is used in many projects.
-"""
-
-
-toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
-
-source_urls = ['http://www.exiv2.org']
-sources = ['https://github.com/Exiv2/exiv2/releases/download/v%(version)s/%(namelower)s-%(version)s-Source.tar.gz']
-checksums = ['35a58618ab236a901ca4928b0ad8b31007ebdc0386d904409d825024e45ea6e2']
-
-builddependencies = [
-    ('binutils', '2.38'),
-    ('CMake', '3.23.1'),
-]
-
-dependencies = [
-    ('expat', '2.4.8'),
-]
-
-sanity_check_paths = {
-    'files': ['bin/exiv2', 'lib/libexiv2.%s' % SHLIB_EXT],
-    'dirs': []
-}
-
-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/eudev/eudev-3.2.11-GCCcore-11.3.0.eb b/Golden_Repo/e/eudev/eudev-3.2.11-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5710764ae9d5d3c56f33b82e2b7e347ed1aee803
--- /dev/null
+++ b/Golden_Repo/e/eudev/eudev-3.2.11-GCCcore-11.3.0.eb
@@ -0,0 +1,46 @@
+easyblock = 'ConfigureMake'
+
+name = 'eudev'
+version = '3.2.11'
+
+homepage = 'https://wiki.gentoo.org/wiki/Project:Eudev'
+
+description = """
+ eudev is a fork of systemd-udev with the goal of obtaining better
+ compatibility with existing software such as OpenRC and Upstart,
+ older kernels, various toolchains and anything else required by
+ users and various distributions.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [('https://github.com/eudev-project/eudev/archive')]
+sources = ['v%(version)s.tar.gz']
+patches = ['%(name)s-%(version)s_python3.patch']
+checksums = [
+    {'v3.2.11.tar.gz': 'dcfc482099f3fdfcfdb9aeabbc4d609877cf4d2d0407f50ab0c59d43fff44f92'},
+    {'eudev-3.2.11_python3.patch': '846b1e72e12853c4146d3a4e312301001bbfb13110ce76de2afdf860f4d085a8'},
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('gperf', '3.1'),
+    ('Python', '3.10.4'),
+    ('Autotools', '20220317'),
+    ('pkgconf', '1.8.0'),
+]
+
+osdependencies = [('kernel-headers', 'linux-libc-dev')]
+
+preconfigopts = "./autogen.sh && "
+configopts = '--disable-blkid --disable-selinux --disable-manpages '
+
+runtest = 'check'
+
+sanity_check_paths = {
+    'files': ['bin/udevadm', 'include/libudev.h', 'include/udev.h',
+              'lib/libudev.so.1'],
+    'dirs': [],
+}
+
+moduleclass = 'system'
diff --git a/Golden_Repo/e/eudev/eudev-3.2.11_python3.patch b/Golden_Repo/e/eudev/eudev-3.2.11_python3.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6730aacf06124cfaf282723c931418dce9665ad0
--- /dev/null
+++ b/Golden_Repo/e/eudev/eudev-3.2.11_python3.patch
@@ -0,0 +1,9 @@
+diff -ruN eudev-3.2.9.orig/test/rule-syntax-check.py eudev-3.2.9/test/rule-syntax-check.py
+--- eudev-3.2.9.orig/test/rule-syntax-check.py	2016-11-17 22:14:19.000000000 +0100
++++ eudev-3.2.9/test/rule-syntax-check.py	2020-11-06 15:22:12.238868994 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+ # Simple udev rules syntax checker
+ #
+ # (C) 2010 Canonical Ltd.
diff --git a/Golden_Repo/f/FFTW/FFTW-3.3.10-GCCcore-11.3.0.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..99cfafe375bccc7db74d2fc9ed0af8526a66af86
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-GCCcore-11.3.0.eb
@@ -0,0 +1,22 @@
+name = 'FFTW'
+version = '3.3.10'
+
+homepage = 'https://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': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
+
+builddependencies = [('binutils', '2.38')]
+
+# We hide it here since this should be used just for Jupyter and the MPI version should be preferred for normal cases
+hidden = True
+
+runtest = 'check'
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/f/FFTW/FFTW-3.3.10-ipsmpi-2022a.eb b/Golden_Repo/f/FFTW/FFTW-3.3.10-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..621ed5e8eac61040a8cf5ee6e5269f7b35fb76a0
--- /dev/null
+++ b/Golden_Repo/f/FFTW/FFTW-3.3.10-ipsmpi-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': 'ipsmpi', '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/FreeImage/FreeImage-3.18.0-GCCcore-11.3.0.eb b/Golden_Repo/f/FreeImage/FreeImage-3.18.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..20585c6304edd12533bb6bd4d7b14a220da87cd9
--- /dev/null
+++ b/Golden_Repo/f/FreeImage/FreeImage-3.18.0-GCCcore-11.3.0.eb
@@ -0,0 +1,40 @@
+easyblock = 'ConfigureMake'
+
+name = 'FreeImage'
+version = '3.18.0'
+
+homepage = 'http://freeimage.sourceforge.net'
+description = """FreeImage is an Open Source library project for developers who would like to support popular graphics
+image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications. FreeImage is easy to
+use, fast, multithreading safe."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True, 'cstd': 'c++11'}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = ['%%(name)s%s.zip' % ''.join(version.split('.'))]
+patches = ['%(name)s-%(version)s-fix-makefile.patch']
+checksums = [
+    'f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd',  # FreeImage3180.zip
+    '3eaa1eb9562ccfd0cb95a37879bb7e3e8c745166596d75af529478181ef006a0',  # FreeImage-3.18.0-fix-makefile.patch
+]
+
+builddependencies = [('binutils', '2.38')]
+
+skipsteps = ['configure']
+
+buildopts = ['', '-f Makefile.fip']
+installopts = [
+    'INCDIR=%(installdir)s/include INSTALLDIR=%(installdir)s/lib',
+    '-f Makefile.fip INCDIR=%(installdir)s/include INSTALLDIR=%(installdir)s/lib'
+]
+
+dependencies = [('zlib', '1.2.12')]
+
+sanity_check_paths = {
+    'files': ['include/FreeImage.h', 'include/FreeImagePlus.h', 'lib/libfreeimage.a', 'lib/libfreeimage.%s' % SHLIB_EXT,
+              'lib/libfreeimageplus.a', 'lib/libfreeimageplus.%s' % SHLIB_EXT],
+    'dirs': []
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/f/FreeImage/FreeImage-3.18.0-fix-makefile.patch b/Golden_Repo/f/FreeImage/FreeImage-3.18.0-fix-makefile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ac35040d4d637adaf48ca909d3988ead0e628f07
--- /dev/null
+++ b/Golden_Repo/f/FreeImage/FreeImage-3.18.0-fix-makefile.patch
@@ -0,0 +1,54 @@
+# Do not install files to root user
+# wpoely86@gmail.com
+diff -ur FreeImage.orig/Makefile.fip FreeImage/Makefile.fip
+--- FreeImage.orig/Makefile.fip	2015-03-10 09:03:56.000000000 +0100
++++ FreeImage/Makefile.fip	2019-04-09 10:32:42.052332853 +0200
+@@ -11,7 +11,7 @@
+ # Converts cr/lf to just lf
+ DOS2UNIX = dos2unix
+ 
+-LIBRARIES = -lstdc++
++LIBRARIES = -lstdc++ $(LIBS)
+ 
+ MODULES = $(SRCS:.c=.o)
+ MODULES := $(MODULES:.cpp=.o)
+@@ -72,10 +72,10 @@
+ 
+ install:
+ 	install -d $(INCDIR) $(INSTALLDIR)
+-	install -m 644 -o root -g root $(HEADER) $(INCDIR)
+-	install -m 644 -o root -g root $(HEADERFIP) $(INCDIR)
+-	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
+-	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
++	install -m 644 $(HEADER) $(INCDIR)
++	install -m 644 $(HEADERFIP) $(INCDIR)
++	install -m 644 $(STATICLIB) $(INSTALLDIR)
++	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
+ 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
+ 	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
+ 
+diff -ur FreeImage.orig/Makefile.gnu FreeImage/Makefile.gnu
+--- FreeImage.orig/Makefile.gnu	2015-03-10 09:04:00.000000000 +0100
++++ FreeImage/Makefile.gnu	2019-04-09 10:31:59.066052732 +0200
+@@ -11,7 +11,7 @@
+ # Converts cr/lf to just lf
+ DOS2UNIX = dos2unix
+ 
+-LIBRARIES = -lstdc++
++LIBRARIES = -lstdc++ $(LIBS)
+ 
+ MODULES = $(SRCS:.c=.o)
+ MODULES := $(MODULES:.cpp=.o)
+@@ -71,9 +71,9 @@
+ 
+ install:
+ 	install -d $(INCDIR) $(INSTALLDIR)
+-	install -m 644 -o root -g root $(HEADER) $(INCDIR)
+-	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
+-	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
++	install -m 644 $(HEADER) $(INCDIR)
++	install -m 644 $(STATICLIB) $(INSTALLDIR)
++	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
+ 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
+ 	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
+ #	ldconfig
diff --git a/Golden_Repo/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb b/Golden_Repo/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f58c27473bc2f883e191ab1dbd352ec314c09078
--- /dev/null
+++ b/Golden_Repo/g/GPicView/GPicView-0.2.5-GCCcore-11.3.0.eb
@@ -0,0 +1,35 @@
+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'),
+]
+
+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/Golden_Repo/g/GStreamer/GStreamer-1.18_fix_bad_suid.patch b/Golden_Repo/g/GStreamer/GStreamer-1.18_fix_bad_suid.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4fff14d8b7af95e16f3ec8e948e7b39e3c6addc6
--- /dev/null
+++ b/Golden_Repo/g/GStreamer/GStreamer-1.18_fix_bad_suid.patch
@@ -0,0 +1,22 @@
+Do NOT make files setuid or try to do setcap.
+That's a recipe for disaster.
+
+Ã…ke Sandgren, 20221031
+diff -ru gstreamer-1.20.2.orig/libs/gst/helpers/ptp_helper_post_install.sh gstreamer-1.20.2/libs/gst/helpers/ptp_helper_post_install.sh
+--- gstreamer-1.20.2.orig/libs/gst/helpers/ptp_helper_post_install.sh	2022-05-03 00:29:29.000000000 +0200
++++ gstreamer-1.20.2/libs/gst/helpers/ptp_helper_post_install.sh	2022-10-31 16:39:11.959435316 +0100
+@@ -11,14 +11,10 @@
+   setuid-root)
+     echo "$0: permissions before: "
+     ls -l "$ptp_helper"
+-    chown root "$ptp_helper" || true
+-    chmod u+s "$ptp_helper" || true
+     echo "$0: permissions after: "
+     ls -l "$ptp_helper"
+     ;;
+   capabilities)
+-    echo "Calling $setcap cap_net_bind_service,cap_net_admin+ep $ptp_helper"
+-    $setcap cap_net_bind_service,cap_net_admin+ep "$ptp_helper" || true
+     ;;
+   none)
+     echo "No perms/caps to set for $ptp_helper"
diff --git a/Golden_Repo/g/GStreamer/GStreamer-1.20.2-GCCcore-11.3.0.eb b/Golden_Repo/g/GStreamer/GStreamer-1.20.2-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..bddcf2ab2ce466328d244e9611d64519b3d99a50
--- /dev/null
+++ b/Golden_Repo/g/GStreamer/GStreamer-1.20.2-GCCcore-11.3.0.eb
@@ -0,0 +1,81 @@
+easyblock = 'Bundle'
+
+name = 'GStreamer'
+version = '1.20.2'
+
+homepage = 'https://gstreamer.freedesktop.org/'
+description = """GStreamer is a library for constructing graphs of media-handling
+ components. The applications it supports range from simple
+ Ogg/Vorbis playback, audio/video streaming to complex audio
+ (mixing) and video (non-linear editing) processing."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Meson', '0.62.1'),
+    ('Ninja', '1.10.2'),
+    ('Bison', '3.8.2'),
+    ('flex', '2.6.4'),
+    ('GObject-Introspection', '1.72.0'),
+    ('gettext', '0.21'),
+    ('pkgconf', '1.8.0'),
+    ('CMake', '3.23.1'),
+    ('git', '2.36.0', '-nodocs'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('zlib', '1.2.12'),
+    ('GMP', '6.2.1'),
+    ('GSL', '2.7'),
+    ('GLib', '2.72.1'),
+    ('GTK+', '3.24.34'),
+    ('libunwind', '1.6.2'),
+    ('double-conversion', '3.2.0'),
+    ('elfutils', '0.187'),
+]
+
+default_easyblock = 'MesonNinja'
+
+default_component_specs = {
+    'sources': [SOURCELOWER_TAR_XZ],
+    'start_dir': '%(namelower)s-%(version)s',
+}
+
+components = [
+    (name, version, {
+        'source_urls': ['https://gstreamer.freedesktop.org/src/%(namelower)s'],
+        'patches': ['GStreamer-1.18_fix_bad_suid.patch'],
+        'checksums': [
+            'df24e8792691a02dfe003b3833a51f1dbc6c3331ae625d143b17da939ceb5e0a',
+            '3d963ffdaf157ed92f46a071c4ef46f548c0b19186427e8404cb066705bbb61a',
+        ],
+        'configopts': "-Dlibdw=disabled ",
+    }),
+    ('GST-plugins-base', version, {
+        'source_urls': ['https://gstreamer.freedesktop.org/src/%(namelower)s'],
+        'checksums': ['ab0656f2ad4d38292a803e0cb4ca090943a9b43c8063f650b4d3e3606c317f17'],
+        'preconfigopts': 'export PKG_CONFIG_PATH="%(installdir)s/lib/pkgconfig:${PKG_CONFIG_PATH}" && ',
+    }),
+    ('GST-plugins-good', version, {
+        'source_urls': ['https://gstreamer.freedesktop.org/src/%(namelower)s'],
+        'checksums': ['83589007bf002b8f9ef627718f308c16d83351905f0db8e85c3060f304143aae'],
+        'preconfigopts': 'export PKG_CONFIG_PATH="%(installdir)s/lib/pkgconfig:${PKG_CONFIG_PATH}" && ',
+    }),
+    ('GST-plugins-bad', version, {
+        'source_urls': ['https://gstreamer.freedesktop.org/src/%(namelower)s'],
+        'checksums': ['4adc4c05f41051f8136b80cda99b0d049a34e777832f9fea7c5a70347658745b'],
+        'preconfigopts': 'export PKG_CONFIG_PATH="%(installdir)s/lib/pkgconfig:${PKG_CONFIG_PATH}" && ',
+    }),
+]
+
+modextrapaths = {'PKG_CONFIG_PATH': 'lib/pkgconfig'}  # required!
+
+sanity_check_paths = {
+    'files': ['bin/gst-%s-1.0' % x for x in ['discoverer', 'play', 'device-monitor']] +
+             ['lib/libgst%s-1.0.%s' % (x, SHLIB_EXT) for x in ['app', 'audio', 'video']],
+    'dirs': ['include', 'share']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/g/glog/glog-0.6.0-GCCcore-11.3.0.eb b/Golden_Repo/g/glog/glog-0.6.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f8d1bdb9f181437999a5742744e0f2fe265b0920
--- /dev/null
+++ b/Golden_Repo/g/glog/glog-0.6.0-GCCcore-11.3.0.eb
@@ -0,0 +1,33 @@
+easyblock = 'CMakeMake'
+
+name = 'glog'
+version = '0.6.0'
+
+homepage = 'https://github.com/google/glog'
+description = "A C++ implementation of the Google logging module."
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'cstd': 'c++11'}
+
+source_urls = ['https://github.com/google/glog/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['8a83bf982f37bb70825df71a9709fa90ea9f4447fb3c099e1d720a439d88bad6']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1')
+]
+
+dependencies = [
+    ('gflags', '2.2.2'),
+    ('libunwind', '1.6.2'),
+]
+
+configopts = '-DBUILD_SHARED_LIBS=ON '
+
+sanity_check_paths = {
+    'files': ['include/glog/logging.h', 'include/glog/raw_logging.h', 'lib/libglog.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/h/h5py/h5py-3.7.0-GCCcore-11.3.0-serial.eb b/Golden_Repo/h/h5py/h5py-3.7.0-GCCcore-11.3.0-serial.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c6ca6ba4b092d0c9b6117a74c4171b4f5b796b54
--- /dev/null
+++ b/Golden_Repo/h/h5py/h5py-3.7.0-GCCcore-11.3.0-serial.eb
@@ -0,0 +1,37 @@
+easyblock = "PythonPackage"
+
+name = 'h5py'
+version = '3.7.0'
+versionsuffix = '-serial'
+
+homepage = 'http://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': 'GCCcore', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+checksums = ['3fcf37884383c5da64846ab510190720027dca0768def34dd8dcb659dbe5cbf3']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('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', '-serial'),
+]
+
+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=OFF HDF5_DIR="$EBROOTHDF5" H5PY_SETUP_REQUIRES=0 '
+
+moduleclass = 'data'
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/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/ispc/ispc-1.18.1.eb b/Golden_Repo/i/ispc/ispc-1.18.1.eb
new file mode 100644
index 0000000000000000000000000000000000000000..44e37c459e24c18a82e53ccd76c865319f2c7a9f
--- /dev/null
+++ b/Golden_Repo/i/ispc/ispc-1.18.1.eb
@@ -0,0 +1,26 @@
+easyblock = 'Tarball'
+
+name = 'ispc'
+version = '1.18.1'
+
+homepage = 'http://ispc.github.io/ , https://github.com/ispc/ispc/'
+description = """Intel SPMD Program Compilers; An open-source compiler for high-performance
+ SIMD programming on the CPU. ispc is a compiler for a variant of the C programming language,
+ with extensions for 'single program, multiple data' (SPMD) programming.
+ Under the SPMD model, the programmer writes a program that generally appears
+ to be a regular serial program, though the execution model is actually that
+ a number of program instances execute in parallel on the hardware.
+"""
+
+toolchain = SYSTEM
+
+source_urls = [('https://github.com/ispc/ispc/releases/download/v%(version)s')]
+sources = ['ispc-v%(version)s-linux.tar.gz']
+checksums = ['7faf59f26c09ceffe6165805d9e40b6582ddc1417c12786a214f4536e3388b47']
+
+sanity_check_paths = {
+    'files': ["bin/ispc"],
+    'dirs': []
+}
+
+moduleclass = 'system'
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/j/jax/TensorFlow-2.7.0_cuda-noncanonical-include-paths.patch b/Golden_Repo/j/jax/TensorFlow-2.7.0_cuda-noncanonical-include-paths.patch
new file mode 100644
index 0000000000000000000000000000000000000000..93157c49ad0bd14ed295da30e46692a0b562e74e
--- /dev/null
+++ b/Golden_Repo/j/jax/TensorFlow-2.7.0_cuda-noncanonical-include-paths.patch
@@ -0,0 +1,20 @@
+Use non-canonical paths to populate the include paths in the toolchain in Bazel.
+Otherwise, build will fail due to mismatch in include paths.
+author: Alex Domingo (Vrije Universiteit Brussel)
+--- third_party/gpus/cuda_configure.bzl.orig	2021-10-25 11:48:32.896463000 +0200
++++ third_party/gpus/cuda_configure.bzl	2021-10-25 11:51:56.719009257 +0200
+@@ -274,8 +274,12 @@
+     sysroot = []
+     if tf_sysroot:
+         sysroot += ["--sysroot", tf_sysroot]
+-    result = raw_exec(repository_ctx, [cc, "-E", "-x" + lang, "-", "-v"] +
+-                                      sysroot)
++
++    result = raw_exec(
++        repository_ctx,
++        [cc, "-no-canonical-prefixes", "-E", "-x" + lang, "-", "-v"] + sysroot
++    )
++
+     stderr = err_out(result)
+     index1 = stderr.find(_INC_DIR_MARKER_BEGIN)
+     if index1 == -1:
diff --git a/Golden_Repo/j/jax/jax-0.3.23-foss-2022a-CUDA-11.7.eb b/Golden_Repo/j/jax/jax-0.3.23-foss-2022a-CUDA-11.7.eb
new file mode 100644
index 0000000000000000000000000000000000000000..90db04dc3e2bafc29f61fb542c931b0b1f8ef521
--- /dev/null
+++ b/Golden_Repo/j/jax/jax-0.3.23-foss-2022a-CUDA-11.7.eb
@@ -0,0 +1,122 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+# Author: Denis Kristak
+# Updated by: Alex Domingo (Vrije Universiteit Brussel)
+easyblock = 'PythonBundle'
+
+name = 'jax'
+version = '0.3.23'
+versionsuffix = '-CUDA-%(cudaver)s'
+
+homepage = 'https://pypi.python.org/pypi/jax'
+description = """Composable transformations of Python+NumPy programs:
+differentiate, vectorize, JIT to GPU/TPU, and more"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+builddependencies = [
+    ('Bazel', '5.1.1'),
+    ('pytest-xdist', '2.5.0'),
+    # git 2.x required to fetch repository 'io_bazel_rules_docker'
+    ('git', '2.36.0', '-nodocs'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+dependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('cuDNN', '8.6.0.163', '-CUDA-%(cudaver)s', SYSTEM),
+    ('NCCL', 'default', '-CUDA-%(cudaver)s'),
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('flatbuffers-python', '2.0'),
+]
+
+# downloading TensorFlow tarball to avoid that Bazel downloads it during the build
+# note: this *must* be the exact same commit as used in WORKSPACE
+local_tf_commit = 'cb946f223b9b3fa04efdbb7a0e6a9dabb22a7057'
+local_tf_dir = 'tensorflow-%s' % local_tf_commit
+local_tf_builddir = '%(builddir)s/' + local_tf_dir
+
+# replace remote TensorFlow repository with the local one from EB
+local_jax_prebuildopts = "sed -i -f jaxlib_local-tensorflow-repo.sed WORKSPACE && "
+local_jax_prebuildopts += "sed -i 's|EB_TF_REPOPATH|%s|' WORKSPACE && " % local_tf_builddir
+
+use_pip = True
+
+default_easyblock = 'PythonPackage'
+default_component_specs = {
+    'sources': [SOURCE_TAR_GZ],
+    'source_urls': [PYPI_SOURCE],
+    'start_dir': '%(name)s-%(version)s',
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+}
+
+components = [
+    ('absl-py', '1.3.0', {
+        'options': {'modulename': 'absl'},
+        'checksums': ['463c38a08d2e4cef6c498b76ba5bd4858e4c6ef51da1a5a1f27139a022e20248'],
+    }),
+    ('jaxlib', '0.3.22', {
+        'sources': [
+            '%(name)s-v%(version)s.tar.gz',
+            {
+                'download_filename': '%s.tar.gz' % local_tf_commit,
+                'filename': 'tensorflow-%s.tar.gz' % local_tf_commit,
+            }
+        ],
+        'source_urls': [
+            'https://github.com/google/jax/archive/',
+            'https://github.com/tensorflow/tensorflow/archive/'
+        ],
+        'patches': [
+            ('jaxlib_local-tensorflow-repo.sed', '.'),
+            ('TensorFlow-2.7.0_cuda-noncanonical-include-paths.patch', '../' + local_tf_dir),
+        ],
+        'checksums': [
+            # jaxlib-v0.3.22.tar.gz
+            '680a6f5265ba26d5515617a95ae47244005366f879a5c321782fde60f34e6d0d',
+            # tensorflow-cb946f223b9b3fa04efdbb7a0e6a9dabb22a7057.tar.gz
+            '9a7a7a87356bdeef5874fae135de380466482b593469035be3609a9cd2c153c4',
+            # jaxlib_local-tensorflow-repo.sed
+            'abb5c3b97f4e317bce9f22ed3eeea3b9715365818d8b50720d937e2d41d5c4e5',
+            # TensorFlow-2.7.0_cuda-noncanonical-include-paths.patch
+            '0a759010c253d49755955cd5f028e75de4a4c447dcc8f5a0d9f47cce6881a9db',
+        ],
+        'start_dir': 'jax-jaxlib-v%(version)s',
+        'prebuildopts': local_jax_prebuildopts,
+    }),
+]
+
+exts_list = [
+    ('opt_einsum', '3.3.0', {
+        'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'],
+    }),
+    ('etils', '0.8.0', {
+        'checksums': ['d1d5af7bd9c784a273c4e1eccfaa8feaca5e0481a08717b5313fa231da22a903'],
+    }),
+    (name, version, {
+        'patches': [
+            'jax-0.3.9_relax-test-tolerance.patch',
+            'jax-0.3.23_correctly-skip-from_dlpack-tests.patch',
+            'jax-0.3.23_relax-testPoly5-tolerance.patch',
+        ],
+        'runtest': "NVIDIA_TF32_OVERRIDE=0 CUDA_VISIBLE_DEVICES=0 \
+            XLA_PYTHON_CLIENT_ALLOCATOR=platform JAX_ENABLE_X64=true pytest -vv tests",
+        'source_tmpl': '%(name)s-v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/google/jax/archive/'],
+        'checksums': [
+            {'jax-v0.3.23.tar.gz': 'fa8c68a82fa2fcf3d272bf239c77e7028bb6077466a53349ce85f6e85ed623db'},
+            {'jax-0.3.9_relax-test-tolerance.patch':
+             'b50c4d23a5d51dba720c8aebdae8d15a0ddfc2e9719f48049a8220655ac20254'},
+            {'jax-0.3.23_correctly-skip-from_dlpack-tests.patch':
+             'a69ce7280ca8bb42e671217f00d9147f8c64b4b7ba65dea7f05f2c6de757b279'},
+            {'jax-0.3.23_relax-testPoly5-tolerance.patch':
+             'be64bf36dde4884a97b6c8bb22c6b14ab5b24033cd40bfe7ce18363c55c30e87'},
+        ],
+    }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/jax/jax-0.3.23_correctly-skip-from_dlpack-tests.patch b/Golden_Repo/j/jax/jax-0.3.23_correctly-skip-from_dlpack-tests.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7354e39c8e3e3b3fce8f28bd67d933667aadbd49
--- /dev/null
+++ b/Golden_Repo/j/jax/jax-0.3.23_correctly-skip-from_dlpack-tests.patch
@@ -0,0 +1,15 @@
+np.from_dlpack was not added until numpy 1.23
+Patch based off https://github.com/google/jax/pull/12900 and added by Simon Branford (University of Birmingham)
+diff --git a/tests/array_interoperability_test.py b/tests/array_interoperability_test.py
+index cc2f3a6c08d..ac04ee637c8 100644
+--- a/tests/array_interoperability_test.py
++++ b/tests/array_interoperability_test.py
+@@ -200,7 +200,7 @@ def testNumpyToJax(self, shape, dtype):
+      "shape": shape, "dtype": dtype}
+      for shape in all_shapes
+      for dtype in torch_dtypes))
+-  @unittest.skipIf(numpy_version < (1, 22, 0), "Requires numpy 1.22 or newer")
++  @unittest.skipIf(numpy_version < (1, 23, 0), "Requires numpy 1.23 or newer")
+   @jtu.skip_on_devices("gpu")
+   def testJaxToNumpy(self, shape, dtype):
+     rng = jtu.rand_default(self.rng())
diff --git a/Golden_Repo/j/jax/jax-0.3.23_relax-testPoly5-tolerance.patch b/Golden_Repo/j/jax/jax-0.3.23_relax-testPoly5-tolerance.patch
new file mode 100644
index 0000000000000000000000000000000000000000..38729edac87cc0687e6c7603acee25b0dc5dd3c9
--- /dev/null
+++ b/Golden_Repo/j/jax/jax-0.3.23_relax-testPoly5-tolerance.patch
@@ -0,0 +1,14 @@
+Relax the tolerance for the testPoly5 test
+Patch by Simon Branford (University of Birmingham)
+--- tests/lax_numpy_test.py	2022-10-12 16:23:43.000000000 +0100
++++ tests/lax_numpy_test.py	2022-10-21 13:33:59.871417000 +0100
+@@ -1277,6 +1277,9 @@
+     if jtu.device_under_test() == "tpu":
+       tol[np.int32] = tol[np.float32] = 1e-1
+     tol = jtu.tolerance(dtype, tol)
++    if rank == 2 and dtype == np.int8 and a_shape == (12,):
++        # relax tolerance (from 1e-3) for testPoly5
++        tol = 2e-3
+     args_maker = lambda: [rng(a_shape * rank, dtype)]
+     self._CheckAgainstNumpy(np.poly, jnp.poly, args_maker, check_dtypes=False, tol=tol)
+     self._CompileAndCheck(jnp.poly, args_maker, check_dtypes=True, rtol=tol, atol=tol)
diff --git a/Golden_Repo/j/jax/jax-0.3.9_relax-test-tolerance.patch b/Golden_Repo/j/jax/jax-0.3.9_relax-test-tolerance.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a8275d46e2fe8f41802498dd34f5ecf1c74e6523
--- /dev/null
+++ b/Golden_Repo/j/jax/jax-0.3.9_relax-test-tolerance.patch
@@ -0,0 +1,29 @@
+Relax tolerance for tests/linalg_test.py::NumpyLinalgTest::testQr0
+Which gives norm=152.9272003173828 (out of 140) on AMD Epyc 7402
+Patch by Alexandre Strube (Helmholtz AI/Juelich Supercomputing Centre)
+Relax tolerance for tests/linalg_test.py::ScipyLinalgTest::testLu_shape=float64[50,50]
+which failes by a small amount on AMD Rome
+Patch by Simon Branford (University of Birmingham)
+--- tests/linalg_test.py.orig	2022-10-12 17:23:43.000000000 +0200
++++ tests/linalg_test.py	2023-01-12 18:24:58.706838703 +0100
+@@ -667,7 +667,7 @@
+       phases = np.divide(sum_of_ratios, np.abs(sum_of_ratios))
+       q1 *= phases
+       nm = norm(q1 - q2)
+-      self.assertTrue(np.all(nm < 140), msg=f"norm={np.amax(nm)}")
++      self.assertTrue(np.all(nm < 160), msg=f"norm={np.amax(nm)}")
+ 
+     # Check a ~= qr
+     self.assertTrue(np.all(norm(a - np.matmul(lq, lr)) < 40))
+@@ -984,8 +984,9 @@
+     x, = args_maker()
+     p, l, u = jsp.linalg.lu(x)
+     self.assertAllClose(x, np.matmul(p, np.matmul(l, u)),
+-                        rtol={np.float32: 1e-3, np.float64: 1e-12,
+-                              np.complex64: 1e-3, np.complex128: 1e-12})
++                        rtol={np.float32: 1e-3, np.float64: 1e-11,
++                              np.complex64: 1e-3, np.complex128: 1e-12},
++                        atol={np.float64: 1e-14})
+     self._CompileAndCheck(jsp.linalg.lu, args_maker)
+ 
+   def testLuOfSingularMatrix(self):
\ No newline at end of file
diff --git a/Golden_Repo/j/jax/jaxlib_local-tensorflow-repo.sed b/Golden_Repo/j/jax/jaxlib_local-tensorflow-repo.sed
new file mode 100644
index 0000000000000000000000000000000000000000..1116ca24ca92a1f42b6329570adab879ed8d1739
--- /dev/null
+++ b/Golden_Repo/j/jax/jaxlib_local-tensorflow-repo.sed
@@ -0,0 +1,12 @@
+/^http_archive(/{
+    :a;N;/\n)/!ba;
+    /org_tensorflow/{
+        s/^/# /;
+        s/\n/\n# /g;
+        s|$|\
+local_repository(\
+    name = "org_tensorflow",\
+    path = "EB_TF_REPOPATH",\
+)|;
+    }
+}
diff --git a/Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb b/Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..df0545446f2db9857f1b7b61a36e5f8296257c8b
--- /dev/null
+++ b/Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb
@@ -0,0 +1,43 @@
+easyblock = 'CMakeMake'
+
+name = 'libspng'
+version = '0.7.3'
+
+homepage = 'https://libspng.org'
+description = "Simple, modern libpng alternative "
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+github_account = 'randy408'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['a50cadbe808ffda1a7fab17d145f52a23b163f34b3eb3696c7ecb5a52340fc1d']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+dependencies = [('zlib', '1.2.12')]
+
+separate_build_dir = True
+configopts = "-DCMAKE_VERBOSE_MAKEFILE=ON "
+
+postinstallcmds = [
+    (
+        'pushd %(installdir)s/lib64/pkgconfig/ && '
+        'cp libspng.pc spng.pc && '
+        'popd'
+    )
+]
+
+sanity_check_paths = {
+    'files': [
+        'include/spng.h',
+        'lib/libspng_static.a', 'lib/libspng.%s' % SHLIB_EXT,
+    ],
+    'dirs': ['include', 'lib'],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/l/libyuv/libyuv-20210428-GCCcore-11.3.0.eb b/Golden_Repo/l/libyuv/libyuv-20210428-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4a5f7a360cd885ec91d0b3c45b63e00214a87218
--- /dev/null
+++ b/Golden_Repo/l/libyuv/libyuv-20210428-GCCcore-11.3.0.eb
@@ -0,0 +1,60 @@
+easyblock = 'CMakeMake'
+
+name = 'libyuv'
+version = '20210428'
+
+homepage = 'https://chromium.googlesource.com/libyuv/libyuv/'
+description = """
+libyuv for colorspace conversion. libyuv is Optimized for SSE2/SSSE3/AVX2 on x86/x64.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+sources = [
+    {
+        'source_urls': ['https://chromium.googlesource.com/libyuv/libyuv/+archive/'],
+        'filename': '%(name)s-eb6e7bb63738e29efd82ea3cf2a115238a89fa51.tar.gz',
+        'download_filename': 'eb6e7bb63738e29efd82ea3cf2a115238a89fa51.tar.gz',
+    }
+]
+# checksum changes with every download
+checksums = ['d84d716d81d0b4a43bd1b3efc2ed62b148ee8d473754c37fcde479a2793a0c46']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1')
+]
+
+separate_build_dir = True
+start_dir = './'
+
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+
+postinstallcmds = [
+    (
+        '{ cat >> %(installdir)s/libyuv.pc; } << \'EOF\'\n'
+        'prefix=%(installdir)s\n'
+        'exec_prefix=${prefix}\n'
+        'libdir=${prefix}/lib\n'
+        'includedir=${prefix}/include\n'
+        '\n'
+        'Name: libyuv\n'
+        'Description: YUV conversion and scaling functionality library\n'
+        'Version: 0\n'
+        'Cflags: -I${includedir}\n'
+        'Libs: -L${libdir} -lyuv\n'
+        'EOF'
+    ),
+]
+
+sanity_check_paths = {
+    'files': ['lib/libyuv.a', 'include/libyuv.h'],
+    'dirs': [],
+}
+
+modextrapaths = {
+    'PKG_CONFIG_PATH': ''
+}
+
+moduleclass = 'vis'
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/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/MUST/MUST-1.8.0-gompi-2022a.eb b/Golden_Repo/m/MUST/MUST-1.8.0-gompi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b4e26720b96d5ba8ed05e3d20673e90fab543552
--- /dev/null
+++ b/Golden_Repo/m/MUST/MUST-1.8.0-gompi-2022a.eb
@@ -0,0 +1,53 @@
+# 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>
+# Authors::   Damian Alvarez <d.alvarez@fz-juelich.de>
+# Authors::   Benedikt Steinbusch <b.steinbusch@fz-juelich.de>
+# License::   New BSD
+#
+# This work is based from experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+easyblock = 'CMakeMake'
+
+name = "MUST"
+version = "1.8.0"
+
+homepage = 'https://hpc.rwth-aachen.de/must/'
+description = """MUST detects usage errors of the Message Passing Interface (MPI) and reports them
+to the user. As MPI calls are complex and usage errors common, this functionality is extremely helpful
+for application developers that want to develop correct MPI applications. This includes errors that
+already manifest --segmentation faults or incorrect results -- as well as many errors that are not
+visible to the application developer or do not manifest on a certain system or MPI implementation.
+"""
+
+toolchain = {'name': 'gompi', 'version': '2022a'}
+
+source_urls = ['https://hpc.rwth-aachen.de/must/files/']
+sources = ['%(name)s-v%(version)s.tar.gz']
+patches = [
+    'wrap-config.cmake.in.patch',
+]
+checksums = [
+    '9754fefd2e4c8cba812f8b56a5dd929bc84aa599b2509305e1eb8518be0a8a39',  # MUST-v1.8.0.tar.gz
+    'a7adba726fb68f928556dc6e16ad9b624c528a2c807b73e1a61e79a2b2431681',  # wrap-config.cmake.in.patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Graphviz', '5.0.0'),
+    ('libxml2', '2.9.13'),
+    ('Python', '3.10.4'),
+]
+
+configopts = ' -DCMAKE_BUILD_TYPE=Release -DPython_ROOT_DIR="$EBROOTPYTHON" '
+
+sanity_check_paths = {
+    'files': ["bin/mustrun", "include/mustConfig.h"],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/m/MUST/MUST-1.8.0-gpsmpi-2022a.eb b/Golden_Repo/m/MUST/MUST-1.8.0-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f8cba8685d6adfd2a9575bfff9e2c70befe4aee2
--- /dev/null
+++ b/Golden_Repo/m/MUST/MUST-1.8.0-gpsmpi-2022a.eb
@@ -0,0 +1,53 @@
+# 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>
+# Authors::   Damian Alvarez <d.alvarez@fz-juelich.de>
+# Authors::   Benedikt Steinbusch <b.steinbusch@fz-juelich.de>
+# License::   New BSD
+#
+# This work is based from experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+easyblock = 'CMakeMake'
+
+name = "MUST"
+version = "1.8.0"
+
+homepage = 'https://hpc.rwth-aachen.de/must/'
+description = """MUST detects usage errors of the Message Passing Interface (MPI) and reports them
+to the user. As MPI calls are complex and usage errors common, this functionality is extremely helpful
+for application developers that want to develop correct MPI applications. This includes errors that
+already manifest --segmentation faults or incorrect results -- as well as many errors that are not
+visible to the application developer or do not manifest on a certain system or MPI implementation.
+"""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+
+source_urls = ['https://hpc.rwth-aachen.de/must/files/']
+sources = ['%(name)s-v%(version)s.tar.gz']
+patches = [
+    'wrap-config.cmake.in.patch',
+]
+checksums = [
+    '9754fefd2e4c8cba812f8b56a5dd929bc84aa599b2509305e1eb8518be0a8a39',  # MUST-v1.8.0.tar.gz
+    'a7adba726fb68f928556dc6e16ad9b624c528a2c807b73e1a61e79a2b2431681',  # wrap-config.cmake.in.patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Graphviz', '5.0.0'),
+    ('libxml2', '2.9.13'),
+    ('Python', '3.10.4'),
+]
+
+configopts = ' -DCMAKE_BUILD_TYPE=Release -DPython_ROOT_DIR="$EBROOTPYTHON" '
+
+sanity_check_paths = {
+    'files': ["bin/mustrun", "include/mustConfig.h"],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/m/MUST/MUST-1.8.0-ipsmpi-2022a.eb b/Golden_Repo/m/MUST/MUST-1.8.0-ipsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9c457ed2c0f7ffa40cdcc8a1e914149e4369e405
--- /dev/null
+++ b/Golden_Repo/m/MUST/MUST-1.8.0-ipsmpi-2022a.eb
@@ -0,0 +1,53 @@
+# 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>
+# Authors::   Damian Alvarez <d.alvarez@fz-juelich.de>
+# Authors::   Benedikt Steinbusch <b.steinbusch@fz-juelich.de>
+# License::   New BSD
+#
+# This work is based from experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+easyblock = 'CMakeMake'
+
+name = "MUST"
+version = "1.8.0"
+
+homepage = 'https://hpc.rwth-aachen.de/must/'
+description = """MUST detects usage errors of the Message Passing Interface (MPI) and reports them
+to the user. As MPI calls are complex and usage errors common, this functionality is extremely helpful
+for application developers that want to develop correct MPI applications. This includes errors that
+already manifest --segmentation faults or incorrect results -- as well as many errors that are not
+visible to the application developer or do not manifest on a certain system or MPI implementation.
+"""
+
+toolchain = {'name': 'ipsmpi', 'version': '2022a'}
+
+source_urls = ['https://hpc.rwth-aachen.de/must/files/']
+sources = ['%(name)s-v%(version)s.tar.gz']
+patches = [
+    'wrap-config.cmake.in.patch',
+]
+checksums = [
+    '9754fefd2e4c8cba812f8b56a5dd929bc84aa599b2509305e1eb8518be0a8a39',  # MUST-v1.8.0.tar.gz
+    'a7adba726fb68f928556dc6e16ad9b624c528a2c807b73e1a61e79a2b2431681',  # wrap-config.cmake.in.patch
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Graphviz', '5.0.0'),
+    ('libxml2', '2.9.13'),
+    ('Python', '3.10.4'),
+]
+
+configopts = ' -DCMAKE_BUILD_TYPE=Release -DPython_ROOT_DIR="$EBROOTPYTHON" '
+
+sanity_check_paths = {
+    'files': ["bin/mustrun", "include/mustConfig.h"],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/m/MUST/wrap-config.cmake.in.patch b/Golden_Repo/m/MUST/wrap-config.cmake.in.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5240d39fd4df30ca52548defd727f9a7bece8c47
--- /dev/null
+++ b/Golden_Repo/m/MUST/wrap-config.cmake.in.patch
@@ -0,0 +1,90 @@
+--- externals/wrap/wrap-config.cmake.in.orig	2020-08-26 21:13:57.739359000 +0200
++++ externals/wrap/wrap-config.cmake.in	2020-08-26 21:05:11.535717000 +0200
+@@ -39,9 +39,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
+--- externals/GTI/externals/wrap/wrap-config.cmake.in.orig	2020-08-26 21:12:21.579754000 +0200
++++ externals/GTI/externals/wrap/wrap-config.cmake.in	2020-08-26 21:14:34.723726000 +0200
+@@ -39,9 +39,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
+--- externals/GTI/externals/PnMPI/externals/wrap/wrap-config.cmake.in.orig	2020-08-26 21:13:22.408675000 +0200
++++ externals/GTI/externals/PnMPI/externals/wrap/wrap-config.cmake.in	2020-08-26 21:00:55.200196000 +0200
+@@ -39,9 +39,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
+--- externals/wrap/WrapConfig.cmake.orig	2021-05-27 10:35:39.000000000 +0200
++++ externals/wrap/WrapConfig.cmake	2021-05-27 10:36:23.000000000 +0200
+@@ -29,9 +29,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
+--- externals/GTI/externals/wrap/WrapConfig.cmake.orig	2021-05-27 10:35:39.000000000 +0200
++++ externals/GTI/externals/wrap/WrapConfig.cmake	2021-05-27 10:36:23.000000000 +0200
+@@ -29,9 +29,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
+--- externals/GTI/externals/PnMPI/externals/wrap/WrapConfig.cmake.orig	2021-05-27 10:35:39.000000000 +0200
++++ externals/GTI/externals/PnMPI/externals/wrap/WrapConfig.cmake	2021-05-27 10:36:23.000000000 +0200
+@@ -29,9 +29,9 @@
+ 
+     # Play nice with FindPythonInterp -- use the interpreter if it was found,
+     # otherwise use the script directly.
+-    find_package(PythonInterp 2.6)
+-    if (PYTHON_EXECUTABLE)
+-      set(command ${PYTHON_EXECUTABLE})
++    find_package(Python)
++    if (Python_EXECUTABLE)
++      set(command ${Python_EXECUTABLE})
+       set(script_arg ${Wrap_EXECUTABLE})
+     else()
+       set(command ${Wrap_EXECUTABLE})
diff --git a/Golden_Repo/m/muparserx/muparserx-4.0.11-GCCcore-11.3.0.eb b/Golden_Repo/m/muparserx/muparserx-4.0.11-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4266a0332c3b77c48409e072ba72aa0f1d9903dd
--- /dev/null
+++ b/Golden_Repo/m/muparserx/muparserx-4.0.11-GCCcore-11.3.0.eb
@@ -0,0 +1,27 @@
+easyblock = 'CMakeMake'
+
+name = 'muparserx'
+version = '4.0.11'
+
+homepage = 'https://beltoforion.de/en/muparserx/'
+description = 'A C++ Library for Parsing Expressions with Strings, Complex Numbers, Vectors, Matrices and more.'
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+github_account = 'beltoforion'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['8bc2773f174afd8c51cc480a293622c499fd1f46ecfa57296e59d86c75356977']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+]
+
+configopts = ['-DBUILD_SHARED_LIBS=OFF', '-DBUILD_SHARED_LIBS=ON']
+
+sanity_check_paths = {
+    'files': ['lib64/libmuparserx.a', 'lib64/libmuparserx.%s' % SHLIB_EXT],
+    'dirs': ['include/muparserx'],
+}
+
+moduleclass = 'lib'
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/netCDF-4.9.0-gompi-2022a.eb b/Golden_Repo/n/netCDF/netCDF-4.9.0-gompi-2022a.eb
index cdf3f1976e1dc377b2e4fb11a9c328509cd2c821..0b6ce479cf42c234fa406348945abf57580959fb 100644
--- a/Golden_Repo/n/netCDF/netCDF-4.9.0-gompi-2022a.eb
+++ b/Golden_Repo/n/netCDF/netCDF-4.9.0-gompi-2022a.eb
@@ -48,7 +48,7 @@ dependencies = [
 # 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 -DBUILD_SHARED_LIBS=ON  -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
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/nvidia-Video_Codec_SDK/nvidia-Video_Codec_SDK-11.1.5.eb b/Golden_Repo/n/nvidia-Video_Codec_SDK/nvidia-Video_Codec_SDK-11.1.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..be698f06d312ef76013327db43abe247dfe62932
--- /dev/null
+++ b/Golden_Repo/n/nvidia-Video_Codec_SDK/nvidia-Video_Codec_SDK-11.1.5.eb
@@ -0,0 +1,47 @@
+easyblock = 'Tarball'
+
+name = 'nvidia-Video_Codec_SDK'
+version = '11.1.5'
+
+homepage = 'https://developer.nvidia.com/nvidia-video-codec-sdk'
+description = """NVDECODE and NVENCODE APIs for low-level granular control over various encode/decode parameters
+and if you want to directly tap into the hardware decoder/encoder."""
+
+toolchain = SYSTEM
+
+sources = ['Video_Codec_SDK_%(version)s.tar.gz']
+checksums = ['5facddff252cc15fd93a00f24d60e8bea85515e573ddd0341e84e756e286584a']
+
+dependencies = [
+    ('nvidia-driver', 'default', '', SYSTEM),
+]
+
+postinstallcmds = [
+    (
+        '{ cat > %(installdir)s/nvenc.pc; } << EOF\n'
+        'prefix=%(installdir)s \n'
+        'exec_prefix=\${prefix} \n'
+        'includedir=\${prefix}/Interface \n'
+        'libdir=${EBROOTNVIDIAMINDRIVER}/lib64 \n'
+        '\n'
+        'Name: nvenc \n'
+        'Description: NVENC \n'
+        'Version: %(version_major)s \n'
+        'Requires: \n'
+        'Conflicts: \n'
+        'Libs: -L\${libdir} -lnvidia-encode \n'
+        'Cflags: -I\${includedir} -Wno-error=deprecated-declarations\n'
+        'EOF'
+    ),
+]
+
+modextrapaths = {
+    'PKG_CONFIG_PATH': ''
+}
+
+sanity_check_paths = {
+    'files': ['Interface/nvEncodeAPI.h'],
+    'dirs': ['Interface', 'Lib'],
+}
+
+moduleclass = 'lib'
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/OpenCV/OpenCV-4.7.0-gcccoremkl-11.3.0-2022.1.0-CUDA-12.0-contrib.eb b/Golden_Repo/o/OpenCV/OpenCV-4.7.0-gcccoremkl-11.3.0-2022.1.0-CUDA-12.0-contrib.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c67d261b950e9c6f68626ffbb73fe793d5efab48
--- /dev/null
+++ b/Golden_Repo/o/OpenCV/OpenCV-4.7.0-gcccoremkl-11.3.0-2022.1.0-CUDA-12.0-contrib.eb
@@ -0,0 +1,139 @@
+easyblock = 'CMakeMake'
+
+name = 'OpenCV'
+version = '4.7.0'
+versionsuffix = '-CUDA-%(cudaver)s-contrib'
+
+# the hash is version dependent! see 3rdparty/ippicv/ippicv.cmake
+local_ippicv_hash = 'a56b6ac6f030c312b2dce17430eef13aed9af274'
+
+homepage = 'https://opencv.org/'
+description = """OpenCV (Open Source Computer Vision Library) is an open source computer vision
+ and machine learning software library. OpenCV was built to provide
+ a common infrastructure for computer vision applications and to accelerate
+ the use of machine perception in the commercial products.
+ Includes extra modules for OpenCV from the contrib repository."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True, 'cstd': 'c++14', 'optarch': True}
+
+sources = [
+    {
+        'source_urls': ['https://github.com/%(namelower)s/%(namelower)s/archive/'],
+        'download_filename': '%(version)s.zip',
+        'filename': SOURCELOWER_ZIP
+    },
+    {
+        'source_urls': ['https://github.com/%(namelower)s/opencv_contrib/archive/'],
+        'download_filename': '%(version)s.zip',
+        'filename': '%(namelower)s_contrib-%(version)s.zip'
+    },
+    {
+        'source_urls': ['https://raw.githubusercontent.com/opencv/opencv_3rdparty/%s/ippicv' % local_ippicv_hash],
+        'filename': 'ippicv_2020_lnx_intel64_20191018_general.tgz',
+        'extract_cmd': 'cp %s %(builddir)s'
+    },
+]
+checksums = [
+    'db6fb5e7dc76829d738fdbcdba11a810c66ca0a4752e531eaf3d793361e96de8',  # opencv-4.7.0.zip
+    'ef001813ec39215593ce9deb3aec70a85278f57a0ed88b18f6f615265855436c',  # opencv_contrib-4.7.0.zip
+    '08627fa5660d52d59309a572dd7db5b9c8aea234cfa5aee0942a1dd903554246',  # ippicv_2020_lnx_intel64_20191018_general.tgz
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05'),  # for numpy
+    ('zlib', '1.2.12'),
+    ('FFmpeg', '4.4.2'),
+    ('GStreamer', '1.20.2'),
+    ('freetype', '2.12.1'),
+    ('HarfBuzz', '4.2.1'),
+    ('libjpeg-turbo', '2.1.3'),
+    ('OpenJPEG', '2.5.0'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.3.0'),
+    ('libwebp', '1.2.4'),
+    ('OpenEXR', '3.1.5'),
+    ('JasPer', '2.0.33'),
+    ('Java', '11', '', SYSTEM),
+    ('ant', '1.10.13', '-Java-%(javaver)s', SYSTEM),
+    ('GLib', '2.72.1'),
+    ('GTK+', '3.24.34',),
+    ('HDF5', '1.12.2', '-serial'),  # needed by hdf from contrib
+    ('protobuf', '3.19.4'),
+    ('Eigen', '3.4.0'),
+    ('CUDA', '11.7', '', SYSTEM),
+    ('cuDNN', '8.6.0.163', '-CUDA-%(cudaver)s', SYSTEM),
+    ('nvidia-Video_Codec_SDK', '11.1.5', '', SYSTEM),
+    ('OpenGL', '2022a'),
+]
+
+configopts = "-D CMAKE_BUILD_TYPE=RELEASE "
+configopts += '-D CMAKE_CXX_FLAGS="-Wdeprecated-declarations" '
+
+configopts += "-D OPENCV_GENERATE_PKGCONFIG=ON "
+configopts += "-D ENABLE_PRECOMPILED_HEADERS=OFF "
+
+configopts += "-D BUILD_EXAMPLES=ON "
+configopts += "-D INSTALL_PYTHON_EXAMPLES=ON "
+
+configopts += "-D WITH_CUDA=ON "
+configopts += "-D WITH_CUDNN=ON "
+configopts += "-D WITH_CUBLAS=ON "
+configopts += "-D WITH_CUFFT=ON "
+configopts += "-D CUDA_ARCH_BIN='%(cuda_cc_space_sep)s' "
+# configopts += "-D CUDA_ARCH_PTX='' "
+configopts += "-D BUILD_CUDA_STUBS=ON "
+configopts += "-D OPENCV_DNN_CUDA=ON "
+configopts += "-D BUILD_opencv_cudacodec=ON "
+
+configopts += "-D WITH_NVCUVID=ON "
+
+configopts += "-D WITH_GSTREAMER=ON "
+
+configopts += '-DOPENCV_EXTRA_MODULES_PATH=%(builddir)s/%(namelower)s_contrib-%(version)s/modules '
+
+configopts += "-DProtobuf_INCLUDE_DIR=$EBROOTPROTOBUF/include "
+configopts += "-DProtobuf_LIBRARY=$EBROOTPROTOBUF/lib64/libprotobuf.so "
+configopts += "-DProtobuf_LITE_LIBRARY_RELEASE=$EBROOTPROTOBUF/lib64/libprotobuf-lite.so "
+configopts += "-DProtobuf_PROTOC_LIBRARY_RELEASE=$EBROOTPROTOBUF/lib64/bprotoc.so "
+configopts += "-DBUILD_PROTOBUF=OFF -DPROTOBUF_UPDATE_FILES=ON "
+
+# XXXX in configurations is a bug fix in OpenCV because ocv_check_modules is not able to recognize freetype and harfbuzz
+# ref: https://github.com/opencv/opencv/blob/6e8daaec0f46aaba9ea22e2afce47307b1dbff9f/cmake/OpenCVUtils.cmake#L861
+configopts += " ".join([
+    "-DOPENCV_EXTRA_MODULES_PATH=%(builddir)s/%(namelower)s_contrib-%(version)s/modules",
+    "-DFREETYPE_FOUND=ON",
+    "-DFREETYPE_INCLUDE_DIRS=$EBROOTFREETYPE/include/freetype2/",
+    "-DFREETYPE_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so",
+    "-DFREETYPE_LINK_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so",
+    "-DFREETYPE_LINK_LIBRARIES_XXXXX=ON",
+    "-DHARFBUZZ_FOUND=ON",
+    "-DHARFBUZZ_INCLUDE_DIRS=$EBROOTHARFBUZZ/include/harfbuzz",
+    "-DHARFBUZZ_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so",
+    "-DHARFBUZZ_LINK_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so",
+    "-DHARFBUZZ_LINK_LIBRARIES_XXXXX=ON",
+    "-DBUILD_opencv_python2=OFF",
+    "-DCUDA_NVCC_FLAGS=--std=c++14",
+])
+
+enhance_sanity_check = True
+
+local_contrib_libs = [
+    'aruco', 'bgsegm', 'bioinspired', 'ccalib', 'datasets', 'dnn_objdetect', 'dnn_superres', 'dpm', 'face', 'freetype',
+    'fuzzy', 'hdf', 'hfs', 'img_hash', 'line_descriptor', 'optflow', 'phase_unwrapping', 'plot', 'quality', 'reg',
+    'rgbd', 'saliency', 'shape', 'stereo', 'structured_light', 'superres', 'surface_matching', 'text', 'tracking',
+    'videostab', 'xfeatures2d', 'ximgproc', 'xobjdetect', 'xphoto'
+]
+
+sanity_check_paths = {
+    'files': ['lib64/libopencv_%s.%s' % (x, SHLIB_EXT) for x in local_contrib_libs],
+    'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/o/OpenFOAM/OpenFOAM-v1906-wmake-ompi.patch b/Golden_Repo/o/OpenFOAM/OpenFOAM-v1906-wmake-ompi.patch
new file mode 100644
index 0000000000000000000000000000000000000000..78291300d58feaf61c9847c86a72abffec805986
--- /dev/null
+++ b/Golden_Repo/o/OpenFOAM/OpenFOAM-v1906-wmake-ompi.patch
@@ -0,0 +1,29 @@
+# - Corrected output of "wmake -show-c" and "wmake -show-c++" with OpenMPI in order to allow compilation of paraFoam
+#
+# author: Jiri Furst <Jiri.Furst@gmail.com>
+--- OpenFOAM-v1906/wmake/makefiles/info.orig	2019-11-07 18:12:53.000000000 +0100
++++ OpenFOAM-v1906/wmake/makefiles/info	2019-11-23 12:52:50.700688579 +0100
+@@ -73,19 +73,19 @@
+ 
+ .PHONY: c
+ c:
+-	@echo "$(firstword $(cc))"
++	@echo "$(lastword $(cc))"
+ 
+ .PHONY: cxx
+ cxx:
+-	@echo "$(firstword $(CC))"
++	@echo "$(lastword $(CC))"
+ 
+ .PHONY: cflags
+ cflags:
+-	@echo "$(wordlist 2,$(words $(COMPILE_C)), $(COMPILE_C))"
++	@echo "$(wordlist 3,$(words $(COMPILE_C)), $(COMPILE_C))"
+ 
+ .PHONY: cxxflags
+ cxxflags:
+-	@echo "$(wordlist 2,$(words $(COMPILE_CXX)), $(COMPILE_CXX))"
++	@echo "$(wordlist 3,$(words $(COMPILE_CXX)), $(COMPILE_CXX))"
+ 
+ .PHONY: cflags-arch
+ cflags-arch:
diff --git a/Golden_Repo/o/OpenFOAM/OpenFOAM-v2012-cleanup.patch b/Golden_Repo/o/OpenFOAM/OpenFOAM-v2012-cleanup.patch
new file mode 100644
index 0000000000000000000000000000000000000000..daccb9439617bee6e1d5038794d6678de6cf00d3
--- /dev/null
+++ b/Golden_Repo/o/OpenFOAM/OpenFOAM-v2012-cleanup.patch
@@ -0,0 +1,150 @@
+# Replaces OpenFOAM third-party libraries with EASYBUILD variants.
+# Uses the OpenFOAM prefs mechanism and the FOAM_CONFIG_ETC variable
+# to define the preferred settings without patching the original files
+#
+# Authors: Mark Olesen <Mark.Olesen@esi-group.com>
+# -------------------------------------------------------------------------
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/prefs.sh	2020-12-14 10:02:26.488430802 +0100
+@@ -0,0 +1,7 @@
++##Easybuild## settings -*- sh -*-
++
++export FOAM_CONFIG_ETC="etc/easybuild"
++
++export WM_MPLIB=EASYBUILDMPI
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/CGAL	2020-12-14 10:10:55.991841204 +0100
+@@ -0,0 +1,6 @@
++##Easybuild## settings -*- sh -*-
++
++export BOOST_ARCH_PATH="$EBROOTBOOST"
++export CGAL_ARCH_PATH="$EBROOTCGAL"
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/FFTW	2020-12-14 10:10:53.735843322 +0100
+@@ -0,0 +1,5 @@
++##Easybuild## settings -*- sh -*-
++
++export FFTW_ARCH_PATH="$EBROOTFFTW"
++
++##EasyBuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/metis	2020-12-11 21:23:28.774934024 +0100
+@@ -0,0 +1,6 @@
++##Easybuild## settings -*- sh -*-
++
++METIS_VERSION="metis-$EBVERSIONMETIS"
++[ -d "$METIS_ARCH_PATH" ] || METIS_ARCH_PATH="$METIS_ROOT"
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/readline	2020-12-11 21:23:22.534951043 +0100
+@@ -0,0 +1,5 @@
++##Easybuild## settings -*- sh -*-
++
++export READLINE_ARCH_PATH="$EBROOTLIBREADLINE"
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/scotch	2020-12-11 21:23:17.586964539 +0100
+@@ -0,0 +1,7 @@
++##Easybuild## settings -*- sh -*-
++
++export SCOTCH_VERSION="scotch_$EBVERSIONSCOTCH"
++export SCOTCH_ARCH_PATH="$EBROOTSCOTCH"
++[ -d "$SCOTCH_ARCH_PATH" ] || SCOTCH_ARCH_PATH="$SCOTCH_ROOT"
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/vtk	2020-12-11 21:22:55.463024882 +0100
+@@ -0,0 +1,9 @@
++##Easybuild## settings -*- sh -*-
++
++export VTK_DIR="$EBROOTVTK"
++export MESA_ARCH_PATH="$EBROOTMESA"
++
++# Define paraview-mesa directory as required
++unset ParaView_MESA_DIR
++
++##Easybuild##
+--- /dev/null	2020-12-14 09:05:45.272769166 +0100
++++ OpenFOAM-v2012/etc/easybuild/config.sh/paraview	2020-12-14 10:13:53.583674383 +0100
+@@ -0,0 +1,75 @@
++##Easybuild## settings -*- sh -*-
++#
++# Largely a knockoff of the OpenFOAM etc/config.sh/paraview-system
++# readjusted for easybuild
++#
++# Copyright (C) 2020 OpenCFD Ltd.
++#
++#------------------------------------------------------------------------------
++# Compiler-specific location for ThirdParty installations
++archDir="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER"
++
++# Clean path and library path of previous settings
++eval \
++    "$($WM_PROJECT_DIR/bin/foamCleanPath -sh-env=PATH \
++    $ParaView_DIR $archDir/ParaView- $archDir/qt-)"
++
++eval \
++    "$($WM_PROJECT_DIR/bin/foamCleanPath -sh-env=LD_LIBRARY_PATH \
++    $ParaView_DIR $archDir/ParaView- $archDir/qt-)"
++
++
++#------------------------------------------------------------------------------
++
++##Easybuild## settings
++
++ParaView_VERSION="$EBVERSIONPARAVIEW"
++export ParaView_DIR="$EBROOTPARAVIEW"
++
++#------------------------------------------------------------------------------
++
++unset PV_PLUGIN_PATH
++
++# Set API to correspond to VERSION
++# pv_api is <digits>.<digits> from ParaView_VERSION
++#-
++# Extract API from VERSION
++pv_api=$(echo "$ParaView_VERSION" | \
++    sed -ne 's/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p')
++
++pv_plugin_dir="$FOAM_LIBBIN/paraview-$pv_api"
++
++# Set paths if binaries are present
++if [ -r "$ParaView_DIR" ]
++then
++    export PATH="$ParaView_DIR/bin:$PATH"
++
++    # ParaView libraries
++    # - 5.5 and later:   lib/, but could also be lib64/
++    for libDir in lib64 lib
++    do
++        pvLibDir="$libDir/paraview-$pv_api"
++        if [ -d "$ParaView_DIR/$pvLibDir" ]
++        then
++            export LD_LIBRARY_PATH="$ParaView_DIR/$libDir:$LD_LIBRARY_PATH"
++            break
++        fi
++    done
++
++    # OpenFOAM plugin directory must be the first in PV_PLUGIN_PATH
++    # and have paraview-major.minor encoded in its name
++    if [ -d "$pv_plugin_dir" ]
++    then
++        export PV_PLUGIN_PATH="$pv_plugin_dir"
++    fi
++fi
++
++
++#------------------------------------------------------------------------------
++
++unset ParaView_VERSION
++
++unset archDir libDir
++unset pv_api pv_plugin_dir pvLibDir
++
++#------------------------------------------------------------------------------
diff --git a/Golden_Repo/o/OpenFOAM/OpenFOAM-v2112-foss-2022a.eb b/Golden_Repo/o/OpenFOAM/OpenFOAM-v2112-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7fadff24f870886fba2d5631d237e2bac733b706
--- /dev/null
+++ b/Golden_Repo/o/OpenFOAM/OpenFOAM-v2112-foss-2022a.eb
@@ -0,0 +1,41 @@
+name = 'OpenFOAM'
+version = 'v2112'
+
+homepage = 'https://www.openfoam.com/'
+description = """OpenFOAM is a free, open source CFD software package.
+ OpenFOAM has an extensive range of features to solve anything from complex fluid flows
+ involving chemical reactions, turbulence and heat transfer,
+ to solid dynamics and electromagnetics."""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'opt': True, 'cstd': 'c++17'}
+
+source_urls = ['https://sourceforge.net/projects/openfoam/files/%(version)s/']
+sources = [SOURCE_TGZ]
+patches = [
+    ('OpenFOAM-v2012-cleanup.patch', 1),
+    'OpenFOAM-v1906-wmake-ompi.patch',
+]
+checksums = [
+    '3e838731e79db1c288acc27aad8cc8a43d9dac1f24e5773e3b9fa91419a8c3f7',  # OpenFOAM-v2112.tgz
+    'cdd2597a1ac1448e9bd33a364a8dfe17f51cc9ab5a8e0ab67cf92bba3ed9da43',  # OpenFOAM-v2012-cleanup.patch
+    '518e27683c5c41400cfbc17b31effa50b31b25916dccbf85b18b0b955f642505',  # OpenFOAM-v1906-wmake-ompi.patch
+]
+
+builddependencies = [
+    ('Bison', '3.8.2'),
+    ('CMake', '3.23.1'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('libreadline', '8.1.2'),
+    ('ncurses', '6.3'),
+    # OpenFOAM requires 64 bit METIS using 32 bit indexes (array indexes)
+    ('METIS', '5.1.0', '-RTW64-IDX32'),  # , ('GCCcore', '11.3.0')),
+    ('SCOTCH', '7.0.1'),
+    ('CGAL', '5.5.1'),
+    ('gnuplot', '5.4.4'),
+]
+
+moduleclass = 'cae'
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/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/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/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/Pandoc/Pandoc-2.19.2.eb b/Golden_Repo/p/Pandoc/Pandoc-2.19.2.eb
new file mode 100644
index 0000000000000000000000000000000000000000..018403b1a7927572cf6fa5f4b5b9c5a95220ba38
--- /dev/null
+++ b/Golden_Repo/p/Pandoc/Pandoc-2.19.2.eb
@@ -0,0 +1,34 @@
+# This file is an EasyBuild reciPY as per https://easybuilders.github.io/easybuild/
+# Author: Pablo Escobar Lopez
+# sciCORE - University of Basel
+# SIB Swiss Institute of Bioinformatics 
+# Contribution from the NIHR Biomedical Research Centre
+# Guy's and St Thomas' NHS Foundation Trust and King's College London
+# uploaded by J. Sassmannshausen
+
+easyblock = 'Tarball'
+
+name = 'Pandoc'
+version = '2.19.2'
+
+homepage = 'https://pandoc.org'
+description = "If you need to convert files from one markup format into another, pandoc is your swiss-army knife"
+
+toolchain = SYSTEM
+
+source_urls = ['https://github.com/jgm/pandoc/releases/download/%(version)s/']
+_archs = {'x86_64': 'amd64', 'aarch64': 'arm64'}
+sources = ['%%(namelower)s-%%(version)s-linux-%s.tar.gz' % _archs[ARCH]]
+checksums = [{
+    'pandoc-2.19.2-linux-amd64.tar.gz': '9d55c7afb6a244e8a615451ed9cb02e6a6f187ad4d169c6d5a123fa74adb4830',
+    'pandoc-2.19.2-linux-arm64.tar.gz': '43f364915b9da64905fc3f6009f5542f224e54fb24f71043ef5154540f1a3983',
+}]
+
+sanity_check_paths = {
+    'files': ['bin/pandoc'],
+    'dirs': ['share'],
+}
+
+sanity_check_commands = ['pandoc --help']
+
+moduleclass = 'tools'
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..0a299917aeb66a8cd7dcda34a6947015ed6d55d1
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb
@@ -0,0 +1,351 @@
+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', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-Stack', '2022a', '', ('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..31ed6285da39e037542993f9a152cc2b3abcabdd
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb
@@ -0,0 +1,350 @@
+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', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-Stack', '2022a', '', ('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..12be5b994e8953b8d6347c7d2561ce86f0665dea
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb
@@ -0,0 +1,351 @@
+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', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-Stack', '2022a', '', ('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..680fbdd7e6f7f765ae92ecfa6e6f9bbe151f948e
--- /dev/null
+++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb
@@ -0,0 +1,350 @@
+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', '', ('gcccoremkl', '11.3.0-2022.1.0')),  # for CDI plugin
+    ('mpi4py', '3.1.4'),
+    ('double-conversion', '3.2.0'),
+    ('Eigen', '3.4.0'),
+    ('Qt5', '5.15.5'),
+    ('SciPy-Stack', '2022a', '', ('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/PyCairo/PyCairo-1.23.0-GCCcore-11.3.0.eb b/Golden_Repo/p/PyCairo/PyCairo-1.23.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..24de7e7fe6121a8a56b9eceedbbcd2adb52991cf
--- /dev/null
+++ b/Golden_Repo/p/PyCairo/PyCairo-1.23.0-GCCcore-11.3.0.eb
@@ -0,0 +1,45 @@
+# Author: Denis Krišťák (INUITS)
+
+easyblock = 'PythonPackage'
+
+name = 'PyCairo'
+version = '1.23.0'
+
+homepage = 'https://pycairo.readthedocs.io/'
+description = """Python bindings for the cairo library"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['9b61ac818723adc04367301317eb2e814a83522f07bbd1f409af0dada463c44c']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Coreutils', '9.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('cairo', '1.17.4'),
+]
+
+# PyGTK needs PyCairo installed by pip
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+# remove pyproject.toml, which causes trouble (header files and .pc file are not installed)
+preinstallopts = "rm pyproject.toml && "
+
+# Don't build a wheel or the pkg-cfg file won't be installed
+installopts = '--no-binary=%(namelower)s'
+
+sanity_check_paths = {
+    'files': ['%s/py3cairo.%s' % (p, e) for (p, e) in [('include/pycairo', 'h'), ('lib/pkgconfig', 'pc')]],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/cairo'],
+}
+
+options = {'modulename': 'cairo'}
+
+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/PyOpenCL/PyOpenCL-2021.2.13-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/p/PyOpenCL/PyOpenCL-2022.2.4-gcccoremkl-11.3.0-2022.1.0.eb
similarity index 100%
rename from Golden_Repo/p/PyOpenCL/PyOpenCL-2021.2.13-gcccoremkl-11.3.0-2022.1.0.eb
rename to Golden_Repo/p/PyOpenCL/PyOpenCL-2022.2.4-gcccoremkl-11.3.0-2022.1.0.eb
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
new file mode 100644
index 0000000000000000000000000000000000000000..cd1a2525d6964372e38a125f7fe2226c1f9a0146
--- /dev/null
+++ b/Golden_Repo/p/PyQuil/PyQuil-3.3.3-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,101 @@
+easyblock = 'PythonBundle'
+
+name = 'PyQuil'
+version = '3.3.3'
+
+homepage = 'https://github.com/rigetti/pyquil'
+description = """PyQuil is a library for generating and executing Quil programs on the Rigetti Forest platform."""
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchainopts = {'pic': True}
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-Stack', '2022a'),
+    ('networkx', '2.8.4'),
+
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'use_pip_for_deps':  False,
+    'download_dep_fail': True,
+    'sanity_pip_check': True,
+}
+
+exts_list = [
+    ('types-python-dateutil', '2.8.19.6', {
+        'checksums': ['4a6f4cc19ce4ba1a08670871e297bf3802f55d4f129e6aa2443f540b6cf803d2'],
+        'modulename': False,
+    }),
+    ('python-rapidjson', '1.9', {
+        'modulename': 'rapidjson',
+        'checksums': ['be7d351c7112dac608133a23f60e95395668d0981a07f4037f63e0e88afcf01a'],
+    }),
+    ('ruamel.yaml', '0.17.21', {
+        'checksums': ['8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af'],
+    }),
+    ('ruamel.yaml.clib', '0.2.7', {
+        'checksums': ['1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497'],
+        'modulename': False,
+    }),
+    ('msgpack', '0.6.2', {
+        'checksums': ['ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830'],
+    }),
+    ('rpcq', '3.10.0', {
+        'checksums': ['bf21780a1cb1e8676b988c44004d49a168d8937ce2a458c00beb37fa41023684'],
+    }),
+    ('lark', '0.11.3', {
+        'checksums': ['3100d9749b5a85735ec428b83100876a5da664804579e729c23a36341f961e7e'],
+    }),
+    ('retry', '0.9.2', {
+        'checksums': ['f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4'],
+    }),
+    ('types-retry', '0.9.9.1', {
+        'checksums': ['344ead4387e0e98c6d603758c1318ee4e5b04429cecb9a342a1cf873de3b510d'],
+        'modulename': False,
+    }),
+    ('h11', '0.14.0', {
+        'checksums': ['8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d'],
+    }),
+    ('rfc3986', '1.5.0', {
+        'checksums': ['270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835'],
+    }),
+    ('sniffio', '1.3.0', {
+        'checksums': ['e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101'],
+    }),
+    ('httpx', '0.23.3', {
+        'checksums': ['9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9'],
+    }),
+    ('iso8601', '1.1.0', {
+        'checksums': ['32811e7b81deee2063ea6d2e94f8819a86d1f3811e49d23623a41fa832bef03f'],
+    }),
+    ('pydantic', '1.10.4', {
+        'checksums': ['b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648'],
+    }),
+    ('anyio', '3.6.2', {
+        'checksums': ['25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421'],
+    }),
+    ('httpcore', '0.16.3', {
+        'checksums': ['c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb'],
+    }),
+    ('PyJWT', '2.6.0', {
+        'checksums': ['69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd'],
+        'modulename': 'jwt',
+    }),
+    ('retrying', '1.3.4', {
+        'checksums': ['345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e'],
+    }),
+    ('rfc3339', '6.2', {
+        'checksums': ['d53c3b5eefaef892b7240ba2a91fef012e86faa4d0a0ca782359c490e00ad4d0'],
+    }),
+    ('qcs_api_client', '0.21.3', {
+        'checksums': ['d219aaef49eb6f515b601467f6c85f20ca52f788d90b3052775e6d12b2f57466'],
+    }),
+    ('pyquil', version, {
+        'checksums': ['fc78cc0a099ee115f9b9a52e3d56a6a956328aed407030f19636bbae2fae981a'],
+    }),
+]
+
+moduleclass = 'quantum'
diff --git a/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb b/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..77efb7d4b6b272a0204d2152ef677e2f61b019ef
--- /dev/null
+++ b/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb
@@ -0,0 +1,45 @@
+easyblock = 'CMakeMakeCp'
+
+name = 'PySCF'
+version = '2.1.1'
+
+homepage = 'http://www.pyscf.org'
+description = "PySCF is an open-source collection of electronic structure modules powered by Python."
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/pyscf/pyscf/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['814240aa73f57ba96aee8264e3914c09f96ebdce1e42784da4b5e9a474ecb280']
+
+builddependencies = [('CMake', '3.23.1')]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('h5py', '3.7.0', '-serial'),
+    ('libcint', '5.1.6', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('libxc', '5.2.3'),
+    ('XCFun', '2.1.1'),
+]
+
+start_dir = 'pyscf/lib'
+
+separate_build_dir = True
+
+configopts = "-DBUILD_LIBCINT=OFF -DBUILD_LIBXC=OFF -DBUILD_XCFUN=OFF"
+
+prebuildopts = "export PYSCF_INC_DIR=$EBROOTQCINT/include:$EBROOTLIBXC/lib && "
+
+files_to_copy = ['pyscf']
+
+sanity_check_paths = {
+    'files': ['pyscf/__init__.py'],
+    'dirs': ['pyscf/data', 'pyscf/lib'],
+}
+
+sanity_check_commands = ["python -c 'import pyscf'"]
+
+modextrapaths = {'PYTHONPATH': ''}
+
+moduleclass = 'chem'
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.12.0-foss-2022a-CUDA-11.7.eb b/Golden_Repo/p/PyTorch/PyTorch-1.12.0-foss-2022a-CUDA-11.7.eb
index f0653e8686933a26ae9c914551d803249d4662c6..845338e1eb567634a6112729b18d58926cea2ccd 100644
--- a/Golden_Repo/p/PyTorch/PyTorch-1.12.0-foss-2022a-CUDA-11.7.eb
+++ b/Golden_Repo/p/PyTorch/PyTorch-1.12.0-foss-2022a-CUDA-11.7.eb
@@ -27,23 +27,26 @@ patches = [
     '%(name)s-1.11.0_increase-distributed-test-timeout.patch',
     '%(name)s-1.11.0_increase_c10d_gloo_timeout.patch',
     '%(name)s-1.11.0_disable_failing_jit_cuda_fuser_tests.patch',
+    '%(name)s-1.12.0_nic-hostname.patch',
 ]
 checksums = [
-    None,  # PyTorch-1.12.0.tar.gz
-    'b899aa94d9e60f11ee75a706563312ccefa9cf432756c470caa8e623991c8f18',  # PyTorch-1.7.0_avoid-nan-in-test-torch.patch
-    '622cb1eaeadc06e13128a862d9946bcc1f1edd3d02b259c56a9aecc4d5406b8a',  # PyTorch-1.7.0_disable-dev-shm-test.patch
-    '89ac7a8e9e7df2e64cf8404fe3a279f5e9b759fee41c9de3aaff9c22f385c2c6',  # PyTorch-1.8.1_dont-use-gpu-ccc-in-test.patch
-    # PyTorch-1.9.0_limit-world-size-for-zero-redundancy-opt-test.patch
-    'ff573660913ce055e24cfd194ce747ba5685091c631cfd443eae2a99d56b57ea',
-    # PyTorch-1.10.0_fix-test-dataloader-fixed-affinity.patch
-    '313dca681f45ce3bc7c4557fdcdcbe0b77216d2c708fa30a2ec0e22c44876707',
-    'ac05943bb205623f91ef140aa00869efc5fe844184bd666bebf5405808610448',  # PyTorch-1.10.0_skip_cmake_rpath.patch
-    # PyTorch-1.11.0_increase-distributed-test-timeout.patch
-    '087ad20163a1291773ae3457569b80523080eb3731e210946459b2333a919f3f',
-    # PyTorch-1.11.0_increase_c10d_gloo_timeout.patch
-    '20cd4a8663f74ab326fdb032b926bf5c7e94d9750c515ab9050927ba00cf1953',
-    # PyTorch-1.11.0_disable_failing_jit_cuda_fuser_tests.patch
-    'e7bfe120a8b3fe2b40dac6839852a5fbab3cb3429fbe44a0fc3a1800adaaee51',
+    {'PyTorch-1.12.0.tar.gz': '3bfc8e0265849dae2bc26601cb872775859d98f25d045d6b1d091c1cb4e51815'},
+    {'PyTorch-1.7.0_avoid-nan-in-test-torch.patch': 'b899aa94d9e60f11ee75a706563312ccefa9cf432756c470caa8e623991c8f18'},
+    {'PyTorch-1.7.0_disable-dev-shm-test.patch': '622cb1eaeadc06e13128a862d9946bcc1f1edd3d02b259c56a9aecc4d5406b8a'},
+    {'PyTorch-1.8.1_dont-use-gpu-ccc-in-test.patch':
+     '89ac7a8e9e7df2e64cf8404fe3a279f5e9b759fee41c9de3aaff9c22f385c2c6'},
+    {'PyTorch-1.9.0_limit-world-size-for-zero-redundancy-opt-test.patch':
+     'ff573660913ce055e24cfd194ce747ba5685091c631cfd443eae2a99d56b57ea'},
+    {'PyTorch-1.10.0_fix-test-dataloader-fixed-affinity.patch':
+     '313dca681f45ce3bc7c4557fdcdcbe0b77216d2c708fa30a2ec0e22c44876707'},
+    {'PyTorch-1.10.0_skip_cmake_rpath.patch': 'ac05943bb205623f91ef140aa00869efc5fe844184bd666bebf5405808610448'},
+    {'PyTorch-1.11.0_increase-distributed-test-timeout.patch':
+     '087ad20163a1291773ae3457569b80523080eb3731e210946459b2333a919f3f'},
+    {'PyTorch-1.11.0_increase_c10d_gloo_timeout.patch':
+     '20cd4a8663f74ab326fdb032b926bf5c7e94d9750c515ab9050927ba00cf1953'},
+    {'PyTorch-1.11.0_disable_failing_jit_cuda_fuser_tests.patch':
+     'e7bfe120a8b3fe2b40dac6839852a5fbab3cb3429fbe44a0fc3a1800adaaee51'},
+    {'PyTorch-1.12.0_nic-hostname.patch': '01dc31ce0a8acaa509276b17742c5633961fed089f5674119057342d6b448e5b'},
 ]
 
 builddependencies = [
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.12.0_nic-hostname.patch b/Golden_Repo/p/PyTorch/PyTorch-1.12.0_nic-hostname.patch
new file mode 100644
index 0000000000000000000000000000000000000000..cf766309e3b2d6f15ea0172ad379b41d798f6051
--- /dev/null
+++ b/Golden_Repo/p/PyTorch/PyTorch-1.12.0_nic-hostname.patch
@@ -0,0 +1,179 @@
+diff -ruN a/torch/distributed/elastic/agent/server/api.py b/torch/distributed/elastic/agent/server/api.py
+--- a/torch/distributed/elastic/agent/server/api.py	2023-02-06 13:21:33.000000000 +0100
++++ b/torch/distributed/elastic/agent/server/api.py	2023-02-06 14:49:52.309003092 +0100
+@@ -8,6 +8,7 @@
+ 
+ import abc
+ import functools
++import ipaddress
+ import json
+ import os
+ import signal
+@@ -60,6 +61,8 @@
+                      if not specified then will chose a random free port
+         master_addr: fixed master_addr to run the c10d store on rank 0
+                      if not specified then will chose hostname on agent rank 0
++        endpoint: original endpoint that is discarded when the static
++                  rendezvous backend is specified
+         redirects: redirect std streams to a file,
+                    selectively redirect for a particular
+                    local rank by passing a map
+@@ -80,6 +83,7 @@
+     monitor_interval: float = 30.0
+     master_port: Optional[int] = None
+     master_addr: Optional[str] = None
++    endpoint: str = ''
+     redirects: Union[Std, Dict[int, Std]] = Std.NONE
+     tee: Union[Std, Dict[int, Std]] = Std.NONE
+ 
+@@ -381,8 +385,27 @@
+     raise RuntimeError("Failed to create a socket")
+ 
+ 
+-def _get_fq_hostname() -> str:
+-    return socket.getfqdn(socket.gethostname())
++def _get_fq_hostname(master_addr: Optional[str], endpoint: str) -> str:
++    if master_addr:
++        return master_addr
++
++    # `master_addr` is None when we don't have the "static" rendezvous backend.
++    # `endpoint` may not be given (i.e. it is an empty string); then
++    # we have to fall back to `socket.gethostname`.
++    if not endpoint:
++        return socket.getfqdn(socket.gethostname())
++
++    host = rdzv.utils.parse_rendezvous_endpoint(endpoint, default_port=-1)[0]
++    try:
++        ipaddress.ip_address(host)
++        is_ip = True
++    except ValueError:
++        is_ip = False
++
++    if is_ip:
++        return socket.gethostbyaddr(host)[0]
++    else:
++        return socket.getfqdn(host)
+ 
+ 
+ class ElasticAgent(abc.ABC):
+@@ -504,15 +527,17 @@
+ 
+     @staticmethod
+     def _set_master_addr_port(
+-        store: Store, master_addr: Optional[str], master_port: Optional[int]
++            store: Store,
++            master_addr: Optional[str],
++            master_port: Optional[int],
++            endpoint: str,
+     ):
+         if master_port is None:
+             sock = _get_socket_with_port()
+             with closing(sock):
+                 master_port = sock.getsockname()[1]
+ 
+-        if master_addr is None:
+-            master_addr = _get_fq_hostname()
++        master_addr = _get_fq_hostname(master_addr, endpoint)
+ 
+         store.set("MASTER_ADDR", master_addr.encode(encoding="UTF-8"))
+         store.set("MASTER_PORT", str(master_port).encode(encoding="UTF-8"))
+@@ -545,7 +570,9 @@
+         worker_group.group_world_size = group_world_size
+ 
+         if group_rank == 0:
+-            self._set_master_addr_port(store, spec.master_addr, spec.master_port)
++            self._set_master_addr_port(
++                store, spec.master_addr, spec.master_port, spec.endpoint
++            )
+         master_addr, master_port = self._get_master_addr_port(store)
+         restart_count = spec.max_restarts - self._remaining_restarts
+ 
+@@ -781,7 +808,7 @@
+             "group_rank": wg.group_rank,
+             "worker_id": worker_id,
+             "role": spec.role,
+-            "hostname": _get_fq_hostname(),
++            "hostname": _get_fq_hostname(spec.master_addr, spec.endpoint),
+             "state": state,
+             "total_run_time": self._total_execution_time,
+             "rdzv_backend": spec.rdzv_handler.get_backend(),
+diff -ruN a/torch/distributed/elastic/rendezvous/utils.py b/torch/distributed/elastic/rendezvous/utils.py
+--- a/torch/distributed/elastic/rendezvous/utils.py	2023-02-06 13:21:33.000000000 +0100
++++ b/torch/distributed/elastic/rendezvous/utils.py	2023-02-06 14:52:10.124904154 +0100
+@@ -4,15 +4,48 @@
+ # This source code is licensed under the BSD-style license found in the
+ # LICENSE file in the root directory of this source tree.
+ 
++import fcntl
+ import ipaddress
+ import random
+ import re
+ import socket
++import struct
+ import time
+ import weakref
+ from datetime import timedelta
+ from threading import Event, Thread
+-from typing import Any, Callable, Dict, Optional, Tuple, Union
++from typing import Any, Callable, Dict, List, Optional, Tuple, Union
++
++
++
++# From https://stackoverflow.com/a/27494105.
++def nic_ip_address(nic_name):
++    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
++    return socket.inet_ntoa(fcntl.ioctl(
++        s.fileno(),
++        0x8915,  # SIOCGIFADDR
++        struct.pack('256s', nic_name[:15].encode("UTF-8"))
++    )[20:24])
++
++
++# Adapted from https://stackoverflow.com/a/27494105.
++def nic_info() -> List[Tuple[str, str]]:
++    """Return a list of tuples containing each NIC's hostname and its IPv4."""
++    nics: List[Tuple[str, str]] = []
++    try:
++        if_nameindex = socket.if_nameindex()
++    except OSError:
++        return nics
++
++    for (_, nic_name) in if_nameindex:
++        try:
++            ip_addr = nic_ip_address(nic_name)
++        except OSError:
++            continue
++
++        hostname = socket.gethostbyaddr(ip_addr)[0]
++        nics.append((hostname, ip_addr))
++    return nics
+ 
+ 
+ def _parse_rendezvous_config(config_str: str) -> Dict[str, str]:
+@@ -130,18 +163,26 @@
+     if host == this_host:
+         return True
+ 
++    host_fqdn = socket.getfqdn(host)
+     addr_list = socket.getaddrinfo(
+         this_host, None, proto=socket.IPPROTO_TCP, flags=socket.AI_CANONNAME
+     )
+     for addr_info in addr_list:
+         # If we have an FQDN in the addr_info, compare it to `host`.
+-        if addr_info[3] and addr_info[3] == host:
++        if addr_info[3] and (addr_info[3] == host or addr_info[3] == host_fqdn):
+             return True
+         # Otherwise if `host` represents an IP address, compare it to our IP
+         # address.
+         if addr and addr_info[4][0] == str(addr):
+             return True
+ 
++    for (nic_host, nic_addr) in nic_info():
++        if (
++                nic_host == host or nic_host == host_fqdn
++                or addr and nic_addr == str(addr)
++        ):
++            return True
++
+     return False
+ 
diff --git a/Golden_Repo/p/p7zip/p7zip-17.04-GCCcore-11.3.0.eb b/Golden_Repo/p/p7zip/p7zip-17.04-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..5cc4c0084482621b5179320b0038ea2e3063add2
--- /dev/null
+++ b/Golden_Repo/p/p7zip/p7zip-17.04-GCCcore-11.3.0.eb
@@ -0,0 +1,50 @@
+easyblock = 'MakeCp'
+
+name = 'p7zip'
+version = '17.04'
+
+homepage = 'https://github.com/p7zip-project/p7zip'
+description = """p7zip is a quick port of 7z.exe and 7za.exe (CLI version of
+7zip) for Unix. 7-Zip is a file archiver with highest compression ratio."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+github_account = 'p7zip-project'
+source_urls = [GITHUB_LOWER_SOURCE]
+sources = ['v%(version)s.tar.gz']
+
+# https://github.com/p7zip-project/p7zip/archive/refs/tags/v17.04.tar.gz
+
+checksums = ['ea029a2e21d2d6ad0a156f6679bd66836204aa78148a4c5e498fe682e77127ef']
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+prebuildopts = "cp makefile.linux_amd64 makefile.linux &&"
+buildopts = 'all3 CC="$CC" CXX="$CXX" OPTFLAGS="$CFLAGS"'
+
+files_to_copy = [
+    (['bin/7za', 'bin/7zr', 'bin/7zCon.sfx'], 'bin'),  # stand-alone binaries
+    (['bin/7z', 'bin/7z.%s' % SHLIB_EXT, 'bin/Codecs'], 'libexec'),  # 7z requires 7z.so plugin in same directory
+]
+
+# put script in place for 7z, since it *must* be called full path, to ensure that 7z.so is found in the same directory
+# see also http://sourceforge.net/p/p7zip/discussion/383044/thread/5e4085ab/
+postinstallcmds = [
+    "echo '#!/bin/sh\n%(installdir)s/libexec/7z $@' > %(installdir)s/bin/7z",
+    "chmod +x %(installdir)s/bin/7z",  # set execution bits according to current umask
+]
+
+sanity_check_paths = {
+    'files': ['bin/7z', 'bin/7za', 'bin/7zCon.sfx', 'bin/7zr', 'libexec/7z', 'libexec/7z.%s' % SHLIB_EXT],
+    'dirs': ['libexec/Codecs'],
+}
+
+sanity_check_commands = [
+    '7z --help',
+    '7z x || test $? -gt 0',
+    "! 7z i | grep -q \"Can't load\" ",
+]
+
+moduleclass = 'tools'
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..79dbaeab0a1d58d2396480a8235c2deb750cdb49
--- /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 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',
+    # 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-22.11.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7b3584281e90504462332b299909a7ee2ebc2c49
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.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 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': '22.11'}
+
+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.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b2aa8e9048ed8c6cf5e11dfc594df2879418fc18
--- /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 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',
+    # 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/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..d594c9ef997065e3874f5c576612915ed3caa93f
--- /dev/null
+++ b/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb
@@ -0,0 +1,153 @@
+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-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('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', {
+        'checksums': ['d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1'],
+        'modulename': False,
+    }),
+    ('requests_ntlm', '1.1.0', {
+        'checksums': ['9189c92e8c61ae91402a64b972c4802b2457ce6a799d658256ebf084d5c7eb71'],
+    }),
+    ('fastdtw', '0.3.4', {
+        'checksums': ['2350fa6ec36bcad186eaf81f46eff35181baf04e324f522de8aeb43d0243f64f'],
+    }),
+    ('inflection', '0.5.1', {
+        'checksums': ['1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417'],
+    }),
+    ('beautifulsoup4', '4.11.1', {
+        'checksums': ['ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693'],
+        'modulename': 'bs4',
+    }),
+    ('pytz', '2022.7.1', {
+        'checksums': ['01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0'],
+    }),
+    ('multitasking', '0.0.11', {
+        'checksums': ['4d6bc3cc65f9b2dca72fb5a787850a88dae8f620c2b36ae9b55248e51bcd6026'],
+    }),
+    ('frozendict', '2.3.4', {
+        'checksums': ['15b4b18346259392b0d27598f240e9390fafbff882137a9c48a1e0104fb17f78'],
+    }),
+    ('Nasdaq_Data_Link', '1.0.4', {
+        'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl',
+        'checksums': ['214a620551da1c7521476839fb96f932234d4d78e7ba44310722709ca37b0691'],
+        'modulename': False,
+    }),
+    ('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/ROOT/ROOT-6.26.10-gpsmpi-2022a.eb b/Golden_Repo/r/ROOT/ROOT-6.26.10-gpsmpi-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..42c0f18d228ea03148272d7e2a91a02d17aabad7
--- /dev/null
+++ b/Golden_Repo/r/ROOT/ROOT-6.26.10-gpsmpi-2022a.eb
@@ -0,0 +1,57 @@
+name = 'ROOT'
+version = '6.26.10'
+
+homepage = 'https://root.cern.ch/drupal/'
+description = """The ROOT system provides a set of OO frameworks with all the functionality
+    needed to handle and analyze large amounts of data in a very efficient way."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://root.cern.ch/download/']
+sources = ['%(namelower)s_v%(version)s.source.tar.gz']
+checksums = ['8e56bec397104017aa54f9eb554de7a1a134474fe0b3bb0f43a70fc4fabd625f']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('GSL', '2.7'),
+    ('libxml2', '2.9.13'),
+    ('PCRE', '8.45'),
+    ('CFITSIO', '4.2.0'),
+    ('freetype', '2.12.1'),
+    ('Python', '3.10.4'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('zlib', '1.2.12'),
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+    ('GL2PS', '1.4.2'),
+    ('FFTW', '3.3.10'),
+    ('SQLite', '3.38.3'),
+    ('XZ', '5.2.5'),
+    ('libpng', '1.6.37'),
+    ('tbb', '2021.5.0'),
+    ('Perl', '5.34.1'),
+    ('Go', '1.18.3', '', SYSTEM),
+    ('nlohmann_json', '3.10.5'),
+    ('LibTIFF', '4.3.0'),
+]
+
+# NOTE: Ensure that each configopts string begins with a blank
+# disable some components
+configopts = " -Dxrootd=OFF -Dmysql=OFF -Dkrb5=OFF -Dodbc=OFF -Doracle=OFF -Dpgsql=OFF -Dqt=OFF"
+
+# make sure some components are enabled
+configopts += " -Dpcre=ON -Dzlib=ON -Dpyroot=ON"
+configopts += " -Dunuran=ON -Dexplicitlink=ON -Dminuit2=ON -Droofit=ON "
+
+# Add component-specific settings based on dependencies
+configopts += ' -Dfftw3=ON -Dgsl=ON -DOpenGL_GL_PREFERENCE=GLVND'
+
+# Set C++ standard to C++17 for better stability
+configopts += ' -DCMAKE_CXX_STANDARD=17'
+
+moduleclass = 'data'
diff --git a/Golden_Repo/r/Ruby/Ruby-3.0.5-GCCcore-11.3.0.eb b/Golden_Repo/r/Ruby/Ruby-3.0.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e156e9472c2cb62cccd4a3f186126ab30223fdfc
--- /dev/null
+++ b/Golden_Repo/r/Ruby/Ruby-3.0.5-GCCcore-11.3.0.eb
@@ -0,0 +1,202 @@
+name = 'Ruby'
+version = '3.0.5'
+
+homepage = 'https://www.ruby-lang.org'
+description = """Ruby is a dynamic, open source programming language with
+ a focus on simplicity and productivity. It has an elegant syntax that is
+ natural to read and easy to write."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://cache.ruby-lang.org/pub/ruby/%(version_major_minor)s']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['9afc6380a027a4fe1ae1a3e2eccb6b497b9c5ac0631c12ca56f9b7beb4848776']
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('ZeroMQ', '4.3.4')
+]
+
+exts_default_options = {
+    'source_urls': ['https://rubygems.org/downloads/'],
+    'source_tmpl': '%(name)s-%(version)s.gem',
+}
+
+# !! order of packages is important !!
+# some packages have dependencies with minimum and maximum version requirements
+# each version is picked as high as possible to fullfill all requirements
+# packages updated on 2022-12-20
+exts_list = [
+    ('ffi', '1.15.5', {
+        'checksums': ['6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0'],
+    }),
+    ('childprocess', '4.1.0', {
+        'checksums': ['3616ce99ccb242361ce7f2b19bf9ff3e6bc1d98b927c7edc29af8ca617ba6cd3'],
+    }),
+    ('json', '2.6.3', {
+        'checksums': ['86aaea16adf346a2b22743d88f8dcceeb1038843989ab93cda44b5176c845459'],
+    }),
+    ('cabin', '0.9.0', {
+        'checksums': ['91c5394289e993e7037a6c869e3f212f31a5984d2b1811ac934f591c87446b2c'],
+    }),
+    ('backports', '3.23.0', {
+        'checksums': ['88fc26a40083a51015faa2ba02cbdc3605cb59f183cf0868f4fb3ac02900148f'],
+    }),
+    ('arr-pm', '0.0.12', {
+        'checksums': ['fdff482f75239239201f4d667d93424412639aad0b3b0ad4d827e7c637e0ad39'],
+    }),
+    ('clamp', '1.3.2', {
+        'checksums': ['4f6a99a8678d51abbf1650263a74d1ac50939edc11986271431d2e03a0d7a022'],
+    }),
+    ('multipart-post', '2.2.3', {
+        'checksums': ['462979de2971b8df33c2ee797fd497731617241f9dcd93960cc3caccb2dd13d8'],
+    }),
+    ('ruby2_keywords', '0.0.5', {
+        'checksums': ['ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef'],
+    }),
+    ('faraday-net_http', '3.0.2', {
+        'checksums': ['6882929abed8094e1ee30344a3369e856fe34530044630d1f652bf70ebd87e8d'],
+    }),
+    ('faraday', '1.2.0', {
+        'checksums': ['bd5c138304ee53907f8d0747724660c3a1cdf77d530d1cecd70d141299194b99'],
+    }),
+    ('faraday_middleware', '1.2.0', {
+        'checksums': ['ded15d574d50e92bd04448d5566913af5cb1a01b2fa311ceecc2464fa0ab88af'],
+    }),
+    ('highline', '2.0.3', {
+        'checksums': ['2ddd5c127d4692721486f91737307236fe005352d12a4202e26c48614f719479'],
+    }),
+    ('net-http-pipeline', '1.0.1', {
+        'checksums': ['6923ce2f28bfde589a9f385e999395eead48ccfe4376d4a85d9a77e8c7f0b22f'],
+    }),
+    ('connection_pool', '2.3.0', {
+        'checksums': ['677985be912f33c90f98f229aaa0c0ddb2ef8776f21929a36eeeb25251c944da'],
+    }),
+    ('net-http-persistent', '2.9.4', {
+        'checksums': ['24274d207ffe66222ef70c78a052c7ea6e66b4ff21e2e8a99e3335d095822ef9'],
+    }),
+    ('multi_json', '1.15.0', {
+        'checksums': ['1fd04138b6e4a90017e8d1b804c039031399866ff3fbabb7822aea367c78615d'],
+    }),
+    ('public_suffix', '5.0.1', {
+        'checksums': ['65603917ff4ecb32f499f42c14951aeed2380054fa7fc51758fc0a8d455fe043'],
+    }),
+    ('addressable', '2.8.1', {
+        'checksums': ['bc724a176ef02118c8a3ed6b5c04c39cf59209607ffcce77b91d0261dbadedfa'],
+    }),
+    ('concurrent-ruby', '1.1.10', {
+        'checksums': ['244cb1ca0d91ec2c15ca2209507c39fb163336994428e16fbd3f465c87bd8e68'],
+    }),
+    ('i18n', '1.12.0', {
+        'checksums': ['91e3cc1b97616d308707eedee413d82ee021d751c918661fb82152793e64aced'],
+    }),
+    ('minitest', '5.16.3', {
+        'checksums': ['60f81ad96ca5518e1457bd29eb826db60f86fbbdf8c05eac63b4824ef1f52614'],
+    }),
+    ('thread_safe', '0.3.6', {
+        'checksums': ['9ed7072821b51c57e8d6b7011a8e282e25aeea3a4065eab326e43f66f063b05a'],
+    }),
+    ('tzinfo', '1.1.0', {
+        'checksums': ['715a47c25f8e4c2f106c92d5a97e612f84eb7e85f5822bf3d6cf615b44492abc'],
+    }),
+    ('zeitwerk', '2.6.6', {
+        'checksums': ['bb397b50c31127f8dab372fa9b21da1e7c453c5b57da172ed858136c6283f826'],
+    }),
+    ('activesupport', '5.2.8.1', {
+        'checksums': ['f0498c616e1b243c7b56d67920c389f959c186ad7031569e80335b42e1d22564'],
+    }),
+    ('gh', '0.18.0', {
+        'checksums': ['eb93f18a88db3ba92eb888610fc53fae731d9dacfe55922b58cc3f3aca776a47'],
+    }),
+    ('launchy', '2.5.0', {
+        'checksums': ['954243c4255920982ce682f89a42e76372dba94770bf09c23a523e204bdebef5'],
+    }),
+    ('ethon', '0.16.0', {
+        'checksums': ['bba0da1cea8ac3e1f5cdd7cb1cb5fc78d7ac562c33736f18f0c3eb2b63053d9e'],
+    }),
+    ('typhoeus', '1.4.0', {
+        'checksums': ['fff9880d5dc35950e7706cf132fd297f377c049101794be1cf01c95567f642d4'],
+    }),
+    ('websocket', '1.2.9', {
+        'checksums': ['884b12dee993217795bb5f58acc89c0121c88bdc99df4d1636c0505dca352b36'],
+    }),
+    ('pusher-client', '0.6.2', {
+        'checksums': ['c405c931090e126c056d99f6b69a01b1bcb6cbfdde02389c93e7d547c6efd5a3'],
+    }),
+    ('diff-lcs', '1.5.0', {
+        'checksums': ['49b934001c8c6aedb37ba19daec5c634da27b318a7a3c654ae979d6ba1929b67'],
+    }),
+    ('rspec-support', '3.12.0', {
+        'checksums': ['dd4d44b247ff679b95b5607ac5641d197a5f9b1d33f916123cb98fc5f917c58b'],
+    }),
+    ('rspec-mocks', '3.12.1', {
+        'checksums': ['e0dd725c7d1c1417c3a1715ccc4e41c124fab6c05b2de5a91ce22d74ee301801'],
+    }),
+    ('rspec-expectations', '3.12.1', {
+        'checksums': ['808b29f7f3ef4535fc897c10235b662bb6b58219406fec56158623b3a8e06c9e'],
+    }),
+    ('rspec-core', '3.12.0', {
+        'checksums': ['c466f4137966526e177d2156ca45c249eeecc7ed519b23ae2fb80c4675406bc5'],
+    }),
+    ('rspec', '3.12.0', {
+        'checksums': ['ccc41799a43509dc0be84070e3f0410ac95cbd480ae7b6c245543eb64162399c'],
+    }),
+    ('rack', '2.2.4', {
+        'checksums': ['ea2232b638cbd919129c8c8ad8012ecaccc09f848152a7e705d2139d0137ac2b'],
+    }),
+    ('rack-protection', '3.0.5', {
+        'checksums': ['3a428f9de18ee2a4080e2fab308f20f9e98d74dcbe06ed407a8035b46ba822a8'],
+    }),
+    ('tilt', '2.0.11', {
+        'checksums': ['7b180fc472cbdeb186c85d31c0f2d1e61a2c0d77e1d9fd0ca28482a9d972d6a0'],
+    }),
+    ('mustermann', '3.0.0', {
+        'checksums': ['6d3569aa3c3b2f048c60626f48d9b2d561cc8d2ef269296943b03da181c08b67'],
+    }),
+    ('sinatra', '3.0.5', {
+        'checksums': ['40ec7643a65d01b9c25ab5f7cafc5c67ca0b9ac523fa728345d88de69392cee7'],
+    }),
+    ('rack-test', '2.0.2', {
+        'checksums': ['adadd0e957f63a34199a9fdf905a920a0b0a50795735095b4ac4bd3c13385466'],
+    }),
+    ('bundler', '2.3.26', {
+        'checksums': ['1ee53cdf61e728ad82c6dbff06cfcd8551d5422e88e86203f0e2dbe9ae999e09'],
+    }),
+    # for Jupyter kernel
+    ('mime-types-data', '3.2022.0105', {
+        'checksums': ['d8c401ba9ea8b648b7145b90081789ec714e91fd625d82c5040079c5ea696f00'],
+    }),
+    ('mime-types', '3.4.1', {
+        'checksums': ['6bcf8b0e656b6ae9977bdc1351ef211d0383252d2f759a59ef4bcf254542fc46'],
+    }),
+    ('data_uri', '0.1.0', {
+        'checksums': ['7eb2f63487ccb943fae0eca561729c48d4d5654d76f8330aa16ed1dcdbebf33b'],
+    }),
+    ('io-console', '0.5.11', {
+        'checksums': ['7e2418376fd185ad66e7aee2c58c207e9be0f2197aa89bc4c89931995cee3365'],
+    }),
+    ('reline', '0.3.1', {
+        'checksums': ['b101d93607bf7564657f082f68abfa19ae939d14a709eff89be048eae2d7f4c7'],
+    }),
+    ('irb', '1.4.1', {
+        'checksums': ['4a6698d9ab9de30ffd2def6fb17327f5d0fc089ace62337eff95396f379bf0a8'],
+    }),
+    ('multi_json', '1.15.0', {
+        'checksums': ['1fd04138b6e4a90017e8d1b804c039031399866ff3fbabb7822aea367c78615d'],
+    }),
+    ('ffi-rzmq-core', '1.0.7', {
+        'checksums': ['6541625a0f80016e4cb1b22a68b3870bd711c30de7d77625d8d6c92be95eb32a'],
+    }),
+    ('ffi-rzmq', '2.0.7', {
+        'checksums': ['2feb3bc5bf46df633e2211514ac408521df0c198f54134fdb38322675d9f4591'],
+    }),
+    ('native-package-installer', '1.1.3', {
+        'checksums': ['ba899df70489b748a3fe1b48afe6325d1cb8ca67fdff759266c275b911c797dd'],
+    }),
+    ('iruby', '0.7.4', {
+        'checksums': ['cc219e2ac797c3fbf8c2b937ee7d26547723c8ae0e5ad65f2975aa3325b3a620'],
+    }),
+]
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-11.3.0.eb b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..68fd7082e3a9c6a94c0052a4405c72d81546f7b1
--- /dev/null
+++ b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-11.3.0.eb
@@ -0,0 +1,38 @@
+easyblock = 'PythonPackage'
+
+name = 'rencode'
+version = '1.0.5'
+
+homepage = 'https://pypi.python.org/pypi/rencode/'
+description = """
+The rencode module is similar to bencode from the BitTorrent project. 
+For complex, heterogeneous data structures with many small elements,
+r-encodings take up significantly less space than b-encodings. 
+This version of rencode is a complete rewrite in Cython to attempt to 
+increase the performance over the pure Python module written by Petru Paler, Connelly Barnes et al.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = [PYPI_SOURCE]
+checksums = ['fb66c92d35355d6098956204e663ddadf7f2cc8f64962846f67e1e1d036efc57']
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+]
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/'],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/r/rkcommon/rkcommon-1.10.0-GCC-11.3.0.eb b/Golden_Repo/r/rkcommon/rkcommon-1.10.0-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e7cfa7e5c48ad37ff8f86e43af4b3736d482d437
--- /dev/null
+++ b/Golden_Repo/r/rkcommon/rkcommon-1.10.0-GCC-11.3.0.eb
@@ -0,0 +1,36 @@
+easyblock = 'CMakeMake'
+
+name = 'rkcommon'
+version = '1.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': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/ospray/rkcommon/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['57a33ce499a7fc5a5aaffa39ec7597115cf69ed4ff773546b5b71ff475ee4730']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('tbb', '2021.5.0'),
+]
+
+separate_build_dir = True
+
+start_dir = '%(name)s-%(version)s'
+
+sanity_check_paths = {
+    'dirs': ['bin', 'include/rkcommon'],
+    'files': ['lib/librkcommon.so'],
+}
+
+moduleclass = 'vis'
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/SDL2/SDL2-2.26.2-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/s/SDL2/SDL2-2.26.2-gcccoremkl-11.3.0-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eaf161f79f8b86e6c3f18e5646292544a9d9e317
--- /dev/null
+++ b/Golden_Repo/s/SDL2/SDL2-2.26.2-gcccoremkl-11.3.0-2022.1.0.eb
@@ -0,0 +1,41 @@
+##
+# 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 = 'SDL2'
+version = '2.26.2'
+
+homepage = 'http://www.libsdl.org/'
+description = "SDL: Simple DirectMedia Layer, a cross-platform multimedia library"
+
+toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+
+source_urls = ['http://www.libsdl.org/release/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['95d39bc3de037fbdfa722623737340648de4f180a601b0afad27645d150b99e0']
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('X11', '20220504'),
+    ('CUDA', '11.7', '', SYSTEM),
+]
+
+sanity_check_paths = {
+    'files': ['bin/sdl2-config', 'lib/libSDL2.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/s/SOCI/SOCI-4.0.3-GCCcore-11.3.0.eb b/Golden_Repo/s/SOCI/SOCI-4.0.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..65024521a471b1cc98c901932835d92b24f057ce
--- /dev/null
+++ b/Golden_Repo/s/SOCI/SOCI-4.0.3-GCCcore-11.3.0.eb
@@ -0,0 +1,52 @@
+easyblock = 'CMakeMake'
+
+name = 'SOCI'
+version = '4.0.3'
+
+homepage = 'http://soci.sourceforge.net/'
+description = """SOCI is a database access library for C++ that makes the illusion of embedding SQL queries in the
+ regular C++ code, staying entirely within the Standard C++."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/SOCI/soci/archive']
+sources = ['v%(version)s.tar.gz']
+checksums = ['4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('Boost', '1.79.0'),
+    ('SQLite', '3.38.3'),
+    ('PostgreSQL', '14.4'),
+]
+
+# Matches RStudio (1.4.1717) install options
+# https://github.com/rstudio/rstudio/blob/ddcd7191ec89c4da00e77afae7e9f27e61e87c36/dependencies/common/install-soci
+configopts = "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true "
+configopts += "-DSOCI_TESTS=OFF "
+configopts += "-DSOCI_CXX11=ON "
+configopts += "-DSOCI_EMPTY=OFF "
+configopts += '-DCMAKE_INCLUDE_PATH="$EBROOTBOOST/include" '
+configopts += "-DBoost_USE_STATIC_LIBS=ON "
+configopts += '-DCMAKE_LIBRARY_PATH="$EBROOTBOOST/lib" '
+configopts += "-DWITH_BOOST=ON "
+configopts += "-DWITH_POSTGRESQL=ON "
+configopts += "-DWITH_SQLITE3=ON "
+configopts += "-DWITH_DB2=OFF "
+configopts += "-DWITH_MYSQL=OFF "
+configopts += "-DWITH_ORACLE=OFF "
+configopts += "-DWITH_FIREBIRD=OFF "
+configopts += "-DWITH_ODBC=OFF "
+configopts += "-DBoost_DEBUG=1 "
+
+local_dbs = ['postgresql', 'sqlite3']
+
+sanity_check_paths = {
+    'files': ['lib/libsoci_%s.%s' % (x, SHLIB_EXT) for x in local_dbs + ['core']],
+    'dirs': ['include/soci/%s' % x for x in local_dbs],
+}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/s/SZ/SZ-2.1.12.5-GCCcore-11.3.0.eb b/Golden_Repo/s/SZ/SZ-2.1.12.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3ceca2664fd1bb09643e65e2f86da6f35376daab
--- /dev/null
+++ b/Golden_Repo/s/SZ/SZ-2.1.12.5-GCCcore-11.3.0.eb
@@ -0,0 +1,43 @@
+easyblock = 'CMakeMake'
+
+name = 'SZ'
+version = '2.1.12.5'
+
+homepage = 'https://szcompressor.org'
+description = """SZ is a modular parametrizable lossy compressor framework
+for scientific data (floating point and integers)."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+github_account = 'szcompressor'
+source_urls = [GITHUB_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['32a820daf6019156a777300389d2392e4498a5c9daffce7be754cd0a5ba8729c']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+dependencies = [
+    ('HDF5', '1.12.2', '-serial'),
+    ('netCDF', '4.9.0', '-serial'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_VERBOSE_MAKEFILE=ON "
+
+configopts += "-DBUILD_FORTRAN=ON "
+configopts += "-DBUILD_HDF5_FILTER=ON "
+configopts += "-DBUILD_NETCDF_READER=ON "
+configopts += "-DBUILD_OPENMP=ON "
+
+sanity_check_paths = {
+    'files': ['lib/libSZ.%s' % SHLIB_EXT],
+    'dirs': ['include', 'lib'],
+}
+
+moduleclass = 'data'
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/SymEngine/SymEngine-0.9.0-GCC-11.3.0.eb b/Golden_Repo/s/SymEngine/SymEngine-0.9.0-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a0fbe5ba27487ff5214d34c7b8f54e5ff101d0c8
--- /dev/null
+++ b/Golden_Repo/s/SymEngine/SymEngine-0.9.0-GCC-11.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'CMakeMake'
+
+name = 'SymEngine'
+version = '0.9.0'
+
+homepage = 'https://github.com/symengine/symengine'
+description = "SymEngine is a standalone fast C++ symbolic manipulation library"
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchainopts = {'cstd': 'c++17', 'vectorize': True}
+
+source_urls = ['https://github.com/symengine/symengine/archive/refs/tags/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['dcf174ac708ed2acea46691f6e78b9eb946d8a2ba62f75e87cf3bf4f0d651724']
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+]
+
+dependencies = [
+    ('GMP', '6.2.1'),
+    ('MPFR', '4.1.0'),
+    ('MPC', '1.2.1'),
+    ('LLVM', '14.0.3'),
+    ('FLINT', '2.9.0'),
+]
+
+local_opts = '-DWITH_OPENMP=ON -DWITH_SYMENGINE_RCP=ON -DWITH_COTIRE=OFF '
+local_opts += '-DWITH_MPFR=ON -DWITH_MPC=ON -DWITH_LLVM=ON -DWITH_BFD=ON -DWITH_FLINT=ON '
+configopts = [local_opts + '-DBUILD_SHARED_LIBS=OFF', local_opts + '-DBUILD_SHARED_LIBS=ON']
+
+runtest = 'test'
+
+sanity_check_paths = {
+    'files': ['lib64/libsymengine.a', 'lib64/libsymengine.%s' % SHLIB_EXT],
+    'dirs': ['include/symengine/']
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/s/spdlog/spdlog-1.11.0-GCCcore-11.3.0.eb b/Golden_Repo/s/spdlog/spdlog-1.11.0-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0b014356d975e58bc01594bacb8bfa53013589f6
--- /dev/null
+++ b/Golden_Repo/s/spdlog/spdlog-1.11.0-GCCcore-11.3.0.eb
@@ -0,0 +1,25 @@
+easyblock = 'CMakeMake'
+
+name = 'spdlog'
+version = '1.11.0'
+
+homepage = "https://github.com/gabime/spdlog"
+description = """Very fast, header-only/compiled, C++ logging library. 
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/gabime/spdlog/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['ca5cae8d6cac15dae0ec63b21d6ad3530070650f68076f3a4a862ca293a858bb']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [('include', 'lib64')]
+}
diff --git a/Golden_Repo/u/uglifyjs/uglifyjs-3.17.4-GCCcore-11.3.0.eb b/Golden_Repo/u/uglifyjs/uglifyjs-3.17.4-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ffbcc5c06ada8e2a01fa35646a5916be04f4b6ac
--- /dev/null
+++ b/Golden_Repo/u/uglifyjs/uglifyjs-3.17.4-GCCcore-11.3.0.eb
@@ -0,0 +1,29 @@
+easyblock = 'Binary'
+
+name = 'uglifyjs'
+version = '3.17.4'
+
+homepage = 'https://github.com/mishoo/UglifyJS'
+description = """UglifyJS is a JavaScript parser, minifier, compressor and beautifier toolkit."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/mishoo/UglifyJS/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['afb2c2b2ab5ef3b925cf6fbfe66b9f3e4a6b71133356e9131d2368545ca05b23']
+
+builddependencies = [('binutils', '2.38')]
+
+dependencies = [
+    ('nodejs', '16.15.1'),
+]
+
+install_cmd = 'npm install --no-package-lock -g --prefix %(installdir)s uglify-js@%(version)s v%(version)s.tar.gz'
+
+sanity_check_paths = {
+    'files': ['bin/%(namelower)s'],
+    'dirs': ['lib/node_modules/uglify-js'],
+}
+sanity_check_commands = ['%(namelower)s --help']
+
+moduleclass = 'vis'
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
new file mode 100644
index 0000000000000000000000000000000000000000..34fbf0ab9bce9e1a0b34dbb44909bc3b98b9fd5c
--- /dev/null
+++ b/Golden_Repo/v/VTK/VTK-9.2.5-GCCcore-11.3.0-nompi.eb
@@ -0,0 +1,187 @@
+easyblock = 'CMakeMake'
+
+name = 'VTK'
+version = '9.2.5'
+versionsuffix = '-nompi'
+
+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': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': 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', '-serial'),
+    ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    # ('libxc', '5.2.3'),  # not in GCCcore toolchain
+    ('netCDF', '4.9.0', '-serial'),
+    ('X11', '20220504'),
+    ('OpenGL', '2022a'),
+]
+
+separate_build_dir = True
+
+configopts = "-DCMAKE_INSTALL_LIBDIR=lib "
+
+configopts += "-DVTK_USE_SYSTEM_MPI4PY=OFF "
+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=OFF "
+configopts += "-DVTK_SMP_IMPLEMENTATION_TYPE=OPENMP "
+configopts += "-DVTK_Group_MPI:BOOL=OFF "
+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=OFF "
+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=OFF "
+configopts += "-DModule_vtkPython:BOOL=ON "
+# configopts += "-DModule_vtkPythonInterpreter:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingExternal:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingFreeTypeFontConfig:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingLICOpenGL2:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingMatplotlib:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOSPRay:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOpenVR:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingOptiX:BOOL=OFF "
+configopts += "-DModule_vtkRenderingParallel:BOOL=ON "
+configopts += "-DModule_vtkRenderingParallelLIC:BOOL=ON "
+# configopts += "-DModule_vtkRenderingQt:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingSceneGraph:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingTk:BOOL=OFF "
+# configopts += "-DModule_vtkRenderingVolumeAMR:BOOL=OFF "
+# configopts += "-DModule_vtkTclTk:BOOL=OFF "
+# configopts += "-DModule_vtkTestingCore:BOOL=OFF "
+# configopts += "-DModule_vtkTestingGenericBridge:BOOL=OFF "
+# configopts += "-DModule_vtkTestingIOSQL:BOOL=OFF "
+# configopts += "-DModule_vtkTestingRendering:BOOL=OFF "
+# configopts += "-DModule_vtkUtilitiesBenchmarks:BOOL=OFF "
+# configopts += "-DModule_vtkUtilitiesEncodeString:BOOL=OFF "
+# configopts += "-DModule_vtkVPIC:BOOL=OFF "
+configopts += "-DModule_vtkVTKm:BOOL=ON "
+# configopts += "-DModule_vtkViewsGeovis:BOOL=OFF "
+# configopts += "-DModule_vtkViewsQt:BOOL=OFF "
+# configopts += "-DModule_vtkWebCore:BOOL=OFF "
+# configopts += "-DModule_vtkWebGLExporter:BOOL=OFF "
+# configopts += "-DModule_vtkWebPython:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingJava:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingPythonCore:BOOL=OFF "
+# configopts += "-DModule_vtkWrappingTools:BOOL=OFF "
+# configopts += "-DModule_vtkdiy2:BOOL=OFF "
+# configopts += "-DModule_vtkkissfft:BOOL=OFF "
+configopts += "-DModule_vtkmpi4py:BOOL=OFF "
+# configopts += "-DModule_vtkpegtl:BOOL=OFF "
+# configopts += "-DModule_vtkxdmf2:BOOL=OFF "
+# configopts += "-DModule_vtkxdmf3:BOOL=OFF "
+# configopts += "-DModule_vtkzfp:BOOL=OFF "
+
+preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && "
+
+# Install a egg-info file so VTK is more python friendly, required for mayavi
+local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info'
+local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info'
+postinstallcmds = [
+    'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest),
+]
+
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+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] +
+             ['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-foss-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8b48eb2a3b4fcc8815d576df04ed2795271493e8
--- /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-Stack', '2022a', '', ('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-gpsmkl-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..801c5d4ffe646e49e9acc55eb4533769ec624cf0
--- /dev/null
+++ b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb
@@ -0,0 +1,188 @@
+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': 'gpsmkl', '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-Stack', '2022a', '', ('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-version.egg-info b/Golden_Repo/v/VTK/vtk-version.egg-info
new file mode 100644
index 0000000000000000000000000000000000000000..9ddd689eaec6928e5f537b1f1378ba67e77a3809
--- /dev/null
+++ b/Golden_Repo/v/VTK/vtk-version.egg-info
@@ -0,0 +1,5 @@
+Metadata-Version: 2.1
+Name: vtk
+Version: #VTK_VERSION#
+Summary: VTK is an open-source toolkit for 3D computer graphics, image processing, and visualization
+Platform: UNKNOWN
diff --git a/Golden_Repo/v/VTKData/VTKData-9.2.5-GCCcore-11.3.0.eb b/Golden_Repo/v/VTKData/VTKData-9.2.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..87a92de93ed7b152c54a91771c24e835caf1bbc2
--- /dev/null
+++ b/Golden_Repo/v/VTKData/VTKData-9.2.5-GCCcore-11.3.0.eb
@@ -0,0 +1,30 @@
+easyblock = 'Tarball'
+
+name = 'VTKData'
+version = '9.2.5'
+
+homepage = 'https://vtk.org'
+description = "Testdata for VTK"
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = [('https://www.vtk.org/files/release/%(version_major_minor)s/')]
+sources = [
+    ('VTKData-%(version)s.tar.gz'),
+    ('VTKDataFiles-%(version)s.tar.gz'),
+    ('VTKLargeData-%(version)s.tar.gz'),
+    ('VTKLargeDataFiles-%(version)s.tar.gz'),
+]
+checksums = [
+    ('sha256', '8a812f96346b3a38ff0fc3b1a1a372f3727a71ebf450c02d659a75dbe1113515'),
+    ('sha256', '3dd926bb5c8f7ba84d1eb0cf8ff97d26ed406bb2a4ccf7c51a51e739407484d0'),
+    ('sha256', '7b7f37ab6582d7a0454f717e3466437dd5ee87bb0eec3b27309c604f5fec7c18'),
+    ('sha256', 'c851fe78c1b4c86a60a940279f5ba194e7f3c335d834632d99877144dc1b2b31'),
+]
+
+sanity_check_paths = {
+    'files': ['.ExternalData/README.rst'],
+    'dirs': ['.ExternalData', 'Common', 'Examples', 'Filters', 'IO', 'Parallel', 'Rendering', 'Testing'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/v/VirtualGL/VirtualGL-3.1beta1-GCCcore-11.3.0.eb b/Golden_Repo/v/VirtualGL/VirtualGL-3.1beta1-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1829196e5ea33b9af1e7d029b59c96f572b3a79d
--- /dev/null
+++ b/Golden_Repo/v/VirtualGL/VirtualGL-3.1beta1-GCCcore-11.3.0.eb
@@ -0,0 +1,50 @@
+easyblock = 'CMakeMake'
+
+name = 'VirtualGL'
+version = '3.1beta1'
+
+homepage = 'https://virtualgl.org/'
+description = """VirtualGL is an open source toolkit that gives any Linux or 
+Unix remote display software the ability to run OpenGL applications with full 
+hardware acceleration."""
+
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/VirtualGL/virtualgl/archive/']
+sources = ['%(version)s.tar.gz']
+patches = [
+    'virtualgl_cmake_lib_path.patch',
+]
+checksums = [
+    '67bb5d88e8a016ed92b2cb3708c49ba5d04cc086f39c85b6fa8f51403cc9d22e',
+    # virtualgl_cmake_lib_path.patch
+    'aa185d038f5e47957bd8a163107d352a1675a224b5a41f167e5b75ae42c87f1d',
+]
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1')
+]
+
+dependencies = [
+    ('libjpeg-turbo', '2.1.3'),
+    ('OpenGL', '2022a'),
+]
+
+separate_build_dir = True
+configopts = '-DVGL_FAKEOPENCL=OFF'
+
+local_binaries = [
+    'cpustat', 'glreadtest', 'glxinfo', 'glxspheres64', 'nettest', 'tcbench',
+    'vglclient', 'vglconfig', 'vglconnect', 'vglgenkey', 'vgllogin', 'vglrun',
+    'vglserver_config'
+]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_binaries],
+    'dirs': ['lib64', 'share', 'include'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/v/VirtualGL/virtualgl_cmake_lib_path.patch b/Golden_Repo/v/VirtualGL/virtualgl_cmake_lib_path.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f58d0cbe2a5f5836f79a646c40f4e703c61b46d3
--- /dev/null
+++ b/Golden_Repo/v/VirtualGL/virtualgl_cmake_lib_path.patch
@@ -0,0 +1,13 @@
+diff -ruN virtualgl-2.5.2/CMakeLists.txt virtualgl-2.5.2.old/CMakeLists.txt
+--- virtualgl-2.5.2/CMakeLists.txt	2017-03-03 00:13:45.000000000 +0100
++++ virtualgl-2.5.2.old/CMakeLists.txt	2017-03-20 16:14:04.908614846 +0100
+@@ -261,9 +261,6 @@
+ 
+ else()
+ 
+-if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+-	set(CMAKE_LIBRARY_PATH /usr/lib/${CPU_TYPE}-linux-gnu;/usr/lib${BITS};/usr/lib)
+-endif()
+ include(FindX11)
+ include(FindOpenGL)
+ 
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/xpra/xpra-4.4.3-GCCcore-11.3.0.eb b/Golden_Repo/x/xpra/xpra-4.4.3-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8dd309ac345e83215a4db2541474a5d8778b54a5
--- /dev/null
+++ b/Golden_Repo/x/xpra/xpra-4.4.3-GCCcore-11.3.0.eb
@@ -0,0 +1,187 @@
+easyblock = 'Bundle'
+
+name = 'xpra'
+version = '4.4.3'
+
+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-Stack', '2022a', '', ('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),
+]
+
+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'],
+    }),
+    ('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'],
+    }),
+    (name, version, {
+        'modulename': False,
+        'buildopts': "--without-strict --with-nvenc --with-enc_x264 --with-enc_x265 --with-Xdummy",
+        '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': [
+            'fc394c5b346791cc941c8917bbdd44bb26be76a021e497fa6f661e62cc4dd57a',
+            'ff1e8984f367ebcc90b56d2c1b87012a7ce53fe4f68686cf042e5bbce16be198',
+        ],
+    }),
+    ('xpra-html5', '6.1', {
+        '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,
+        'checksums': ['298f85bdd99f075c9d58dcfb904d117283c8034b5f5d24f494d50433ed998ec0'],
+    }),
+]
+
+postinstallcmds = [
+    (
+        # installing xpra-html5
+        'pushd %(builddir)s/xprahtml5/xpra-html5-6.1 && '
+        './setup.py install %(installdir)s /share/xpra/www /etc/xpra/html5-client && '
+        'popd'
+    ),
+    # set specific configurations
+    (
+        # set xpra default configs
+        'cp -a %(builddir)s/xpra/xpra-4.4.3/build/etc %(installdir)s && '
+        # 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"
+    ),
+    # 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/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/y/yarn/yarn-1.22.19-GCCcore-11.3.0.eb b/Golden_Repo/y/yarn/yarn-1.22.19-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..224afbe40774e19613c11c52d398cdf7696b015d
--- /dev/null
+++ b/Golden_Repo/y/yarn/yarn-1.22.19-GCCcore-11.3.0.eb
@@ -0,0 +1,35 @@
+easyblock = 'Binary'
+
+name = 'yarn'
+version = '1.22.19'
+
+homepage = "https://yarnpkg.com"
+description = "Yarn is a package manager that doubles down as project manager."
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://github.com/yarnpkg/yarn/releases/download/v%(version)s/']
+sources = [{
+    'filename': 'yarn-v%(version)s.tar.gz',
+    'extract_cmd': "cp %s .",
+}]
+checksums = ['732620bac8b1690d507274f025f3c6cfdc3627a84d9642e38a07452cc00e0f2e']
+
+dependencies = [
+    ('nodejs', '16.15.1'),
+]
+
+# Don't ever try to install unpacked source of nodejs globally!
+# Always use 'npm install -g downloaded_file.tar.gz` or you will end up having broken links and installation will fail.
+# -d (debug) and --timing can show errors while downloading dependencies
+install_cmd = "npm install -d --timing --prefix %(installdir)s -g yarn-v%(version)s.tar.gz"
+
+sanity_check_paths = {
+    'files': ['bin/yarn'],
+    'dirs': ['lib/node_modules/yarn'],
+}
+sanity_check_commands = [
+    'yarn --help'
+]
+
+moduleclass = 'tools'
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/Golden_Repo/z/zfp/zfp-0.5.5-GCCcore-11.3.0.eb b/Golden_Repo/z/zfp/zfp-0.5.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..39fbbbbce6fafdbb9a552a503c58f8ed157e535e
--- /dev/null
+++ b/Golden_Repo/z/zfp/zfp-0.5.5-GCCcore-11.3.0.eb
@@ -0,0 +1,59 @@
+easyblock = 'CMakeMake'
+
+name = 'zfp'
+version = '0.5.5'
+
+homepage = "https://github.com/LLNL/zfp"
+description = """Optionally error-bounded lossy compressor for HPC data
+with high throughput read and write random access to individual array elements."""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+github_account = 'LLNL'
+source_urls = [GITHUB_SOURCE]
+sources = ['%(version)s.tar.gz']
+checksums = ['6a7f4934489087d9c117a4af327fd6495ea757924f4df467b9c537abf8bd86c4']
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('CMake', '3.23.1'),
+    ('pkgconf', '1.8.0'),
+]
+
+separate_build_dir = True
+
+configopts = '-DBUILD_SHARED_LIBS:BOOL=ON '
+configopts += '-DBUILD_EXAMPLES:BOOL=OFF '
+configopts += '-DBUILD_TESTING:BOOL=OFF '
+
+configopts += '-DZFP_WITH_OPENMP:BOOL=ON '
+configopts += '-DZFP_WITH_CUDA:BOOL=OFF '
+
+configopts += '-DBUILD_CFP:BOOL=ON '
+configopts += '-DBUILD_ZFPY:BOOL=OFF '
+configopts += '-DBUILD_ZFORP:BOOL=ON '
+
+configopts += '-DBUILD_UTILITIES:BOOL=ON '
+configopts += '-DCMAKE_C_STANDARD_LIBRARIES="-lm" '
+
+# create pkgconfig file
+postinstallcmds = [
+    "mkdir -p %(installdir)s/lib/pkgconfig",
+    """echo -e "prefix=%(installdir)s
+libdir=\${prefix}/lib64
+includedir=\${prefix}/include
+Name: %(name)s
+Description: %(name)s compression library
+Version: %(version)s
+Requires:
+Libs: -L\${libdir} -lzfp -lcfp
+Cflags: -I\${includedir}" > %(installdir)s/lib/pkgconfig/%(name)s.pc""",
+]
+
+sanity_check_paths = {
+    'files': ['lib64/libzfp.so', 'lib64/libcfp.so', 'include/zfp.h'],
+    'dirs': ['lib/pkgconfig'],
+}
+
+moduleclass = 'lib'
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..d09949c276b2ed038b208ef39fdc78402cd78385
--- /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 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)
+]
+
+# 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-22.11.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3ad1f7e18ab2003ce0e739013275f9219d200eb1
--- /dev/null
+++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.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 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': '22.11'}
+
+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.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aee0894cfdf2ba22bf704646a34d8da1b8d3a8dc
--- /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 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)
+]
+
+# 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/acls.yml b/acls.yml
index 73aa6bd279684798e528a24cf3c23ec2c31bc762..b3863633147842bc863f13811c8aef5d83b2a291 100644
--- a/acls.yml
+++ b/acls.yml
@@ -83,6 +83,9 @@ software:
   - name: 'ceres-solver'
     owner: 'goebbert1'
     base: True
+  - name: 'Catalyst'
+    owner: 'goebbert1'
+    mpi: True
   - name: 'Cirq'
     owner: 'goebbert1'
     base: True
@@ -103,7 +106,7 @@ software:
     base: True
   - name: 'Embree'
     owner: 'goebbert1'
-    base: True
+    compiler: True
   - name: 'freeglut'
     owner: 'goebbert1'
     base: True
@@ -316,6 +319,9 @@ software:
   - name: 'PyQuil'
     owner: 'goebbert1'
     base: True
+  - name: 'PySCF'
+    owner: 'goebbert1'
+    compiler: True
   - name: 'qcint'
     owner: 'gonzalezcalaza1'
     base: True
@@ -636,7 +642,7 @@ software:
     base: True
   - name: 'jax'
     owner: 'strube1'
-    base: True
+    mpi: True
   - name: 'jemalloc'
     owner: 'achilles4'
     base: True
@@ -1152,7 +1158,7 @@ software:
     base: True
     mpi: True
   - name: 'h5py'
-    owner: ['griessbach1', 'strube1']
+    owner: ['griessbach1', 'strube1', 'goebbert1']
     base: True
     mpi: True
   - name: 'Eigen'
@@ -1215,7 +1221,7 @@ software:
     owner: 'herten1'
     mpi: True
   - name: 'netCDF'
-    owner: 'strube1'
+    owner: ['griessbach1', 'strube1']
     mpi: True
     base: True
   - name: 'netCDF-C++4'