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

do not rename GCC's include-fixed directory by default + add script to regenerate it #3254

Merged
merged 3 commits into from Mar 17, 2024

Conversation

Flamefire
Copy link
Contributor

@Flamefire Flamefire commented Mar 13, 2024

(created using eb --new-pr)

This adds an EC option to control the renaming of the include-fixed directory which is OFF by default because this leads to failures when GCC is "too new" relative to the OS, i.e. we actually want the fixincludes part of the GCC installation.

However as described in #10666 OS upgrades might break those GCC installations when the source headers (of GLIBC) change in a way that make them incompatible with the earlier output of fixincludes.

However GCC comes with a nice script to (re)generate that folder. Hence I think it makes more sense to make that easier to use by providing a wrapper in $GCCROOT/easybuild that calls that script (it is in some subfolder of libexec and depends on the architecture and version) and also takes care of file permissions of the include-fixed folder

If that is considered too much we could at least add a symlink to the script into the easybuild folder.

Fixes #3253

Micket
Micket previously approved these changes Mar 13, 2024
Copy link
Contributor

@Micket Micket left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. Will need to test the script

@Micket
Copy link
Contributor

Micket commented Mar 13, 2024

Should be relatively safe for anyone to revert the changes manually in an existing installation right?

  1. cd $EBROOTGCCCORE/lib/gcc/linux/*/ (e.g. software/GCCcore/13.2.0/lib/gcc/x86_64-pc-linux-gnu/13.2.0)
  2. mv include-fixed.renamed-by-easybuild include-fixed
  3. optionally rm include/{sys,}limits.h

(or rebuild GCCcore)

You'd also want the script for the future OS/glibc updates.

@Flamefire
Copy link
Contributor Author

Flamefire commented Mar 14, 2024

lgtm. Will need to test the script

Note that the permissions afterwards won't be exactly as original because of the files created by mkheaders. For a test installation with group-writeable-installdir the group-write permissions were gone. Can't have it all... 🤷

Should be relatively safe for anyone to revert the changes manually in an existing installation right?

More or less yes. If the OS has changed in the meantime then this will run into the original issue.

(or rebuild GCCcore)

And afterwards rename the folder. Or rebuild with this PR.

There already is software/GCCcore/13.2.0/libexec/gcc/x86_64-pc-linux-gnu/13.2.0/install-tools/mkheaders which can be invoked manually even for current installations

You'd also want the script for the future OS/glibc updates.

Correct. The newly added script in GCCROOT/easybuild just makes doing this slightly more convenient. Note that your glob won't work because there is additonally a nvptx-* (or so) folder next to the *linux-gnu folder

@Micket
Copy link
Contributor

Micket commented Mar 15, 2024

Test report by @Micket

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
vera-skylake-build - Linux Rocky Linux 8.9, x86_64, Intel Xeon Processor (Skylake, IBRS, no TSX), Python 3.6.8
See https://gist.github.com/Micket/2b936c228384b531f85a12814090566f for a full test report.

@Micket
Copy link
Contributor

Micket commented Mar 15, 2024

Test report by @Micket

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-12.3.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
vera-skylake-build - Linux Rocky Linux 8.9, x86_64, Intel Xeon Processor (Skylake, IBRS, no TSX), Python 3.6.8
See https://gist.github.com/Micket/1b6c005890abc3e3c4921538cc343ed5 for a full test report.

@migueldiascosta
Copy link
Member

Test report by @migueldiascosta

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
sms - Linux CentOS Linux 7.6.1810, x86_64, AMD EPYC 7601 32-Core Processor, Python 3.6.8
See https://gist.github.com/migueldiascosta/1fe813b23c69afe5c3141a102680f121 for a full test report.

@akesandgren
Copy link
Contributor

Test report by @akesandgren

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
b-cn1603.hpc2n.umu.se - Linux Ubuntu 22.04, x86_64, AMD EPYC 7313 16-Core Processor, Python 3.10.12
See https://gist.github.com/akesandgren/489e31e8a1fba469d53d1c11626ff19e for a full test report.

@verdurin
Copy link
Member

Test report by @verdurin

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
easybuild-c7.novalocal - Linux CentOS Linux 7.9.2009, x86_64, Intel Xeon Processor (Skylake, IBRS), Python 3.6.8
See https://gist.github.com/verdurin/efb7b72d63400af2ecdeb27e79643620 for a full test report.

Copy link
Member

@boegel boegel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm working on a commit to tackle the suggested changes...

easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
easybuild/easyblocks/g/gcc.py Outdated Show resolved Hide resolved
@boegel boegel changed the title Don't rename GCCs include-fixed directory by default and add script to regenerate it do not rename GCC's include-fixed directory by default + add script to regenerate it Mar 16, 2024
@boegel
Copy link
Member

boegel commented Mar 16, 2024

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-12.3.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
node3136.skitty.os - Linux RHEL 8.8, x86_64, Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz, Python 3.6.8
See https://gist.github.com/boegel/92e55f25f8f1b5a0502fab0f66e4f4de for a full test report.

edit: this was with a copy of the easyconfig with rename_include_fixed set to True

@boegel
Copy link
Member

boegel commented Mar 16, 2024

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-9.3.0.eb
  • SUCCESS GCCcore-10.3.0.eb
  • SUCCESS GCCcore-11.4.0.eb
  • SUCCESS GCCcore-12.3.0.eb
  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 5 out of 5 (5 easyconfigs in total)
node3515.doduo.os - Linux RHEL 8.8, x86_64, AMD EPYC 7552 48-Core Processor, Python 3.6.8
See https://gist.github.com/boegel/d258a3d8cc5fc1083247c51c526ad803 for a full test report.

@boegel
Copy link
Member

boegel commented Mar 16, 2024

@boegelbot please test @ generoso
CORE_CNT=16
EB_ARGS="GCCcore-9.2.0.eb GCCcore-9.3.0.eb GCCcore-9.4.0.eb GCCcore-9.5.0.eb GCCcore-11.3.0.eb GCCcore-9.1.0.eb GCCcore-10.1.0.eb GCCcore-10.2.0.eb GCCcore-10.3.0.eb GCCcore-11.1.0.eb GCCcore-11.2.0.eb GCCcore-11.4.0.eb GCCcore-12.1.0.eb GCCcore-12.2.0.eb GCCcore-12.3.0.eb GCCcore-13.1.0.eb GCCcore-13.2.0.eb"

@boegelbot
Copy link

@boegel: Request for testing this PR well received on login1

PR test command 'EB_PR=3254 EB_ARGS="GCCcore-9.2.0.eb GCCcore-9.3.0.eb GCCcore-9.4.0.eb GCCcore-9.5.0.eb GCCcore-11.3.0.eb GCCcore-9.1.0.eb GCCcore-10.1.0.eb GCCcore-10.2.0.eb GCCcore-10.3.0.eb GCCcore-11.1.0.eb GCCcore-11.2.0.eb GCCcore-11.4.0.eb GCCcore-12.1.0.eb GCCcore-12.2.0.eb GCCcore-12.3.0.eb GCCcore-13.1.0.eb GCCcore-13.2.0.eb" EB_CONTAINER= EB_REPO=easybuild-easyblocks /opt/software/slurm/bin/sbatch --job-name test_PR_3254 --ntasks="16" ~/boegelbot/eb_from_pr_upload_generoso.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 13119

Test results coming soon (I hope)...

- notification for comment with ID 2002088054 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegel
Copy link
Member

boegel commented Mar 16, 2024

@boegelbot please test @ jsc-zen3
CORE_CNT=16
EB_ARGS="GCCcore-10.2.0.eb GCCcore-10.3.0.eb GCCcore-11.2.0.eb GCCcore-11.3.0.eb GCCcore-12.2.0.eb GCCcore-12.3.0.eb GCCcore-13.2.0.eb GCCcore-9.3.0.eb"

@boegelbot
Copy link

@boegel: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=3254 EB_ARGS="GCCcore-10.2.0.eb GCCcore-10.3.0.eb GCCcore-11.2.0.eb GCCcore-11.3.0.eb GCCcore-12.2.0.eb GCCcore-12.3.0.eb GCCcore-13.2.0.eb GCCcore-9.3.0.eb" EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3254 --ntasks="16" ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 3786

Test results coming soon (I hope)...

- notification for comment with ID 2002092305 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-10.2.0.eb
  • SUCCESS GCCcore-10.3.0.eb
  • SUCCESS GCCcore-11.2.0.eb
  • SUCCESS GCCcore-11.3.0.eb
  • SUCCESS GCCcore-12.2.0.eb
  • SUCCESS GCCcore-12.3.0.eb
  • SUCCESS GCCcore-13.2.0.eb
  • SUCCESS GCCcore-9.3.0.eb

Build succeeded for 8 out of 8 (8 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.3, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.18
See https://gist.github.com/boegelbot/657d1a8b3338f0f253f747a6db1325c7 for a full test report.

@Micket
Copy link
Contributor

Micket commented Mar 17, 2024

Test report by @Micket

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-12.3.0.eb
  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 2 out of 2 (2 easyconfigs in total)
vera-skylake-build - Linux Rocky Linux 8.9, x86_64, Intel Xeon Processor (Skylake, IBRS, no TSX), Python 3.6.8
See https://gist.github.com/Micket/1f4bab6bd4e24aedf8059a529822c5fb for a full test report.

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

  • SUCCESS GCCcore-9.2.0.eb
  • SUCCESS GCCcore-9.3.0.eb
  • SUCCESS GCCcore-9.4.0.eb
  • SUCCESS GCCcore-9.5.0.eb
  • SUCCESS GCCcore-11.3.0.eb
  • SUCCESS GCCcore-9.1.0.eb
  • SUCCESS GCCcore-10.1.0.eb
  • SUCCESS GCCcore-10.2.0.eb
  • SUCCESS GCCcore-10.3.0.eb
  • SUCCESS GCCcore-11.1.0.eb
  • SUCCESS GCCcore-11.2.0.eb
  • SUCCESS GCCcore-11.4.0.eb
  • SUCCESS GCCcore-12.1.0.eb
  • SUCCESS GCCcore-12.2.0.eb
  • SUCCESS GCCcore-12.3.0.eb
  • SUCCESS GCCcore-13.1.0.eb
  • SUCCESS GCCcore-13.2.0.eb

Build succeeded for 17 out of 17 (17 easyconfigs in total)
cnx1 - Linux Rocky Linux 8.9, x86_64, Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz (haswell), Python 3.6.8
See https://gist.github.com/boegelbot/0f5d53608689f6234f55b5c656d115c8 for a full test report.

@boegel boegel merged commit e65a6d1 into easybuilders:develop Mar 17, 2024
47 checks passed
@Flamefire Flamefire deleted the 20240313103229_new_pr_gcc branch March 17, 2024 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Failures (incl. with CUDA) due to removal of include-fixed path from GCC
7 participants