Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{toolchain} GCC 11.3.0 #15311

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
easyblock = 'ConfigureMake'

name = 'Bison'
version = '3.8.2'

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."""

toolchain = {'name': 'GCCcore', 'version': '11.3.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['06c9e13bdf7eb24d4ceb6b59205a4f67c2c7e7213119644430fe82fbd14a0abb']

builddependencies = [
('M4', '1.4.19'),
# use same binutils version that was used when building GCCcore toolchain
('binutils', '2.38', '', True),
]


sanity_check_paths = {
'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')],
'dirs': [],
}

moduleclass = 'lang'
31 changes: 31 additions & 0 deletions easybuild/easyconfigs/b/binutils/binutils-2.38-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name = 'binutils'
version = '2.38'

homepage = 'https://directory.fsf.org/project/binutils/'
description = "binutils: GNU binary utilities"

toolchain = {'name': 'GCCcore', 'version': '11.3.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_GZ]
checksums = ['b3f1dc5b17e75328f19bd88250bee2ef9f91fc8cbb7bd48bdb31390338636052']

builddependencies = [
('flex', '2.6.4'),
('Bison', '3.8.2'),
# use same binutils version that was used when building GCC toolchain, to 'bootstrap' this binutils
('binutils', version, '', True)
]

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.12'),
]

# 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'
26 changes: 26 additions & 0 deletions easybuild/easyconfigs/b/binutils/binutils-2.38.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name = 'binutils'
version = '2.38'

homepage = 'https://directory.fsf.org/project/binutils/'

description = "binutils: GNU binary utilities"

toolchain = SYSTEM

source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_GZ]
checksums = ['b3f1dc5b17e75328f19bd88250bee2ef9f91fc8cbb7bd48bdb31390338636052']

builddependencies = [
('flex', '2.6.4'),
('Bison', '3.8.2'),
# zlib required, but being linked in statically, so not a runtime dep
('zlib', '1.2.12'),
]

# 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'
34 changes: 34 additions & 0 deletions easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
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.
"""

toolchain = {'name': 'GCCcore', 'version': '11.3.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.8.2'),
('help2man', '1.49.2'),
# use same binutils version that was used when building GCC toolchain
('binutils', '2.38', '', True),
]

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'
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/g/GCC/GCC-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
easyblock = 'Bundle'

name = 'GCC'
version = '11.3.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,...)."""

toolchain = SYSTEM

dependencies = [
('GCCcore', version),
# binutils built on top of GCCcore, which was built on top of binutils (built with system toolchain)
('binutils', '2.38', '', ('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'
65 changes: 65 additions & 0 deletions easybuild/easyconfigs/g/GCCcore/GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
easyblock = 'EB_GCC'

name = 'GCCcore'
version = '11.3.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,...)."""

toolchain = SYSTEM

source_urls = [
'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', # GCC auto-resolving HTTP mirror
boegel marked this conversation as resolved.
Show resolved Hide resolved
'https://sourceware.org/pub/gcc/releases/gcc-%(version)s', # fallback URL for GCC
'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
'https://gcc.gnu.org/pub/gcc/infrastructure/', # HTTPS mirror for GCC dependencies
'https://libisl.sourceforge.io/', # fallback URL 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': '7292758.tar.gz', 'filename': 'nvptx-tools-20220412.tar.gz'},
]
patches = [
'GCCcore-6.2.0-fix-find-isl.patch',
'GCCcore-9.3.0_gmp-c99.patch',
'GCCcore-9.x-11.x_fix-unsigned-fpe-traps.patch',
]
checksums = [
'98438e6cc7294298b474cf0da7655d9a8c8b796421bb0210531c294a950374ed', # gcc-11.3.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
'20e3c1eeae7f375c36455b6036c4801de16b854910ff54268bbd3346f3685080', # nvptx-tools-20220412.tar.gz
'5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68', # GCCcore-6.2.0-fix-find-isl.patch
'0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e', # GCCcore-9.3.0_gmp-c99.patch
'03a2e4aeda78d398edd680d6a1ba842b8ceb29c126ebb7fe2e3541ddfe4fbed4', # GCCcore-9.x-11.x_fix-unsigned-fpe-traps.patch
]

builddependencies = [
('M4', '1.4.19'),
('binutils', '2.38'),
]

languages = ['c', 'c++', 'fortran']

withisl = True
withnvptx = True

# Perl is only required when building with NVPTX support
if withnvptx:
osdependencies = ['perl']

moduleclass = 'compiler'
25 changes: 25 additions & 0 deletions easybuild/easyconfigs/h/help2man/help2man-1.49.2-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
easyblock = 'ConfigureMake'

name = 'help2man'
version = '1.49.2'

homepage = 'https://www.gnu.org/software/help2man/'
description = """help2man produces simple manual pages from the '--help' and '--version' output of other commands."""

toolchain = {'name': 'GCCcore', 'version': '11.3.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_XZ]
checksums = ['9e2e0e213a7e0a36244eed6204d902b6504602a578b6ecd15268b1454deadd36']

builddependencies = [
# use same binutils version that was used when building GCC toolchain
('binutils', '2.38', '', True),
]

sanity_check_paths = {
'files': ['bin/help2man'],
'dirs': [],
}

moduleclass = 'tools'
29 changes: 29 additions & 0 deletions easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
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."""

toolchain = {'name': 'GCCcore', 'version': '11.3.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.38', '', True)]

# '-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'
30 changes: 30 additions & 0 deletions easybuild/easyconfigs/z/zlib/zlib-1.2.12-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
easyblock = 'ConfigureMake'

name = 'zlib'
version = '1.2.12'

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."""

toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
toolchainopts = {'pic': True}

source_urls = ['https://zlib.net/fossils']
sources = [SOURCELOWER_TAR_GZ]
patches = ['zlib-%(version)s_fix-CC-logic-in-configure.patch']
checksums = [
'91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9', # zlib-1.2.12.tar.gz
'f35eb05334a4f8d7b40b6c5610a6369f654863b5fa1a19c2507888f918025238', # zlib-1.2.12_fix-CC-logic-in-configure.patch
]

# use same binutils version that was used when building GCC toolchain
builddependencies = [('binutils', '2.38', '', True)]

sanity_check_paths = {
'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/libz.%s' % SHLIB_EXT],
'dirs': [],
}

moduleclass = 'lib'
36 changes: 36 additions & 0 deletions easybuild/easyconfigs/z/zlib/zlib-1.2.12.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
easyblock = 'ConfigureMake'

name = 'zlib'
version = '1.2.12'

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.
"""

toolchain = SYSTEM
toolchainopts = {'pic': True}

source_urls = ['https://zlib.net/fossils/']
sources = [SOURCELOWER_TAR_GZ]
patches = ['zlib-%(version)s_fix-CC-logic-in-configure.patch']
checksums = [
'91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9', # zlib-1.2.12.tar.gz
'f35eb05334a4f8d7b40b6c5610a6369f654863b5fa1a19c2507888f918025238', # zlib-1.2.12_fix-CC-logic-in-configure.patch
]

# need to take care of $CFLAGS ourselves with dummy 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'
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
From 80d086357a55b94a13e43756cf3e131f25eef0e4 Mon Sep 17 00:00:00 2001
From: Sam James <[email protected]>
Date: Mon, 28 Mar 2022 08:40:45 +0100
Subject: [PATCH] Fix CC logic in configure

In https://github.com/madler/zlib/commit/e9a52aa129efe3834383e415580716a7c4027f8d,
the logic was changed to try check harder for GCC, but it dropped
the default setting of cc=${CC}. It was throwing away any pre-set CC value as
a result.

The rest of the script then cascades down a bad path because it's convinced
it's not GCC or a GCC-like compiler.

This led to e.g. misdetection of inability to build shared libs
for say, multilib cases (w/ CC being one thing from the environment being used
for one test (e.g. x86_64-unknown-linux-gnu-gcc -m32 and then 'cc' used for
shared libs (but missing "-m32"!)). Obviously just one example of how
the old logic could break.

This restores the old default of 'CC' if nothing overrides it later
in configure.

Bug: https://bugs.gentoo.org/836308
Signed-off-by: Sam James <[email protected]>
---
configure | 3 +++
1 file changed, 3 insertions(+)

diff --git a/configure b/configure
index 52ff4a04e..3fa3e8618 100755
--- a/configure
+++ b/configure
@@ -174,7 +174,10 @@ if test -z "$CC"; then
else
cc=${CROSS_PREFIX}cc
fi
+else
+ cc=${CC}
fi
+
cflags=${CFLAGS-"-O3"}
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
case "$cc" in