diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8998158c933cc019e90f40fe9b763afec99e2164..55945d80bfd185484c9f28b91e873e6a2c51ecf3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ check_style: - export SYSTEMNAME="juwelsbooster" # Make this the default for packages like NVHPC - export EASYBUILD_INCLUDE_EASYBLOCKS="$CI_PROJECT_DIR/Custom_EasyBlocks/*.py,$CI_PROJECT_DIR/Custom_EasyBlocks/generic/*.py" - export EASYBUILD_INCLUDE_MODULE_NAMING_SCHEMES="$CI_PROJECT_DIR/Custom_MNS/*.py" - - export EASYBUILD_INCLUDE_TOOLCHAINS="$CI_PROJECT_DIR/Custom_Toolchains/*.py,$CI_PROJECT_DIR/Custom_Toolchains/fft/*.py,$CI_PROJECT_DIR/Custom_Toolchains/compiler/*.py,$CI_PROJECT_DIR/Custom_Toolchains/linalg/*.py" + - export EASYBUILD_INCLUDE_TOOLCHAINS="$CI_PROJECT_DIR/Custom_Toolchains/*.py" - export EASYBUILD_ROBOT="$CI_PROJECT_DIR/Golden_Repo" - export EASYBUILD_HOOKS="$CI_PROJECT_DIR/Custom_Hooks/eb_hooks.py" # Let's make this a system where all the packages can be installed, so all of them can be checked without aborting diff --git a/Custom_Toolchains/npsmpic.py b/Custom_Toolchains/npsmpic.py index 33ee2bb06a5c7f081d5500ae6bec860414271477..bb0315b6c2b6b002b80886b419ed5e461b94f2c8 100644 --- a/Custom_Toolchains/npsmpic.py +++ b/Custom_Toolchains/npsmpic.py @@ -29,13 +29,15 @@ EasyBuild support for npsmpi compiler toolchain (includes NVHPC and ParaStationM @author: Damian Alvarez (Forschungszentrum Juelich) """ -from easybuild.toolchains.nvhpc import NvhpcToolchain +from easybuild.toolchains.nvhpc import NVHPCToolchain # We pull in MPI and CUDA at once so this maps nicely to HMNS from easybuild.toolchains.mpi.psmpi import Psmpi from easybuild.toolchains.compiler.cuda import Cuda # Order matters! -class Npsmpic(NvhpcToolchain, Cuda, Psmpi): + + +class Npsmpic(NVHPCToolchain, Cuda, Psmpi): """Compiler toolchain with NVHPC and ParaStationMPI, with CUDA as dependency.""" NAME = 'npsmpic' - SUBTOOLCHAIN = NvhpcToolchain.NAME + SUBTOOLCHAIN = NVHPCToolchain.NAME diff --git a/Custom_Toolchains/nvompic.py b/Custom_Toolchains/nvompic.py index b0a0e54a02fb833d33317810e1d83aa663b41fa3..c080deb838ea86e6e0bc568cc83d037618945ca7 100644 --- a/Custom_Toolchains/nvompic.py +++ b/Custom_Toolchains/nvompic.py @@ -30,7 +30,7 @@ EasyBuild support for nvompic compiler toolchain (includes NVHPC and OpenMPI, an @author: Sebastian Achilles (Forschungszentrum Juelich) """ -from easybuild.toolchains.nvhpc import NvhpcToolchain +from easybuild.toolchains.nvhpc import NVHPCToolchain # We pull in MPI and CUDA at once so this maps nicely to HMNS from easybuild.toolchains.mpi.openmpi import OpenMPI from easybuild.toolchains.compiler.cuda import Cuda @@ -38,7 +38,7 @@ from easybuild.toolchains.compiler.cuda import Cuda # Order matters! -class NVompic(NvhpcToolchain, Cuda, OpenMPI): +class NVompic(NVHPCToolchain, Cuda, OpenMPI): """Compiler toolchain with NVHPC and OpenMPI, with CUDA as dependency.""" NAME = 'nvompic' - SUBTOOLCHAIN = NvhpcToolchain.NAME + SUBTOOLCHAIN = NVHPCToolchain.NAME diff --git a/Golden_Repo/README.md b/Golden_Repo/README.md index a2b608e83cea0825b31a67a04fbd29f116856816..0e3755cf3dc98adbc44d6b897efe83ad6324a5ea 100644 --- a/Golden_Repo/README.md +++ b/Golden_Repo/README.md @@ -4,37 +4,37 @@ The table below shows the details of the toolchains in the 2022 stage: | Toolchain name | Toolchain version | Underlying GCC | Compiler | MPI | CUDA | Math libraries | Includes software from | |-----------------|---------------------------|----------------|------------------|-------------------------|----------|----------------|---------------------------| -| GCCcore | TBD | TBD | | | | | | +| GCCcore | 11.2.0 | 11.2.0 | | | | | | - Compilers | Toolchain name | Toolchain version | Underlying GCC | Compiler | MPI | CUDA | Math libraries | Includes software from | |-----------------|---------------------------|----------------|------------------|-------------------------|----------|----------------|---------------------------| -| GCC | TBD | TBD | GCC TBD | | | | GCCcore | -| NVHPC | TBD-GCC-TBD | TBD | NVHPC TBD | | TBD§ | | GCCcore | -| intel-compilers | TBD-GCC-TBD | TBD | Intel TBD | | | | GCCcore | +| GCC | 11.2.0 | 11.2.0 | GCC 11.2.0 | | | | GCCcore | +| NVHPC | TBD-GCC-11.2.0 | 11.2.0 | NVHPC TBD | | TBD§ | | GCCcore | +| intel-compilers | TBD-GCC-11.2.0 | 11.2.0 | Intel TBD | | | | GCCcore | - Compilers+MPI | Toolchain name | Toolchain version | Underlying GCC | Compiler | MPI | CUDA | Math libraries | Includes software from | |-----------------|---------------------------|----------------|------------------|-------------------------|----------|----------------|---------------------------| -| gpsmpi | 2022 | TBD | GCC TBD | ParaStationMPI 5.4.X | TBD§ | | GCCcore, GCC | -| nvompic | 2022 | TBD | NVHPC TBD | OpenMPI TBD | TBD | | GCCcore, NVHPC | -| npsmpic | 2022 | TBD | NVHPC TBD | ParaStationMPI 5.4.X | TBD | | GCCcore, NVHPC | -| ipsmpi | 2022 | TBD | Intel TBD | ParaStationMPI 5.4.X | TBD§ | | GCCcore, intel-compilers | -| iimpi | 2022 | TBD | Intel TBD | Intel MPI TBD | | | GCCcore, intel-compilers | -| gompi | 2022 | TBD | GCC TBD | OpenMPI TBD | TBD§ | | GCCcore, GCC | -| iompi | 2022 | TBD | Intel TBD | OpenMPI TBD | TBD§ | | GCCcore, intel-compilers | +| gpsmpi | 2022 | 11.2.0 | GCC 11.2.0 | ParaStationMPI 5.4.X | TBD§ | | GCCcore, GCC | +| nvompic | 2022 | 11.2.0 | NVHPC TBD | OpenMPI TBD | TBD | | GCCcore, NVHPC | +| npsmpic | 2022 | 11.2.0 | NVHPC TBD | ParaStationMPI 5.4.X | TBD | | GCCcore, NVHPC | +| ipsmpi | 2022 | 11.2.0 | Intel TBD | ParaStationMPI 5.4.X | TBD§ | | GCCcore, intel-compilers | +| iimpi | 2022 | 11.2.0 | Intel TBD | Intel MPI TBD | | | GCCcore, intel-compilers | +| gompi | 2022 | 11.2.0 | GCC 11.2.0 | OpenMPI TBD | TBD§ | | GCCcore, GCC | +| iompi | 2022 | 11.2.0 | Intel TBD | OpenMPI TBD | TBD§ | | GCCcore, intel-compilers | - Compilers+MPI+Math | Toolchain name | Toolchain version | Underlying GCC | Compiler | MPI | CUDA | Math libraries | Includes software from | |-----------------|---------------------------|----------------|------------------|-------------------------|----------|----------------|---------------------------| -| gpsmkl | 2022 | TBD | GCC TBD | ParaStationMPI 5.4.X | TBD§ | MKL TBD | GCCcore, GCC, gpsmpi | -| gomkl | 2022 | TBD | GCC TBD | OpenMPI TBD | TBD§ | MKL TBD | GCCcore, GCC, gompi | -| intel | 2022 | TBD | Intel TBD | Intel MPI TBD | | MKL TBD | GCCcore, GCC, iimpi | -| intel-para | 2022 | TBD | Intel TBD | ParaStationMPI 5.4.X | | MKL TBD | GCCcore, GCC, ipsmpi | -| iomkl | 2022 | TBD | Intel TBD | OpenMPI TBD | TBD§ | MKL TBD | GCCcore, GCC, iompi | +| gpsmkl | 2022 | 11.2.0 | GCC 11.2.0 | ParaStationMPI 5.4.X | TBD§ | MKL TBD | GCCcore, GCC, gpsmpi | +| gomkl | 2022 | 11.2.0 | GCC 11.2.0 | OpenMPI TBD | TBD§ | MKL TBD | GCCcore, GCC, gompi | +| intel | 2022 | 11.2.0 | Intel TBD | Intel MPI TBD | | MKL TBD | GCCcore, GCC, iimpi | +| intel-para | 2022 | 11.2.0 | Intel TBD | ParaStationMPI 5.4.X | | MKL TBD | GCCcore, GCC, ipsmpi | +| iomkl | 2022 | 11.2.0 | Intel TBD | OpenMPI TBD | TBD§ | MKL TBD | GCCcore, GCC, iompi | § Not included in the toolchain just as dependency diff --git a/Golden_Repo/b/Bison/Bison-3.7.6-GCCcore-11.2.0.eb b/Golden_Repo/b/Bison/Bison-3.7.6-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..8bb811de9dfb4cd955012a3227ee0c8957ee3e90 --- /dev/null +++ b/Golden_Repo/b/Bison/Bison-3.7.6-GCCcore-11.2.0.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = 'Bison' +version = '3.7.6' + +homepage = 'https://www.gnu.org/software/bison' +description = """Bison is a general-purpose parser generator that converts an annotated context-free grammar + into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['69dc0bb46ea8fc307d4ca1e0b61c8c355eb207d0b0c69f4f8462328e74d7b9ea'] + +builddependencies = [ + ('M4', '1.4.19'), + # use same binutils version that was used when building GCCcore toolchain + ('binutils', '2.37', '', SYSTEM), +] + + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')], + 'dirs': [], +} + +moduleclass = 'lang' diff --git a/Golden_Repo/b/Bison/Bison-3.7.6.eb b/Golden_Repo/b/Bison/Bison-3.7.6.eb new file mode 100644 index 0000000000000000000000000000000000000000..2f810b741e37b27f06286321abe6d95b94163e98 --- /dev/null +++ b/Golden_Repo/b/Bison/Bison-3.7.6.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'Bison' +version = '3.7.6' + +homepage = 'https://www.gnu.org/software/bison' + +description = """ + Bison is a general-purpose parser generator that converts an annotated + context-free grammar into a deterministic LR or generalized LR (GLR) parser + employing LALR(1) parser tables. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['69dc0bb46ea8fc307d4ca1e0b61c8c355eb207d0b0c69f4f8462328e74d7b9ea'] + +builddependencies = [ + ('M4', '1.4.19'), +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')], + 'dirs': [], +} + +moduleclass = 'lang' diff --git a/Golden_Repo/b/binutils/binutils-2.37-GCCcore-11.2.0.eb b/Golden_Repo/b/binutils/binutils-2.37-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..6743c603ed9a52a209e6edd9bdbe77e12a6433aa --- /dev/null +++ b/Golden_Repo/b/binutils/binutils-2.37-GCCcore-11.2.0.eb @@ -0,0 +1,33 @@ +name = 'binutils' +version = '2.37' + +homepage = 'https://directory.fsf.org/project/binutils/' +description = "binutils: GNU binary utilities" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['c44968b97cd86499efbc4b4ab7d98471f673e5414c554ef54afa930062dbbfcb'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.7.6'), + # use same binutils version that was used when building GCC toolchain, to 'bootstrap' this binutils + ('binutils', version, '', SYSTEM) +] + +dependencies = [ + # zlib is a runtime dep to avoid that it gets embedded in libbfd.so, + # see https://github.com/easybuilders/easybuild-easyblocks/issues/1350 + ('zlib', '1.2.11'), +] + +# avoid build failure when makeinfo command is not available +# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345 +buildopts = 'MAKEINFO=true' +installopts = buildopts + +moduleclass = 'tools' diff --git a/Golden_Repo/b/binutils/binutils-2.37.eb b/Golden_Repo/b/binutils/binutils-2.37.eb new file mode 100644 index 0000000000000000000000000000000000000000..2267cd7ed5a83bf28672e61f29849fed1f330713 --- /dev/null +++ b/Golden_Repo/b/binutils/binutils-2.37.eb @@ -0,0 +1,28 @@ +name = 'binutils' +version = '2.37' + +homepage = 'https://directory.fsf.org/project/binutils/' + +description = "binutils: GNU binary utilities" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['c44968b97cd86499efbc4b4ab7d98471f673e5414c554ef54afa930062dbbfcb'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.7.6'), + # zlib required, but being linked in statically, so not a runtime dep + ('zlib', '1.2.11'), +] + +# avoid build failure when makeinfo command is not available +# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345 +buildopts = 'MAKEINFO=true' +installopts = buildopts + +moduleclass = 'tools' diff --git a/Golden_Repo/f/flex/flex-2.6.4-GCCcore-11.2.0.eb b/Golden_Repo/f/flex/flex-2.6.4-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..ed320f24a6c99c0ce3415f85ca603e404366d3eb --- /dev/null +++ b/Golden_Repo/f/flex/flex-2.6.4-GCCcore-11.2.0.eb @@ -0,0 +1,37 @@ +name = 'flex' +version = '2.6.4' + +homepage = 'http://flex.sourceforge.net/' + +description = """ + Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner, + sometimes called a tokenizer, is a program which recognizes lexical patterns + in text. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = [ + 'https://github.com/westes/flex/releases/download/v%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995'] + +builddependencies = [ + ('Bison', '3.7.6'), + ('help2man', '1.48.3'), + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.37', '', SYSTEM), +] + +dependencies = [ + ('M4', '1.4.19'), +] + +# glibc 2.26 requires _GNU_SOURCE defined to expose reallocarray in the correct +# header, see https://github.com/westes/flex/issues/241 +preconfigopts = 'export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" && ' + +moduleclass = 'lang' diff --git a/Golden_Repo/f/flex/flex-2.6.4.eb b/Golden_Repo/f/flex/flex-2.6.4.eb new file mode 100644 index 0000000000000000000000000000000000000000..27bdd29c7b9a65178a6136a1e25659d01dd47911 --- /dev/null +++ b/Golden_Repo/f/flex/flex-2.6.4.eb @@ -0,0 +1,27 @@ +name = 'flex' +version = '2.6.4' + +homepage = 'http://flex.sourceforge.net/' +description = """Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner, + sometimes called a tokenizer, is a program which recognizes lexical patterns in text.""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = SYSTEM +toolchainopts = {'pic': True} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = [ + 'https://github.com/westes/flex/releases/download/v%(version)s/'] + +builddependencies = [ + ('M4', '1.4.19'), +] + +dependencies = [ + ('Bison', '3.7.6'), +] + +hidden = True + +moduleclass = 'lang' diff --git a/Golden_Repo/g/GCC/GCC-11.2.0.eb b/Golden_Repo/g/GCC/GCC-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..3622183241a2f493ac72e9a887bfc08484cf4ccf --- /dev/null +++ b/Golden_Repo/g/GCC/GCC-11.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'Bundle' + +name = 'GCC' +version = '11.2.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, +as well as libraries for these languages (libstdc++, libgcj,...). +This module supports NVPTX offloading support. If you want to use this you have to load the CUDA module. +""" + +site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>' + +toolchain = SYSTEM + +dependencies = [ + ('GCCcore', version), + # binutils built on top of GCCcore, which was built on top of (dummy-built) binutils + ('binutils', '2.37', '', ('GCCcore', version)), +] + +altroot = 'GCCcore' +altversion = 'GCCcore' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/Golden_Repo/g/GCCcore/GCCcore-11.2.0.eb b/Golden_Repo/g/GCCcore/GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..9658e22b53222d50114aad0cda70007dc42fc899 --- /dev/null +++ b/Golden_Repo/g/GCCcore/GCCcore-11.2.0.eb @@ -0,0 +1,74 @@ +easyblock = 'EB_GCC' + +name = 'GCCcore' +version = '11.2.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, +as well as libraries for these languages (libstdc++, libgcj,...). +This module supports NVPTX offloading support. If you want to use this you have to load the CUDA module. +""" + +site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>' + +toolchain = SYSTEM + +source_urls = [ + # GCC auto-resolving HTTP mirror + 'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', + 'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP + 'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR + 'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC + 'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies + 'http://gcc.cybermirror.org/infrastructure/', # HTTP mirror for GCC dependencies + 'http://isl.gforge.inria.fr/', # original HTTP source for ISL + 'https://sourceware.org/pub/newlib/', # for newlib + 'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools +] +sources = [ + 'gcc-%(version)s.tar.gz', + 'gmp-6.2.1.tar.bz2', + 'mpfr-4.1.0.tar.bz2', + 'mpc-1.2.1.tar.gz', + 'isl-0.24.tar.bz2', + 'newlib-4.1.0.tar.gz', + {'download_filename': 'd0524fb.tar.gz', + 'filename': 'nvptx-tools-20210115.tar.gz'}, +] +patches = [ + 'GCCcore-6.2.0-fix-find-isl.patch', + 'GCCcore-9.3.0_gmp-c99.patch', +] +checksums = [ + 'f0837f1bf8244a5cc23bd96ff6366712a791cfae01df8e25b137698aca26efc1', # gcc-11.2.0.tar.gz + 'eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c', # gmp-6.2.1.tar.bz2 + 'feced2d430dd5a97805fa289fed3fc8ff2b094c02d05287fd6133e7f1f0ec926', # mpfr-4.1.0.tar.bz2 + '17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459', # mpc-1.2.1.tar.gz + 'fcf78dd9656c10eb8cf9fbd5f59a0b6b01386205fe1934b3b287a0a1898145c0', # isl-0.24.tar.bz2 + 'f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154', # newlib-4.1.0.tar.gz + # nvptx-tools-20210115.tar.gz + '466abe1cef9cf294318ecb3c221593356f7a9e1674be987d576bc70d833d84a2', + # GCCcore-6.2.0-fix-find-isl.patch + '5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68', + # GCCcore-9.3.0_gmp-c99.patch + '0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e', +] + +builddependencies = [ + ('M4', '1.4.19'), + ('binutils', '2.37'), +] + +languages = ['c', 'c++', 'fortran'] + +withisl = True +withnvptx = True + +# Perl is only required when building with NVPTX support +if withnvptx: + osdependencies = ['perl'] + +# Make sure we replace the system cc with gcc with an alias +modaliases = {'cc': 'gcc'} + +moduleclass = 'compiler' diff --git a/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch b/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch new file mode 100644 index 0000000000000000000000000000000000000000..6334b6be3527921cba381caf0277f360482d93cf --- /dev/null +++ b/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch @@ -0,0 +1,14 @@ +# Don't use libmpc and libmpfr to find libisl +# by wpoely86@gmail.com +diff -ur gcc-6.1.0.orig/configure gcc-6.1.0/configure +--- gcc-6.1.0.orig/configure 2016-08-26 17:51:48.470524515 +0200 ++++ gcc-6.1.0/configure 2016-03-17 23:54:19.000000000 +0100 +@@ -6018,7 +6018,7 @@ + _isl_saved_LIBS=$LIBS + + CFLAGS="${_isl_saved_CFLAGS} ${islinc} ${gmpinc}" +- LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs} ${gmplibs}" ++ LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs}" + LIBS="${_isl_saved_LIBS} -lisl -lgmp" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isl 0.16, 0.15, or deprecated 0.14" >&5 diff --git a/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch b/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch new file mode 100644 index 0000000000000000000000000000000000000000..7c4c567c8469324c43ca4e82095e4455e597ca89 --- /dev/null +++ b/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch @@ -0,0 +1,67 @@ +add -std=c99 when building GMP, to avoid compilation errors with older GCC system compilers +author: Kenneth Hoste (HPC-UGent) +--- gcc-9.3.0-RC-20200305/Makefile.in.orig 2020-03-10 20:30:39.851898414 +0100 ++++ gcc-9.3.0-RC-20200305/Makefile.in 2020-03-10 20:33:13.011735787 +0100 +@@ -12891,7 +12891,7 @@ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gmp && \ +- $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \ + $(TARGET-gmp)) + @endif gmp + +@@ -12922,7 +12922,7 @@ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) \ +- $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \ ++ $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-gmp) + +@@ -12937,7 +12937,7 @@ + fi; \ + cd $(HOST_SUBDIR)/gmp && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ +- $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean ++ $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean + @endif gmp-bootstrap + + +@@ -12966,7 +12966,7 @@ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ +- $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \ ++ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-gmp) + +@@ -12980,7 +12980,7 @@ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/gmp && \ +- $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean ++ $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean + @endif gmp-bootstrap + + +@@ -13009,7 +13009,7 @@ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ +- $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \ ++ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-gmp) + +@@ -13023,7 +13023,7 @@ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/gmp && \ +- $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean ++ $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean + @endif gmp-bootstrap + + diff --git a/Golden_Repo/h/help2man/help2man-1.48.3-GCCcore-11.2.0.eb b/Golden_Repo/h/help2man/help2man-1.48.3-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..c0c5e7c260cb92a35a288768cacc8145093a6725 --- /dev/null +++ b/Golden_Repo/h/help2man/help2man-1.48.3-GCCcore-11.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'help2man' +version = '1.48.3' + +homepage = 'https://www.gnu.org/software/help2man/' +description = """help2man produces simple manual pages from the '--help' and '--version' output of other commands.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_XZ] +checksums = ['8361ff3c643fbd391064e97e5f54592ca28b880eaffbf566a68e0ad800d1a8ac'] + +builddependencies = [ + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.37', '', True), +] + +sanity_check_paths = { + 'files': ['bin/help2man'], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/m/M4/M4-1.4.19-GCCcore-11.2.0.eb b/Golden_Repo/m/M4/M4-1.4.19-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..2ad0bebcd0a3d7042ab67ae6c982c49ad7d12ae0 --- /dev/null +++ b/Golden_Repo/m/M4/M4-1.4.19-GCCcore-11.2.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'M4' +version = '1.4.19' + +homepage = 'https://www.gnu.org/software/m4/m4.html' +description = """GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible + although it has some extensions (for example, handling more than 9 positional parameters to macros). + GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.37', '', SYSTEM)] + +# '-fgnu89-inline' is required to avoid linking errors with older glibc's, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/529 +configopts = "--enable-c++ CPPFLAGS=-fgnu89-inline" + +sanity_check_paths = { + 'files': ['bin/m4'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/Golden_Repo/m/M4/M4-1.4.19.eb b/Golden_Repo/m/M4/M4-1.4.19.eb new file mode 100644 index 0000000000000000000000000000000000000000..ac5fa24ed3ecabbc147029776e824218c022ac4b --- /dev/null +++ b/Golden_Repo/m/M4/M4-1.4.19.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'M4' +version = '1.4.19' + +homepage = 'https://www.gnu.org/software/m4/m4.html' + +description = """ + GNU M4 is an implementation of the traditional Unix macro processor. It is + mostly SVR4 compatible although it has some extensions (for example, handling + more than 9 positional parameters to macros). GNU M4 also has built-in + functions for including files, running shell commands, doing arithmetic, etc. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = SYSTEM + +sources = [SOURCELOWER_TAR_GZ] +source_urls = [GNU_SOURCE] + +checksums = ['3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70'] + +# '-fgnu89-inline' is required to avoid linking errors with older glibc's, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/529 +configopts = "--enable-c++ CPPFLAGS=-fgnu89-inline" + +sanity_check_paths = { + 'files': ['bin/m4'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/Golden_Repo/z/zlib/zlib-1.2.11-GCCcore-11.2.0.eb b/Golden_Repo/z/zlib/zlib-1.2.11-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..3c038ed418e0c9351b130198c922b74483dc65a6 --- /dev/null +++ b/Golden_Repo/z/zlib/zlib-1.2.11-GCCcore-11.2.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'zlib' +version = '1.2.11' + +homepage = 'https://www.zlib.net/' +description = """zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://zlib.net/fossils'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.37', '', SYSTEM)] + +sanity_check_paths = { + 'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/libz.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/z/zlib/zlib-1.2.11.eb b/Golden_Repo/z/zlib/zlib-1.2.11.eb new file mode 100644 index 0000000000000000000000000000000000000000..7d59504ff4d72c02e6af62993108c46f6733d4d4 --- /dev/null +++ b/Golden_Repo/z/zlib/zlib-1.2.11.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'zlib' +version = '1.2.11' + +homepage = 'https://www.zlib.net/' +description = """zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = SYSTEM +toolchainopts = {'pic': True} + +source_urls = ['https://zlib.net/fossils/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1'] + +# need to take care of $CFLAGS ourselves with system toolchain +# we need to add -fPIC, but should also include -O* option to avoid compiling with -O0 (default for GCC) +buildopts = 'CFLAGS="-O2 -fPIC"' + +sanity_check_paths = { + 'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', + 'lib/libz.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/Overlays/.gitkeep b/Overlays/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Overlays/jurecabooster_overlay/g/GCC/GCC-11.2.0.eb b/Overlays/jurecabooster_overlay/g/GCC/GCC-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..909766b963695227696a3814aae72a7dcc997125 --- /dev/null +++ b/Overlays/jurecabooster_overlay/g/GCC/GCC-11.2.0.eb @@ -0,0 +1,25 @@ +easyblock = 'Bundle' + +name = 'GCC' +version = '11.2.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, +as well as libraries for these languages (libstdc++, libgcj,...). +""" + +site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>' + +toolchain = SYSTEM + +dependencies = [ + ('GCCcore', version), + # binutils built on top of GCCcore, which was built on top of (dummy-built) binutils + ('binutils', '2.37', '', ('GCCcore', version)), +] + +altroot = 'GCCcore' +altversion = 'GCCcore' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/Overlays/jurecabooster_overlay/g/GCCcore/GCCcore-11.2.0.eb b/Overlays/jurecabooster_overlay/g/GCCcore/GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..bc21042bc23256a9de9fd178606f93e2f157f671 --- /dev/null +++ b/Overlays/jurecabooster_overlay/g/GCCcore/GCCcore-11.2.0.eb @@ -0,0 +1,73 @@ +easyblock = 'EB_GCC' + +name = 'GCCcore' +version = '11.2.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, +as well as libraries for these languages (libstdc++, libgcj,...). +""" + +site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>' + +toolchain = SYSTEM + +source_urls = [ + # GCC auto-resolving HTTP mirror + 'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', + 'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP + 'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR + 'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC + 'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies + 'http://gcc.cybermirror.org/infrastructure/', # HTTP mirror for GCC dependencies + 'http://isl.gforge.inria.fr/', # original HTTP source for ISL + 'https://sourceware.org/pub/newlib/', # for newlib + 'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools +] +sources = [ + 'gcc-%(version)s.tar.gz', + 'gmp-6.2.1.tar.bz2', + 'mpfr-4.1.0.tar.bz2', + 'mpc-1.2.1.tar.gz', + 'isl-0.24.tar.bz2', + 'newlib-4.1.0.tar.gz', + {'download_filename': 'd0524fb.tar.gz', + 'filename': 'nvptx-tools-20210115.tar.gz'}, +] +patches = [ + 'GCCcore-6.2.0-fix-find-isl.patch', + 'GCCcore-9.3.0_gmp-c99.patch', +] +checksums = [ + 'f0837f1bf8244a5cc23bd96ff6366712a791cfae01df8e25b137698aca26efc1', # gcc-11.2.0.tar.gz + 'eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c', # gmp-6.2.1.tar.bz2 + 'feced2d430dd5a97805fa289fed3fc8ff2b094c02d05287fd6133e7f1f0ec926', # mpfr-4.1.0.tar.bz2 + '17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459', # mpc-1.2.1.tar.gz + 'fcf78dd9656c10eb8cf9fbd5f59a0b6b01386205fe1934b3b287a0a1898145c0', # isl-0.24.tar.bz2 + 'f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154', # newlib-4.1.0.tar.gz + # nvptx-tools-20210115.tar.gz + '466abe1cef9cf294318ecb3c221593356f7a9e1674be987d576bc70d833d84a2', + # GCCcore-6.2.0-fix-find-isl.patch + '5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68', + # GCCcore-9.3.0_gmp-c99.patch + '0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e', +] + +builddependencies = [ + ('M4', '1.4.19'), + ('binutils', '2.37'), +] + +languages = ['c', 'c++', 'fortran'] + +withisl = True +withnvptx = False + +# Perl is only required when building with NVPTX support +if withnvptx: + osdependencies = ['perl'] + +# Make sure we replace the system cc with gcc with an alias +modaliases = {'cc': 'gcc'} + +moduleclass = 'compiler'