Skip to content

update binutils easyblock to handle libzstd in binutils 2.40+#3966

Merged
boegel merged 2 commits intoeasybuilders:developfrom
Flamefire:20251022171753_new_pr_binutils
Dec 6, 2025
Merged

update binutils easyblock to handle libzstd in binutils 2.40+#3966
boegel merged 2 commits intoeasybuilders:developfrom
Flamefire:20251022171753_new_pr_binutils

Conversation

@Flamefire
Copy link
Copy Markdown
Contributor

@Flamefire Flamefire commented Oct 22, 2025

(created using eb --new-pr)

binutils 2.40 introduced support for libzstd and will automatically link to it if it is found (via pkg-config)

This pulls in a system library.

Handle that similar to zlib:

  • Disable if no dependency
  • Use if dependency
  • Force static linking if build dependency

So far I don't see how to use zstd as a dependency as it has binutils as a dependency.

@Flamefire
Copy link
Copy Markdown
Contributor Author

Test report by @Flamefire

Overview of tested easyconfigs (in order)

  • SUCCESS binutils-2.42-GCCcore-13.3.0.eb

  • SUCCESS binutils-2.42-GCCcore-14.2.0.eb

  • SUCCESS binutils-2.44-GCCcore-14.3.0.eb

  • SUCCESS binutils-2.36.1-GCCcore-10.3.0.eb

Build succeeded for 4 out of 4 (4 easyconfigs in total)
c108 - Linux Rocky Linux 9.6, x86_64, AMD EPYC 9334 32-Core Processor (zen4), 4 x NVIDIA NVIDIA H100, 580.65.06, Python 3.9.21
See https://gist.github.com/Flamefire/745061134f63b9ed7efeb0109e2ebee2 for a full test report.

@Micket Micket changed the title Handle libzstd in binutila 2.40+ Handle libzstd in binutils 2.40+ Nov 7, 2025
Micket
Micket previously approved these changes Nov 7, 2025
Copy link
Copy Markdown
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.

actually uzing zstd could be done by using SYSTEM level zstd, but all the optional deps we build into zstd wouldn't work, so, meh. Not worth the hassle.

@Micket Micket added this to the next release (5.2.0?) milestone Nov 7, 2025
@Micket
Copy link
Copy Markdown
Contributor

Micket commented Nov 7, 2025

Test report by @Micket

Overview of tested easyconfigs (in order)

  • **FAIL (unhandled exception: 'EasyConfig' object has no attribute 'start_dir')Traceback (most recent call last):
    File "/apps/Common/software/EasyBuild/5.1.2/lib/python3.9/site-packages/easybuild/main.py", line 161, in build_and_install_software
    (ec_res['success'], app_log, err_msg, err_code) = build_and_install_one(ec, init_env)
    File "/apps/Common/software/EasyBuild/5.1.2/lib/python3.9/site-packages/easybuild/framework/easyblock.py", line 5078, in build_and_install_one
    result = app.run_all_steps(run_test_cases=run_test_cases)
    File "/apps/Common/software/EasyBuild/5.1.2/lib/python3.9/site-packages/easybuild/framework/easyblock.py", line 4891, in run_all_steps
    self.run_step(step_name, step_methods)
    File "/apps/Common/software/EasyBuild/5.1.2/lib/python3.9/site-packages/easybuild/framework/easyblock.py", line 4732, in run_step
    current_method()
    File "/dev/shm/included-easyblocks-s5pre7x2/easybuild/easyblocks/binutils.py", line 181, in configure_step
    for makefile in glob.glob(os.path.join(self.cfg.start_dir, '*', 'Makefile.in')):
    AttributeError: 'EasyConfig' object has no attribute 'start_dir'
    ** binutils-2.45.eb

Build succeeded for 0 out of 1 (1 easyconfigs in total)
vera-icelake-build - Linux Rocky Linux 9.6, x86_64, Intel(R) Xeon(R) Silver 4316 CPU @ 2.30GHz, Python 3.9.21
See https://gist.github.com/Micket/62a7ad93c2db373b4b85f30082c72bac for a full test report.

@Micket
Copy link
Copy Markdown
Contributor

Micket commented Nov 7, 2025

Hm, did i mess up or does this break system level binutils, e.g. binutils-2.45.eb

@Flamefire
Copy link
Copy Markdown
Contributor Author

Flamefire commented Nov 7, 2025

No my bad. That is an attribute of easyblock not easyconfig. And seems the other easyconfigs didn't trigger this codepath

Rerunning with larger range of ECs

@Flamefire
Copy link
Copy Markdown
Contributor Author

Test report by @Flamefire

Overview of tested easyconfigs (in order)

  • SUCCESS binutils-2.32.eb

  • SUCCESS binutils-2.35.eb

  • SUCCESS binutils-2.36.1.eb

  • SUCCESS binutils-2.36.1-GCCcore-10.3.0.eb

  • SUCCESS binutils-2.37.eb

  • SUCCESS binutils-2.37-GCCcore-11.2.0.eb

  • SUCCESS binutils-2.38.eb

  • SUCCESS binutils-2.38-GCCcore-11.3.0.eb

  • SUCCESS binutils-2.38-GCCcore-12.1.0.eb

  • SUCCESS binutils-2.39.eb

  • SUCCESS binutils-2.39-GCCcore-12.2.0.eb

  • SUCCESS binutils-2.40.eb

  • SUCCESS binutils-2.40-GCCcore-11.4.0.eb

  • SUCCESS binutils-2.40-GCCcore-12.3.0.eb

  • SUCCESS binutils-2.40-GCCcore-13.1.0.eb

  • SUCCESS binutils-2.40-GCCcore-13.2.0.eb

  • SUCCESS binutils-2.42.eb

  • SUCCESS binutils-2.42-GCCcore-13.3.0.eb

  • SUCCESS binutils-2.42-GCCcore-14.2.0.eb

  • SUCCESS binutils-2.44.eb

  • SUCCESS binutils-2.44-GCCcore-14.3.0.eb

  • SUCCESS binutils-2.45.eb

Build succeeded for 22 out of 22 (total: 26 mins 24 secs) (22 easyconfigs in total)
n1607.barnard.hpc.tu-dresden.de - Linux RHEL 9.6, x86_64, Intel(R) Xeon(R) Platinum 8470 (sapphirerapids), Python 3.9.21
See https://gist.github.com/Flamefire/0c5bc6b0d962dd599a3ab92bfeb7f785 for a full test report.

@boegel boegel changed the title Handle libzstd in binutils 2.40+ update binutils easyblock to handle libzstd in binutils 2.40+ Nov 19, 2025
@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 3, 2025

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS binutils-2.32.eb
  • SUCCESS binutils-2.44-GCCcore-14.3.0.eb

Build succeeded for 2 out of 2 (total: 3 mins 59 secs) (2 easyconfigs in total)
node4211.shinx.os - Linux RHEL 9.6, x86_64, AMD EPYC 9654 96-Core Processor (zen4), Python 3.9.21
See https://gist.github.com/boegel/0e2314f365e37c5e785b8c5c552c6be2 for a full test report.

Copy link
Copy Markdown
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.

lgtm

@boegel boegel merged commit 314cc4a into easybuilders:develop Dec 6, 2025
22 checks passed
@Flamefire Flamefire deleted the 20251022171753_new_pr_binutils branch December 6, 2025 17:37
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.

3 participants