diff --git a/.gitignore b/.gitignore
index 3a4a1b95201bed75157c3bcd4159c089ae9d1d3a..338638cc68a9e8ce978fd57b89b24979c1ca1bc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 # Ignore any pyc files
 *.pyc
+.DS_Store
+._.DS_Store
diff --git a/Golden_Repo/a/Advisor/Advisor-2020_update3.eb b/Golden_Repo/a/Advisor/Advisor-2020_update3.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3125a091a97eac23431fb0e0cb1a85266d13acde
--- /dev/null
+++ b/Golden_Repo/a/Advisor/Advisor-2020_update3.eb
@@ -0,0 +1,21 @@
+name = 'Advisor'
+version = '2020_update3'
+
+homepage = 'https://software.intel.com/intel-advisor-xe'
+description = """Vectorization Optimization and Thread Prototyping
+ - Vectorize & thread code or performance "dies"
+ - Easy workflow + data + tips = faster code faster
+ - Prioritize, Prototype & Predict performance gain
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = SYSTEM
+
+sources = ['advisor_%(version)s.tar.gz']
+
+dontcreateinstalldir = True
+
+requires_runtime_license = False
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb b/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1ba88f7240e26c1e3293c14fd5be6f5be4d07683
--- /dev/null
+++ b/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb
@@ -0,0 +1,19 @@
+name = 'Bazel'
+version = '3.4.1'
+
+homepage = 'http://bazel.io/'
+description = """Bazel is a build tool that builds code quickly and reliably.
+It is used to build the majority of Google's software."""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['https://github.com/bazelbuild/bazel/releases/download/%(version)s']
+sources = ['%(namelower)s-%(version)s-dist.zip']
+patches = ['%(name)s-%(version)s_fix_protobuf_libstdc.patch']
+
+builddependencies = [('binutils', '2.34')]
+dependencies = [('Java', '1.8', '', True)]
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch b/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch
new file mode 100644
index 0000000000000000000000000000000000000000..05d72c491443d4b5d6a5984ef36535d3635732f7
--- /dev/null
+++ b/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch
@@ -0,0 +1,10 @@
+--- third_party/grpc/bazel/generate_cc.bzl.orig	2020-08-04 14:19:51.304155177 +0200
++++ third_party/grpc/bazel/generate_cc.bzl	2020-08-04 14:20:08.316748158 +0200
+@@ -123,6 +123,7 @@
+         outputs = out_files,
+         executable = ctx.executable.protoc,
+         arguments = arguments,
++        use_default_shell_env = True,
+     )
+ 
+     return struct(files = depset(out_files))
diff --git a/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb b/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a8ff27662adb03ce16b43a8bb347e4d6bb52d1a9
--- /dev/null
+++ b/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb
@@ -0,0 +1,35 @@
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '1.9.8'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+# stick to lowopt (-O1) to avoid internal compiler error when building on Intel Skylake
+toolchainopts = {'pic': True, 'usempi': True, 'lowopt': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/20826/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['f2660ac6f8bf3fa071cf2a3a196b3ec75ad007deb3a782455e80f28680c5252a']
+
+dependencies = [
+    ('HDF5', '1.10.6'),
+    ('netCDF', '4.7.4'),
+    ('YAXT', '0.9.0'),
+    ('ecCodes', '2.18.0'),
+]
+
+
+configopts = "--with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF --with-eccodes=$EBROOTECCODES --with-szlib=yes"
+
+# fix for linking issues with HDF5 libraries for libcdi, should link with both -lnetcdf and -lhdf5_hl -lhdf5
+# prebuildopts = "find libcdi -name Makefile | xargs sed -i 's/-lnetcdf -lnetcdf/-lnetcdf -lhdf5_hl -lhdf5/g' && "
+preconfigopts = 'export CFLAGS="$CFLAGS -lhdf5" && '
+sanity_check_paths = {
+    'files': ['bin/cdo'],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb b/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..83c7f25f9b2b9b66a619fe03ba38e34cb9d91b0f
--- /dev/null
+++ b/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb
@@ -0,0 +1,79 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild
+#
+# Authors::  Inge Gutheil <i.gutheil@fz-juelich.de> D.Alvarez <d.alvarez@fz-juelich.de>
+#
+# This work implements Elemental 0.87.7
+#
+#  https://computation.llnl.gov/casc/Elemental/main.html
+#
+##
+easyblock = 'CMakeMake'
+
+name = 'Elemental'
+version = '0.87.7'
+
+homepage = 'http://libelemental.org/download/'
+description = """Elemental is an open-source library for distributed-memory dense and sparse-direct linear algebra and
+and optimization which builds on top of BLAS, LAPACK, and MPI using modern C++ and additionally exposes interfaces to C
+and Python.
+
+The hybrid version uses a combination of MPI and OpenMP.
+Version 0.87.7 has been installed as module in $EBROOTELEMENTAL"""
+
+examples = """Examples can be found in $EBROOTELEMENTAL/examples"""
+
+site_contacts = 'I. Gutheil (i.gutheil@fz-juelich.de)'
+
+toolchain = {'name': 'gpsmkl', 'version': '2020'}
+toolchainopts = {'optarch': True, 'usempi': True, 'openmp': True}
+
+sources = [SOURCE_TGZ]
+source_urls = ['http://libelemental.org/pub/releases']
+
+patches = [
+    'elemental-0.87.7_rangehermitianeig.patch',
+    # See https://github.com/elemental/Elemental/pull/264
+    'Elemental-0.87.7_ambiguous_template.patch'
+]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+]
+
+dependencies = [
+    ('ParMETIS', '4.0.3'),
+]
+
+separate_build_dir = 'True'
+
+preconfigopts = 'export LDFLAGS="-lm $LDFLAGS" && '
+
+configopts = '-DEL_EXAMPLES=ON -DEL_TESTS=ON -DMATH_LIBS="$LIBLAPACK_MT" -DINSTALL_PYTHON_PACKAGE=OFF -DEL_HYBRID=ON '
+configopts += '-DPARMETIS_LIB_DIR=$EBROOTPARMETIS/lib -DPARMETIS_INCLUDE_DIR=$EBROOTPARMETIS/include '
+
+postinstallcmds = [
+    "cp -r %(builddir)s/%(name)s-%(version)s/examples %(installdir)s/examples",
+    "chmod 755 %(installdir)s/examples",
+    "chmod 755 %(installdir)s/examples/*",
+    "chmod 644 %(installdir)s/examples/blas_like/*",
+    "chmod 644 %(installdir)s/examples/core/*",
+    "chmod 644 %(installdir)s/examples/interface/*",
+    "chmod 644 %(installdir)s/examples/io/*",
+    "chmod 644 %(installdir)s/examples/lapack_like/*",
+    "chmod 644 %(installdir)s/examples/matrices/*",
+    "chmod 644 %(installdir)s/examples/optimization/*",
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['include', 'lib64'],
+}
+
+modextravars = {
+    'ELEMENTAL_INCLUDE': '%(installdir)s/include',
+    'ELEMENTAL_LIB': '%(installdir)s/lib',
+    'ELEMENTAL_ROOT': '%(installdir)s',
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb b/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a32b0e6294f2e162a70ee89a79cbc5496089b49a
--- /dev/null
+++ b/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb
@@ -0,0 +1,75 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild
+#
+# Authors::  Inge Gutheil <i.gutheil@fz-juelich.de> D.Alvarez <d.alvarez@fz-juelich.de>
+#
+# This work implements Elemental 0.87.7
+#
+#  https://computation.llnl.gov/casc/Elemental/main.html
+#
+##
+easyblock = 'CMakeMake'
+
+name = 'Elemental'
+version = '0.87.7'
+
+homepage = 'http://libelemental.org/download/'
+description = """Elemental is an open-source library for distributed-memory dense and sparse-direct linear algebra and
+and optimization which builds on top of BLAS, LAPACK, and MPI using modern C++ and additionally exposes interfaces to C
+and Python.
+
+The hybrid version uses a combination of MPI and OpenMP.
+Version 0.87.7 has been installed as module in $EBROOTELEMENTAL"""
+
+examples = """Examples can be found in $EBROOTELEMENTAL/examples"""
+
+site_contacts = 'I. Gutheil (i.gutheil@fz-juelich.de)'
+
+toolchain = {'name': 'intel-para', 'version': '2020'}
+toolchainopts = {'optarch': True, 'usempi': True, 'openmp': True}
+
+sources = [SOURCE_TGZ]
+source_urls = ['http://libelemental.org/pub/releases']
+
+patches = [
+    'elemental-0.87.7_rangehermitianeig.patch'
+]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+]
+
+dependencies = [
+    ('ParMETIS', '4.0.3'),
+]
+
+separate_build_dir = 'True'
+
+configopts = '-DEL_EXAMPLES=ON -DEL_TESTS=ON -DMATH_LIBS="$LIBLAPACK_MT" -DINSTALL_PYTHON_PACKAGE=OFF -DEL_HYBRID=ON '
+configopts += '-DPARMETIS_LIB_DIR=$EBROOTPARMETIS/lib -DPARMETIS_INCLUDE_DIR=$EBROOTPARMETIS/include '
+
+postinstallcmds = [
+    "cp -r %(builddir)s/%(name)s-%(version)s/examples %(installdir)s/examples",
+    "chmod 755 %(installdir)s/examples",
+    "chmod 755 %(installdir)s/examples/*",
+    "chmod 644 %(installdir)s/examples/blas_like/*",
+    "chmod 644 %(installdir)s/examples/core/*",
+    "chmod 644 %(installdir)s/examples/interface/*",
+    "chmod 644 %(installdir)s/examples/io/*",
+    "chmod 644 %(installdir)s/examples/lapack_like/*",
+    "chmod 644 %(installdir)s/examples/matrices/*",
+    "chmod 644 %(installdir)s/examples/optimization/*",
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['include', 'lib64'],
+}
+
+modextravars = {
+    'ELEMENTAL_INCLUDE': '%(installdir)s/include',
+    'ELEMENTAL_LIB': '%(installdir)s/lib',
+    'ELEMENTAL_ROOT': '%(installdir)s',
+}
+
+moduleclass = 'math'
diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch b/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch
new file mode 100644
index 0000000000000000000000000000000000000000..563863fddce0ea3ec4738318734e243d71a4071c
--- /dev/null
+++ b/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch
@@ -0,0 +1,459 @@
+diff --git a/include/El/blas_like/level1/decl.hpp b/include/El/blas_like/level1/decl.hpp
+index e129c0968..7565b88b0 100644
+--- a/include/El/blas_like/level1/decl.hpp
++++ b/include/El/blas_like/level1/decl.hpp
+@@ -487,7 +487,7 @@ void Contract( const BlockMatrix<T>& A, BlockMatrix<T>& B );
+ template<typename T>
+ void Copy( const Matrix<T>& A, Matrix<T>& B );
+ template<typename S,typename T,
+-         typename=EnableIf<CanCast<S,T>>>
++         typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >>>
+ void Copy( const Matrix<S>& A, Matrix<T>& B );
+ 
+ template<typename S,typename T,
+@@ -501,7 +501,7 @@ void Copy( const BlockMatrix<S>& A, BlockMatrix<T>& B );
+ template<typename T>
+ void Copy( const AbstractDistMatrix<T>& A, AbstractDistMatrix<T>& B );
+ template<typename S,typename T,
+-         typename=EnableIf<CanCast<S,T>>>
++         typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >>>
+ void Copy( const AbstractDistMatrix<S>& A, AbstractDistMatrix<T>& B );
+ 
+ template<typename T>
+@@ -532,7 +532,7 @@ template<typename T>
+ void Copy( const SparseMatrix<T>& A, SparseMatrix<T>& B );
+ 
+ template<typename S,typename T,
+-         typename=EnableIf<CanCast<S,T>>>
++         typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >> >
+ void Copy( const SparseMatrix<S>& A, SparseMatrix<T>& B );
+ 
+ template<typename S,typename T,
+@@ -543,7 +543,7 @@ template<typename T>
+ void Copy( const DistSparseMatrix<T>& A, DistSparseMatrix<T>& B );
+ 
+ template<typename S,typename T,
+-         typename=EnableIf<CanCast<S,T>>>
++         typename=EnableIf<And<CanCast<S,T>,Not<IsSame<S,T>>>>>
+ void Copy( const DistSparseMatrix<S>& A, DistSparseMatrix<T>& B );
+ 
+ template<typename S,typename T,
+@@ -559,7 +559,7 @@ template<typename T>
+ void Copy( const DistMultiVec<T>& A, DistMultiVec<T>& B );
+ 
+ template<typename S,typename T,
+-         typename=EnableIf<CanCast<S,T>>>
++         typename=EnableIf< And< CanCast<S,T>, Not<IsSame<S,T>> > >>
+ void Copy( const DistMultiVec<S>& A, DistMultiVec<T>& B );
+ 
+ template<typename T>
+diff --git a/include/El/core.hpp b/include/El/core.hpp
+index 02fa0e418..0f89acaed 100644
+--- a/include/El/core.hpp
++++ b/include/El/core.hpp
+@@ -102,6 +102,16 @@ enum FortranLogicalEnum
+ template<typename S,typename T>
+ using IsSame = std::is_same<S,T>;
+ 
++template<typename S, typename T>
++struct And {
++	static constexpr bool value = S::value && T::value;
++};
++
++template<typename T>
++struct Not {
++	static constexpr bool value = !T::value;
++};
++
+ template<typename Condition,class T=void>
+ using EnableIf = typename std::enable_if<Condition::value,T>::type;
+ template<typename Condition,class T=void>
+diff --git a/src/core/imports/mpi.cpp b/src/core/imports/mpi.cpp
+index 845caa34a..473f6f280 100644
+--- a/src/core/imports/mpi.cpp
++++ b/src/core/imports/mpi.cpp
+@@ -2845,238 +2845,248 @@ EL_NO_RELEASE_EXCEPT
+ #endif
+ }
+ 
+-#define MPI_PROTO(T) \
++#define MPI_PROTO_BASE(T) \
+   template bool Test( Request<T>& request ) EL_NO_RELEASE_EXCEPT; \
+   template void Wait( Request<T>& request ) EL_NO_RELEASE_EXCEPT; \
+   template void Wait( Request<T>& request, Status& status ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void WaitAll( int numRequests, Request<T>* requests ) \
++  template void WaitAll<T>( int numRequests, Request<T>* requests ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void WaitAll \
++  template void WaitAll<T> \
+   ( int numRequests, Request<T>* requests, Status* statuses ) \
+   EL_NO_RELEASE_EXCEPT; \
+   template int GetCount<T>( Status& status ) EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedSend \
++  template void TaggedSend<T> \
+   ( const T* buf, int count, int to, int tag, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Send( const T* buf, int count, int to, Comm comm ) \
++  template void Send<T>( const T* buf, int count, int to, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedSend( T b, int to, int tag, Comm comm ) \
++  template void TaggedSend<T>( T b, int to, int tag, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Send( T b, int to, Comm comm ) \
++  template void Send<T>( T b, int to, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedISend \
+-  ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \
+-  EL_NO_RELEASE_EXCEPT; \
+-  template void ISend \
++  template void ISend<T> \
+   ( const T* buf, int count, int to, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedISend \
++  template void TaggedISend<T> \
+   ( T buf, int to, int tag, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ISend( T buf, int to, Comm comm, Request<T>& request ) \
++  template void ISend<T>( T buf, int to, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedISSend \
++  template void TaggedISSend<T> \
+   ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ISSend \
++  template void ISSend<T> \
+   ( const T* buf, int count, int to, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedISSend \
++  template void TaggedISSend<T> \
+   ( T b, int to, int tag, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedRecv \
++  template void TaggedRecv<T> \
+   ( T* buf, int count, int from, int tag, Comm comm ) EL_NO_RELEASE_EXCEPT; \
+-  template void Recv( T* buf, int count, int from, Comm comm ) \
++  template void Recv<T>( T* buf, int count, int from, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+   template T TaggedRecv<T>( int from, int tag, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T Recv( int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedIRecv \
++  template T Recv<T>( int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \
++  template void TaggedIRecv<T> \
+   ( T* buf, int count, int from, int tag, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void IRecv \
++  template void IRecv<T> \
+   ( T* buf, int count, int from, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+   template T TaggedIRecv<T> \
+   ( int from, int tag, Comm comm, Request<T>& request ) EL_NO_RELEASE_EXCEPT; \
+   template T IRecv<T>( int from, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedSendRecv \
++  template void TaggedSendRecv<T> \
+   ( const T* sbuf, int sc, int to,   int stag, \
+           T* rbuf, int rc, int from, int rtag, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void SendRecv \
++  template void SendRecv<T> \
+   ( const T* sbuf, int sc, int to, \
+           T* rbuf, int rc, int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \
+-  template T TaggedSendRecv \
++  template T TaggedSendRecv<T> \
+   ( T sb, int to, int stag, int from, int rtag, Comm comm ); \
+   template T SendRecv( T sb, int to, int from, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void TaggedSendRecv \
++  template void TaggedSendRecv<T> \
+   ( T* buf, int count, int to, int stag, int from, int rtag, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void SendRecv \
++  template void SendRecv<T> \
+   ( T* buf, int count, int to, int from, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Broadcast( T* buf, int count, int root, Comm comm ) \
++  template void Broadcast<T>( T& b, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Broadcast( T& b, int root, Comm comm ) \
+-  EL_NO_RELEASE_EXCEPT; \
+-  template void IBroadcast \
++  template void IBroadcast<T> \
+   ( T* buf, int count, int root, Comm comm, Request<T>& request ); \
+-  template void IBroadcast \
++  template void IBroadcast<T> \
+   ( T& b, int root, Comm comm, Request<T>& request ); \
+-  template void Gather \
+-  ( const T* sbuf, int sc, T* rbuf, int rc, int root, Comm comm ) \
+-  EL_NO_RELEASE_EXCEPT; \
+-  template void IGather \
++  template void IGather<T> \
+   ( const T* sbuf, int sc, \
+           T* rbuf, int rc, \
+     int root, Comm comm, Request<T>& request ); \
+-  template void Gather \
+-  ( const T* sbuf, int sc, \
+-          T* rbuf, const int* rcs, const int* rds, int root, Comm comm ) \
++  template vector<T> AllToAll<T> \
++  ( const vector<T>& sendBuf, \
++    const vector<int>& sendCounts, \
++    const vector<int>& sendOffs, \
++    Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllGather( const T* sbuf, int sc, T* rbuf, int rc, Comm comm ) \
++  template void Reduce<T> \
++  ( const T* sbuf, T* rbuf, int count, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllGather \
+-  ( const T* sbuf, int sc, \
+-          T* rbuf, const int* rcs, const int* rds, Comm comm ) \
++  template T Reduce<T>( T sb, Op op, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scatter \
+-  ( const T* sbuf, int sc, \
+-          T* rbuf, int rc, int root, Comm comm ) \
++  template T Reduce<T>( T sb, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scatter( T* buf, int sc, int rc, int root, Comm comm ) \
++  template void Reduce<T>( T* buf, int count, Op op, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllToAll \
+-  ( const T* sbuf, int sc, \
+-          T* rbuf, int rc, Comm comm ) \
++  template void Reduce<T>( T* buf, int count, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllToAll \
+-  ( const T* sbuf, const int* scs, const int* sds, \
+-          T* rbuf, const int* rcs, const int* rds, Comm comm ) \
++  template void AllReduce<T>( const T* sbuf, T* rbuf, int count, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template vector<T> AllToAll \
+-  ( const vector<T>& sendBuf, \
+-    const vector<int>& sendCounts, \
+-    const vector<int>& sendOffs, \
+-    Comm comm ) \
++  template T AllReduce<T>( T sb, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Reduce \
+-  ( const T* sbuf, T* rbuf, int count, Op op, int root, Comm comm ) \
++  template T AllReduce<T>( T sb, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Reduce \
+-  ( const T* sbuf, T* rbuf, int count, int root, Comm comm ) \
++  template void AllReduce<T>( T* buf, int count, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T Reduce( T sb, Op op, int root, Comm comm ) \
++  template void ReduceScatter<T>( T* sbuf, T* rbuf, int rc, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T Reduce( T sb, int root, Comm comm ) \
++  template void ReduceScatter<T>( T* sbuf, T* rbuf, int rc, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Reduce( T* buf, int count, Op op, int root, Comm comm ) \
++  template T ReduceScatter<T>( T sb, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Reduce( T* buf, int count, int root, Comm comm ) \
++  template T ReduceScatter<T>( T sb, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllReduce \
+-  ( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \
++  template void ReduceScatter<T>( T* buf, int rc, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllReduce( const T* sbuf, T* rbuf, int count, Comm comm ) \
++  template void ReduceScatter<T>( T* buf, int rc, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T AllReduce( T sb, Op op, Comm comm ) \
++  template void ReduceScatter<T> \
++  ( const T* sbuf, T* rbuf, const int* rcs, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T AllReduce( T sb, Comm comm ) \
++  template void ReduceScatter<T> \
++  ( const T* sbuf, T* rbuf, const int* rcs, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllReduce( T* buf, int count, Op op, Comm comm ) \
++  template void Scan<T>( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void AllReduce( T* buf, int count, Comm comm ) \
++  template void Scan<T>( const T* sbuf, T* rbuf, int count, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter( T* sbuf, T* rbuf, int rc, Op op, Comm comm ) \
++  template T Scan<T>( T sb, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter( T* sbuf, T* rbuf, int rc, Comm comm ) \
++  template T Scan<T>( T sb, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T ReduceScatter( T sb, Op op, Comm comm ) \
++  template void Scan<T>( T* buf, int count, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T ReduceScatter( T sb, Comm comm ) \
++  template void Scan<T>( T* buf, int count, Comm comm ) \
++  EL_NO_RELEASE_EXCEPT;
++
++#define MPI_PROTO_DIFF(S,T) \
++  template void TaggedISend<S> \
++  ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter( T* buf, int rc, Op op, Comm comm ) \
++  template void Broadcast<S>( T* buf, int count, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter( T* buf, int rc, Comm comm ) \
++  template void Gather<S> \
++  ( const T* sbuf, int sc, T* rbuf, int rc, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter \
+-  ( const T* sbuf, T* rbuf, const int* rcs, Op op, Comm comm ) \
++  template void Gather<S> \
++  ( const T* sbuf, int sc, \
++          T* rbuf, const int* rcs, const int* rds, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void ReduceScatter \
+-  ( const T* sbuf, T* rbuf, const int* rcs, Comm comm ) \
++  template void AllGather<S>( const T* sbuf, int sc, T* rbuf, int rc, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scan( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \
++  template void AllGather<S> \
++  ( const T* sbuf, int sc, \
++          T* rbuf, const int* rcs, const int* rds, Comm comm ) \
++  EL_NO_RELEASE_EXCEPT; \
++  template void Scatter<S> \
++  ( const T* sbuf, int sc, \
++          T* rbuf, int rc, int root, Comm comm ) \
++  EL_NO_RELEASE_EXCEPT; \
++  template void Scatter<S>( T* buf, int sc, int rc, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scan( const T* sbuf, T* rbuf, int count, Comm comm ) \
++  template void AllToAll<S> \
++  ( const T* sbuf, int sc, \
++          T* rbuf, int rc, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T Scan( T sb, Op op, Comm comm ) \
++  template void AllToAll<S> \
++  ( const T* sbuf, const int* scs, const int* sds, \
++          T* rbuf, const int* rcs, const int* rds, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template T Scan( T sb, Comm comm ) \
++    template void Reduce<S> \
++  ( const T* sbuf, T* rbuf, int count, Op op, int root, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scan( T* buf, int count, Op op, Comm comm ) \
++  template void AllReduce<S> \
++  ( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT; \
+-  template void Scan( T* buf, int count, Comm comm ) \
++  template void AllReduce<S>( T* buf, int count, Op op, Comm comm ) \
+   EL_NO_RELEASE_EXCEPT;
+ 
+-MPI_PROTO(byte)
+-MPI_PROTO(int)
+-MPI_PROTO(unsigned)
+-MPI_PROTO(long int)
+-MPI_PROTO(unsigned long)
++#define MPI_PROTO_REAL(T) \
++  MPI_PROTO_BASE(T) \
++  MPI_PROTO_DIFF(T, T)
++  
++#define MPI_PROTO_COMPLEX(T) \
++  MPI_PROTO_BASE(Complex<T>) \
++  MPI_PROTO_DIFF(T, Complex<T>)
++
++MPI_PROTO_REAL(byte)
++MPI_PROTO_REAL(int)
++MPI_PROTO_REAL(unsigned)
++MPI_PROTO_REAL(long int)
++MPI_PROTO_REAL(unsigned long)
+ #ifdef EL_HAVE_MPI_LONG_LONG
+-MPI_PROTO(long long int)
+-MPI_PROTO(unsigned long long)
++MPI_PROTO_REAL(long long int)
++MPI_PROTO_REAL(unsigned long long)
+ #endif
+-MPI_PROTO(ValueInt<Int>)
+-MPI_PROTO(Entry<Int>)
+-MPI_PROTO(float)
+-MPI_PROTO(Complex<float>)
+-MPI_PROTO(ValueInt<float>)
+-MPI_PROTO(ValueInt<Complex<float>>)
+-MPI_PROTO(Entry<float>)
+-MPI_PROTO(Entry<Complex<float>>)
+-MPI_PROTO(double)
+-MPI_PROTO(Complex<double>)
+-MPI_PROTO(ValueInt<double>)
+-MPI_PROTO(ValueInt<Complex<double>>)
+-MPI_PROTO(Entry<double>)
+-MPI_PROTO(Entry<Complex<double>>)
++MPI_PROTO_REAL(ValueInt<Int>)
++MPI_PROTO_REAL(Entry<Int>)
++MPI_PROTO_REAL(float)
++MPI_PROTO_COMPLEX(float)
++MPI_PROTO_REAL(ValueInt<float>)
++MPI_PROTO_REAL(ValueInt<Complex<float>>)
++MPI_PROTO_REAL(Entry<float>)
++MPI_PROTO_REAL(Entry<Complex<float>>)
++MPI_PROTO_REAL(double)
++MPI_PROTO_COMPLEX(double)
++MPI_PROTO_REAL(ValueInt<double>)
++MPI_PROTO_REAL(ValueInt<Complex<double>>)
++MPI_PROTO_REAL(Entry<double>)
++MPI_PROTO_REAL(Entry<Complex<double>>)
+ #ifdef EL_HAVE_QD
+-MPI_PROTO(DoubleDouble)
+-MPI_PROTO(QuadDouble)
+-MPI_PROTO(Complex<DoubleDouble>)
+-MPI_PROTO(Complex<QuadDouble>)
+-MPI_PROTO(ValueInt<DoubleDouble>)
+-MPI_PROTO(ValueInt<QuadDouble>)
+-MPI_PROTO(ValueInt<Complex<DoubleDouble>>)
+-MPI_PROTO(ValueInt<Complex<QuadDouble>>)
+-MPI_PROTO(Entry<DoubleDouble>)
+-MPI_PROTO(Entry<QuadDouble>)
+-MPI_PROTO(Entry<Complex<DoubleDouble>>)
+-MPI_PROTO(Entry<Complex<QuadDouble>>)
++MPI_PROTO_REAL(DoubleDouble)
++MPI_PROTO_REAL(QuadDouble)
++MPI_PROTO_COMPLEX(DoubleDouble)
++MPI_PROTO_COMPLEX(QuadDouble)
++MPI_PROTO_REAL(ValueInt<DoubleDouble>)
++MPI_PROTO_REAL(ValueInt<QuadDouble>)
++MPI_PROTO_REAL(ValueInt<Complex<DoubleDouble>>)
++MPI_PROTO_REAL(ValueInt<Complex<QuadDouble>>)
++MPI_PROTO_REAL(Entry<DoubleDouble>)
++MPI_PROTO_REAL(Entry<QuadDouble>)
++MPI_PROTO_REAL(Entry<Complex<DoubleDouble>>)
++MPI_PROTO_REAL(Entry<Complex<QuadDouble>>)
+ #endif
+ #ifdef EL_HAVE_QUAD
+-MPI_PROTO(Quad)
+-MPI_PROTO(Complex<Quad>)
+-MPI_PROTO(ValueInt<Quad>)
+-MPI_PROTO(ValueInt<Complex<Quad>>)
+-MPI_PROTO(Entry<Quad>)
+-MPI_PROTO(Entry<Complex<Quad>>)
++MPI_PROTO_REAL(Quad)
++MPI_PROTO_COMPLEX(Quad)
++MPI_PROTO_REAL(ValueInt<Quad>)
++MPI_PROTO_REAL(ValueInt<Complex<Quad>>)
++MPI_PROTO_REAL(Entry<Quad>)
++MPI_PROTO_REAL(Entry<Complex<Quad>>)
+ #endif
+ #ifdef EL_HAVE_MPC
+-MPI_PROTO(BigInt)
+-MPI_PROTO(BigFloat)
+-MPI_PROTO(Complex<BigFloat>)
+-MPI_PROTO(ValueInt<BigInt>)
+-MPI_PROTO(ValueInt<BigFloat>)
+-MPI_PROTO(ValueInt<Complex<BigFloat>>)
+-MPI_PROTO(Entry<BigInt>)
+-MPI_PROTO(Entry<BigFloat>)
+-MPI_PROTO(Entry<Complex<BigFloat>>)
++MPI_PROTO_REAL(BigInt)
++MPI_PROTO_REAL(BigFloat)
++MPI_PROTO_REAL(Complex<BigFloat>)
++MPI_PROTO_REAL(ValueInt<BigInt>)
++MPI_PROTO_REAL(ValueInt<BigFloat>)
++MPI_PROTO_REAL(ValueInt<Complex<BigFloat>>)
++MPI_PROTO_REAL(Entry<BigInt>)
++MPI_PROTO_REAL(Entry<BigFloat>)
++MPI_PROTO_REAL(Entry<Complex<BigFloat>>)
+ #endif
+ 
+ #define PROTO(T) \
diff --git a/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch b/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f94ee5c6fa22f8c139dad98601e2f6f5fec5f7d4
--- /dev/null
+++ b/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch
@@ -0,0 +1,921 @@
+--- Elemental-0.87.7/src/lapack_like/spectral/BidiagSVD.cpp	2017-02-07 02:23:30.000000000 +0100
++++ Elemental-0.87.7_ok/src/lapack_like/spectral/BidiagSVD.cpp	2017-04-21 11:00:49.566845000 +0200
+@@ -1,5 +1,5 @@
+ /*
+-   Copyright (c) 2009-2016, Jack Poulson
++   Copyright (c) 2009-2017, Jack Poulson
+    All rights reserved.
+ 
+    This file is part of Elemental and is under the BSD 2-Clause License,
+--- Elemental-0.87.7/src/lapack_like/spectral/HermitianEig.cpp	2017-02-07 02:23:30.000000000 +0100
++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianEig.cpp	2017-04-21 11:01:19.743963000 +0200
+@@ -1,9 +1,9 @@
+ /*
+-   Copyright (c) 2009-2016, Jack Poulson
++   Copyright (c) 2009-2017, Jack Poulson
+    All rights reserved.
+ 
+-   This file is part of Elemental and is under the BSD 2-Clause License, 
+-   which can be found in the LICENSE file in the root directory, or at 
++   This file is part of Elemental and is under the BSD 2-Clause License,
++   which can be found in the LICENSE file in the root directory, or at
+    http://opensource.org/licenses/BSD-2-Clause
+ */
+ #include <El.hpp>
+@@ -78,8 +78,8 @@
+ 
+ namespace herm_eig {
+ 
+-// We create specialized redistribution routines for redistributing the 
+-// real eigenvectors of the symmetric tridiagonal matrix at the core of our 
++// We create specialized redistribution routines for redistributing the
++// real eigenvectors of the symmetric tridiagonal matrix at the core of our
+ // eigensolver in order to minimize the temporary memory usage.
+ template<typename F>
+ void InPlaceRedist( DistMatrix<F>& Q, Int rowAlign, const Base<F>* readBuffer )
+@@ -101,7 +101,7 @@
+     const Int maxHeight = MaxLength(height,r);
+     const Int maxWidth = MaxLength(width,p);
+     const Int portionSize = mpi::Pad( maxHeight*maxWidth );
+-    
++
+     // Allocate our send/recv buffers
+     vector<Real> buffer(2*r*portionSize);
+     Real* sendBuffer = &buffer[0];
+@@ -119,7 +119,7 @@
+         EL_INNER_PARALLEL_FOR_COLLAPSE2
+         for( Int j=0; j<localWidth; ++j )
+             for( Int i=0; i<thisLocalHeight; ++i )
+-                data[i+j*thisLocalHeight] = 
++                data[i+j*thisLocalHeight] =
+                     readBuffer[thisColShift+i*r+j*height];
+     }
+ 
+@@ -172,7 +172,7 @@
+ HermitianEigInfo
+ BlackBox
+ ( UpperOrLower uplo,
+-  Matrix<F>& A, 
++  Matrix<F>& A,
+   Matrix<Base<F>>& w,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+@@ -205,13 +205,13 @@
+         const Int n = A.Height();
+         Int numValid = n;
+         if( subset.indexSubset )
+-        {   
++        {
+             numValid = subset.upperIndex-subset.lowerIndex+1;
+         }
+         else if( subset.rangeSubset )
+         {
+             if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) )
+-            {   
++            {
+                 numValid = 0;
+             }
+         }
+@@ -256,7 +256,7 @@
+ HermitianEigInfo
+ HermitianEig
+ ( UpperOrLower uplo,
+-  Matrix<F>& A, 
++  Matrix<F>& A,
+   Matrix<Base<F>>& w,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+@@ -279,7 +279,7 @@
+ HermitianEigInfo
+ SequentialHelper
+ ( UpperOrLower uplo,
+-  AbstractDistMatrix<F>& A, 
++  AbstractDistMatrix<F>& A,
+   AbstractDistMatrix<Base<F>>& w,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+@@ -314,7 +314,8 @@
+ 
+ 
+ #ifdef EL_HAVE_SCALAPACK
+-template<typename F,typename=EnableIf<IsBlasScalar<Base<F>>>>
++template<typename F,
++         typename=EnableIf<IsBlasScalar<Base<F>>>>
+ HermitianEigInfo
+ ScaLAPACKHelper
+ ( UpperOrLower uplo,
+@@ -367,7 +368,9 @@
+     return info;
+ }
+ 
+-template<typename F,typename=DisableIf<IsBlasScalar<Base<F>>>,typename=void>
++template<typename F,
++         typename=DisableIf<IsBlasScalar<Base<F>>>,
++         typename=void>
+ HermitianEigInfo
+ ScaLAPACKHelper
+ ( UpperOrLower uplo,
+@@ -426,7 +429,7 @@
+         else if( subset.rangeSubset )
+         {
+             if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) )
+-            {   
++            {
+                 numValid = 0;
+             }
+         }
+@@ -451,7 +454,7 @@
+         if( A.Grid().Rank() == 0 )
+             timer.Start();
+     }
+-   
++
+     // Tridiagonalize A
+     herm_tridiag::ExplicitCondensed( uplo, A, ctrl.tridiagCtrl );
+ 
+@@ -540,7 +543,7 @@
+ ( UpperOrLower uplo,
+   Matrix<F>& A,
+   Matrix<Base<F>>& w,
+-  Matrix<F>& Q, 
++  Matrix<F>& Q,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -566,14 +569,14 @@
+ ( UpperOrLower uplo,
+   AbstractDistMatrix<F>& APre,
+   AbstractDistMatrix<Base<F>>& w,
+-  AbstractDistMatrix<F>& QPre, 
++  AbstractDistMatrix<F>& QPre,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+     EL_DEBUG_CSE
+     const Grid& g = APre.Grid();
+     HermitianEigInfo info;
+ 
+-    DistMatrixReadProxy<F,F,MC,MR> AProx( APre ); 
++    DistMatrixReadProxy<F,F,MC,MR> AProx( APre );
+     auto& A = AProx.Get();
+ 
+     // TODO(poulson): Extend interface to support ctrl.tridiagCtrl
+@@ -613,7 +616,7 @@
+ ( UpperOrLower uplo,
+   Matrix<F>& A,
+   Matrix<Base<F>>& w,
+-  Matrix<F>& Q, 
++  Matrix<F>& Q,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -648,13 +651,13 @@
+         const Int n = A.Height();
+         Int numValid = n;
+         if( subset.indexSubset )
+-        {   
++        {
+             numValid = subset.upperIndex-subset.lowerIndex+1;
+         }
+         else if( subset.rangeSubset )
+         {
+             if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) )
+-            {   
++            {
+                 numValid = 0;
+             }
+         }
+@@ -701,9 +704,9 @@
+ HermitianEigInfo
+ SequentialHelper
+ ( UpperOrLower uplo,
+-  AbstractDistMatrix<F>& A, 
++  AbstractDistMatrix<F>& A,
+   AbstractDistMatrix<Base<F>>& w,
+-  AbstractDistMatrix<F>& Q, 
++  AbstractDistMatrix<F>& Q,
+   const HermitianEigCtrl<F>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -728,7 +731,7 @@
+         Matrix<Base<F>> wProx;
+         Matrix<F> QProx;
+         wProx.Resize( n, 1 );
+-        QProx.Resize( n, n ); 
++        QProx.Resize( n, n );
+ 
+         info = HermitianEig( uplo, A.Matrix(), wProx, QProx, ctrl );
+ 
+@@ -749,7 +752,8 @@
+ }
+ 
+ #ifdef EL_HAVE_SCALAPACK
+-template<typename F,typename=EnableIf<IsBlasScalar<Base<F>>>>
++template<typename F,
++         typename=EnableIf<IsBlasScalar<Base<F>>>>
+ HermitianEigInfo
+ ScaLAPACKHelper
+ ( UpperOrLower uplo,
+@@ -816,7 +820,9 @@
+     return info;
+ }
+ 
+-template<typename F,typename=DisableIf<IsBlasScalar<Base<F>>>,typename=void>
++template<typename F,
++         typename=DisableIf<IsBlasScalar<Base<F>>>,
++         typename=void>
+ HermitianEigInfo
+ ScaLAPACKHelper
+ ( UpperOrLower uplo,
+@@ -890,18 +896,18 @@
+     else
+         kEst = n;
+ 
+-    // We will use the same buffer for Q in the vector distribution used by 
+-    // PMRRR as for the matrix distribution used by Elemental. In order to 
++    // We will use the same buffer for Q in the vector distribution used by
++    // PMRRR as for the matrix distribution used by Elemental. In order to
+     // do so, we must pad Q's dimensions slightly.
+     const Int N = MaxLength(n,g.Height())*g.Height();
+-    const Int K = MaxLength(kEst,g.Size())*g.Size(); 
++    const Int K = MaxLength(kEst,g.Size())*g.Size();
+ 
+     ElementalProxyCtrl proxCtrl;
+     proxCtrl.colConstrain = true;
+     proxCtrl.rowConstrain = true;
+     proxCtrl.colAlign = 0;
+     proxCtrl.rowAlign = 0;
+-    
++
+     DistMatrixWriteProxy<F,F,MC,MR> QProx( QPre, proxCtrl );
+     auto& Q = QProx.Get();
+ 
+@@ -941,14 +947,14 @@
+ 
+     const Int k = w.Height();
+     {
+-        // Redistribute Q piece-by-piece in place. This is to keep the 
++        // Redistribute Q piece-by-piece in place. This is to keep the
+         // send/recv buffer memory usage low.
+         const Int p = g.Size();
+         const Int numEqualPanels = K/p;
+         const Int numPanelsPerComm = (numEqualPanels / TARGET_CHUNKS) + 1;
+         const Int nbProp = numPanelsPerComm*p;
+ 
+-        // Manually maintain information about the implicit Q[* ,VR] stored 
++        // Manually maintain information about the implicit Q[* ,VR] stored
+         // at the end of the Q[MC,MR] buffers.
+         Int alignment = 0;
+         const Real* readBuffer = Q_STAR_VR.LockedBuffer();
+@@ -1104,7 +1110,7 @@
+     }
+ 
+     auto sortPairs = TaggedSort( w, ctrl.tridiagEigCtrl.sort );
+-    for( Int j=0; j<n; ++j )
++    for( Int j=0; j<w.Height(); ++j )
+         w.Set( j, 0, sortPairs[j].value );
+     ApplyTaggedSortToEachRow( sortPairs, Q );
+ 
+--- Elemental-0.87.7/src/lapack_like/spectral/HermitianTridiagEig.cpp	2017-02-07 02:23:30.000000000 +0100
++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianTridiagEig.cpp	2017-04-21 11:01:34.618650000 +0200
+@@ -1,9 +1,9 @@
+ /*
+-   Copyright (c) 2009-2016, Jack Poulson
++   Copyright (c) 2009-2017, Jack Poulson
+    All rights reserved.
+ 
+-   This file is part of Elemental and is under the BSD 2-Clause License, 
+-   which can be found in the LICENSE file in the root directory, or at 
++   This file is part of Elemental and is under the BSD 2-Clause License,
++   which can be found in the LICENSE file in the root directory, or at
+    http://opensource.org/licenses/BSD-2-Clause
+ */
+ #include <El.hpp>
+@@ -315,7 +315,7 @@
+ {
+     EL_DEBUG_CSE
+     HermitianTridiagEigInfo info;
+-    w = d;    
++    w = d;
+     info.qrInfo = QRAlg( w, dSub, ctrl );
+     herm_eig::SortAndFilter( w, ctrl );
+     return info;
+@@ -332,6 +332,8 @@
+     EL_DEBUG_CSE
+     HermitianTridiagEigInfo info;
+     auto ctrlMod( ctrl );
++    ctrlMod.subset.indexSubset = false;
++    ctrlMod.subset.rangeSubset = false;
+     ctrlMod.wantEigVecs = false;
+     Matrix<Real> Q;
+     info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrlMod );
+@@ -339,7 +341,8 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ LAPACKHelper
+ (       Matrix<Real>& d,
+@@ -355,7 +358,7 @@
+     if( ctrl.subset.rangeSubset )
+     {
+          const Int k = lapack::SymmetricTridiagEig
+-          ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), 
++          ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(),
+             ctrl.subset.lowerBound, ctrl.subset.upperBound );
+          w.Resize( k, 1 );
+     }
+@@ -363,7 +366,7 @@
+     {
+         const Int numEig = ctrl.subset.upperIndex-ctrl.subset.lowerIndex+1;
+         lapack::SymmetricTridiagEig
+-        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), 
++        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(),
+           BlasInt(ctrl.subset.lowerIndex),
+           BlasInt(ctrl.subset.upperIndex) );
+         w.Resize( numEig, 1 );
+@@ -376,7 +379,8 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const Matrix<Real>& d,
+@@ -403,7 +407,9 @@
+     return LAPACKHelper( dMod, dSubMod, w, ctrl );
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const Matrix<Real>& d,
+@@ -462,7 +468,7 @@
+ QRHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& w, 
++        AbstractDistMatrix<Real>& w,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -515,6 +521,8 @@
+     auto& w = wProx.Get();
+ 
+     auto ctrlMod( ctrl );
++    ctrlMod.subset.indexSubset = false;
++    ctrlMod.subset.rangeSubset = false;
+     ctrlMod.wantEigVecs = false;
+     DistMatrix<Real> Q(w.Grid());
+     info.dcInfo =
+@@ -546,6 +554,8 @@
+     auto& w = wProx.Get();
+ 
+     auto ctrlMod( ctrl );
++    ctrlMod.subset.indexSubset = false;
++    ctrlMod.subset.rangeSubset = false;
+     ctrlMod.wantEigVecs = false;
+     DistMatrix<Real> Q(w.Grid());
+     info.dcInfo =
+@@ -555,7 +565,8 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ MRRRHelper
+ ( const AbstractDistMatrix<Real>& d,
+@@ -586,17 +597,17 @@
+     herm_tridiag_eig::Info rangeInfo;
+     if( ctrl.subset.rangeSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
+-            wVector.data(), w.ColComm(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
++            wVector.data(), w.ColComm(),
+             ctrl.subset.lowerBound, ctrl.subset.upperBound );
+     else if( ctrl.subset.indexSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
+-            wVector.data(), w.ColComm(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
++            wVector.data(), w.ColComm(),
+             int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) );
+     else
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
+             wVector.data(), w.ColComm() );
+     w.Resize( rangeInfo.numGlobalEigenvalues, 1 );
+     for( Int iLoc=0; iLoc<w.LocalHeight(); ++iLoc )
+@@ -606,7 +617,8 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real>& d,
+@@ -629,12 +641,14 @@
+     }
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& w, 
++        AbstractDistMatrix<Real>& w,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -648,12 +662,13 @@
+     }
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ MRRRHelper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& wPre, 
++        AbstractDistMatrix<Real         >& wPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -711,12 +726,13 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& wPre, 
++        AbstractDistMatrix<Real         >& wPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -734,12 +750,14 @@
+     }
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& w, 
++        AbstractDistMatrix<Real         >& w,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -760,7 +778,7 @@
+ HermitianTridiagEig
+ ( const AbstractDistMatrix<Base<F>>& d,
+   const AbstractDistMatrix<F      >& dSub,
+-        AbstractDistMatrix<Base<F>>& w, 
++        AbstractDistMatrix<Base<F>>& w,
+   const HermitianTridiagEigCtrl<Base<F>>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -783,7 +801,7 @@
+ {
+     EL_DEBUG_CSE
+     HermitianTridiagEigInfo info;
+-    w = d;    
++    w = d;
+     info.qrInfo = QRAlg( w, dSub, Q, ctrl );
+     herm_eig::SortAndFilter( w, Q, ctrl );
+     return info;
+@@ -806,13 +824,17 @@
+     }
+     else
+     {
+-        info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrl );
++        auto ctrlMod( ctrl );
++        ctrlMod.subset.indexSubset = false;
++        ctrlMod.subset.rangeSubset = false;
++        info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrlMod );
+         herm_eig::SortAndFilter( w, Q, ctrl );
+     }
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ LAPACKHelper
+ (       Matrix<Real>& d,
+@@ -831,7 +853,7 @@
+     {
+          Q.Resize( n, n );
+          const Int k = lapack::SymmetricTridiagEig
+-          ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), 
++          ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(),
+             Q.Buffer(), BlasInt(Q.LDim()),
+             ctrl.subset.lowerBound, ctrl.subset.upperBound );
+          w.Resize( k, 1 );
+@@ -842,7 +864,7 @@
+         const Int numEig = ctrl.subset.upperIndex-ctrl.subset.lowerIndex+1;
+         Q.Resize( n, numEig );
+         lapack::SymmetricTridiagEig
+-        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), 
++        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(),
+           Q.Buffer(), BlasInt(Q.LDim()),
+           BlasInt(ctrl.subset.lowerIndex),
+           BlasInt(ctrl.subset.upperIndex) );
+@@ -852,7 +874,7 @@
+     {
+         Q.Resize( n, n );
+         lapack::SymmetricTridiagEig
+-        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), 
++        ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(),
+           Q.Buffer(), BlasInt(Q.LDim()) );
+     }
+     auto sortPairs = TaggedSort( w, ctrl.sort );
+@@ -863,7 +885,8 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const Matrix<Real>& d,
+@@ -894,7 +917,9 @@
+     }
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const Matrix<Real>& d,
+@@ -925,7 +950,7 @@
+ Helper
+ ( const Matrix<Real>& d,
+   const Matrix<Complex<Real>>& dSub,
+-        Matrix<Real>& w, 
++        Matrix<Real>& w,
+         Matrix<Complex<Real>>& Q,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+@@ -953,7 +978,7 @@
+ ( const Matrix<Base<F>>& d,
+   const Matrix<F>& dSub,
+         Matrix<Base<F>>& w,
+-        Matrix<F>& Q, 
++        Matrix<F>& Q,
+   const HermitianTridiagEigCtrl<Base<F>>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -967,8 +992,8 @@
+ QRHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& w, 
+-        AbstractDistMatrix<Real>& QPre, 
++        AbstractDistMatrix<Real>& w,
++        AbstractDistMatrix<Real>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1000,8 +1025,8 @@
+ QRHelper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& w, 
+-        AbstractDistMatrix<Complex<Real>>& QPre, 
++        AbstractDistMatrix<Real         >& w,
++        AbstractDistMatrix<Complex<Real>>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1048,8 +1073,8 @@
+ DCHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& wPre, 
+-        AbstractDistMatrix<Real>& QPre, 
++        AbstractDistMatrix<Real>& wPre,
++        AbstractDistMatrix<Real>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1066,9 +1091,12 @@
+         auto& w = wProx.Get();
+         DistMatrixWriteProxy<Real,Real,MC,MR> QProx( QPre );
+         auto& Q = QProx.Get();
++        auto ctrlMod( ctrl );
++        ctrlMod.subset.indexSubset = false;
++        ctrlMod.subset.rangeSubset = false;
+         info.dcInfo =
+           DivideAndConquer
+-          ( d_STAR_STAR.Matrix(), dSub_STAR_STAR.Matrix(), w, Q, ctrl );
++          ( d_STAR_STAR.Matrix(), dSub_STAR_STAR.Matrix(), w, Q, ctrlMod );
+         herm_eig::SortAndFilter( w, Q, ctrl );
+     }
+ 
+@@ -1107,9 +1135,12 @@
+         DistMatrixWriteProxy<Real,Real,STAR,STAR> wProx( wPre );
+         auto& w = wProx.Get();
+ 
++        auto ctrlMod( ctrl );
++        ctrlMod.subset.indexSubset = false;
++        ctrlMod.subset.rangeSubset = false;
+         info.dcInfo =
+           DivideAndConquer
+-          ( d_STAR_STAR.Matrix(), dSubReal.Matrix(), w, QReal, ctrl );
++          ( d_STAR_STAR.Matrix(), dSubReal.Matrix(), w, QReal, ctrlMod );
+         herm_eig::SortAndFilter( w, QReal, ctrl );
+ 
+         Copy( QReal, Q );
+@@ -1119,13 +1150,14 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ MRRRHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& wPre, 
+-        AbstractDistMatrix<Real>& QPre, 
++        AbstractDistMatrix<Real>& wPre,
++        AbstractDistMatrix<Real>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1174,17 +1206,17 @@
+     vector<double> wVector(n);
+     if( ctrl.subset.rangeSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
+             wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm(),
+             ctrl.subset.lowerBound, ctrl.subset.upperBound );
+     else if( ctrl.subset.indexSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
+             wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm(),
+             int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) );
+     else
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(),
+             wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm() );
+     w.Resize( rangeInfo.numGlobalEigenvalues, 1 );
+     Q.Resize( n, rangeInfo.numGlobalEigenvalues );
+@@ -1199,13 +1231,14 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ MRRRHelper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& wPre, 
+-        AbstractDistMatrix<Complex<Real>>& QPre, 
++        AbstractDistMatrix<Real         >& wPre,
++        AbstractDistMatrix<Complex<Real>>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1261,17 +1294,17 @@
+     vector<double> wVector(n);
+     if( ctrl.subset.rangeSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(),
+             wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm(),
+             ctrl.subset.lowerBound, ctrl.subset.upperBound );
+     else if( ctrl.subset.indexSubset )
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(),
+             wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm(),
+             int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) );
+     else
+         rangeInfo = herm_tridiag_eig::Eig
+-          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), 
++          ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(),
+             wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm() );
+ 
+     w.Resize( rangeInfo.numGlobalEigenvalues, 1 );
+@@ -1287,18 +1320,19 @@
+     ApplyTaggedSortToEachRow( sortPairs, QReal );
+ 
+     Copy( QReal, Q );
+-    DiagonalScale( LEFT, NORMAL, phase, Q ); 
++    DiagonalScale( LEFT, NORMAL, phase, Q );
+ 
+     return info;
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& w, 
+-        AbstractDistMatrix<Real>& Q, 
++        AbstractDistMatrix<Real>& w,
++        AbstractDistMatrix<Real>& Q,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1316,13 +1350,15 @@
+     }
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+-        AbstractDistMatrix<Real>& w, 
+-        AbstractDistMatrix<Real>& Q, 
++        AbstractDistMatrix<Real>& w,
++        AbstractDistMatrix<Real>& Q,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1336,13 +1372,14 @@
+     }
+ }
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& w, 
+-        AbstractDistMatrix<Complex<Real>>& Q, 
++        AbstractDistMatrix<Real         >& w,
++        AbstractDistMatrix<Complex<Real>>& Q,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1360,13 +1397,15 @@
+     }
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ Helper
+ ( const AbstractDistMatrix<Real         >& d,
+   const AbstractDistMatrix<Complex<Real>>& dSub,
+-        AbstractDistMatrix<Real         >& w, 
+-        AbstractDistMatrix<Complex<Real>>& QPre, 
++        AbstractDistMatrix<Real         >& w,
++        AbstractDistMatrix<Complex<Real>>& QPre,
+   const HermitianTridiagEigCtrl<Real>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1388,7 +1427,7 @@
+ ( const AbstractDistMatrix<Base<F>>& d,
+   const AbstractDistMatrix<F>& dSub,
+         AbstractDistMatrix<Base<F>>& w,
+-        AbstractDistMatrix<F>& Q, 
++        AbstractDistMatrix<F>& Q,
+   const HermitianTridiagEigCtrl<Base<F>>& ctrl )
+ {
+     EL_DEBUG_CSE
+@@ -1397,7 +1436,8 @@
+ 
+ namespace herm_tridiag_eig {
+ 
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ Int MRRREstimateHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+@@ -1421,7 +1461,9 @@
+     return estimate.numGlobalEigenvalues;
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ Int MRRREstimateHelper
+ ( const AbstractDistMatrix<Real>& d,
+   const AbstractDistMatrix<Real>& dSub,
+@@ -1435,7 +1477,8 @@
+ }
+ 
+ // Q is assumed to be sufficiently large and properly aligned
+-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>>
++template<typename Real,
++         typename=EnableIf<IsBlasScalar<Real>>>
+ HermitianTridiagEigInfo
+ MRRRPostEstimateHelper
+ ( const AbstractDistMatrix<Real>& d,
+@@ -1488,7 +1531,9 @@
+     return info;
+ }
+ 
+-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void>
++template<typename Real,
++         typename=DisableIf<IsBlasScalar<Real>>,
++         typename=void>
+ HermitianTridiagEigInfo
+ MRRRPostEstimateHelper
+ ( const AbstractDistMatrix<Real>& d,
+--- Elemental-0.87.7/src/lapack_like/spectral/HermitianTridiagEig/DivideAndConquer.hpp	2017-02-07 02:23:30.000000000 +0100
++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianTridiagEig/DivideAndConquer.hpp	2017-04-21 11:02:22.872284000 +0200
+@@ -1,5 +1,5 @@
+ /*
+-   Copyright (c) 2009-2016, Jack Poulson
++   Copyright (c) 2009-2017, Jack Poulson
+    All rights reserved.
+ 
+    This file is part of Elemental and is under the BSD 2-Clause License,
+@@ -1126,10 +1126,13 @@
+     EL_DEBUG_CSE
+     const Int n = mainDiag.Height();
+     const auto& dcCtrl = ctrl.dcCtrl;
++    if( ctrl.subset.indexSubset || ctrl.subset.rangeSubset )
++        LogicError
++        ("DivideAndConquer should not have been called directly for subset "
++         "computation");
+ 
+     DCInfo info;
+     auto& secularInfo = info.secularInfo;
+-
+     if( n <= Max(dcCtrl.cutoff,3) )
+     {
+         auto ctrlMod( ctrl );
+@@ -1230,11 +1233,15 @@
+   bool topLevel=true )
+ {
+     EL_DEBUG_CSE
+-    const Grid& grid = Q.Grid();
+     const Int n = mainDiag.Height();
+     const auto& dcCtrl = ctrl.dcCtrl;
+-    DCInfo info;
++    const Grid& grid = Q.Grid();
++    if( ctrl.subset.indexSubset || ctrl.subset.rangeSubset )
++        LogicError
++        ("DivideAndConquer should not have been called directly for subset "
++         "computation");
+ 
++    DCInfo info;
+     if( n <= Max(dcCtrl.cutoff,3) )
+     {
+         // Run the problem redundantly locally
+--- Elemental-0.87.7/cmake/configure_files/ElementalConfig.cmake.in	2017-02-07 02:23:30.000000000 +0100
++++ Elemental-0.87.7_ok/cmake/configure_files/ElementalConfig.cmake.in	2017-10-06 14:31:00.754510000 +0200
+@@ -13,6 +13,6 @@
+ set(Elemental_DEFINITIONS "@Qt5Widgets_DEFINITIONS@")
+ 
+ # Our library dependencies (contains definitions for IMPORTED targets)
+-include("@CMAKE_INSTALL_PREFIX@/CMake/ElementalTargets.cmake")
++include("@CMAKE_INSTALL_PREFIX@/CMake/elemental/ElementalTargets.cmake")
+ 
+ set(Elemental_LIBRARIES El)
diff --git a/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb b/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb
index 9ab35bee5ad9257419a1923e8c031b213e36fb83..b7e41c7758f46000c181575fe5819fea19b1cb06 100644
--- a/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb
+++ b/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb
@@ -27,7 +27,6 @@ dependencies = [
     ('GTK+', '3.24.17'),
     ('X11', '20200222'),
     ('LibTIFF', '4.1.0'),
-    ('adwaita-icon-theme', '3.37.2'),
 ]
 
 configopts = '--x-includes=$EBROOTX11/include --x-libraries=$EBROOTX11/lib --with-gif=no --with-gnutls=no '
diff --git a/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb b/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..52ebf5497a41283bd8682d1f1f39d0e7dede68e4
--- /dev/null
+++ b/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb
@@ -0,0 +1,34 @@
+easyblock = 'CMakeMake'
+
+name = 'Exiv2'
+version = '0.27.3'
+
+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.
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['http://www.exiv2.org/builds']
+sources = ['%(namelower)s-%(version)s-Source.tar.gz']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+]
+
+dependencies = [
+    ('expat', '2.2.9'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/exiv2', 'lib/libexiv2.%s' % SHLIB_EXT],
+    'dirs': []
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb b/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7effdcd30efccb73dfe2034ac501d38e1e9c1707
--- /dev/null
+++ b/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb
@@ -0,0 +1,46 @@
+easyblock = 'ConfigureMake'
+
+name = 'FFmpeg'
+version = '4.3.1'
+
+homepage = 'https://www.ffmpeg.org/'
+description = """A complete, cross-platform solution to record, convert and stream audio and video."""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['https://ffmpeg.org/releases/']
+sources = [SOURCELOWER_TAR_BZ2]
+checksums = ['f4a4ac63946b6eee3bbdde523e298fca6019d048d6e1db0d1439a62cea65f0d9']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2')
+]
+
+dependencies = [
+    ('NASM', '2.15.03'),
+    ('zlib', '1.2.11'),
+    ('bzip2', '1.0.8'),
+    ('x264', '20200912'),
+    ('LAME', '3.100'),
+    ('x265', '3.4'),
+    ('X11', '20200222'),
+    ('freetype', '2.10.1'),
+    ('fontconfig', '2.13.92'),
+    ('FriBidi', '1.0.9'),
+]
+
+configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" '
+configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig '
+configopts += '--enable-libfribidi'
+
+sanity_check_paths = {
+    'files': ['bin/ff%s' % x for x in ['mpeg', 'probe']] +
+             ['lib/lib%s.%s' % (x, y) for x in ['avdevice', 'avfilter', 'avformat', 'avcodec', 'postproc',
+                                                'swresample', 'swscale', 'avutil'] for y in [SHLIB_EXT, 'a']],
+    'dirs': ['include']
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb b/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e119f41fbb7dd6c66e1aaf6380c178645976bdf0
--- /dev/null
+++ b/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb
@@ -0,0 +1,35 @@
+easyblock = 'CMakeMake'
+
+name = 'GL2PS'
+version = '1.4.2'
+
+homepage = 'http://www.geuz.org/gl2ps/'
+description = """GL2PS: an OpenGL to PostScript printing library
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['http://geuz.org/gl2ps/src/']
+sources = [SOURCELOWER_TGZ]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+]
+
+dependencies = [
+    ('X11', '20200222'),
+    ('OpenGL', '2020'),
+    ('freeglut', '3.2.1'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.11'),
+]
+
+sanity_check_paths = {
+    'files': ['include/gl2ps.h', 'lib/libgl2ps.so'],
+    'dirs': []
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..78e0e5ebffd41e5d70075fe1d944895f0dade8eb
--- /dev/null
+++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb
@@ -0,0 +1,69 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2012-2016 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC,
+#                                 Ghent University / The Francis Crick Institute
+# Authors::
+# * Wiktor Jurkowski <wiktor.jurkowski@gmail.com>
+# * Fotis Georgatos <fotis@cern.ch>
+# * George Tsouloupas <g.tsouloupas@cyi.ac.cy>
+# * Kenneth Hoste <kenneth.hoste@ugent.be>
+# * Adam Huffman <adam.huffman@crick.ac.uk>
+# License::   MIT/GPL
+##
+
+name = 'GROMACS'
+version = '2020.4'
+
+homepage = 'http://www.gromacs.org'
+description = """
+GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations
+of motion for systems with hundreds to millions of particles. It is primarily designed for
+biochemical molecules like proteins and lipids that have a lot of complicated bonded interactions,
+but since GROMACS is extremely fast at calculating the non-bonded interactions (that usually
+dominate simulations) many groups are also using it for research on non-biological systems, e.g.
+polymers.
+
+Documentation
+=============
+Use `gmx` to execute GROMACS commands on a single node, for example, to prepare your run. Use
+`gmx_mpi mdrun` in your job scripts with `srun`. The user documentation of GROMACS can be found at
+http://manual.gromacs.org/documentation/current/user-guide/index.html.
+
+"""
+
+site_contacts = 'sc@fz-juelich.de'
+
+toolchain = {'name': 'gpsmkl', 'version': '2020'}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+source_urls = ['ftp://ftp.gromacs.org/pub/gromacs/']
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+    ('libxml2', '2.9.10')
+]
+
+
+# Removed ('hwloc', '2.0.3') from dependencies due to runtime failures.
+dependencies = [
+    ('CUDA', '11.0', '', True),
+]
+
+configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24" '
+configopts += '-DMKL_LIBRARIES="${MKLROOT}/lib/intel64/libmkl_intel_ilp64.so;'
+configopts += '${MKLROOT}/lib/intel64/libmkl_sequential.so;${MKLROOT}/lib/intel64/libmkl_core.so" '
+configopts += '-DGMX_CUDA_TARGET_SM="60;70;80" '
+
+mpiexec = 'srun'
+mpiexec_numproc_flag = '"--gres=gpu:1 -n"'
+mpi_numprocs = '24'
+
+runtest = False
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+moduleclass = 'bio'
diff --git a/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb b/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb
index d98eb4ff60bc80716eacad8b7dddf60e245952ab..10d66dd098b76753cfe0503783ce558e4dea3bd0 100644
--- a/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb
+++ b/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb
@@ -1,4 +1,4 @@
-easyblock = 'ConfigureMake'
+easyblock = 'Bundle'
 
 name = 'GTK+'
 version = '3.24.17'
@@ -12,14 +12,13 @@ site_contacts = 'a.kreuzer@fz-juelich.de'
 
 toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
 
-source_urls = [FTPGNOME_SOURCE]
-sources = [SOURCELOWER_TAR_XZ]
-
 builddependencies = [
     ('binutils', '2.34'),
     ('Coreutils', '8.32'),
     ('pkg-config', '0.29.2'),
     ('GObject-Introspection', '1.64.1'),
+    ('cairo', '1.17.2'),
+    ('Perl', '5.32.0'),
 ]
 
 dependencies = [
@@ -29,13 +28,47 @@ dependencies = [
     ('Pango', '1.44.7'),
     ('X11', '20200222'),
     ('libepoxy', '1.5.4'),
+    ('zlib', '1.2.11'),
+    ('FriBidi', '1.0.9'),
+]
+
+default_easyblock = 'ConfigureMake'
+
+default_component_specs = {
+    'sources': [SOURCELOWER_TAR_XZ],
+    'start_dir': '%(namelower)s-%(version)s',
+}
+
+components = [
+    (name, version, {
+        'source_urls': [FTPGNOME_SOURCE],
+        'checksums': ['f210255b221cb0f0db3e7b21399983b715c9dda6eb1e5c2f7fdf38f4f1b6bac0'],
+        'configopts': "--disable-silent-rules --disable-glibtest --enable-introspection=yes --disable-visibility ",
+    }),
+    ('hicolor-icon-theme', '0.17', {
+        'source_urls': ['https://icon-theme.freedesktop.org/releases/'],
+        'checksums': ['317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8'],
+    }),
+    ('adwaita-icon-theme', '3.36.0', {
+        'source_urls': [FTPGNOME_SOURCE],
+        'checksums': ['1a172112b6da482d3be3de6a0c1c1762886e61e12b4315ae1aae9b69da1ed518'],
+    }),
 ]
 
-configopts = "--disable-silent-rules --disable-glibtest --enable-introspection=yes "
+postinstallcmds = ['gtk-update-icon-cache']
 
 modextrapaths = {
     'GI_TYPELIB_PATH': 'lib64/girepository-1.0',
     'XDG_DATA_DIRS': 'share',
 }
 
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in ['gtk3-demo', 'gtk3-demo-application', 'gtk3-icon-browser', 'gtk3-widget-factory',
+                                     'gtk-builder-tool', 'gtk-launch', 'gtk-query-immodules-3.0', 'gtk-query-settings',
+                                     'gtk-update-icon-cache']] +
+             ['lib/%s-%%(version_major)s.%s' % (x, SHLIB_EXT) for x in ['libgailutil', 'libgdk', 'libgtk']],
+    'dirs': ['include/%s-%%(version_major)s.0' % x for x in ['gail', 'gtk']] +
+            ['share/icons/hicolor', 'share/icons/Adwaita'],
+}
+
 moduleclass = 'vis'
diff --git a/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb b/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..81aac97f88dc0950a239efc151733feb08c88743
--- /dev/null
+++ b/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb
@@ -0,0 +1,41 @@
+easyblock = 'ConfigureMake'
+
+name = 'GraphicsMagick'
+version = '1.3.35'
+
+homepage = 'http://www.graphicsmagick.org/'
+description = """GraphicsMagick is the swiss army knife of image processing.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+    SOURCEFORGE_SOURCE,
+    'ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/%(version_major_minor)s/',
+]
+sources = [SOURCE_TAR_GZ]
+
+configopts = "--enable-shared --enable-static "
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+    ('libtool', '2.4.6'),
+]
+
+dependencies = [
+    ('X11', '20200222'),
+    ('bzip2', '1.0.8'),
+    ('freetype', '2.10.1'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('LibTIFF', '4.1.0'),
+    ('libxml2', '2.9.10'),
+    ('XZ', '5.2.5'),
+    ('zlib', '1.2.11'),
+]
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..13375a560e57c09c319915a214b91d0081f970fd
--- /dev/null
+++ b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb
@@ -0,0 +1,97 @@
+# on juwels booster, one needs to call "export UCX_LOG_LEVEL=FATAL ebw ...
+
+easyblock = 'PythonBundle'
+
+name = 'Horovod'
+version = '0.20.3'
+local_tf_version = '2.3.1'
+versionsuffix = '-TensorFlow-%s-Python-%%(pyver)s' % local_tf_version
+
+homepage = 'https://github.com/uber/horovod'
+description = "Horovod is a distributed training framework for TensorFlow."
+
+toolchain = {'name': 'gomkl', 'version': '2020'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+]
+dependencies = [
+    ('Python', '3.8.5'),
+    # ('PyYAML', '5.1.2'), # PyYAML is inside JSC's python
+    ('TensorFlow', local_tf_version, '-Python-%(pyver)s'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# possible vars:
+# HOROVOD_BUILD_ARCH_FLAGS - additional C++ compilation flags to pass in for your build architecture.
+# HOROVOD_CUDA_HOME - path where CUDA include and lib directories can be found.
+# HOROVOD_BUILD_CUDA_CC_LIST - List of compute capabilities to build Horovod CUDA
+# kernels for (example: HOROVOD_BUILD_CUDA_CC_LIST=60,70,75)
+# HOROVOD_ROCM_HOME - path where ROCm include and lib directories can be found.
+# HOROVOD_NCCL_HOME - path where NCCL include and lib directories can be found.
+# HOROVOD_NCCL_INCLUDE - path to NCCL include directory.
+# HOROVOD_NCCL_LIB - path to NCCL lib directory.
+# HOROVOD_NCCL_LINK - {SHARED, STATIC}. Mode to link NCCL library. Defaults to STATIC for CUDA, SHARED for ROCm.
+# HOROVOD_WITH_GLOO - {1}. Require that Horovod is built with Gloo support enabled.
+# HOROVOD_WITHOUT_GLOO - {1}. Skip building with Gloo support.
+# HOROVOD_WITH_MPI - {1}. Require that Horovod is built with MPI support enabled.
+# HOROVOD_WITHOUT_MPI - {1}. Skip building with MPI support.
+# HOROVOD_GPU - {CUDA, ROCM}. Framework to use for GPU operations.
+# HOROVOD_GPU_OPERATIONS - {NCCL, MPI}. Framework to use for GPU tensor allreduce, allgather, and broadcast.
+# HOROVOD_GPU_ALLREDUCE - {NCCL, MPI}. Framework to use for GPU tensor allreduce.
+# HOROVOD_GPU_ALLGATHER - {NCCL, MPI}. Framework to use for GPU tensor allgather.
+# HOROVOD_GPU_BROADCAST - {NCCL, MPI}. Framework to use for GPU tensor broadcast.
+# HOROVOD_ALLOW_MIXED_GPU_IMPL - {1}. Allow Horovod to install with NCCL allreduce and MPI GPU allgather /
+# broadcast. Not recommended due to a possible deadlock.
+# HOROVOD_CPU_OPERATIONS - {MPI, GLOO, CCL}. Framework to use for CPU tensor allreduce, allgather, and broadcast.
+# HOROVOD_CMAKE - path to the CMake binary used to build Gloo (not required when using MPI).
+# HOROVOD_WITH_TENSORFLOW - {1}. Require Horovod to install with TensorFlow support enabled.
+# HOROVOD_WITHOUT_TENSORFLOW - {1}. Skip installing TensorFlow support.
+# HOROVOD_WITH_PYTORCH - {1}. Require Horovod to install with PyTorch support enabled.
+# HOROVOD_WITHOUT_PYTORCH - {1}. Skip installing PyTorch support.
+# HOROVOD_WITH_MXNET - {1}. Require Horovod to install with MXNet support enabled.
+# HOROVOD_WITHOUT_MXNET - {1}. Skip installing MXNet support.
+
+#prebuildopts = 'export LDSHARED="$CC -shared" && '
+#prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 '
+#prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_NCCL_HOME=$EBROOTNCCL '
+#prebuildopts += ' HOROVOD_GPU_OPERATIONS=NCCL '
+#prebuildopts += ' HOROVOD_CPU_OPERATIONS=MPI '
+## prebuildopts += ' HOROVOD_GPU_ALLREDUCE=NCCL '
+## prebuildopts += ' HOROVOD_GPU_BROADCAST=NCCL '
+#prebuildopts += ' HOROVOD_WITH_MPI=1 '
+
+
+prebuildopts = 'export LDSHARED="$CC -shared" && '
+prebuildopts += 'HOROVOD_NCCL_LINK=SHARED HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_NCCL_HOME=$EBROOTNCCL '
+prebuildopts += ' NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \
+                                -gencode=arch=compute_75,code=sm_75 \
+                                -gencode=arch=compute_80,code=sm_80"'
+
+preinstallopts = prebuildopts
+
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    # ('cloudpickle', '1.5.0', { # Cloudpickle is in python
+    #     'checksums': ['820c9245cebdec7257211cbe88745101d5d6a042bca11336d78ebd4897ddbc82'],
+    # }),
+    ('horovod', version, {
+        'checksums': ['6ebc90d627af486d44335ed48489e1e8dc190607574758867c52e4e17d75a247'],
+        'cuda_compute_capabilities': ['7.0', '7.5', '8.0'],
+    }),
+]
+
+sanity_check_paths = {
+    'files': ['bin/horovodrun'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb b/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb
index e5b2c9ca410e5331e37cc3f1f7bb3c4b3af98302..96f4cd6be87248b51f006dc4d31e7ceb94f36e69 100644
--- a/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb
+++ b/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb
@@ -60,7 +60,7 @@ sanity_pip_check = True
 prebuildopts = 'export LDSHARED="$CC -shared" && '
 prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 '
 prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_NCCL_HOME=$EBROOTNCCL '
-prebuildopts += ' HOROVOD_GPU_OPERATIONS=MPI '
+prebuildopts += ' HOROVOD_GPU_OPERATIONS=NCCL '
 prebuildopts += ' HOROVOD_CPU_OPERATIONS=MPI '
 # prebuildopts += ' HOROVOD_GPU_ALLREDUCE=NCCL '
 # prebuildopts += ' HOROVOD_GPU_BROADCAST=NCCL '
diff --git a/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb b/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb
index c60aa1213f990dd80cc0b1fca3478ca2625f2e1f..2e3149123788e4bd13251ade5232603e1f45d4d5 100644
--- a/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb
+++ b/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb
@@ -24,6 +24,8 @@ req_py_minver = 0
 # to really use mpi enabled hdf5 we now seem to need a configure step
 prebuildopts = 'export LDSHARED="$CC -shared" &&  python setup.py configure --mpi --hdf5=$EBROOTHDF5 && '
 
+patches = ['h5py-2.10.0_avoid-mpi-init.patch']
+
 builddependencies = [
     ('pkgconfig', '1.5.1', versionsuffix),
 ]
diff --git a/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch b/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch
new file mode 100644
index 0000000000000000000000000000000000000000..98034776400e528d4baebce3c01bd9dca5bfc4a9
--- /dev/null
+++ b/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch
@@ -0,0 +1,85 @@
+avoid that 'import h5py' triggers MPI_Init via mpi4py
+
+backported to h5py 2.10.0 from https://github.com/h5py/h5py/pull/1552 by Kenneth Hoste (HPC-UGent)
+
+diff -ru h5py-2.10.0.orig/h5py/api_types_ext.pxd h5py-2.10.0/h5py/api_types_ext.pxd
+--- h5py-2.10.0.orig/h5py/api_types_ext.pxd	2019-09-06 23:29:33.000000000 +0200
++++ h5py-2.10.0/h5py/api_types_ext.pxd	2020-05-25 19:30:30.000000000 +0200
+@@ -12,7 +12,7 @@
+ include 'config.pxi'
+ 
+ IF MPI:
+-    from mpi4py.MPI cimport MPI_Comm, MPI_Info, Comm, Info
++    from mpi4py.libmpi cimport MPI_Comm, MPI_Info
+ 
+ cdef extern from "stdlib.h":
+   ctypedef long size_t
+@@ -52,6 +52,7 @@
+ cdef extern from "Python.h":
+   ctypedef void PyObject
+   ctypedef ssize_t Py_ssize_t
++  ctypedef size_t Py_uintptr_t
+ 
+   PyObject* PyErr_Occurred()
+   void PyErr_SetString(object type, char *message)
+diff -ru h5py-2.10.0.orig/h5py/h5p.pyx h5py-2.10.0/h5py/h5p.pyx
+--- h5py-2.10.0.orig/h5py/h5p.pyx	2019-09-06 23:29:33.000000000 +0200
++++ h5py-2.10.0/h5py/h5p.pyx	2020-05-25 19:33:24.000000000 +0200
+@@ -17,6 +17,7 @@
+ from cpython.buffer cimport PyObject_CheckBuffer, \
+                             PyObject_GetBuffer, PyBuffer_Release, \
+                             PyBUF_SIMPLE
++from cpython.long cimport PyLong_AsVoidPtr
+ 
+ from utils cimport  require_tuple, convert_dims, convert_tuple, \
+                     emalloc, efree, \
+@@ -1161,7 +1162,7 @@
+ 
+     IF MPI:
+         @with_phil
+-        def set_fapl_mpio(self, Comm comm not None, Info info not None):
++        def set_fapl_mpio(self, comm, info):
+             """ (Comm comm, Info info)
+ 
+             Set MPI-I/O Parallel HDF5 driver.
+@@ -1169,7 +1170,12 @@
+             Comm: An mpi4py.MPI.Comm instance
+             Info: An mpi4py.MPI.Info instance
+             """
+-            H5Pset_fapl_mpio(self.id, comm.ob_mpi, info.ob_mpi)
++            from mpi4py.MPI import Comm, Info, _handleof
++            assert isinstance(comm, Comm)
++            assert isinstance(info, Info)
++            cdef Py_uintptr_t _comm = _handleof(comm)
++            cdef Py_uintptr_t _info = _handleof(info)
++            H5Pset_fapl_mpio(self.id, <MPI_Comm>_comm, <MPI_Info>_info)
+ 
+ 
+         @with_phil
+@@ -1183,20 +1189,22 @@
+             """
+             cdef MPI_Comm comm
+             cdef MPI_Info info
++            from mpi4py.MPI import Comm, Info, _addressof
+ 
+             H5Pget_fapl_mpio(self.id, &comm, &info)
+             pycomm = Comm()
+-            pyinfo = Info()
+-            MPI_Comm_dup(comm, &pycomm.ob_mpi)
+-            MPI_Info_dup(info, &pyinfo.ob_mpi)
++            MPI_Comm_dup(comm, <MPI_Comm *>PyLong_AsVoidPtr(_addressof(pycomm)))
+             MPI_Comm_free(&comm)
++
++            pyinfo = Info()
++            MPI_Info_dup(info, <MPI_Info *>PyLong_AsVoidPtr(_addressof(pyinfo)))
+             MPI_Info_free(&info)
+ 
+             return (pycomm, pyinfo)
+ 
+ 
+         @with_phil
+-        def set_fapl_mpiposix(self, Comm comm not None, bint use_gpfs_hints=0):
++        def set_fapl_mpiposix(self, comm, bint use_gpfs_hints=0):
+             """ Obsolete.
+             """
+             raise RuntimeError("MPI-POSIX driver is broken; removed in h5py 2.3.1")
diff --git a/Golden_Repo/hidden_deps.txt b/Golden_Repo/hidden_deps.txt
index 219750a5b95d5fdcfe613ecbd9849e51b4fd9c92..a02aa09a824c4b0622189e56beb992c62e584eb3 100644
--- a/Golden_Repo/hidden_deps.txt
+++ b/Golden_Repo/hidden_deps.txt
@@ -117,6 +117,7 @@ LibTIFF
 libtool
 libunistring
 libunwind
+libwebp
 LibUUID
 libX11
 libXau
@@ -144,6 +145,7 @@ libXt
 libXtst
 libyaml
 libyuv
+lz4
 LittleCMS
 LMDB
 LZO
@@ -186,6 +188,7 @@ Qt
 Qt5
 randrproto
 recordproto
+rencode
 renderproto
 SCons
 scrollkeeper
@@ -198,6 +201,7 @@ SWIG
 Szip
 texinfo
 Tk
+uglifyjs
 UDUNITS
 util-linux
 vpx
@@ -221,5 +225,6 @@ xprop
 xproto
 xtrans
 XZ
+yuicompressor
 Yasm
 zlib
diff --git a/Golden_Repo/i/itac/itac-2020.2.031.eb b/Golden_Repo/i/itac/itac-2020.2.031.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c52ed1b9b8948ab00127f9f9bbf4ce489bf86814
--- /dev/null
+++ b/Golden_Repo/i/itac/itac-2020.2.031.eb
@@ -0,0 +1,36 @@
+name = 'itac'
+version = '2020.2.031'
+
+homepage = 'http://software.intel.com/en-us/intel-trace-analyzer/'
+description = """The Intel Trace Collector is a low-overhead tracing library that performs
+ event-based tracing in applications. The Intel Trace Analyzer provides a convenient way to monitor application
+ activities gathered by the Intel Trace Collector through graphical displays.
+"""
+
+usage = """
+ Basic usage:
+   1. module load itac
+
+ Then either method 1: Static Linking
+   2. Instrument application by linking with -L$VT_LIB_DIR -lVT $VT_ADD_LIBS
+   3. Measure data by executing instrumented application
+
+ or method 2: Library preloading
+   2. export LD_PRELOAD=$VT_SLIB_DIR/libVT.so
+   3. Measure data by executing uninstrumented application
+
+ Afterwards
+   4. traceanalyzer <exe>.stf
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = SYSTEM
+
+sources = ['l_itac_p_%(version)s.tgz']
+
+dontcreateinstalldir = 'True'
+
+preferredmpi = 'impi5'
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb b/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb
new file mode 100644
index 0000000000000000000000000000000000000000..554fa8ff8ce3529416d12bafb8cfd96bcd58d27e
--- /dev/null
+++ b/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb
@@ -0,0 +1,40 @@
+easyblock = 'SystemBundle'
+
+name = 'OpenMPI-settings'
+version = '4.1'
+versionsuffix = 'UCX-CUDA'
+
+homepage = ''
+description = """This is a module to load the default OpenMPI configuration"""
+
+site_contacts = 'd.alvarez@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = []
+
+sources = []
+modextravars = {
+    'SLURM_MPI_TYPE': 'pspmix',
+    'UCX_TLS': 'rc_x,cuda_ipc,gdr_copy,self,sm,cuda_copy',
+    'OMPI_MCA_mca_base_component_show_load_errors': '1',
+    'OMPI_MCA_mpi_param_check': '1',
+    'OMPI_MCA_mpi_show_handle_leaks': '1',
+    'OMPI_MCA_mpi_warn_on_fork': '1',
+    'OMPI_MCA_btl': 'self,vader,uct',
+    'OMPI_MCA_btl_openib_allow_ib': '1',
+    'OMPI_MCA_bml_r2_show_unreach_errors': '0',
+    'OMPI_MCA_coll': '^ml',
+    'OMPI_MCA_coll_hcoll_enable': '1',
+    'OMPI_MCA_coll_hcoll_np': '0',
+    'OMPI_MCA_pml': 'ucx',
+    'OMPI_MCA_osc': '^rdma',
+    'OMPI_MCA_opal_abort_print_stack': '1',
+    'OMPI_MCA_opal_set_max_sys_limits': '1',
+    'OMPI_MCA_opal_event_include': 'epoll',
+    'OMPI_MCA_btl_openib_warn_default_gid_prefix': '0',
+    # So mlx5_0 is not taken, given that one is an ethernet port in jusuf
+    'OMPI_MCA_btl_openib_if_include': 'mlx5_1',
+}
+
+moduleclass = 'system'
diff --git a/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb b/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..791f7598c62abedfd552ed21e1a3ba1f15916b9e
--- /dev/null
+++ b/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb
@@ -0,0 +1,38 @@
+# #
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Author:    Stephane Thiell <sthiell@stanford.edu>
+# ##
+
+easyblock = 'ConfigureMake'
+
+name = 'LAME'
+version = '3.100'
+
+homepage = 'http://lame.sourceforge.net/'
+description = "LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL."
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['https://sourceforge.net/projects/%(namelower)s/files/%(namelower)s/%(version_major_minor)s/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e']
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+dependencies = [
+    ('ncurses', '6.2'),
+]
+
+# configure is broken: add workaround to find libncurses...
+configure_cmd_prefix = "FRONTEND_LDADD='-L${EBROOTNCURSES}/lib' "
+
+sanity_check_paths = {
+    'files': ['bin/%(namelower)s', 'include/%(namelower)s/%(namelower)s.h', 'lib/libmp3lame.so'],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb b/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eec9c5f0fa9fdcc6b821bc8d98f2a343bc7733ce
--- /dev/null
+++ b/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb
@@ -0,0 +1,35 @@
+easyblock = 'ConfigureMake'
+
+name = 'libvpx'
+version = '1.9.0'
+
+homepage = 'http://www.webmproject.org'
+description = """VPx are open and royalty free video compression formats owned by Google.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://chromium.googlesource.com/webm/libvpx/+archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['cae0180c225667663b716f2498b5a6a4415da7db2aef43ddc17db25e2d3274b7']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+    ('NASM', '2.15.03'),
+]
+
+dependencies = [
+]
+
+configopts = '--enable-pic --enable-shared'
+
+sanity_check_paths = {
+    'files': ['bin/vpxdec', 'bin/vpxenc', 'include/vpx/vpx_codec.h', 'lib/libvpx.a'],  # 'lib/libvpx.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb b/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cdeba8b3bd4190a365734a9df4c933a5e46bbfc6
--- /dev/null
+++ b/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb
@@ -0,0 +1,37 @@
+easyblock = 'ConfigureMake'
+
+name = 'libwebp'
+version = '1.1.0'
+
+homepage = 'https://developers.google.com/speed/webp/'
+description = """WebP is a modern image format that provides superior
+lossless and lossy compression for images on the web. Using WebP,
+webmasters and web developers can create smaller, richer images that
+make the web faster."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['https://storage.googleapis.com/downloads.webmproject.org/releases/webp']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['98a052268cc4d5ece27f76572a7f50293f439c17a98e67c4ea0c7ed6f50ef043']
+
+builddependencies = [('binutils', '2.34')]
+
+dependencies = [
+    ('libjpeg-turbo', '2.0.5'),
+    ('libpng', '1.6.37'),
+    ('LibTIFF', '4.1.0'),
+]
+
+configopts = "--enable-libwebpmux"
+
+sanity_check_paths = {
+    'files': ['include/webp/%s' % f for f in ['decode.h', 'demux.h', 'encode.h', 'mux.h', 'mux_types.h', 'types.h']] +
+             ['lib/lib%s.a' % l for l in ['webp', 'webpdemux', 'webpmux']] +
+             ['lib/lib%s.%s' % (l, SHLIB_EXT) for l in ['webp', 'webpdemux', 'webpmux']],
+    'dirs': ['lib/']
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb b/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..de42aaaccd80dd8908ae269ca8328d4db9eaa84f
--- /dev/null
+++ b/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb
@@ -0,0 +1,56 @@
+easyblock = 'CMakeMake'
+
+name = 'libyuv'
+version = '20201024'
+
+homepage = 'https://chromium.googlesource.com/libyuv/libyuv/'
+description = """
+libyuv for colorspace conversion. libyuv is Optimized for SSE2/SSSE3/AVX2 on x86/x64.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+sources = [
+    {
+        'source_urls': ['https://chromium.googlesource.com/libyuv/libyuv/+archive/'],
+        'filename': '%(name)s-19d71f6b351fe992ae34b114eebd872c383a6bdb.tar.gz',
+        'download_filename': '19d71f6b351fe992ae34b114eebd872c383a6bdb.tar.gz',
+    }, {
+        'filename': 'libyuv.pc.gz',
+    }
+]
+checksums = ['3796b5b96cc0c5987b6d4d6e52a726de6277623d900937f100a6b0cffd3adda8']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0')
+]
+
+dependencies = [
+]
+
+separate_build_dir = True
+start_dir = './'
+
+maxparallel = 12
+
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+
+postinstallcmds = [
+    'sed -ie "s#PREFIX_TEMPLATE#%(installdir)s#g" %(builddir)s/libyuv.pc',
+    'cp %(builddir)s/libyuv.pc %(installdir)s'
+]
+
+sanity_check_paths = {
+    'files': ['lib/libyuv.a', 'include/libyuv.h'],
+    'dirs': [],
+}
+
+modextrapaths = {
+    'PKG_CONFIG_PATH': ''
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/l/libyuv/libyuv.pc.gz b/Golden_Repo/l/libyuv/libyuv.pc.gz
new file mode 100644
index 0000000000000000000000000000000000000000..401bc3c4d99707e1392a2d2cd279466259a38380
Binary files /dev/null and b/Golden_Repo/l/libyuv/libyuv.pc.gz differ
diff --git a/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c9c8b0cfc3ab5528eebff53b059b7641e238d20c
--- /dev/null
+++ b/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,36 @@
+easyblock = 'PythonPackage'
+
+name = 'lz4'
+version = '3.1.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/lz4'
+description = """
+LZ4 is lossless compression algorithm, providing compression speed > 500 MB/s per core,
+scalable with multi-cores CPU. It features an extremely fast decoder, with speed in 
+multiple GB/s per core, typically reaching RAM speed limits on multi-core systems.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = [PYPI_SOURCE]
+
+dependencies = [
+    ('Python', '3.8.5'),
+]
+
+maxparallel = 12
+
+start_dir = '%(builddir)s/%(name)s-%(version)s/'
+
+options = {'modulename': 'lz4'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/'],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb b/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb
new file mode 100644
index 0000000000000000000000000000000000000000..09b0a9ec24f913b12a6728555be1cb87405f1a03
--- /dev/null
+++ b/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb
@@ -0,0 +1,31 @@
+easyblock = "PythonPackage"
+
+name = 'Mercurial'
+version = '5.5.2'
+versionsuffix = "-Python-%(pyver)s"
+
+homepage = 'http://mercurial.selenic.com/'
+description = """Mercurial is a free, distributed source control management tool. It efficiently handles projects
+of any size and offers an easy and intuitive interface.
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+source_urls = ['http://mercurial-scm.org/release/']
+sources = [SOURCELOWER_TAR_GZ]
+
+download_dep_fail = True
+
+builddependencies = [('binutils', '2.34')]
+
+dependencies = [
+    ('Python', '3.8.5')
+]
+
+sanity_check_paths = {
+    'files': ['bin/hg'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/mercurial'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb
index 1c31530b907799f7f3de5cb0ee96d6336aff1cc6..aa470de3ebedda028db385fc150561d10eb087ab 100644
--- a/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb
+++ b/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb
@@ -30,7 +30,6 @@ dependencies = [
     ('GTK+', '3.24.17'),
     ('GtkSourceView', '4.4.0'),
     ('gsettings-desktop-schemas', '3.34.0'),
-    ('adwaita-icon-theme', '3.37.2'),
     ('GLib', '2.64.4'),
 ]
 
diff --git a/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb b/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0eff9df6ccb1d4eeee7793ca60fa5464757ee237
--- /dev/null
+++ b/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb
@@ -0,0 +1,42 @@
+easyblock = 'ConfigureMake'
+
+name = 'motif'
+version = '2.3.8'
+
+homepage = 'https://motif.ics.com/'
+description = """Motif refers to both a graphical user interface (GUI) specification and the widget toolkit for building
+ applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems.
+ It was the standard toolkit for the Common Desktop Environment and thus for Unix.
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+sources = [SOURCELOWER_TAR_GZ]
+source_urls = [SOURCEFORGE_SOURCE]
+
+dependencies = [
+    ('freetype', '2.10.1'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('X11', '20200222'),
+]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+    ('Autotools', '20200321'),
+    ('flex', '2.6.4'),
+    ('Bison', '3.6.4'),
+    ('util-linux', '2.36'),
+]
+
+# makefile is not parallel safe
+parallel = 1
+
+sanity_check_paths = {
+    'files': ['lib/libMrm.a', 'lib/libUil.a', 'lib/libXm.a', 'bin/mwm', 'bin/uil', 'bin/xmbind'],
+    'dirs': ['include/Mrm', 'include/uil', 'include/X11', 'include/Xm'],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..425ebec809240c7feda580755bb9ef23074e1748
--- /dev/null
+++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb
@@ -0,0 +1,27 @@
+easyblock = 'PythonPackage'
+
+name = 'mpi4py'
+version = '3.0.3'
+
+homepage = 'https://bitbucket.org/mpi4py/mpi4py'
+description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for
+ the Python programming language, allowing any Python program to exploit multiple processors.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+
+source_urls = [BITBUCKET_DOWNLOADS]
+sources = [SOURCE_TAR_GZ]
+
+versionsuffix = '-Python-%(pyver)s'
+
+dependencies = [('Python', '3.8.5')]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/mpi4py'],
+}
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb b/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..18b667fad77c0277ebb679667c7b6c6b9906b115
--- /dev/null
+++ b/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb
@@ -0,0 +1,51 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '4.9.5'
+
+homepage = 'http://nco.sourceforge.net'
+description = """NCO manipulates data stored in netCDF-accessible formats,
+ including HDF4 and HDF5. It also exploits the geophysical expressivity of many
+ CF (Climate & Forecast) metadata conventions, the flexible description of
+ physical dimensions translated by UDUnits, the network transparency of OPeNDAP,
+ the storage features (e.g., compression, chunking, groups) of HDF (the
+ Hierarchical Data Format), and many powerful mathematical and statistical
+ algorithms of GSL (the GNU Scientific Library).
+"""
+
+site_contacts = 'a.ghasemi@fz-juelich.de'
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+toolchainopts = {'opt': True, 'pic': True}
+
+configopts = '--enable-optimize-custom --enable-debug-custom '
+
+sources = [SOURCELOWER_TAR_GZ]
+source_urls = ['http://nco.sourceforge.net/src/']
+
+patches = ['nco_4.9.5_yyget_gcc9.patch']
+
+builddependencies = [
+    ('Bison', '3.6.4'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('cURL', '7.71.1'),
+    ('netCDF', '4.7.4'),
+    ('UDUNITS', '2.2.26'),
+    ('GSL', '2.6'),
+    ('expat', '2.2.9'),
+    # ANTLR 3.X doesn't have C++ support and therefore is not usable
+    # ANTLR 4.X has C++ support, but right now is not compatible with NCO
+    # See https://sourceforge.net/p/nco/discussion/9831/thread/1a424aac/
+    ('ANTLR', '2.7.7', '-Python-3.8.5'),
+    ('libdap', '3.20.6'),
+]
+
+sanity_check_paths = {
+    'files': ["bin/ncks", "bin/ncrename"],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch b/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6c62faa6a24e89651ccffb86b6fc70c1be1e8fe9
--- /dev/null
+++ b/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch
@@ -0,0 +1,12 @@
+diff -ruN nco-4.9.5.orig/src/nco/ncap_lex.l nco-4.9.5/src/nco/ncap_lex.l
+--- nco-4.9.5.orig/src/nco/ncap_lex.l	2018-09-21 17:23:39.000000000 +0200
++++ nco-4.9.5/src/nco/ncap_lex.l	2018-11-09 16:43:31.201995148 +0100
+@@ -107,7 +107,7 @@
+      Once all platforms upgrade to Flex >= 2.6.4 we can deprecate yy_size_t code
+      However, MacOSX may never upgrade to newer Flex
+      CZ's decision is to keep current behavior until breakage cannot be ignored and then sacrifice buildability on older Flex */
+-  yy_size_t yyget_leng(void); /* fixes: warning: no previous prototype for `yyget_leng' */
++  int yyget_leng(void); /* fixes: warning: no previous prototype for `yyget_leng' */
+   int yyget_lineno(void); /* fixes: warning: no previous prototype for `yyget_lineno' */
+   int yylex_destroy(void); /* fixes: warning: no previous prototype for `yylex_destroy' */
+   void yyset_debug(int bdebug); /* fixes: warning: no previous prototype for `yyset_debug' */
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4579678528d194e85d13e299bff06a71660fae51
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb
@@ -0,0 +1,28 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.7.4')]
+
+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-iompi-2020.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-iompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..004248a3895cbf017105a68c04f320f2833d1d6d
--- /dev/null
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-iompi-2020.eb
@@ -0,0 +1,28 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'iompi', 'version': '2020'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.7.4')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..02af1d5a4d1da21c3dfb4a5e35f867f36decda39
--- /dev/null
+++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb
@@ -0,0 +1,24 @@
+name = 'netCDF-Fortran'
+version = '4.5.3'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+    'ftp://ftp.unidata.ucar.edu/pub/netcdf/',
+    'ftp://ftp.unidata.ucar.edu/pub/netcdf/old',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['123a5c6184336891e62cf2936b9f2d1c54e8dee299cfd9d2c1a1eb05dd668a74']
+
+dependencies = [('netCDF', '4.7.4')]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4603bd8d204b006b82f51baf790229f171205c71
--- /dev/null
+++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb
@@ -0,0 +1,24 @@
+name = 'netCDF-Fortran'
+version = '4.5.3'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'iompi', 'version': '2020'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+    'ftp://ftp.unidata.ucar.edu/pub/netcdf/',
+    'ftp://ftp.unidata.ucar.edu/pub/netcdf/old',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['123a5c6184336891e62cf2936b9f2d1c54e8dee299cfd9d2c1a1eb05dd668a74']
+
+dependencies = [('netCDF', '4.7.4')]
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb b/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..caf338f731becd8486766baa70e69ee453f2558f
--- /dev/null
+++ b/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb
@@ -0,0 +1,44 @@
+name = 'netCDF'
+version = '4.7.4'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%s.tar.gz' % (version)]
+checksums = ['99930ad7b3c4c1a8e8831fb061cb02b2170fc8e5ccaeda733bd99c3b9d31666b']
+
+dependencies = [
+    ('HDF5', '1.10.6'),
+    ('cURL', '7.71.1'),
+    ('Szip', '2.1.1'),
+    ('parallel-netcdf', '1.12.1')
+]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+    ('Doxygen', '1.8.18'),
+]
+
+# make sure both static and shared libs are built
+configopts = [
+    "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " +
+    "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=ON",
+    "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " +
+    "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=OFF",
+]
+
+sanity_check_paths = {
+    'files': ["include/netcdf_mem.h", "include/netcdf_par.h"],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb b/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..000bde607dc100300c8c448c4a2043b85579ff37
--- /dev/null
+++ b/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb
@@ -0,0 +1,44 @@
+name = 'netCDF'
+version = '4.7.4'
+
+homepage = 'http://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries 
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented 
+ scientific data.
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'iompi', 'version': '2020'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%s.tar.gz' % (version)]
+checksums = ['99930ad7b3c4c1a8e8831fb061cb02b2170fc8e5ccaeda733bd99c3b9d31666b']
+
+dependencies = [
+    ('HDF5', '1.10.6'),
+    ('cURL', '7.71.1'),
+    ('Szip', '2.1.1'),
+    ('parallel-netcdf', '1.12.1')
+]
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+    ('Doxygen', '1.8.18'),
+]
+
+# make sure both static and shared libs are built
+configopts = [
+    "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " +
+    "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=ON",
+    "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " +
+    "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=OFF",
+]
+
+sanity_check_paths = {
+    'files': ["include/netcdf_mem.h", "include/netcdf_par.h"],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..eb556e313557705771705c612092036b7c422fd9
--- /dev/null
+++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb
@@ -0,0 +1,44 @@
+easyblock = 'PythonBundle'
+
+name = 'netcdf4-python'
+version = '1.5.4'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://unidata.github.io/netcdf4-python/'
+description = """Python/numpy interface to netCDF."""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'ipsmpi', 'version': '2020'}
+toolchainopts = {'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf4-python/archive/']
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('netCDF', '4.7.4'),
+    ('mpi4py', '3.0.3', versionsuffix),
+]
+
+use_pip = True
+sanity_pip_check = True
+runtest = False  # mpirun problems
+skipsteps = ['sanitycheck']  # mpirun problems
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+exts_list = [
+    ('cftime', '1.2.1', {
+        'checksums': ['ab5d5076f7d3e699758a244ada7c66da96bae36e22b9e351ce0ececc36f0a57f'],
+    }),
+    (name, version, {
+        'source_tmpl': 'netCDF4-%(version)s.tar.gz',
+        'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'],
+        'checksums': ['941de6f3623b6474ecb4d043be5990690f7af4cf0d593b31be912627fe5aad03'],
+    }),
+]
+
+fix_python_shebang_for = ['bin/*']
+
+moduleclass = 'data'
diff --git a/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb b/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fc8283d69c6eef1e64e261eac88f20bdce88f324
--- /dev/null
+++ b/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb
@@ -0,0 +1,46 @@
+easyblock = 'ConfigureMake'
+
+name = 'nodejs'
+version = '12.19.0'
+local_libversion = '72'
+
+homepage = 'https://nodejs.org'
+description = """Node.js is a platform built on Chrome's JavaScript runtime
+ for easily building fast, scalable network applications. Node.js uses an
+ event-driven, non-blocking I/O model that makes it lightweight and efficient,
+ perfect for data-intensive real-time applications that run across distributed devices."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['http://%(name)s.org/dist/v%(version)s/']
+sources = ['node-v%(version)s.tar.gz']
+checksums = ['1279e49be60d92cf4c1a48c9d92397db4e9284a100bc47689ce7924686bbddd1']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Python', '3.8.5'),
+]
+
+configopts = [
+    '--with-intl=none',           # Fully disable ICU to avoid issues with the embedded icu-small library
+    '--shared --with-intl=none',  # Build libnode.so in a second run
+]
+
+# Link libv8 libs to libnode
+postinstallcmds = [
+    "cd %%(installdir)s/lib; ln -s libnode.%s.%s libnode.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
+    "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
+    "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libbase.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
+    "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libplatform.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT),
+]
+
+sanity_check_paths = {
+    'files': ['bin/node', 'bin/npm', 'lib/libnode.%s.%s' % (SHLIB_EXT, local_libversion)],
+    'dirs': ['lib/node_modules', 'include/node']
+}
+
+modextrapaths = {'CPATH': 'include/node'}
+
+moduleclass = 'lang'
diff --git a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1fab2a86a834a9dd27ad5cce12f854a1b902d38a
--- /dev/null
+++ b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb
@@ -0,0 +1,71 @@
+easyblock = 'ConfigureMake'
+
+name = 'Octave'
+version = '5.2.0'
+
+homepage = 'http://www.gnu.org/software/octave/'
+description = """GNU Octave is a high-level interpreted language, primarily intended for numerical computations."""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'gpsmkl', 'version': '2020'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('Bison', '3.6.4'),
+    ('flex', '2.6.4'),
+    ('pkg-config', '0.29.2'),
+    ('texinfo', '6.7'),
+    ('gperf', '3.1'),
+    ('Autotools', '20200321'),
+]
+
+dependencies = [
+    ('X11', '20200222'),
+    ('PCRE', '8.44'),
+    ('ncurses', '6.2'),
+    ('libreadline', '8.0'),
+    ('ARPACK-NG', '3.7.0'),
+    ('cURL', '7.71.1'),
+    ('FLTK', '1.3.5'),
+    ('fontconfig', '2.13.92'),
+    ('freetype', '2.10.1'),
+    ('GLPK', '4.65'),
+    ('GL2PS', '1.4.2'),
+    ('gnuplot', '5.2.8'),
+    ('Java', '1.8', '', True),
+    ('OpenGL', '2020'),
+    ('zlib', '1.2.11'),
+    ('Qhull', '2020.1'),
+    ('Qt5', '5.14.2'),
+    ('HDF5', '1.10.6'),
+    ('qrupdate', '1.1.2'),
+    ('SuiteSparse', '5.7.1', '-CUDA'),
+    ('GraphicsMagick', '1.3.35'),
+    ('FFTW', '3.3.8'),
+]
+
+# This is an OS dep because texinfo requires tex (and tex is too much to port to EB).
+# There is a texinfo in the EB repo but this doesn't really work as it requires an additional step to install
+# the necessary texinfo.tex files in the main tex installation. If tex is coming from the system and not
+# EB then this additional step can't be done...so better to push everything back to the OS
+osdependencies = ['texinfo-tex']
+
+configopts = 'MOC=$EBROOTQT5/bin/moc '
+configopts += 'UIC=$EBROOTQT5/bin/uic '
+configopts += 'RCC=$EBROOTQT5/bin/rcc '
+configopts += 'LRELEASE=$EBROOTQT5/bin/lrelease '
+configopts += '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" --disable-docs '
+# correct for both GCC and Intel compilers
+configopts += '--enable-fortran-calling-convention=gfortran '
+
+sanity_check_paths = {
+    'files': ['bin/octave'],
+    'dirs': []
+}
+
+sanity_check_commands = [('octave', '--eval "1+2"')]
+
+moduleclass = 'math'
diff --git a/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb b/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb
index 20e5da539a12d0939f42dca3580b0cbd9a478332..7ca6573771b35106285233167015aec6f98c51ca 100644
--- a/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb
+++ b/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb
@@ -21,7 +21,7 @@ modextravars = {
     'OMPI_MCA_mpi_param_check': '1',
     'OMPI_MCA_mpi_show_handle_leaks': '1',
     'OMPI_MCA_mpi_warn_on_fork': '1',
-    'OMPI_MCA_btl': 'self,vader,openib',
+    'OMPI_MCA_btl': 'self,vader,uct',
     'OMPI_MCA_btl_openib_allow_ib': '1',
     'OMPI_MCA_bml_r2_show_unreach_errors': '0',
     'OMPI_MCA_coll': '^ml',
diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb
index 907c2b9a49a7cca8960b7224c92bb450b930f1b1..414bc9f17b0acfde951aadd442d484c4d756ba80 100644
--- a/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb
+++ b/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb
@@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version]
 builddependencies = [
     ('CMake', '3.18.0')
 ]
+dependencies = [
+    ('HDF5', '1.10.6'),
+]
 
 download_deps = [
     'triangle',
@@ -42,7 +45,6 @@ download_deps_static = [
     'chaco',
     'sundials',
     'parms',
-    'hdf5',
 ]
 
 configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC'
diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb
index 0084920dbfb6ba5074efcf6be183bf8876ca1360..3fd12b03816ec55e3ec3ec8c96672a98cc8a392e 100644
--- a/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb
+++ b/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb
@@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version]
 builddependencies = [
     ('CMake', '3.18.0')
 ]
+dependencies = [
+    ('HDF5', '1.10.6'),
+]
 
 download_deps = [
     'triangle',
@@ -42,7 +45,6 @@ download_deps_static = [
     'chaco',
     'sundials',
     'parms',
-    'hdf5',
 ]
 
 configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC'
diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb
index c427c686f704885c0454300ff616e683d578d749..4e4d267f16a35d5f687482412d8402ebda490cf8 100644
--- a/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb
+++ b/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb
@@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version]
 builddependencies = [
     ('CMake', '3.18.0')
 ]
+dependencies = [
+    ('HDF5', '1.10.6'),
+]
 
 download_deps = [
     'triangle',
@@ -42,7 +45,6 @@ download_deps_static = [
     'chaco',
     'sundials',
     'parms',
-    'hdf5',
 ]
 
 configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC'
diff --git a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
index d2d1123218465a79a313b81613dd7484667acdf2..e18f87f8d34dd5f804eeca69be97bacf47e6a11c 100644
--- a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
+++ b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb
@@ -25,7 +25,7 @@ toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
 osdependencies = [('openssl-devel', 'libssl-dev')]
 
 dependencies = [
-    ('Java', '11', '', True),
+    ('Java', '1.8', '', True),
     ('libreadline', '8.0'),
     ('zlib', '1.2.11'),
 ]
diff --git a/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb
index b214687e48e17d06a7397ee78c5df498360de28b..a728a40dc2e7f436f686d483e56f0586c716227b 100644
--- a/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb
+++ b/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb
@@ -16,13 +16,10 @@ sources = [SOURCELOWER_TAR_GZ]
 
 download_dep_fail = True
 
-configopts = " --nopyc --nopyo "
-
 builddependencies = [
     ('binutils', '2.34'),
     ('Coreutils', '8.32'),
     ('pkg-config', '0.29.2'),
-    ('X11', '20200222'),
 ]
 
 dependencies = [
@@ -30,6 +27,13 @@ dependencies = [
     ('cairo', '1.17.2'),
 ]
 
+# PyGTK needs PyCairo installed by pip
+use_pip = True
+sanity_pip_check = True
+
+# Don't build a wheel or the pkg-cfg file won't be installed
+installopts = '--no-binary=%(namelower)s'
+
 options = {'modulename': 'cairo'}
 
 modextrapaths = {
@@ -37,8 +41,11 @@ modextrapaths = {
 }
 
 sanity_check_paths = {
-    'files': [],
-    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+    'files': ['%s/%s.%s' % (p, n, e)
+              for (p, e) in [('include/pycairo', 'h'), ('lib/pkgconfig', 'pc')] for n in ['py3cairo']],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/cairo'],
 }
 
+options = {'modulename': 'cairo'}
+
 moduleclass = 'vis'
diff --git a/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb
index 5461f0610d7ff3b09f184924af5c3c0ab3cd0728..e64e5fedbd5150883504dd7e8ea1f4c47167b8dc 100644
--- a/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb
+++ b/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb
@@ -4,16 +4,18 @@ name = 'PyGObject'
 version = '3.34.0'
 versionsuffix = '-Python-%(pyver)s'
 
-homepage = 'http://www.pygtk.org/'
-description = """Python Bindings for GLib/GObject/GIO/GTK+
+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.
 """
 
 site_contacts = 'a.kreuzer@fz-juelich.de'
 
 toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
 
-source_urls = [FTPGNOME_SOURCE]
-sources = [SOURCELOWER_TAR_XZ]
+source_urls = [PYPI_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['2acb0daf2b3a23a90f52066cc23d1053339fee2f5f7f4275f8baa3704ae0c543']
 
 builddependencies = [
     ('binutils', '2.34'),
@@ -25,12 +27,16 @@ dependencies = [
     ('GLib', '2.64.4'),
     ('GObject-Introspection', '1.64.1'),
     ('PyCairo', '1.18.2', versionsuffix),
+    ('libffi', '3.3'),
 ]
 
 use_pip = True
 sanity_pip_check = True
 download_dep_fail = True
 
+# Don't build a wheel or the pkg-cfg file won't be installed
+installopts = '--no-binary=%(namelower)s --no-use-pep517'
+
 sanity_check_paths = {
     'files': ['include/pygobject-%(version_major)s.0/pygobject.h'],
     'dirs': ['lib/python%(pyshortver)s/site-packages/'],
diff --git a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..06bd3df7f9eb7ef41eba455eb10c0ce61d603ad1
--- /dev/null
+++ b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb
@@ -0,0 +1,34 @@
+easyblock = 'ConfigureMake'
+
+name = 'parallel-netcdf'
+version = '1.12.1'
+
+homepage = 'http://trac.mcs.anl.gov/projects/parallel-netcdf'
+description = """PnetCDF is a library providing high-performance parallel I/O while still maintaining file-format
+compatibility with  Unidata's NetCDF, specifically the formats of CDF-1 and CDF-2.
+
+Although NetCDF supports parallel I/O starting from version 4, the files must be in HDF5 format. PnetCDF is currently
+the only choice for carrying out parallel I/O on files that are in classic formats
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'gompi', 'version': '2020'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+source_urls = ['https://parallel-netcdf.github.io/Release/']
+sources = ['pnetcdf-%(version)s.tar.gz']
+checksums = ['56f5afaa0ddc256791c405719b6436a83b92dcd5be37fe860dea103aee8250a2']
+
+configopts = '--enable-shared'
+
+builddependencies = [
+    ('M4', '1.4.18'),
+]
+
+sanity_check_paths = {
+    'files': ['include/pnetcdf.h', 'include/pnetcdf.inc', 'include/pnetcdf.mod', 'lib/libpnetcdf.a'],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..982ba9e407bb97743efafb3c20846db0c8953e26
--- /dev/null
+++ b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb
@@ -0,0 +1,34 @@
+easyblock = 'ConfigureMake'
+
+name = 'parallel-netcdf'
+version = '1.12.1'
+
+homepage = 'http://trac.mcs.anl.gov/projects/parallel-netcdf'
+description = """PnetCDF is a library providing high-performance parallel I/O while still maintaining file-format
+compatibility with  Unidata's NetCDF, specifically the formats of CDF-1 and CDF-2.
+
+Although NetCDF supports parallel I/O starting from version 4, the files must be in HDF5 format. PnetCDF is currently
+the only choice for carrying out parallel I/O on files that are in classic formats
+"""
+
+site_contacts = 's.luehrs@fz-juelich.de'
+
+toolchain = {'name': 'iompi', 'version': '2020'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+source_urls = ['https://parallel-netcdf.github.io/Release/']
+sources = ['pnetcdf-%(version)s.tar.gz']
+checksums = ['56f5afaa0ddc256791c405719b6436a83b92dcd5be37fe860dea103aee8250a2']
+
+configopts = '--enable-shared'
+
+builddependencies = [
+    ('M4', '1.4.18'),
+]
+
+sanity_check_paths = {
+    'files': ['include/pnetcdf.h', 'include/pnetcdf.inc', 'include/pnetcdf.mod', 'lib/libpnetcdf.a'],
+    'dirs': [],
+}
+
+moduleclass = 'data'
diff --git a/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb b/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..09d0d58443905b2770901c4495d728d2892d2da9
--- /dev/null
+++ b/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'CMakeMake'
+
+name = 'Qhull'
+version = '2020.1'
+
+homepage = 'http://www.qhull.org'
+description = """
+Qhull computes the convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point,
+furthest-site Delaunay triangulation, and furthest-site Voronoi diagram. The source code runs in 2-d, 3-d, 4-d,
+and higher dimensions. Qhull implements the Quickhull algorithm for computing the convex hull.
+"""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+# Recently changed the Unix version numbering see http://www.qhull.org/src/Changes.txt
+# and https://github.com/Homebrew/homebrew-science/issues/3353
+sources = ['%(namelower)s-%(version_major)s-src-8.0.0.tgz']
+source_urls = ['http://www.qhull.org/download/']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('CMake', '3.18.0'),
+]
+
+
+sanity_check_paths = {
+    'files': ['bin/qhull', 'lib/libqhull.%s' % SHLIB_EXT, 'lib/pkgconfig/qhull.pc'],
+    'dirs': [],
+}
+
+modextrapaths = {
+    'CPATH': ['qhull/include'],
+}
+
+parallel = 1
+
+moduleclass = 'math'
diff --git a/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb b/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..34018ae3b1ed3a1fe5dd602c68b52885e494578d
--- /dev/null
+++ b/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb
@@ -0,0 +1,34 @@
+easyblock = 'MakeCp'
+
+name = 'qrupdate'
+version = '1.1.2'
+
+homepage = 'https://sourceforge.net/projects/qrupdate/'
+description = """qrupdate is a Fortran library for fast updates of QR and Cholesky decompositions."""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = [SOURCEFORGE_SOURCE]
+
+patches = ['%(name)s-%(version)s_makeconf.patch']
+
+builddependencies = [
+    ('binutils', '2.34')
+]
+
+buildopts = 'lib'
+
+files_to_copy = [(['libqrupdate.a'], 'lib')]
+
+sanity_check_paths = {
+    'files': ['lib/libqrupdate.a'],
+    'dirs': [],
+}
+
+parallel = 1
+
+moduleclass = 'numlib'
diff --git a/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch b/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8e0f5c03c6296679d934b64ce3ff9d510808b1c9
--- /dev/null
+++ b/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch
@@ -0,0 +1,17 @@
+# Pick FC and FFLAGS from environmental variables
+# March 8th 2016 B. Hajgato (Free Uviveristy Brussels - VUB)
+--- qrupdate-1.1.2/Makeconf.old	2010-01-19 12:35:49.000000000 +0100
++++ qrupdate-1.1.2/Makeconf	2016-03-08 20:51:11.662603099 +0100
+@@ -1,9 +1,9 @@
+ # set this to your compiler's executable name (e.g. gfortran, g77)
+-FC=gfortran
++FC?=gfortran
+ # requested flags
+-FFLAGS=-fimplicit-none -O3 -funroll-loops 
++FFLAGS?=-fimplicit-none -O3 -funroll-loops 
+ # set if you need shared library
+-FPICFLAGS=-fPIC
++FPICFLAGS=
+ 
+ # BLAS library (only required for tests)
+ BLAS=-lblas
diff --git a/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9a3883116196a44240b3bdc026a9e678e209c82e
--- /dev/null
+++ b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,44 @@
+easyblock = 'PythonPackage'
+
+name = 'rencode'
+version = '1.0.5'
+versionsuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = [PYPI_SOURCE]
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+]
+
+maxparallel = 12
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+options = {'modulename': 'rencode'}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/'],
+}
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb b/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb
new file mode 100644
index 0000000000000000000000000000000000000000..938c66f06f51237f7dc32b1055f5742b6cff159c
--- /dev/null
+++ b/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb
@@ -0,0 +1,33 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild
+#
+# Copyright:: Copyright 2016 Forschungszentrum Juelich GmbH
+# Authors::   Damian Alvarez <d.alvarez@fz-juelich.de>
+# License::   MIT/GPL
+# $Id$
+##
+
+easyblock = "Tarball"
+
+name = "rpmrebuild"
+version = "2.15"
+
+homepage = 'http://rpmrebuild.sourceforge.net/'
+description = """rpmrebuild is a tool to build an RPM file from a package that has already been installed"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = SYSTEM
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+modextrapaths = {'PATH': ['']}
+modextravars = {'RPMREBUILD_ROOT_DIR': '%(installdir)s'}
+
+sanity_check_paths = {
+    'files': ["rpmrebuild"],
+    'dirs': []
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c771059b9fdbe96ce2260d9dceb2364a54a70972
--- /dev/null
+++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb
@@ -0,0 +1,184 @@
+# Tensorflow takes a LOT of space during install. Try using --buildpath=$HOME/temp
+easyblock = 'PythonBundle'
+
+name = 'TensorFlow'
+version = '2.3.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://www.tensorflow.org/'
+description = "An open-source software library for Machine Intelligence"
+
+toolchain = {'name': 'gomkl', 'version': '2020'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+local_cudaver = '11.0'
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Bazel', '3.6.0'),
+    ('protobuf', '3.13.0'),
+    # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053
+    ('git', '2.28.0'),
+    ('pybind11', '2.5.0', versionsuffix),
+]
+dependencies = [
+    ('CUDA', local_cudaver, '', True),
+    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True),
+    ('NCCL', '2.7.8-1', '-CUDA-%s' % local_cudaver),
+    ('Python', '3.8.5'),
+    #('SciPy-Stack', '2020', pysuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('h5py', '2.10.0', versionsuffix),
+    ('cURL', '7.71.1'),
+    ('double-conversion', '3.1.5'),
+    ('flatbuffers', '1.12.0'),
+    ('giflib', '5.2.1'),
+    ('hwloc', '2.2.0'),
+    ('ICU', '67.1'),
+    ('JsonCpp', '1.9.4'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('LMDB', '0.9.24'),
+    ('NASM', '2.15.03'),
+    ('nsync', '1.24.0'),
+    ('SQLite', '3.32.3'),
+    ('PCRE', '8.44'),
+    ('protobuf-python', '3.13.0', versionsuffix),
+    ('libpng', '1.6.37'),
+    ('snappy', '1.1.8'),
+    ('SWIG', '4.0.2', versionsuffix),
+    ('zlib', '1.2.11'),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'sanity_pip_check': True,
+}
+use_pip = True
+
+# Dependencies created and updated using findPythonDeps.sh:
+# https://gist.github.com/Flamefire/49426e502cd8983757bd01a08a10ae0d
+exts_list = [
+    ('numpy', '1.18.5', {
+        'source_urls': ['https://github.com/numpy/numpy/releases/download/v1.18.5/'],
+        'patches': ['numpy-1.14.2-mkl.patch',
+                    'numpy-1.14.2-xhost.patch',
+                    ],
+    }),
+    ('pandas', '1.1.3'
+     ),    
+    ('Markdown', '3.2.2', {
+        'checksums': ['1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17'],
+    }),
+    ('pyasn1-modules', '0.2.8', {
+        'checksums': ['905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e'],
+    }),
+    ('rsa', '4.6', {
+        'checksums': ['109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa'],
+    }),
+    ('cachetools', '4.1.1', {
+        'checksums': ['bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20'],
+    }),
+    ('google-auth', '1.22.1', {
+        'modulename': 'google.auth',
+    }),
+    ('oauthlib', '3.1.0', {
+        'checksums': ['bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889'],
+    }),
+    ('requests-oauthlib', '1.3.0', {
+        'checksums': ['b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a'],
+    }),
+    ('google-auth-oauthlib', '0.4.1', {
+        'checksums': ['88d2cd115e3391eb85e1243ac6902e76e77c5fe438b7276b297fbe68015458dd'],
+    }),
+    ('Werkzeug', '1.0.1', {
+        'checksums': ['6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c'],
+    }),
+    ('absl-py', '0.10.0', {
+        'modulename': 'absl',
+        'checksums': ['b20f504a7871a580be5268a18fbad48af4203df5d33dbc9272426cb806245a45'],
+    }),
+    ('astunparse', '1.6.3', {
+        'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'],
+    }),
+    ('grpcio', '1.33.1', {
+        'modulename': 'grpc',
+    }),
+    ('tensorboard-plugin-wit', '1.7.0', {
+        'source_tmpl': 'tensorboard_plugin_wit-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['ee775f04821185c90d9a0e9c56970ee43d7c41403beb6629385b39517129685b'],
+    }),
+    ('tensorboard', '2.3.0', {
+        'source_tmpl': 'tensorboard-%(version)s-py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['d34609ed83ff01dd5b49ef81031cfc9c166bba0dabd60197024f14df5e8eae5e'],
+    }),
+    ('google-pasta', '0.2.0', {
+        'modulename': 'pasta',
+        'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'],
+    }),
+    ('termcolor', '1.1.0', {
+        'checksums': ['1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b'],
+    }),
+    ('tensorflow-estimator', '2.3.0', {
+        'source_tmpl': 'tensorflow_estimator-%(version)s-py2.py3-none-any.whl',
+        'unpack_sources': False,
+        'checksums': ['b75e034300ccb169403cf2695adf3368da68863aeb0c14c3760064c713d5c486'],
+    }),
+    ('astor', '0.8.1', {
+    }),
+    ('gast', '0.3.3', {
+        'checksums': ['b881ef288a49aa81440d2c5eb8aeefd4c2bb8993d5f50edae7413a85bfdb3b57'],
+    }),
+    ('opt-einsum', '3.3.0', {
+        'source_tmpl': 'opt_einsum-%(version)s.tar.gz',
+        'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'],
+    }),
+    ('wrapt', '1.12.1', {
+        'checksums': ['b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7'],
+    }),
+    ('Keras-Preprocessing', '1.1.2', {
+        'source_tmpl': 'Keras_Preprocessing-%(version)s.tar.gz',
+        'checksums': ['add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3'],
+    }),
+    (name, version, {
+        'patches': [
+            'TensorFlow-2.1.0_fix-cuda-build.patch',
+            'TensorFlow-2.1.0_fix-system-nasm.patch',
+            'TensorFlow-2.3.0_fix-json-include-style.patch',
+            'TensorFlow-2.3.0_fix-system_absl_py.patch',
+            'TensorFlow-2.3.0_fix-system-protobuf.patch',
+            'TensorFlow-2.3.0_fix-system-protobuf2.patch',
+            'TensorFlow-2.3.0_fix-protoc-build.patch',
+            'TensorFlow-2.3.0_revert-tools-to-exectools-renaming.patch',
+            'TensorFlow-2.3.1-fix-numpy-gcc10.patch',
+        ],
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'],
+        # 'test_script': 'TensorFlow-2.x_mnist-test.py', # Fails on juwels login nodes
+        'checksums': [
+            'ee534dd31a811f7a759453567257d1e643f216d8d55a25c32d2fbfff8153a1ac',  # v2.3.1.tar.gz
+            '78c20aeaa7784b8ceb46238a81e8c2461137d28e0b576deeba8357d23fbe1f5a',  # TensorFlow-2.1.0_fix-cuda-build.patch
+            # TensorFlow-2.1.0_fix-system-nasm.patch
+            '6671e40d60edaf1e57b1861aa3b2178d48f9b7dfb5b5c0d44db541116f848f2a',
+            # TensorFlow-2.3.0_fix-json-include-style.patch
+            'e04f5d9aa4c1222393b2cad4b84cd63128ef56eb5cc732d2afbc5d98dfa596a4',
+            # TensorFlow-2.3.0_fix-system_absl_py.patch
+            '04e53b637ca64c4804a4a8d636d75e3c09257034b143b70a33bfee09e6ab4b10',
+            # TensorFlow-2.3.0_fix-system-protobuf.patch
+            '4407c3f126eb9d3c1658ef8d6ab3a26e7ed2a40ac869dd194d8a1282f6432c1d',
+            # TensorFlow-2.3.0_fix-system-protobuf2.patch
+            '74718e007acb7f5f016848218421895a33e9e894620154482deb75408225577d',
+            # TensorFlow-2.3.0_fix-protoc-build.patch
+            '78a8390ea5e06dfcfb25f6434721abbe678e37c4ad7f052aad766c4df399bd53',
+            # TensorFlow-2.3.0_revert-tools-to-exectools-renaming.patch
+            '1a72f072a764bf66733445ce027c0bad7de7c88092363c0e2a7b91a422608d56',
+            # TensorFlow-2.3.1-fix-numpy-gcc10.patch
+            '48250cb9f5287438021ec50f32618b200a90ca81be069f1d888fdef655ed6eed',
+        ],
+	'cuda_compute_capabilities': ['7.0', '7.5', '8.0'],
+    }),
+]
+
+moduleclass = 'lib'
diff --git a/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb b/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..ceb1f02fe628ded1cd643343eb4a78d76b3f966d
--- /dev/null
+++ b/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb
@@ -0,0 +1,47 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild
+#
+# Copyright:: Copyright 2012-2013 University of Luxembourg/Computer Science and Communications Research Unit
+# Authors::   Valentin Plugaru <valentin.plugaru@gmail.com>
+# License::   MIT/GPL
+# $Id$
+#
+# This work implements a part of the HPCBIOS project and is a component of the policy:
+# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_05-06.html
+##
+easyblock = 'ConfigureMake'
+
+name = 'tcsh'
+version = '6.22.02'
+
+homepage = 'https://www.tcsh.org'
+description = """Tcsh is an enhanced, but completely compatible version of the Berkeley UNIX C shell (csh). 
+ It is a command language interpreter usable both as an interactive login shell and a shell script command 
+ processor. It includes a command-line editor, programmable word completion, spelling correction, a history 
+ mechanism, job control and a C-like syntax.
+"""
+
+site_contacts = 'a.strube@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+sources = [SOURCELOWER_TAR_GZ]
+source_urls = [
+    'ftp://ftp.astron.com/pub/%(namelower)s',
+    'ftp://ftp.astron.com/pub/%(namelower)s/old',
+]
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('ncurses', '6.2')
+]
+
+sanity_check_paths = {
+    'files': ["bin/tcsh"],
+    'dirs': []
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb b/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..3bf0f70a4452f445269f286367f9b80e5b52e950
--- /dev/null
+++ b/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb
@@ -0,0 +1,41 @@
+easyblock = 'ConfigureMake'
+
+name = 'texinfo'
+version = '6.7'
+
+homepage = 'https://www.gnu.org/software/texinfo/'
+description = """Texinfo is the official documentation format of the GNU project."""
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_XZ]
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('ncurses', '6.2'),
+    ('texlive', '20200406'),
+]
+
+preinstallopts = "make TEXMF=%(installdir)s/texmf install-tex && "
+
+# This will overwrite a users $TEXMFHOME so this module is best used as a build dependency
+modextravars = {'TEXMFHOME': '%(installdir)s/texmf'}
+modloadmsg = "\\n"
+modloadmsg += "WARNING: This texinfo module has (re)defined the value for the environment variable \\$TEXMFHOME.\\n"
+modloadmsg += "If you use a custom texmf directory (such as ~/texmf) you should copy files found in the\\n"
+modloadmsg += "new \\$TEXMFHOME to your custom directory and reset the value of \\$TEXMFHOME to point to that space:\\n"
+modloadmsg += "\\tcp -r \\$TEXMFHOME/* /path/to/your/texmf\\n"
+modloadmsg += "\\texport TEXMFHOME=/path/to/your/texmf\\n"
+
+sanity_check_paths = {
+    'files': ['bin/info', 'bin/makeinfo', 'bin/pod2texi', 'bin/texi2pdf', 'texmf/tex/texinfo/texinfo.tex'],
+    'dirs': [],
+}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb b/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0bfa984ab3a17a8839b321813a6d45d8be1aa859
--- /dev/null
+++ b/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb
@@ -0,0 +1,62 @@
+# Based off the 2017 version by John Dey jfdey@fredhutch.org
+# https://github.com/easybuilders/easybuild-easyconfigs/pull/5085
+easyblock = 'Tarball'
+
+name = 'texlive'
+version = '20200406'
+
+homepage = 'https://tug.org'
+description = """TeX is a typesetting language. Instead of visually formatting your text, you enter your manuscript
+ text intertwined with TeX commands in a plain text file. You then run TeX to produce formatted output, such as a
+ PDF file. Thus, in contrast to standard word processors, your document is a separate file that does not pretend to
+ be a representation of the final typeset output, and so can be easily edited and manipulated."""
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['ftp://tug.org/texlive/historic/2020/']
+sources = [
+    {
+        'download_filename': 'install-tl-unx.tar.gz',
+        'filename': 'install-tl-unx-%(version)s.tar.gz',
+    }
+]
+checksums = ['7c90a50e55533d57170cbc7c0370a010019946eb18570282948e1af6f809382d']
+
+dependencies = [
+    ('X11', '20200222'),
+    ('libpng', '1.6.37'),
+    ('OpenGL', '2020'),
+    ('Perl', '5.32.0'),
+    ('HarfBuzz', '2.6.7'),
+    # Poppler, optional - PDF rendering library
+    # ('poppler', '0.90.1'),
+    ('cairo', '1.17.2'),
+    ('fontconfig', '2.13.92'),
+    ('zlib', '1.2.11'),
+    # Graphite2, optional - font system for lesser-known languages
+    # ('graphite2', '1.3.14'),
+]
+
+postinstallcmds = [
+    'echo "TEXDIR         %(installdir)s/" > %(installdir)s/texlive.profile && '
+    'echo "TEXMFLOCAL     %(installdir)s/texmf-local" >> %(installdir)s/texlive.profile && '
+    'echo "TEXMFSYSCONFIG %(installdir)s/texmf-config" >> %(installdir)s/texlive.profile && '
+    'echo "TEXMFSYSVAR    %(installdir)s/texmf-var" >> %(installdir)s/texlive.profile && '
+    '%(builddir)s/install-tl-%(version)s/install-tl -profile %(installdir)s/texlive.profile'
+]
+
+modextrapaths = {
+    'PATH': 'bin/x86_64-linux',
+    'INFOPATH': 'texmf-dist/doc/info',
+    'MANPATH': 'texmf-dist/doc/man',
+}
+modextravars = {
+    'TEXMFHOME': '%(installdir)s/texmf-dist'
+}
+
+sanity_check_paths = {
+    'files': ['bin/x86_64-linux/tex', 'bin/x86_64-linux/latex'],
+    'dirs': ['bin/x86_64-linux', 'texmf-dist'],
+}
+
+moduleclass = 'devel'
diff --git a/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb b/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9e483332372855c37f319c94bff57adfb45b0015
--- /dev/null
+++ b/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb
@@ -0,0 +1,31 @@
+easyblock = 'Binary'
+
+name = 'uglifyjs'
+version = '3.11.4'
+
+homepage = 'https://github.com/mishoo/UglifyJS'
+description = """UglifyJS is a JavaScript parser, minifier, compressor and beautifier toolkit."""
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+source_urls = ['https://github.com/mishoo/UglifyJS/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['9220bf2c4b11ba225d49a8fecf161501802246f16c00d6b0b0a49ab06fc90b02']
+
+builddependencies = [('binutils', '2.34')]
+
+dependencies = [
+    ('nodejs', '12.19.0'),
+]
+
+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/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..6973007036ca84087e9dc0d154f5411efd6884ac
--- /dev/null
+++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb
@@ -0,0 +1,30 @@
+easyblock = 'ConfigureMake'
+
+name = 'Valgrind'
+version = '3.16.1'
+
+homepage = 'http://valgrind.org/downloads/'
+description = "Valgrind: Debugging and profiling tools"
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+source_urls = ['ftp://sourceware.org/pub/valgrind/']
+sources = [SOURCELOWER_TAR_BZ2]
+
+toolchain = {'name': 'gpsmpi', 'version': '2020'}
+
+preconfigopts = 'unset CC CFLAGS &&'
+configopts = ' --with-mpicc="$MPICC"'
+
+local_binaries = [
+    'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff',
+    'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb'
+]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_binaries] +
+             ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT],
+    'dirs': []
+}
+
+moduleclass = 'debugger'
diff --git a/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..1c424241219c90dec3cc354cc959228ecf856824
--- /dev/null
+++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb
@@ -0,0 +1,30 @@
+easyblock = 'ConfigureMake'
+
+name = 'Valgrind'
+version = '3.16.1'
+
+homepage = 'http://valgrind.org/downloads/'
+description = "Valgrind: Debugging and profiling tools"
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+source_urls = ['ftp://sourceware.org/pub/valgrind/']
+sources = [SOURCELOWER_TAR_BZ2]
+
+toolchain = {'name': 'iimpi', 'version': '2020'}
+
+preconfigopts = 'unset CC CFLAGS &&'
+configopts = ' --with-mpicc="$MPICC"'
+
+local_binaries = [
+    'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff',
+    'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb'
+]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_binaries] +
+             ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT],
+    'dirs': []
+}
+
+moduleclass = 'debugger'
diff --git a/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c63f419b854fa6003177d92ac345bd99325c7556
--- /dev/null
+++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb
@@ -0,0 +1,30 @@
+easyblock = 'ConfigureMake'
+
+name = 'Valgrind'
+version = '3.16.1'
+
+homepage = 'http://valgrind.org/downloads/'
+description = "Valgrind: Debugging and profiling tools"
+
+site_contacts = 'a.kreuzer@fz-juelich.de'
+
+source_urls = ['ftp://sourceware.org/pub/valgrind/']
+sources = [SOURCELOWER_TAR_BZ2]
+
+toolchain = {'name': 'ipsmpi', 'version': '2020'}
+
+preconfigopts = 'unset CC CFLAGS &&'
+configopts = ' --with-mpicc="$MPICC"'
+
+local_binaries = [
+    'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff',
+    'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb'
+]
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in local_binaries] +
+             ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT],
+    'dirs': []
+}
+
+moduleclass = 'debugger'
diff --git a/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb b/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..f290dc1c417e080f483e1b69715a276d77e0081d
--- /dev/null
+++ b/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb
@@ -0,0 +1,36 @@
+easyblock = 'ConfigureMake'
+
+name = 'x264'
+version = '20200912'
+
+homepage = 'http://www.videolan.org/developers/x264.html'
+description = """x264 is a free software library and application for encoding video streams into the H.264/MPEG-4
+ AVC compression format, and is released under the terms of the GNU GPL.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://code.videolan.org/videolan/x264/-/archive/d198931a63049db1f2c92d96c34904c69fde8117/']
+sources = ['x264-d198931a63049db1f2c92d96c34904c69fde8117.tar.gz']
+checksums = ['31dc10bf77dcf7359094c1837359ff151dbc4bcf2536d76729ef9ad88bf7c194']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('NASM', '2.15.03'),
+]
+
+configopts = "  --enable-shared --enable-static "
+
+sanity_check_paths = {
+    'files': ['bin/x264', 'include/x264_config.h', 'include/x264.h', 'lib/libx264.a', 'lib/libx264.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb b/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..30a8179083c3e1a57f8651322b2c5b44ca4a6f23
--- /dev/null
+++ b/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'CMakeMake'
+
+name = 'x265'
+version = '3.4'
+
+homepage = 'https://www.videolan.org/developers/x265.html'
+description = """x265 is a free software library and application for encoding video streams
+ into the H.265/MPEG-H HEVC compression format, and is released under the terms of the GNU GPL.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/videolan/x265/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['544d147bf146f8994a7bf8521ed878c93067ea1c7c6e93ab602389be3117eaaf']
+
+builddependencies = [
+    ('CMake', '3.18.0'),
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('NASM', '2.15.03'),
+]
+
+separate_build_dir = True
+srcdir = '../x265-%(version)s/source'
+
+configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
+
+sanity_check_paths = {
+    'files': ['bin/x265', 'include/x265_config.h', 'include/x265.h', 'lib/libx265.a', 'lib/libx265.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+moduleclass = 'vis'
diff --git a/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..238649eab57acc453aace9ebdb246e8bc7aaae00
--- /dev/null
+++ b/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,68 @@
+easyblock = 'PythonPackage'
+
+name = 'xpra'
+version = '4.0.4'
+versionsuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['http://xpra.org/src/']
+sources = [
+    'xpra-%(version)s.tar.bz2',
+    'xpra-html5-%(version)s.tar.bz2',
+]
+checksums = [
+    'a443282225d2498fe372ebc01bebf884fdecaf4d181a7053be420424a2b6dde7',
+    'c294f80016a2cbf8878673cba7884ac2ffcaf5495141975f65eb4e93a08623db',
+]
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('X11', '20200222'),
+    ('SciPy-Stack', '2020', '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')),
+    ('PyCairo', '1.18.2', '-Python-%(pyver)s'),
+    ('PyGObject', '3.34.0', '-Python-%(pyver)s'),
+    ('GTK+', '3.24.17'),
+    ('rencode', '1.0.5', '-Python-%(pyver)s'),
+    ('lz4', '3.1.0', '-Python-%(pyver)s'),
+    ('yuicompressor', '2.4.8', '-Python-%(pyver)s'),
+    ('x264', '20200912'),
+    ('x265', '3.4'),
+    ('libvpx', '1.9.0'),
+    ('FFmpeg', '4.3.1'),
+    ('libwebp', '1.1.0'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('zlib', '1.2.11'),
+    ('LibTIFF', '4.1.0'),
+    ('freetype', '2.10.1'),
+    ('libyuv', '20201024'),
+    ('uglifyjs', '3.11.4'),
+]
+
+prebuildopts = " export CFLAGS='-Wno-error=unused-function' && "
+installopts = "--with-tests --without-service"
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages', 'lib64/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/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..da015d63ed316562930d1cec1ebdc2e926c6f4c1
--- /dev/null
+++ b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb
@@ -0,0 +1,41 @@
+easyblock = 'PythonPackage'
+
+name = 'yuicompressor'
+version = '2.4.8'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://github.com/sprat/yuicompressor'
+description = """YUI Compressor is a JavaScript and CSS minifier written in Java."""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
+
+source_urls = ['https://github.com/sprat/yuicompressor/archive/']
+sources = ['%(version)s.tar.gz']
+checksums = ['0054abb77cc151147597aeaa5b47b6843925d3293e2e44d5b36e68ee54a1154f']
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Java', '1.8', '', True),
+]
+
+use_pip = True
+sanity_pip_check = True
+download_dep_fail = True
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages', 'lib64/python%(pyshortver)s/site-packages'],
+}
+
+sanity_check_paths = {
+    'files': ['bin/%(name)s'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'],
+}
+
+moduleclass = 'vis'