Skip to content

[GCCcore/15.2.0] zlib-ng v2.3.2 + use zlib v2.3.2 (zlib-ng configured with --zlib-compat) as dependency for binutils v2.45 #24999

Merged
boegel merged 3 commits intoeasybuilders:developfrom
Thyre:20260105122456_new_pr_binutils245
Jan 18, 2026
Merged

[GCCcore/15.2.0] zlib-ng v2.3.2 + use zlib v2.3.2 (zlib-ng configured with --zlib-compat) as dependency for binutils v2.45 #24999
boegel merged 3 commits intoeasybuilders:developfrom
Thyre:20260105122456_new_pr_binutils245

Conversation

@Thyre
Copy link
Copy Markdown
Collaborator

@Thyre Thyre commented Jan 5, 2026

(created using eb --new-pr)

Moved zlib-ng from CMakeMake to ConfigureMake to allow building the toolchain with zlib-ng instead of zlib, since we'd end up with a circular dependency otherwise.
To allow this, I also added the configure flag --zlib-compat, therefore also changing the header and library names.

We should also add a CI check to ensure that zlib is not used in 2026a. Instead, one should use zlib-ng.


Less test reports from my systems here, as both my Fedora & Arch Linux machine have binutils filtered.

@Thyre Thyre added the update label Jan 5, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jan 5, 2026

Updated software zlib-ng-2.3.2-GCCcore-15.2.0.eb

Diff against zlib-ng-2.2.5-GCCcore-14.3.0.eb

easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.5-GCCcore-14.3.0.eb

diff --git a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.5-GCCcore-14.3.0.eb b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
index fd7955111b..6f5b50f95b 100644
--- a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.5-GCCcore-14.3.0.eb
+++ b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
@@ -1,25 +1,23 @@
-easyblock = 'CMakeMake'
+easyblock = 'ConfigureMake'
 
 name = 'zlib-ng'
-version = '2.2.5'
+version = '2.3.2'
 
 homepage = 'https://github.com/zlib-ng/zlib-ng'
 description = """zlib data compression library for the next generation systems"""
 
-toolchain = {'name': 'GCCcore', 'version': '14.3.0'}
-
-builddependencies = [
-    ('CMake', '4.0.3'),
-    ('binutils', '2.44'),
-]
+toolchain = {'name': 'GCCcore', 'version': '15.2.0'}
 
 source_urls = ['https://github.com/zlib-ng/zlib-ng/archive']
 sources = [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}]
-checksums = ['5b3b022489f3ced82384f06db1e13ba148cbce38c7941e424d6cb414416acd18']
-configopts = '-DZLIB_ENABLE_TESTS=ON'
+checksums = ['6a0561b50b8f5f6434a6a9e667a67026f2b2064a1ffa959c6b2dae320161c2a8']
+
+builddependencies = [('binutils', '2.45')]
 
 sanity_check_paths = {
-    'files': ['include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT],
+    'files': [
+        'include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT,
+    ],
     'dirs': [],
 }
 
Diff against zlib-ng-2.2.4-GCCcore-14.2.0.eb

easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.4-GCCcore-14.2.0.eb

diff --git a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.4-GCCcore-14.2.0.eb b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
index 24e575c03b..6f5b50f95b 100644
--- a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.4-GCCcore-14.2.0.eb
+++ b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
@@ -1,46 +1,23 @@
-easyblock = 'PythonBundle'
+easyblock = 'ConfigureMake'
 
 name = 'zlib-ng'
-version = '2.2.4'
+version = '2.3.2'
 
 homepage = 'https://github.com/zlib-ng/zlib-ng'
 description = """zlib data compression library for the next generation systems"""
 
-toolchain = {'name': 'GCCcore', 'version': '14.2.0'}
+toolchain = {'name': 'GCCcore', 'version': '15.2.0'}
 
-builddependencies = [
-    ('CMake', '3.31.3'),
-    ('binutils', '2.42'),
-    ('versioningit', '3.2.0'),
-]
+source_urls = ['https://github.com/zlib-ng/zlib-ng/archive']
+sources = [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}]
+checksums = ['6a0561b50b8f5f6434a6a9e667a67026f2b2064a1ffa959c6b2dae320161c2a8']
 
-dependencies = [
-    ('Python', '3.13.1'),
-]
-
-components = [
-    (name, version, {
-        'easyblock': 'CMakeMake',
-        'source_urls': ['https://github.com/zlib-ng/zlib-ng/archive/'],
-        'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}],
-        'checksums': ['a73343c3093e5cdc50d9377997c3815b878fd110bf6511c2c7759f2afb90f5a3'],
-        'start_dir': '%(name)s-%(version)s',
-        'configopts': '-DZLIB_ENABLE_TESTS=ON',
-    }),
-
-]
-
-exts_list = [
-    (name, '0.5.1', {
-        'modulename': 'zlib_ng',
-        'preinstallopts': 'PYTHON_ZLIB_NG_LINK_DYNAMIC=true',
-        'source_tmpl': 'zlib_ng-%(version)s.tar.gz',
-        'checksums': ['32a46649e8efc21ddd74776a55366a8d8be4e3a95b93dc1f0ffe3880718990d9'],
-    }),
-]
+builddependencies = [('binutils', '2.45')]
 
 sanity_check_paths = {
-    'files': ['include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT],
+    'files': [
+        'include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT,
+    ],
     'dirs': [],
 }
 
Diff against zlib-ng-2.2.2-GCCcore-13.2.0.eb

easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.2-GCCcore-13.2.0.eb

diff --git a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
index edda15a373..6f5b50f95b 100644
--- a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.2.2-GCCcore-13.2.0.eb
+++ b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.3.2-GCCcore-15.2.0.eb
@@ -1,46 +1,23 @@
-easyblock = 'PythonBundle'
+easyblock = 'ConfigureMake'
 
 name = 'zlib-ng'
-version = '2.2.2'
+version = '2.3.2'
 
 homepage = 'https://github.com/zlib-ng/zlib-ng'
 description = """zlib data compression library for the next generation systems"""
 
-toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
+toolchain = {'name': 'GCCcore', 'version': '15.2.0'}
 
-builddependencies = [
-    ('CMake', '3.27.6'),
-    ('binutils', '2.40'),
-    ('versioningit', '3.1.2'),
-]
+source_urls = ['https://github.com/zlib-ng/zlib-ng/archive']
+sources = [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}]
+checksums = ['6a0561b50b8f5f6434a6a9e667a67026f2b2064a1ffa959c6b2dae320161c2a8']
 
-dependencies = [
-    ('Python', '3.11.5'),
-]
-
-components = [
-    (name, version, {
-        'easyblock': 'CMakeMake',
-        'source_urls': ['https://github.com/zlib-ng/zlib-ng/archive/'],
-        'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}],
-        'checksums': ['fcb41dd59a3f17002aeb1bb21f04696c9b721404890bb945c5ab39d2cb69654c'],
-        'start_dir': '%(name)s-%(version)s',
-        'configopts': '-DZLIB_ENABLE_TESTS=ON',
-    }),
-
-]
-
-exts_list = [
-    (name, '0.5.1', {
-        'source_tmpl': 'zlib_ng-%(version)s.tar.gz',
-        'checksums': ['32a46649e8efc21ddd74776a55366a8d8be4e3a95b93dc1f0ffe3880718990d9'],
-        'preinstallopts': 'PYTHON_ZLIB_NG_LINK_DYNAMIC=true',
-        'modulename': 'zlib_ng',
-    }),
-]
+builddependencies = [('binutils', '2.45')]
 
 sanity_check_paths = {
-    'files': ['include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT],
+    'files': [
+        'include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT,
+    ],
     'dirs': [],
 }
 

@Thyre

This comment was marked as outdated.

@Thyre

This comment was marked as outdated.

@Thyre Thyre added the 2026.1 issues & PRs related to 2026.1 common toolchains label Jan 5, 2026
@boegelbot
Copy link
Copy Markdown
Collaborator

@Thyre: 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=24999 EB_ARGS="--installpath /tmp/$USER/ecpr-24999" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_24999 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3710052072 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
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (total: 3 mins 41 secs) (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.23
See https://gist.github.com/boegelbot/19a95ae8034280b3c28d2199ce2632c9 for a full test report.

@Thyre

This comment was marked as outdated.

Signed-off-by: Jan André Reuter <[email protected]>
@Thyre

This comment was marked as outdated.

@Thyre

This comment was marked as outdated.

@boegelbot
Copy link
Copy Markdown
Collaborator

@Thyre: 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=24999 EB_ARGS="--installpath /tmp/$USER/ecpr-24999" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_24999 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3710283491 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
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (total: 4 mins 2 secs) (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.23
See https://gist.github.com/boegelbot/31dbf320ac3fd90ad967d82c4fa5be84 for a full test report.

@Thyre

This comment was marked as outdated.

@Micket
Copy link
Copy Markdown
Contributor

Micket commented Jan 6, 2026

hm, do we have an option to make easyconfigs conflict with other easyconfigs? I think lmod supports that at least

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 6, 2026

hm, do we have an option to make easyconfigs conflict with other easyconfigs? I think lmod supports that at least

As far as I am aware of, we don't have something in Framework for that. Typically, a hook would've been used for that.

Environment Modules also support conflict: https://modules.readthedocs.io/en/stable/modulefile.html#mfcmd-conflict


The general idea to try to use zlib-ng for a toolchain came up in Slack and I think(?) in a conf-call. That's why I made that change in the first place. We'd follow Fedora here, which also helps in cases where zlib-ng causes issues (like with Tcl).

@jfgrimm
Copy link
Copy Markdown
Member

jfgrimm commented Jan 6, 2026

not sure about framework, but there are two easyconfigs that currently do something like this with mod{lua,tcl}footers:

$ rg "mod(lua|tcl)footer = 'conflict"
i/IMAS-Data-Dictionary/IMAS-Data-Dictionary-3.42.2-GCCcore-13.2.0.eb
46:modluafooter = 'conflict("Data-Dictionary")'
47:modtclfooter = 'conflict Data-Dictionary'

i/IMAS-ParaView/IMAS-ParaView-2.1.0-foss-2023b.eb
29:modluafooter = 'conflict("GGD-VTK")'
30:modtclfooter = 'conflict GGD-VTK'

@branfosj
Copy link
Copy Markdown
Member

branfosj commented Jan 6, 2026

We have easybuilders/easybuild-framework#221 for adding this as functionality in framework. Only 13+ years old!

As far as I am aware the conflict statement is case sensitive. So modluafooter = 'conflict("GGD-VTK")' assumes capitalisation of module naming that will not be correct for all module naming schemes. I believe that a lower case module naming scheme would need modluafooter = 'conflict("ggd-vtk")'.

@Thyre

This comment was marked as outdated.

@Thyre

This comment was marked as outdated.

@Thyre Thyre changed the title [GCCcore/15.2.0]{lib} zlib-ng v2.3.2 & use it for binutils v2.45 [GCCcore/15.2.0]{lib} zlib v2.3.2, zlib-ng v2.3.2 & use it for binutils v2.45 Jan 6, 2026
@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 6, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 6 out of 6 (total: 2 mins 24 secs) (3 easyconfigs in total)
Linux - Linux Arch Linux UNKNOWN, x86_64, AMD Ryzen 7 7800X3D 8-Core Processor (zen4), 1 x AMD Navi 48 [Radeon RX 9070/9070 XT/9070 GRE] (device id: 0x7550, gfx: gfx1201, driver: Linuxversion6.18.3-arch1-1(linux@archlinux)(gcc(GCC)15.2.120251112,GNUld(GNUBinutils)2.45.1)#1SMPPREEMPT_DYNAMICFri,02Jan202617:52:55+0000), 1 x AMD Raphael (device id: 0x164e, gfx: gfx1036, driver: Linuxversion6.18.3-arch1-1(linux@archlinux)(gcc(GCC)15.2.120251112,GNUld(GNUBinutils)2.45.1)#1SMPPREEMPT_DYNAMICFri,02Jan202617:52:55+0000), Python 3.13.11
See https://gist.github.com/Thyre/c977860023ac1792c782e6ac6c44dc0d for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 6, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 6 out of 6 (total: 4 mins 23 secs) (3 easyconfigs in total)
Framework - Linux Fedora Linux 43, x86_64, AMD Ryzen AI 7 350 w/ Radeon 860M (zen5), 1 x AMD Krackan [Radeon 840M / 860M Graphics] (device id: 0x1114, gfx: gfx1152, driver: Linuxversion6.17.12-300.fc43.x86_64(mockbuild@008798550d8d49b8909ac02baf9be783)(gcc(GCC)15.2.120251111(RedHat15.2.1-4),GNUldversion2.45.1-1.fc43)#1SMPPREEMPT_DYNAMICSatDec1305:06:24UTC2025), Python 3.14.2
See https://gist.github.com/Thyre/4b3f0e71928de366c0df06429abd9ae5 for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 6, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 9 out of 9 (total: 50 mins 13 secs) (3 easyconfigs in total)
jpbl-s01-03 - Linux RHEL 9.6, AArch64, ARM UNKNOWN (neoverse_v2), 1 x NVIDIA NVIDIA GH200 480GB, 570.133.20, Python 3.9.21
See https://gist.github.com/Thyre/60132055c82a3a695b1ed0091816add9 for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 6, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 9 out of 9 (total: 1 hour 14 mins 38 secs) (3 easyconfigs in total)
datenlager - Linux Ubuntu 24.04, x86_64, AMD Ryzen 7 3700X 8-Core Processor (zen2), Python 3.12.3
See https://gist.github.com/Thyre/2b29e9a26f5ed4ebd25bc4f46845d02f for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 7, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 3 out of 3 (total: 3 mins 28 secs) (3 easyconfigs in total)
ZAM054 - Linux Zorin OS 18, x86_64, 12th Gen Intel(R) Core(TM) i7-1260P (skylake), 1 x NVIDIA NVIDIA GeForce MX550, 580.95.05, Python 3.12.3
See https://gist.github.com/Thyre/431bcc3b073e429b4f242a5d5cdcc157 for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 7, 2026

Test report by @Thyre
SUCCESS
Build succeeded for 3 out of 3 (total: 2 mins 14 secs) (3 easyconfigs in total)
jrc0901.jureca - Linux Rocky Linux 9.6, AArch64, ARM UNKNOWN (neoverse_v2), 1 x NVIDIA NVIDIA GH200 480GB, 580.95.05, Python 3.9.21
See https://gist.github.com/Thyre/e835b2c32efd27473edebceefd5e63b5 for a full test report.

@Crivella
Copy link
Copy Markdown
Contributor

Crivella commented Jan 7, 2026

Test report by @Crivella
SUCCESS
Build succeeded for 9 out of 9 (total: 1 hour 21 mins 55 secs) (3 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.14
See https://gist.github.com/Crivella/69ab6dc7bba60e8a4c77c4ebf40c284e for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Jan 18, 2026

Test report by @boegel
FAILED
Build succeeded for 2 out of 3 (total: 36 secs) (3 easyconfigs in total)
aarch64-neoverse-v1-node1.int.aws-rocky88-202310.eessi.io - Linux Rocky Linux 8.10, AArch64, ARM UNKNOWN (neoverse_v1), Python 3.6.8
See https://gist.github.com/boegel/e46e1748b1149023d01780fedce4c64a for a full test report.

edit: failed due to failure to download source tarball for binutils, works fine when trying with eb --fetch, so looks like a fluke...

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

boegel commented Jan 18, 2026

Test report by @boegel
SUCCESS
Build succeeded for 9 out of 9 (total: 57 mins 21 secs) (3 easyconfigs in total)
node4247.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/ebbb2c304234c2df0c639dd77f56bcb1 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Jan 18, 2026

Test report by @boegel
SUCCESS
Build succeeded for 3 out of 3 (total: 2 mins 21 secs) (3 easyconfigs in total)
aarch64-neoverse-v1-node1.int.aws-rocky88-202310.eessi.io - Linux Rocky Linux 8.10, AArch64, ARM UNKNOWN (neoverse_v1), Python 3.6.8
See https://gist.github.com/boegel/e6929584f51a56e114f2ed2be0c0c51d for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Jan 18, 2026

Going in, thanks @Thyre!

@boegel boegel merged commit 8cf5e59 into easybuilders:develop Jan 18, 2026
8 checks passed
@boegel boegel changed the title [GCCcore/15.2.0]{lib} zlib v2.3.2, zlib-ng v2.3.2 & use it for binutils v2.45 [GCCcore/15.2.0] zlib-ng v2.3.2 + use zlib v2.3.2 (zlib-ng configured with --zlib-compat) as dependency for binutils v2.45 Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2026.1 issues & PRs related to 2026.1 common toolchains change update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants