From 72bd397bfd36bda82fd0caa2fe4c637d77d261fd Mon Sep 17 00:00:00 2001
From: Damian Alvarez <swmanage@jwlogin09.juwels>
Date: Thu, 25 Feb 2021 18:13:44 +0100
Subject: [PATCH] To support NVHPC 21

---
 .gitlab-ci.yml                                |  1 +
 ...21.eb => ecCodes-2.18.0-npsmpic-2020.1.eb} |  2 +-
 ...-2021.eb => HDF5-1.10.6-npsmpic-2020.1.eb} |  2 +-
 ...5py-2.10.0-npsmpic-2020.1-Python-3.8.5.eb} |  2 +-
 ...1.eb => imkl-2020.2.254-npsmpic-2020.1.eb} |  2 +-
 ...i4py-3.0.3-npsmpic-2020.1-Python-3.8.5.eb} |  2 +-
 Golden_Repo/n/NVHPC/NVHPC-21.1-GCC-9.3.0.eb   | 10 ++-
 ...eb => netCDF-C++4-4.3.1-npsmpic-2020.1.eb} |  2 +-
 ...=> netCDF-Fortran-4.5.3-npsmpic-2020.1.eb} |  2 +-
 ...2021.eb => netCDF-4.7.4-npsmpic-2020.1.eb} |  2 +-
 .../{npsmpic-2021.eb => npsmpic-2020.1.eb}    |  2 +-
 ... parallel-netcdf-1.12.1-npsmpic-2020.1.eb} |  2 +-
 ...021.eb => SIONlib-1.7.6-npsmpic-2020.1.eb} |  2 +-
 .../s/Scalasca/Scalasca-2.5-npsmpic-2021.eb   | 52 --------------
 .../s/Score-P/Score-P-6.0-npsmpic-2021.eb     | 67 -------------------
 15 files changed, 20 insertions(+), 132 deletions(-)
 rename Golden_Repo/e/ecCodes/{ecCodes-2.18.0-npsmpic-2021.eb => ecCodes-2.18.0-npsmpic-2020.1.eb} (95%)
 rename Golden_Repo/h/HDF5/{HDF5-1.10.6-npsmpic-2021.eb => HDF5-1.10.6-npsmpic-2020.1.eb} (92%)
 rename Golden_Repo/h/h5py/{h5py-2.10.0-npsmpic-2021-Python-3.8.5.eb => h5py-2.10.0-npsmpic-2020.1-Python-3.8.5.eb} (95%)
 rename Golden_Repo/i/imkl/{imkl-2020.2.254-npsmpic-2021.eb => imkl-2020.2.254-npsmpic-2020.1.eb} (95%)
 rename Golden_Repo/m/mpi4py/{mpi4py-3.0.3-npsmpic-2021-Python-3.8.5.eb => mpi4py-3.0.3-npsmpic-2020.1-Python-3.8.5.eb} (92%)
 rename Golden_Repo/n/netCDF-C++4/{netCDF-C++4-4.3.1-npsmpic-2021.eb => netCDF-C++4-4.3.1-npsmpic-2020.1.eb} (93%)
 rename Golden_Repo/n/netCDF-Fortran/{netCDF-Fortran-4.5.3-npsmpic-2021.eb => netCDF-Fortran-4.5.3-npsmpic-2020.1.eb} (92%)
 rename Golden_Repo/n/netCDF/{netCDF-4.7.4-npsmpic-2021.eb => netCDF-4.7.4-npsmpic-2020.1.eb} (96%)
 rename Golden_Repo/n/npsmpic/{npsmpic-2021.eb => npsmpic-2020.1.eb} (95%)
 rename Golden_Repo/p/parallel-netcdf/{parallel-netcdf-1.12.1-npsmpic-2021.eb => parallel-netcdf-1.12.1-npsmpic-2020.1.eb} (95%)
 rename Golden_Repo/s/SIONlib/{SIONlib-1.7.6-npsmpic-2021.eb => SIONlib-1.7.6-npsmpic-2020.1.eb} (95%)
 delete mode 100644 Golden_Repo/s/Scalasca/Scalasca-2.5-npsmpic-2021.eb
 delete mode 100644 Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2021.eb

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d68a951b7..ad624be3b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,6 +7,7 @@ check_style:
     - pip3 install --user pep8
     - pip3 install --user easybuild
   script:
+    - export SYSTEMNAME="juwelsbooster" # Make this the default for packages like NVHPC
     - export PATH="$HOME/.local/bin:$PATH"
     - export PYTHONPATH="$HOME/.local/lib/python3.6/site-packages"
     - export EASYBUILD_INCLUDE_EASYBLOCKS="$CI_PROJECT_DIR/Custom_EasyBlocks/*.py,$CI_PROJECT_DIR/Custom_EasyBlocks/generic/*.py"
diff --git a/Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2021.eb b/Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2020.1.eb
similarity index 95%
rename from Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2021.eb
rename to Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2020.1.eb
index 7f93aaa4a..064fa0fdc 100644
--- a/Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2021.eb
+++ b/Golden_Repo/e/ecCodes/ecCodes-2.18.0-npsmpic-2020.1.eb
@@ -10,7 +10,7 @@ description = """ecCodes is a package developed by ECMWF which provides an appli
 
 site_contacts = 'a.ghasemi@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 
 source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
 sources = ['eccodes-%(version)s-Source.tar.gz']
diff --git a/Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2021.eb b/Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2020.1.eb
similarity index 92%
rename from Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2021.eb
rename to Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2020.1.eb
index 86aef3a41..c8bae61d1 100644
--- a/Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2021.eb
+++ b/Golden_Repo/h/HDF5/HDF5-1.10.6-npsmpic-2020.1.eb
@@ -8,7 +8,7 @@ description = """HDF5 is a unique technology suite that makes possible the manag
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'optarch': True, 'pic': True, 'usempi': True}
 
 source_urls = [
diff --git a/Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2021-Python-3.8.5.eb b/Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2020.1-Python-3.8.5.eb
similarity index 95%
rename from Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2021-Python-3.8.5.eb
rename to Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2020.1-Python-3.8.5.eb
index a4d709f51..2dc5e5d72 100644
--- a/Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2021-Python-3.8.5.eb
+++ b/Golden_Repo/h/h5py/h5py-2.10.0-npsmpic-2020.1-Python-3.8.5.eb
@@ -12,7 +12,7 @@ description = """HDF5 for Python (h5py) is a general-purpose Python interface to
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'usempi': True}
 
 source_urls = [PYPI_SOURCE]
diff --git a/Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2021.eb b/Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2020.1.eb
similarity index 95%
rename from Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2021.eb
rename to Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2020.1.eb
index 3a5d4900a..436919b25 100644
--- a/Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2021.eb
+++ b/Golden_Repo/i/imkl/imkl-2020.2.254-npsmpic-2020.1.eb
@@ -10,7 +10,7 @@ description = """Intel Math Kernel Library is a library of highly optimized,
 
 site_contacts = 'sc@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 
 sources = ['l_mkl_%(version)s.tgz']
 
diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2021-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2020.1-Python-3.8.5.eb
similarity index 92%
rename from Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2021-Python-3.8.5.eb
rename to Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2020.1-Python-3.8.5.eb
index ecfc94ba5..7122207d4 100644
--- a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2021-Python-3.8.5.eb
+++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-npsmpic-2020.1-Python-3.8.5.eb
@@ -10,7 +10,7 @@ description = """MPI for Python (mpi4py) provides bindings of the Message Passin
 
 site_contacts = 'a.kreuzer@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 
 source_urls = [BITBUCKET_DOWNLOADS]
 sources = [SOURCE_TAR_GZ]
diff --git a/Golden_Repo/n/NVHPC/NVHPC-21.1-GCC-9.3.0.eb b/Golden_Repo/n/NVHPC/NVHPC-21.1-GCC-9.3.0.eb
index 1c4c0cea9..6c4407747 100644
--- a/Golden_Repo/n/NVHPC/NVHPC-21.1-GCC-9.3.0.eb
+++ b/Golden_Repo/n/NVHPC/NVHPC-21.1-GCC-9.3.0.eb
@@ -32,9 +32,15 @@ dependencies = [
     ('numactl', '2.0.13', '', SYSTEM) 
 ]
 
-import os  # for using $SYSTEMNAME to determine compute capability
+# For using $SYSTEMNAME to determine compute capability. The local prefix is to appease the checker
+import os as local_os
 module_add_cuda = False
-cuda_compute_capabilities = {'juwels': '7.0', 'juwelsbooster': '8.0', 'jurecadc': '8.0', 'jusuf': '7.0'}[os.environ['SYSTEMNAME']]
+cuda_compute_capabilities = {
+    'juwels': '7.0',
+    'juwelsbooster': '8.0',
+    'jurecadc': '8.0',
+    'jusuf': '7.0'
+}[local_os.environ['SYSTEMNAME']]
 
 # specify default CUDA version that should be used by NVHPC
 # should match one of the CUDA versions that are included with this NVHPC version
diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2021.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2020.1.eb
similarity index 93%
rename from Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2021.eb
rename to Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2020.1.eb
index 889088603..0a8927a4e 100644
--- a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2021.eb
+++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-npsmpic-2020.1.eb
@@ -11,7 +11,7 @@ description = """NetCDF (network Common Data Form) is a set of software librarie
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'pic': True}
 
 source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2021.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2020.1.eb
similarity index 92%
rename from Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2021.eb
rename to Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2020.1.eb
index e55c36f5d..143a41427 100644
--- a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2021.eb
+++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-npsmpic-2020.1.eb
@@ -9,7 +9,7 @@ description = """NetCDF (network Common Data Form) is a set of software librarie
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'pic': True}
 
 source_urls = [
diff --git a/Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2021.eb b/Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2020.1.eb
similarity index 96%
rename from Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2021.eb
rename to Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2020.1.eb
index 638a00096..acfc28cf5 100644
--- a/Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2021.eb
+++ b/Golden_Repo/n/netCDF/netCDF-4.7.4-npsmpic-2020.1.eb
@@ -9,7 +9,7 @@ description = """NetCDF (network Common Data Form) is a set of software librarie
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'pic': True, 'usempi': True}
 
 source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
diff --git a/Golden_Repo/n/npsmpic/npsmpic-2021.eb b/Golden_Repo/n/npsmpic/npsmpic-2020.1.eb
similarity index 95%
rename from Golden_Repo/n/npsmpic/npsmpic-2021.eb
rename to Golden_Repo/n/npsmpic/npsmpic-2020.1.eb
index 05d5935d4..514004d15 100644
--- a/Golden_Repo/n/npsmpic/npsmpic-2021.eb
+++ b/Golden_Repo/n/npsmpic/npsmpic-2020.1.eb
@@ -1,7 +1,7 @@
 easyblock = 'Toolchain'
 
 name = 'npsmpic'
-version = '2021'
+version = '2020.1'
 
 homepage = '(none)'
 description = 'NVHPC based compiler toolchain, including Parastation MPICH2 for MPI support.'
diff --git a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2021.eb b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2020.1.eb
similarity index 95%
rename from Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2021.eb
rename to Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2020.1.eb
index 89dc178bb..5c1730964 100644
--- a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2021.eb
+++ b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-npsmpic-2020.1.eb
@@ -13,7 +13,7 @@ the only choice for carrying out parallel I/O on files that are in classic forma
 
 site_contacts = 's.luehrs@fz-juelich.de'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 toolchainopts = {'usempi': True, 'pic': True}
 
 source_urls = ['https://parallel-netcdf.github.io/Release/']
diff --git a/Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2021.eb b/Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2020.1.eb
similarity index 95%
rename from Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2021.eb
rename to Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2020.1.eb
index c04d31119..5a2e60d8e 100644
--- a/Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2021.eb
+++ b/Golden_Repo/s/SIONlib/SIONlib-1.7.6-npsmpic-2020.1.eb
@@ -15,7 +15,7 @@ post-processing utilities.
 
 site_contacts = 'Benedikt Steinbusch <b.steinbusch@fz-juelich.de>'
 
-toolchain = {'name': 'npsmpic', 'version': '2021'}
+toolchain = {'name': 'npsmpic', 'version': '2020.1'}
 
 patches = ['sionlib_psmpi.patch']
 
diff --git a/Golden_Repo/s/Scalasca/Scalasca-2.5-npsmpic-2021.eb b/Golden_Repo/s/Scalasca/Scalasca-2.5-npsmpic-2021.eb
deleted file mode 100644
index ac828acf9..000000000
--- a/Golden_Repo/s/Scalasca/Scalasca-2.5-npsmpic-2021.eb
+++ /dev/null
@@ -1,52 +0,0 @@
-##
-# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
-# Copyright:: Copyright 2013-2018 Juelich Supercomputing Centre, Germany
-# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
-#             Markus Geimer <m.geimer@fz-juelich.de>
-# License::   3-clause BSD
-#
-# This work is based on experiences from the UNITE project
-# http://apps.fz-juelich.de/unite/
-##
-
-easyblock = 'EB_Score_minus_P'
-
-name = 'Scalasca'
-version = '2.5'
-
-homepage = 'http://www.scalasca.org/'
-description = """
-Scalasca is a software tool that supports the performance optimization of
-parallel programs by measuring and analyzing their runtime behavior. The
-analysis identifies potential performance bottlenecks -- in particular
-those concerning communication and synchronization -- and offers guidance
-in exploring their causes.
-"""
-
-site_contacts = 'sc@fz-juelich.de'
-
-toolchain = {'name': 'npsmpic', 'version': '2021'}
-
-source_urls = ['http://apps.fz-juelich.de/scalasca/releases/scalasca/%(version_major_minor)s/dist']
-sources = [SOURCELOWER_TAR_GZ]
-
-builddependencies = [
-    ('CubeWriter', '4.5'),
-]
-
-dependencies = [
-    ('CubeGUI', '4.5'),
-    ('CubeLib', '4.5'),
-    ('OTF2', '2.2'),
-    ('Score-P', '6.0'),
-]
-
-sanity_check_paths = {
-    'files': ['bin/scalasca', ('lib/libpearl.replay.a', 'lib64/libpearl.replay.a')],
-    'dirs': [],
-}
-
-# Ensure that local metric documentation is found by CubeGUI
-modextrapaths = {'CUBE_DOCPATH': 'share/doc/scalasca/patterns'}
-
-moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2021.eb b/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2021.eb
deleted file mode 100644
index 4722c8f65..000000000
--- a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2021.eb
+++ /dev/null
@@ -1,67 +0,0 @@
-##
-# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
-# Copyright:: Copyright 2013-2018 Juelich Supercomputing Centre, Germany
-# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
-#             Markus Geimer <m.geimer@fz-juelich.de>
-# License::   3-clause BSD
-#
-# This work is based on experiences from the UNITE project
-# http://apps.fz-juelich.de/unite/
-##
-
-easyblock = 'EB_Score_minus_P'
-
-name = 'Score-P'
-version = '6.0'
-
-homepage = 'http://www.score-p.org'
-description = """
-The Score-P measurement infrastructure is a highly scalable and easy-to-use
-tool suite for profiling, event tracing, and online analysis of HPC
-applications.
-"""
-
-site_contacts = 'sc@fz-juelich.de'
-
-toolchain = {'name': 'npsmpic', 'version': '2021'}
-
-source_urls = ['https://www.vi-hps.org/cms/upload/packages/scorep/']
-sources = ['scorep-%(version)s.tar.gz']
-patches = [
-    'Score-P-6.0_binutils_2.34_api_change.patch',
-    'Score-P-6.0_no_PDT_for_CUDA.patch'
-]
-
-builddependencies = [
-    ('CUDA', '11.0', '', SYSTEM),
-    ('CubeLib', '4.5'),
-    ('CubeWriter', '4.5'),
-    # Unwinding/sampling support (optional):
-    ('libunwind', '1.4.0'),
-]
-
-dependencies = [
-    # binutils is implicitly available via GCC toolchain
-    ('OPARI2', '2.0.5'),
-    ('OTF2', '2.2'),
-    # Hardware counter support (optional):
-    ('PAPI', '6.0.0'),
-    # PDT source-to-source instrumentation support (optional):
-    ('PDT', '3.25'),
-]
-
-configopts = '--enable-shared '
-# Enable CUDA support
-configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux'
-
-sanity_check_paths = {
-    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
-              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
-              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
-    'dirs': [],
-}
-
-# Ensure that local metric documentation is found by CubeGUI
-modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
-
-moduleclass = 'perf'
-- 
GitLab