From a58c8c43f621708d52e91ae2c0a5182d384f1195 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Mon, 29 Jun 2026 15:29:04 +0200 Subject: [PATCH 01/12] TensorFlow 2.21.0 --- ...atbuffers-python-25.9.23-GCCcore-14.3.0.eb | 23 +++ .../flatbuffers-25.9.23-GCCcore-14.3.0.eb | 33 ++++ .../TensorFlow-2.21.0-foss-2025b.eb | 154 ++++++++++++++++++ ...0_disable-tf32-in-fused-matmul-tests.patch | 44 +++++ ...TensorFlow-2.21.0_fix-pybind11-build.patch | 14 ++ ...ensorFlow-2.21.0_remove-libclang-dep.patch | 17 ++ 6 files changed, 285 insertions(+) create mode 100644 easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb create mode 100644 easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb create mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb create mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch create mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch create mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_remove-libclang-dep.patch diff --git a/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb b/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb new file mode 100644 index 000000000000..15193ceca63c --- /dev/null +++ b/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb @@ -0,0 +1,23 @@ +easyblock = 'PythonPackage' + +name = 'flatbuffers-python' +version = '25.9.23' + +homepage = 'https://github.com/google/flatbuffers/' +description = """Python Flatbuffers runtime library.""" + +toolchain = {'name': 'GCCcore', 'version': '14.3.0'} + +source_urls = ['https://pypi.python.org/packages/source/f/flatbuffers'] +sources = [{'download_filename': 'flatbuffers-%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}] +checksums = ['676f9fa62750bb50cf531b42a0a2a118ad8f7f797a511eda12881c016f093b12'] + +dependencies = [ + ('binutils', '2.44'), + ('Python', '3.13.5'), +] + +preinstallopts = 'VERSION=%(version)s ' +options = {'modulename': 'flatbuffers'} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb b/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb new file mode 100644 index 000000000000..eab87086a477 --- /dev/null +++ b/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb @@ -0,0 +1,33 @@ +## +# Author: Robert Mijakovic +## +easyblock = 'CMakeNinja' + +name = 'flatbuffers' +version = '25.9.23' + +homepage = 'https://github.com/google/flatbuffers/' +description = """FlatBuffers: Memory Efficient Serialization Library""" + +toolchain = {'name': 'GCCcore', 'version': '14.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/google/flatbuffers/archive/v%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['9102253214dea6ae10c2ac966ea1ed2155d22202390b532d1dea64935c518ada'] + +builddependencies = [ + ('binutils', '2.44'), + ('CMake', '4.0.3'), + ('Ninja', '1.13.0'), + ('Python', '3.13.5'), +] + +configopts = '-DFLATBUFFERS_ENABLE_PCH=ON ' + +sanity_check_paths = { + 'files': ['include/flatbuffers/flatbuffers.h', 'bin/flatc', 'lib/libflatbuffers.a'], + 'dirs': ['lib/cmake'], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb new file mode 100644 index 000000000000..44cf09df3ce7 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -0,0 +1,154 @@ +easyblock = 'PythonBundle' + +name = 'TensorFlow' +version = '2.21.0' + +homepage = 'https://www.tensorflow.org/' +description = "An open-source software library for Machine Intelligence" + +toolchain = {'name': 'foss', 'version': '2025b'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('hatchling', '1.27.0'), + ('Bazel', '7.7.0', '-Java-21'), + # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053 + ('git', '2.50.1'), + ('pybind11', '3.0.0'), + ('UnZip', '6.0'), + ('NASM', '2.16.03'), + # Required to build some of the extensions + ('poetry', '2.1.3'), + ('Cython', '3.2.4'), +] + +dependencies = [ + ('Python', '3.13.5'), + ('Python-bundle-PyPI', '2025.07'), + ('SciPy-bundle', '2025.07'), + ('h5py', '3.14.0'), + ('cURL', '8.14.1'), + ('dill', '0.4.1'), + ('double-conversion', '3.3.1'), + ('flatbuffers', '25.9.23'), + ('flatbuffers-python', '25.9.23'), + ('giflib', '5.2.2'), + ('hwloc', '2.12.1'), + ('ICU', '77.1'), + ('JsonCpp', '1.9.6'), + ('libjpeg-turbo', '3.1.1'), + ('ml_dtypes', '0.5.3'), + ('nsync', '1.29.2'), + ('SQLite', '3.50.1'), + ('patchelf', '0.18.0'), + ('libpng', '1.6.50'), + ('snappy', '1.2.2'), + ('zlib', '1.3.1'), + ('protobuf-python', '6.31.1'), + ('grpcio', '1.81.0'), + ('wrapt', '1.17.3'), + ('Markdown', '3.8.2'), + ('absl-py', '2.3.1'), + ('tensorboard', '2.20.0'), + ('opt-einsum', '3.4.0'), + ('optree', '0.18.0'), + ('typing-extensions', '4.14.1'), +] + +exts_list = [ + ('astor', '0.8.1', { + 'checksums': ['6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e'], + }), + ('termcolor', '2.5.0', { + 'checksums': ['998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f'], + }), + ('Werkzeug', '3.1.3', { + 'source_tmpl': '%(namelower)s-%(version)s.tar.gz', + 'checksums': ['60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746'], + }), + ('namex', '0.0.8', { + 'checksums': ['32a50f6c565c0bb10aa76298c959507abdc0e850efe085dc38f3440fcb3aa90b'], + }), + ('keras', '3.13.2', { + 'checksums': ['62f0123488ac87c929c988617e14f293f7bc993811837d08bb37eff77adc85a9'], + }), + ('google-pasta', '0.2.0', { + 'modulename': 'pasta', + 'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'], + }), + ('astunparse', '1.6.3', { + 'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'], + }), + ('tblib', '3.0.0', { + 'checksums': ['93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6'], + }), + (name, version, { + 'patches': [ + 'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch', + 'TensorFlow-2.15.1_fix-flatbuffer-license.patch', + 'TensorFlow-2.21.0_fix-pybind11-build.patch', + 'TensorFlow-2.15.1_add-default-shell-env.patch', + 'TensorFlow-2.4.0_dont-use-var-lock.patch', + 'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch', + 'TensorFlow-2.18.1_fix-patchelf.patch', + 'TensorFlow-2.18.1_fix-xnnpack.patch', + 'TensorFlow-2.18.1_fixedpoint.patch', + 'TensorFlow-2.21.0_remove-libclang-dep.patch', + ], + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'], + 'test_script': 'TensorFlow-2.x_mnist-test.py', + 'test_tag_filters_cpu': '-gpu,-tpu,-no_cuda_on_cpu_tap,-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only', + 'test_tag_filters_gpu': ( + 'gpu,-no_gpu,-nogpu,-gpu_cupti,-no_cuda11,' + '-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only' + ), + 'test_targets': [ + '//tensorflow/core/...', + '-//tensorflow/core:example_java_proto', + '-//tensorflow/core/example:example_protos_closure', + '//tensorflow/cc/...', + '//tensorflow/c/...', + '//tensorflow/python/...', + '-//tensorflow/c/eager:c_api_test_gpu', + '-//tensorflow/c/eager:c_api_distributed_test', + '-//tensorflow/c/eager:c_api_distributed_test_gpu', + '-//tensorflow/c/eager:c_api_cluster_test_gpu', + '-//tensorflow/c/eager:c_api_remote_function_test_gpu', + '-//tensorflow/c/eager:c_api_remote_test_gpu', + '-//tensorflow/core/common_runtime:collective_param_resolver_local_test', + '-//tensorflow/core/kernels/mkl:mkl_fused_ops_test', + '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test', + '-//tensorflow/core/ir/importexport/tests/roundtrip/...', + ], + 'testopts': "--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ", + 'testopts_gpu': ( + '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' + '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' + ), + 'with_xla': True, + 'checksums': [ + {'v2.21.0.tar.gz': 'ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921'}, + {'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch': + '77d8c8a5627493fc7c38b4de79d49e60ff6628b05ff969f4cd3ff9857176c459'}, + {'TensorFlow-2.15.1_fix-flatbuffer-license.patch': + '2c04d5095977a628a238dbf93c5fada7159c86752a7183e64e0cf7c7ab00caf4'}, + {'TensorFlow-2.21.0_fix-pybind11-build.patch': + '35c62874a12642967fdc7bf0a2d2ede426468bb1e2b8fd457766a40613af4762'}, + {'TensorFlow-2.15.1_add-default-shell-env.patch': + '3d5196b4bf2e91048dc8a18f9e8f487a223fcd973d6302e80b0d4000ea3d652b'}, + {'TensorFlow-2.4.0_dont-use-var-lock.patch': + 'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'}, + {'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch': + '2f605322c9694ccf6e013f06f403496320445a093ceca6625fec616343f5fd32'}, + {'TensorFlow-2.18.1_fix-patchelf.patch': + '6c9a4d8484868b68aad99527420f22ff09528db588cdb11926ec9340f0c4a816'}, + {'TensorFlow-2.18.1_fix-xnnpack.patch': 'baf81d7b2b61b5a923cf1f171d5e2400df6b8bd9073d3afa7a356e3bbe11984c'}, + {'TensorFlow-2.18.1_fixedpoint.patch': '5ea1eb3b32e7df5f9ae711a71778b4cae544b3380f18882186eea035873fb640'}, + {'TensorFlow-2.21.0_remove-libclang-dep.patch': + '4ee3773d07991c7f75d6dd4033ccf1bb9b017de478b39b4ffb6563a6bd66b981'}, + ], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch new file mode 100644 index 000000000000..54ba997c9254 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch @@ -0,0 +1,44 @@ +Fixes failing FusedMatMul test on certain GPU models +--- tensorflow/core/kernels/matmul_op_test.cc.orig 2026-06-29 00:00:00.000000000 +0200 ++++ tensorflow/core/kernels/matmul_op_test.cc 2026-06-29 00:00:00.000000000 +0200 +@@ -24,7 +24,8 @@ + #include "tensorflow/core/framework/tensor.h" + #include "tensorflow/core/framework/types.h" + #include "tensorflow/core/kernels/ops_testutil.h" + #include "tensorflow/core/lib/core/status_test_util.h" ++#include "tensorflow/core/platform/tensor_float_32_utils.h" + #include "tensorflow/core/platform/test.h" + #include "tensorflow/core/platform/test_benchmark.h" + #include "tensorflow/core/protobuf/rewriter_config.pb.h" +@@ -334,6 +335,7 @@ + // -------------------------------------------------------------------------- // + + TYPED_TEST_P(FusedMatMulWithBiasOpTest, MatMul256x128x64) { ++ tensorflow::enable_tensor_float_32_execution(false); + this->VerifyMatMulWithBias(256, 128, 64, false, false); + this->VerifyMatMulWithBias(256, 128, 64, true, false); + this->VerifyMatMulWithBias(256, 128, 64, false, true); +@@ -341,6 +343,7 @@ + } + + TYPED_TEST_P(FusedMatMulWithBiasOpTest, MatMul1x256x256) { ++ tensorflow::enable_tensor_float_32_execution(false); + this->VerifyMatMulWithBias(1, 256, 256, false, false); + this->VerifyMatMulWithBias(1, 256, 256, true, false); + this->VerifyMatMulWithBias(1, 256, 256, false, true); +@@ -348,6 +351,7 @@ + } + + TYPED_TEST_P(FusedMatMulWithBiasOpTest, MatMul256x256x1) { ++ tensorflow::enable_tensor_float_32_execution(false); + this->VerifyMatMulWithBias(256, 256, 1, false, false); + this->VerifyMatMulWithBias(256, 256, 1, true, false); + this->VerifyMatMulWithBias(256, 256, 1, false, true); +@@ -371,6 +375,7 @@ + } + + TYPED_TEST_P(FusedMatMulWithBiasOpTest, MatMul256x128x64WithActivation) { ++ tensorflow::enable_tensor_float_32_execution(false); + for (const std::string& activation : GetActivations(this->kTValueType)) { + this->VerifyConv2DWithBiasAndActivation(256, 128, 64, false, false, + activation); diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch new file mode 100644 index 000000000000..3b7a936ad969 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch @@ -0,0 +1,14 @@ +diff --git a/third_party/systemlibs/pybind11.BUILD b/third_party/systemlibs/pybind11.BUILD +index 4cbdc5b..3992482 100644 +--- a/third_party/systemlibs/pybind11.BUILD ++++ b/third_party/systemlibs/pybind11.BUILD +@@ -6,3 +6,9 @@ cc_library( + "@xla@xla//third_party/python_runtime:headers", + ], + ) ++ ++# Needed by pybind11_bazel. ++config_setting( ++ name = "osx", ++ constraint_values = ["@platforms//os:osx"], ++) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_remove-libclang-dep.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_remove-libclang-dep.patch new file mode 100644 index 000000000000..e5ac8082d89f --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_remove-libclang-dep.patch @@ -0,0 +1,17 @@ +libclang was introduced in +https://github.com/tensorflow/tensorflow/commit/c211472000ff57bac7fcec9b0465cf73b37bf135 +> This is in preparation to open-source TF's TFRT backend. +> TFRT generates code using libclang python bindings as part of the build. +Hence it is not currently used and as it is not (easily) available for all architectures +simply remove it. + +--- tensorflow/tools/pip_package/setup.py.tpl.orig 2026-06-29 00:00:00.000000000 +0200 ++++ tensorflow/tools/pip_package/setup.py.tpl 2026-06-29 00:00:00.000000000 +0200 +@@ -97,7 +97,6 @@ + 'flatbuffers >= 25.9.23', + 'gast >=0.2.1,!=0.5.0,!=0.5.1,!=0.5.2', + 'google_pasta >= 0.1.1', +- 'libclang >= 13.0.0', + 'opt_einsum >= 2.3.2', + 'packaging', + 'protobuf >= 6.31.1, < 8.0.0', From f0b54e2163895d9cd32f4a7d8ba99372a093c17f Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Mon, 29 Jun 2026 16:00:20 +0200 Subject: [PATCH 02/12] fix bazel dep --- .../Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb | 6 ++- .../Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb | 7 +++- ...bazel-7.7.0_quote-netty-zip-patterns.patch | 42 +++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb index bbe39c68e8ec..d8e6828c3233 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb @@ -10,10 +10,14 @@ toolchain = {'name': 'GCCcore', 'version': '14.3.0'} source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] sources = ['%(namelower)s-%(version)s-dist.zip'] -patches = [('bazel-7.7.0-bazel_features.patch', 1)] +patches = [ + ('bazel-7.7.0-bazel_features.patch', 1), + ('bazel-7.7.0_quote-netty-zip-patterns.patch', 1), +] checksums = [ '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f', # bazel-7.7.0-dist.zip '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa', # bazel-7.7.0-bazel_features.patch + '3138676198b738448bd913f5111cc8f19d84e2b7d4143088968edf09e7c81f24', # bazel-7.7.0_quote-netty-zip-patterns.patch ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb index 532367b9a164..9666e4e31f8d 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb @@ -10,10 +10,15 @@ toolchain = {'name': 'GCCcore', 'version': '15.2.0'} source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] sources = ['%(namelower)s-%(version)s-dist.zip'] -patches = [('bazel-7.7.0-bazel_features.patch', 1)] +patches = [ + ('bazel-7.7.0-bazel_features.patch', 1), + ('bazel-7.7.0_quote-netty-zip-patterns.patch', 1), +] checksums = [ {'bazel-7.7.0-dist.zip': '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f'}, {'bazel-7.7.0-bazel_features.patch': '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa'}, + {'bazel-7.7.0_quote-netty-zip-patterns.patch': + '3138676198b738448bd913f5111cc8f19d84e2b7d4143088968edf09e7c81f24'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch new file mode 100644 index 000000000000..bd28d0664d6e --- /dev/null +++ b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch @@ -0,0 +1,42 @@ +# Author: OpenAI Codex +# Keep zip deletion patterns quoted so the shell does not expand them against +# Bazel's execroot before Info-ZIP can match them against jar entries. +diff --git a/third_party/BUILD b/third_party/BUILD +index 1f35568..709a449 100644 +--- a/third_party/BUILD ++++ b/third_party/BUILD +@@ -486,16 +486,16 @@ alias( + ) + + UNNECESSARY_DYNAMIC_LIBRARIES = select({ +- "//src/conditions:windows": "*.so *.jnilib", +- "//src/conditions:darwin": "*.so *.dll", +- "//src/conditions:linux_x86_64": "*.jnilib *.dll", +- "//src/conditions:linux_s390x": "*.jnilib *.dll", ++ "//src/conditions:windows": "'*.so' '*.jnilib'", ++ "//src/conditions:darwin": "'*.so' '*.dll'", ++ "//src/conditions:linux_x86_64": "'*.jnilib' '*.dll'", ++ "//src/conditions:linux_s390x": "'*.jnilib' '*.dll'", + # The .so file is an x86/s390x one, so we can just remove it if the CPU is not x86/s390x +- "//src/conditions:arm": "*.so *.jnilib *.dll", +- "//src/conditions:linux_aarch64": "*.so *.jnilib *.dll", +- "//src/conditions:linux_ppc": "*.so *.jnilib *.dll", +- "//src/conditions:freebsd": "*.so *.jnilib *.dll", +- "//src/conditions:openbsd": "*.so *.jnilib *.dll", ++ "//src/conditions:arm": "'*.so' '*.jnilib' '*.dll'", ++ "//src/conditions:linux_aarch64": "'*.so' '*.jnilib' '*.dll'", ++ "//src/conditions:linux_ppc": "'*.so' '*.jnilib' '*.dll'", ++ "//src/conditions:freebsd": "'*.so' '*.jnilib' '*.dll'", ++ "//src/conditions:openbsd": "'*.so' '*.jnilib' '*.dll'", + # Default is to play it safe -- better have a big binary than a slow binary + # The empty string means nothing is to be removed from the library; + # the rule command tests for the empty string explictly to avoid +@@ -528,7 +528,7 @@ genrule( + cmd = "cp $< $@ && " + + # Make sure we can write the output file, even if the input isn't writable. + "chmod +w $@ && " + +- "zip -qd $@ */license/* " + UNNECESSARY_DYNAMIC_LIBRARIES, ++ "zip -qd $@ '*/license/*' " + UNNECESSARY_DYNAMIC_LIBRARIES, + ) + + distrib_java_import( From 5ae4a084a2b1aa18b574cc2a13610f2aaafda397 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Mon, 29 Jun 2026 16:23:00 +0200 Subject: [PATCH 03/12] fix bazel attempt 2 --- .../Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb | 4 +- .../Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb | 6 +-- ...bazel-7.7.0_quote-netty-zip-patterns.patch | 42 --------------- ...azel-7.7.0_repack-netty-tcnative-jar.patch | 54 +++++++++++++++++++ 4 files changed, 59 insertions(+), 47 deletions(-) delete mode 100644 easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch create mode 100644 easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb index d8e6828c3233..7723f2729594 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb @@ -12,12 +12,12 @@ source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%( sources = ['%(namelower)s-%(version)s-dist.zip'] patches = [ ('bazel-7.7.0-bazel_features.patch', 1), - ('bazel-7.7.0_quote-netty-zip-patterns.patch', 1), + ('bazel-7.7.0_repack-netty-tcnative-jar.patch', 1), ] checksums = [ '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f', # bazel-7.7.0-dist.zip '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa', # bazel-7.7.0-bazel_features.patch - '3138676198b738448bd913f5111cc8f19d84e2b7d4143088968edf09e7c81f24', # bazel-7.7.0_quote-netty-zip-patterns.patch + 'ed64447562ec63949920668bd430a4440c5e8d7ab5274a992f543da9b19608af', # bazel-7.7.0_repack-netty-tcnative-jar.patch ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb index 9666e4e31f8d..d52eb10b2535 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb @@ -12,13 +12,13 @@ source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%( sources = ['%(namelower)s-%(version)s-dist.zip'] patches = [ ('bazel-7.7.0-bazel_features.patch', 1), - ('bazel-7.7.0_quote-netty-zip-patterns.patch', 1), + ('bazel-7.7.0_repack-netty-tcnative-jar.patch', 1), ] checksums = [ {'bazel-7.7.0-dist.zip': '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f'}, {'bazel-7.7.0-bazel_features.patch': '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa'}, - {'bazel-7.7.0_quote-netty-zip-patterns.patch': - '3138676198b738448bd913f5111cc8f19d84e2b7d4143088968edf09e7c81f24'}, + {'bazel-7.7.0_repack-netty-tcnative-jar.patch': + 'ed64447562ec63949920668bd430a4440c5e8d7ab5274a992f543da9b19608af'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch deleted file mode 100644 index bd28d0664d6e..000000000000 --- a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_quote-netty-zip-patterns.patch +++ /dev/null @@ -1,42 +0,0 @@ -# Author: OpenAI Codex -# Keep zip deletion patterns quoted so the shell does not expand them against -# Bazel's execroot before Info-ZIP can match them against jar entries. -diff --git a/third_party/BUILD b/third_party/BUILD -index 1f35568..709a449 100644 ---- a/third_party/BUILD -+++ b/third_party/BUILD -@@ -486,16 +486,16 @@ alias( - ) - - UNNECESSARY_DYNAMIC_LIBRARIES = select({ -- "//src/conditions:windows": "*.so *.jnilib", -- "//src/conditions:darwin": "*.so *.dll", -- "//src/conditions:linux_x86_64": "*.jnilib *.dll", -- "//src/conditions:linux_s390x": "*.jnilib *.dll", -+ "//src/conditions:windows": "'*.so' '*.jnilib'", -+ "//src/conditions:darwin": "'*.so' '*.dll'", -+ "//src/conditions:linux_x86_64": "'*.jnilib' '*.dll'", -+ "//src/conditions:linux_s390x": "'*.jnilib' '*.dll'", - # The .so file is an x86/s390x one, so we can just remove it if the CPU is not x86/s390x -- "//src/conditions:arm": "*.so *.jnilib *.dll", -- "//src/conditions:linux_aarch64": "*.so *.jnilib *.dll", -- "//src/conditions:linux_ppc": "*.so *.jnilib *.dll", -- "//src/conditions:freebsd": "*.so *.jnilib *.dll", -- "//src/conditions:openbsd": "*.so *.jnilib *.dll", -+ "//src/conditions:arm": "'*.so' '*.jnilib' '*.dll'", -+ "//src/conditions:linux_aarch64": "'*.so' '*.jnilib' '*.dll'", -+ "//src/conditions:linux_ppc": "'*.so' '*.jnilib' '*.dll'", -+ "//src/conditions:freebsd": "'*.so' '*.jnilib' '*.dll'", -+ "//src/conditions:openbsd": "'*.so' '*.jnilib' '*.dll'", - # Default is to play it safe -- better have a big binary than a slow binary - # The empty string means nothing is to be removed from the library; - # the rule command tests for the empty string explictly to avoid -@@ -528,7 +528,7 @@ genrule( - cmd = "cp $< $@ && " + - # Make sure we can write the output file, even if the input isn't writable. - "chmod +w $@ && " + -- "zip -qd $@ */license/* " + UNNECESSARY_DYNAMIC_LIBRARIES, -+ "zip -qd $@ '*/license/*' " + UNNECESSARY_DYNAMIC_LIBRARIES, - ) - - distrib_java_import( diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch new file mode 100644 index 000000000000..fddd2a7acb44 --- /dev/null +++ b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch @@ -0,0 +1,54 @@ +# Author: OpenAI Codex +# Avoid in-place zip deletion for Bazel's Netty tcnative jar. On some systems +# Info-ZIP exits with "Interrupted (aborting)" while deleting from this jar, so +# rebuild the filtered jar from extracted contents instead. +diff --git a/third_party/BUILD b/third_party/BUILD +index 1f35568..c8f1b35 100644 +--- a/third_party/BUILD ++++ b/third_party/BUILD +@@ -500,16 +500,16 @@ alias( + ) + + UNNECESSARY_DYNAMIC_LIBRARIES = select({ +- "//src/conditions:windows": "*.so *.jnilib", +- "//src/conditions:darwin": "*.so *.dll", +- "//src/conditions:linux_x86_64": "*.jnilib *.dll", +- "//src/conditions:linux_s390x": "*.jnilib *.dll", ++ "//src/conditions:windows": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && ", ++ "//src/conditions:darwin": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:linux_x86_64": "find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:linux_s390x": "find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", + # The .so file is an x86/s390x one, so we can just remove it if the CPU is not x86/s390x +- "//src/conditions:arm": "*.so *.jnilib *.dll", +- "//src/conditions:linux_aarch64": "*.so *.jnilib *.dll", +- "//src/conditions:linux_ppc": "*.so *.jnilib *.dll", +- "//src/conditions:freebsd": "*.so *.jnilib *.dll", +- "//src/conditions:openbsd": "*.so *.jnilib *.dll", ++ "//src/conditions:arm": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:linux_aarch64": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:linux_ppc": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:freebsd": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", ++ "//src/conditions:openbsd": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", + # Default is to play it safe -- better have a big binary than a slow binary + # The empty string means nothing is to be removed from the library; + # the rule command tests for the empty string explictly to avoid +@@ -530,10 +530,15 @@ genrule( + "//conditions:default": [], + }), + outs = ["netty_tcnative/netty-tcnative-filtered.jar"], +- cmd = "cp $< $@ && " + +- # Make sure we can write the output file, even if the input isn't writable. +- "chmod +w $@ && " + +- "zip -qd $@ */license/* " + UNNECESSARY_DYNAMIC_LIBRARIES, ++ cmd = "mkdir -p $$(dirname $@) && " + ++ "OUTPUT=$$(pwd)/$@ && " + ++ "rm -f $$OUTPUT && " + ++ "NETTY_JAR_TMPDIR=$$(mktemp -d) && " + ++ "trap 'chmod -R +w $$NETTY_JAR_TMPDIR && rm -rf $$NETTY_JAR_TMPDIR' EXIT && " + ++ "unzip -q $< -d $$NETTY_JAR_TMPDIR && " + ++ "find $$NETTY_JAR_TMPDIR -path '*/license/*' -delete && " + ++ UNNECESSARY_DYNAMIC_LIBRARIES + ++ "(cd $$NETTY_JAR_TMPDIR && find . -type f | LC_ALL=C sort | zip -qDX0r@ $$OUTPUT)", + ) + + distrib_java_import( From 83f71049626b7c8b6c8729b64143e5ee39a62622 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 12:45:05 +0200 Subject: [PATCH 04/12] add bazel fix --- .../b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb | 2 +- .../b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb | 2 +- .../b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb index 7723f2729594..1bf39dd69c11 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb @@ -17,7 +17,7 @@ patches = [ checksums = [ '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f', # bazel-7.7.0-dist.zip '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa', # bazel-7.7.0-bazel_features.patch - 'ed64447562ec63949920668bd430a4440c5e8d7ab5274a992f543da9b19608af', # bazel-7.7.0_repack-netty-tcnative-jar.patch + '8777f91f24fba14a3e94a2a444a6d7a36f928837f3cda356b4758f7031f86527', # bazel-7.7.0_repack-netty-tcnative-jar.patch ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb index d52eb10b2535..5cf073ca0857 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb @@ -18,7 +18,7 @@ checksums = [ {'bazel-7.7.0-dist.zip': '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f'}, {'bazel-7.7.0-bazel_features.patch': '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa'}, {'bazel-7.7.0_repack-netty-tcnative-jar.patch': - 'ed64447562ec63949920668bd430a4440c5e8d7ab5274a992f543da9b19608af'}, + '8777f91f24fba14a3e94a2a444a6d7a36f928837f3cda356b4758f7031f86527'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch index fddd2a7acb44..f7b0be5c64bb 100644 --- a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch +++ b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch @@ -1,7 +1,9 @@ # Author: OpenAI Codex # Avoid in-place zip deletion for Bazel's Netty tcnative jar. On some systems # Info-ZIP exits with "Interrupted (aborting)" while deleting from this jar, so -# rebuild the filtered jar from extracted contents instead. +# rebuild the filtered jar from extracted contents with the JDK's jar tool +# instead. Avoid Info-ZIP entirely, since it can also be interrupted while +# creating the replacement archive on lock-sensitive filesystems. diff --git a/third_party/BUILD b/third_party/BUILD index 1f35568..c8f1b35 100644 --- a/third_party/BUILD @@ -48,7 +50,7 @@ index 1f35568..c8f1b35 100644 + "unzip -q $< -d $$NETTY_JAR_TMPDIR && " + + "find $$NETTY_JAR_TMPDIR -path '*/license/*' -delete && " + + UNNECESSARY_DYNAMIC_LIBRARIES + -+ "(cd $$NETTY_JAR_TMPDIR && find . -type f | LC_ALL=C sort | zip -qDX0r@ $$OUTPUT)", ++ "jar --create --no-manifest --file $$OUTPUT -C $$NETTY_JAR_TMPDIR .", ) distrib_java_import( From bca5b4f49f12b0f2129bfe37356ac64d52a3ca0a Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 15:36:59 +0200 Subject: [PATCH 05/12] Remove patch since already present in new version --- .../b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch | 1 - .../t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb | 6 ------ 2 files changed, 7 deletions(-) diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch index f7b0be5c64bb..769908f6fff9 100644 --- a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch +++ b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch @@ -1,4 +1,3 @@ -# Author: OpenAI Codex # Avoid in-place zip deletion for Bazel's Netty tcnative jar. On some systems # Info-ZIP exits with "Interrupted (aborting)" while deleting from this jar, so # rebuild the filtered jar from extracted contents with the JDK's jar tool diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index 44cf09df3ce7..821e97d6d78e 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -87,10 +87,8 @@ exts_list = [ 'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch', 'TensorFlow-2.15.1_fix-flatbuffer-license.patch', 'TensorFlow-2.21.0_fix-pybind11-build.patch', - 'TensorFlow-2.15.1_add-default-shell-env.patch', 'TensorFlow-2.4.0_dont-use-var-lock.patch', 'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch', - 'TensorFlow-2.18.1_fix-patchelf.patch', 'TensorFlow-2.18.1_fix-xnnpack.patch', 'TensorFlow-2.18.1_fixedpoint.patch', 'TensorFlow-2.21.0_remove-libclang-dep.patch', @@ -135,14 +133,10 @@ exts_list = [ '2c04d5095977a628a238dbf93c5fada7159c86752a7183e64e0cf7c7ab00caf4'}, {'TensorFlow-2.21.0_fix-pybind11-build.patch': '35c62874a12642967fdc7bf0a2d2ede426468bb1e2b8fd457766a40613af4762'}, - {'TensorFlow-2.15.1_add-default-shell-env.patch': - '3d5196b4bf2e91048dc8a18f9e8f487a223fcd973d6302e80b0d4000ea3d652b'}, {'TensorFlow-2.4.0_dont-use-var-lock.patch': 'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'}, {'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch': '2f605322c9694ccf6e013f06f403496320445a093ceca6625fec616343f5fd32'}, - {'TensorFlow-2.18.1_fix-patchelf.patch': - '6c9a4d8484868b68aad99527420f22ff09528db588cdb11926ec9340f0c4a816'}, {'TensorFlow-2.18.1_fix-xnnpack.patch': 'baf81d7b2b61b5a923cf1f171d5e2400df6b8bd9073d3afa7a356e3bbe11984c'}, {'TensorFlow-2.18.1_fixedpoint.patch': '5ea1eb3b32e7df5f9ae711a71778b4cae544b3380f18882186eea035873fb640'}, {'TensorFlow-2.21.0_remove-libclang-dep.patch': From b525907e04d8bfda6ab0de6c4cc62dbf0bcfd593 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 17:58:06 +0200 Subject: [PATCH 06/12] Apply bazel changes --- .../Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb | 2 +- .../Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb | 2 +- .../TensorFlow-2.21.0-foss-2025b.eb | 19 +++++++++++++++++-- ...TensorFlow-2.21.0_fix-pybind11-build.patch | 14 ++++++++++++-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb index 1bf39dd69c11..2aecd8795a53 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb @@ -17,7 +17,7 @@ patches = [ checksums = [ '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f', # bazel-7.7.0-dist.zip '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa', # bazel-7.7.0-bazel_features.patch - '8777f91f24fba14a3e94a2a444a6d7a36f928837f3cda356b4758f7031f86527', # bazel-7.7.0_repack-netty-tcnative-jar.patch + '2e5d530b3090ec86aa3b97a470c34a2ccfcbe36694a6cf94c1c3d9fa0a2dc2bf', # bazel-7.7.0_repack-netty-tcnative-jar.patch ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb index 5cf073ca0857..f50981f9a5bc 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb @@ -18,7 +18,7 @@ checksums = [ {'bazel-7.7.0-dist.zip': '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f'}, {'bazel-7.7.0-bazel_features.patch': '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa'}, {'bazel-7.7.0_repack-netty-tcnative-jar.patch': - '8777f91f24fba14a3e94a2a444a6d7a36f928837f3cda356b4758f7031f86527'}, + '2e5d530b3090ec86aa3b97a470c34a2ccfcbe36694a6cf94c1c3d9fa0a2dc2bf'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index 821e97d6d78e..1fe8055a6755 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -119,11 +119,26 @@ exts_list = [ '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test', '-//tensorflow/core/ir/importexport/tests/roundtrip/...', ], - 'testopts': "--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ", + 'buildopts': '--action_env=CPATH= --host_action_env=CPATH=', + 'testopts': ( + '--action_env=CPATH= --host_action_env=CPATH= ' + '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' + ), 'testopts_gpu': ( + '--action_env=CPATH= --host_action_env=CPATH= ' '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' ), + # EasyBuild 5.3.0's TF_SYSTEM_LIBS mapping is incompatible with TensorFlow 2.21. The invalid + # entries are removed, as is absl_py (no usable system repository). Compiled C/C++ libraries + # must use their vendored repositories because TF 2.21's hermetic Clang rejects headers found + # only through EasyBuild's absolute CPATH entries as undeclared inclusions. CPATH is cleared for + # Bazel actions above so installed headers cannot shadow the matching vendored repository headers. + 'prebuildopts': ( + "sed -i 's/absl_py,//; s/boringssl,//; s/,curl//; s/,double_conversion//; s/,flatbuffers//; " + "s/,gif//; s/,hwloc//; s/,icu//; s/,jsoncpp_git//; s/,libjpeg_turbo//; s/,nsync//; " + "s/,org_sqlite//; s/,png//; s/,pybind11//; s/,snappy//; s/,zlib//' .tf_configure.bazelrc && " + ), 'with_xla': True, 'checksums': [ {'v2.21.0.tar.gz': 'ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921'}, @@ -132,7 +147,7 @@ exts_list = [ {'TensorFlow-2.15.1_fix-flatbuffer-license.patch': '2c04d5095977a628a238dbf93c5fada7159c86752a7183e64e0cf7c7ab00caf4'}, {'TensorFlow-2.21.0_fix-pybind11-build.patch': - '35c62874a12642967fdc7bf0a2d2ede426468bb1e2b8fd457766a40613af4762'}, + 'e56fac5452372b4e85a2c65e58e008e4d1aa2dce47e3c8f100cf138c31053bc1'}, {'TensorFlow-2.4.0_dont-use-var-lock.patch': 'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'}, {'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch': diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch index 3b7a936ad969..017bc07b416f 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch @@ -2,8 +2,12 @@ diff --git a/third_party/systemlibs/pybind11.BUILD b/third_party/systemlibs/pybi index 4cbdc5b..3992482 100644 --- a/third_party/systemlibs/pybind11.BUILD +++ b/third_party/systemlibs/pybind11.BUILD -@@ -6,3 +6,9 @@ cc_library( - "@xla@xla//third_party/python_runtime:headers", +@@ -3,6 +3,18 @@ package(default_visibility = ["//visibility:public"]) + cc_library( + name = "pybind11", + deps = [ +- "@xla@xla//third_party/python_runtime:headers", ++ "@xla//third_party/python_runtime:headers", ], ) + @@ -12,3 +16,9 @@ index 4cbdc5b..3992482 100644 + name = "osx", + constraint_values = ["@platforms//os:osx"], +) ++ ++config_setting( ++ name = "msvc_compiler", ++ flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"}, ++ visibility = ["//visibility:public"], ++) From 69113dfcb4827ae81fd1e6ba1294157df4b3914c Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 18:38:40 +0200 Subject: [PATCH 07/12] add test target --- .../easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb | 1 - 1 file changed, 1 deletion(-) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index 1fe8055a6755..7c38b7b95ae7 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -104,7 +104,6 @@ exts_list = [ 'test_targets': [ '//tensorflow/core/...', '-//tensorflow/core:example_java_proto', - '-//tensorflow/core/example:example_protos_closure', '//tensorflow/cc/...', '//tensorflow/c/...', '//tensorflow/python/...', From 2449720705ddac27176fed5de2ef176ef809b652 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 19:35:49 +0200 Subject: [PATCH 08/12] downgrade flatbunners --- .../easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index 7c38b7b95ae7..7f35f4de0a85 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -31,7 +31,7 @@ dependencies = [ ('dill', '0.4.1'), ('double-conversion', '3.3.1'), ('flatbuffers', '25.9.23'), - ('flatbuffers-python', '25.9.23'), + ('flatbuffers-python', '25.2.10'), ('giflib', '5.2.2'), ('hwloc', '2.12.1'), ('ICU', '77.1'), From 8b168df3ccf40ace533ced8c9d11cefc8ff57175 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Tue, 4 Aug 2026 20:09:02 +0200 Subject: [PATCH 09/12] remove unecessary recipe --- ...atbuffers-python-25.9.23-GCCcore-14.3.0.eb | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb diff --git a/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb b/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb deleted file mode 100644 index 15193ceca63c..000000000000 --- a/easybuild/easyconfigs/f/flatbuffers-python/flatbuffers-python-25.9.23-GCCcore-14.3.0.eb +++ /dev/null @@ -1,23 +0,0 @@ -easyblock = 'PythonPackage' - -name = 'flatbuffers-python' -version = '25.9.23' - -homepage = 'https://github.com/google/flatbuffers/' -description = """Python Flatbuffers runtime library.""" - -toolchain = {'name': 'GCCcore', 'version': '14.3.0'} - -source_urls = ['https://pypi.python.org/packages/source/f/flatbuffers'] -sources = [{'download_filename': 'flatbuffers-%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}] -checksums = ['676f9fa62750bb50cf531b42a0a2a118ad8f7f797a511eda12881c016f093b12'] - -dependencies = [ - ('binutils', '2.44'), - ('Python', '3.13.5'), -] - -preinstallopts = 'VERSION=%(version)s ' -options = {'modulename': 'flatbuffers'} - -moduleclass = 'devel' From 2ee1f7022f7a71edda7e6450808a54b6d3be16df Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Wed, 5 Aug 2026 13:49:14 +0200 Subject: [PATCH 10/12] Cleanup of device soecific edits --- .../Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb | 6 +- .../Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb | 7 +-- ...azel-7.7.0_repack-netty-tcnative-jar.patch | 55 ------------------- .../flatbuffers-25.9.23-GCCcore-14.3.0.eb | 33 ----------- .../TensorFlow-2.21.0-foss-2025b.eb | 44 +++++---------- ...TensorFlow-2.21.0_fix-pybind11-build.patch | 24 -------- ...2.21.0_relax-flatbuffers-requirement.patch | 15 +++++ 7 files changed, 30 insertions(+), 154 deletions(-) delete mode 100644 easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch delete mode 100644 easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb delete mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch create mode 100644 easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_relax-flatbuffers-requirement.patch diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb index 2aecd8795a53..bbe39c68e8ec 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-14.3.0-Java-21.eb @@ -10,14 +10,10 @@ toolchain = {'name': 'GCCcore', 'version': '14.3.0'} source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] sources = ['%(namelower)s-%(version)s-dist.zip'] -patches = [ - ('bazel-7.7.0-bazel_features.patch', 1), - ('bazel-7.7.0_repack-netty-tcnative-jar.patch', 1), -] +patches = [('bazel-7.7.0-bazel_features.patch', 1)] checksums = [ '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f', # bazel-7.7.0-dist.zip '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa', # bazel-7.7.0-bazel_features.patch - '2e5d530b3090ec86aa3b97a470c34a2ccfcbe36694a6cf94c1c3d9fa0a2dc2bf', # bazel-7.7.0_repack-netty-tcnative-jar.patch ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb index f50981f9a5bc..532367b9a164 100644 --- a/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb +++ b/easybuild/easyconfigs/b/Bazel/Bazel-7.7.0-GCCcore-15.2.0-Java-21.eb @@ -10,15 +10,10 @@ toolchain = {'name': 'GCCcore', 'version': '15.2.0'} source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] sources = ['%(namelower)s-%(version)s-dist.zip'] -patches = [ - ('bazel-7.7.0-bazel_features.patch', 1), - ('bazel-7.7.0_repack-netty-tcnative-jar.patch', 1), -] +patches = [('bazel-7.7.0-bazel_features.patch', 1)] checksums = [ {'bazel-7.7.0-dist.zip': '277946818c77fff70be442864cecc41faac862b6f2d0d37033e2da0b1fee7e0f'}, {'bazel-7.7.0-bazel_features.patch': '52f5999d6ab00a9d45d9b7734b4c6dc60e23362112195fc0425ecb44478067aa'}, - {'bazel-7.7.0_repack-netty-tcnative-jar.patch': - '2e5d530b3090ec86aa3b97a470c34a2ccfcbe36694a6cf94c1c3d9fa0a2dc2bf'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch b/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch deleted file mode 100644 index 769908f6fff9..000000000000 --- a/easybuild/easyconfigs/b/Bazel/bazel-7.7.0_repack-netty-tcnative-jar.patch +++ /dev/null @@ -1,55 +0,0 @@ -# Avoid in-place zip deletion for Bazel's Netty tcnative jar. On some systems -# Info-ZIP exits with "Interrupted (aborting)" while deleting from this jar, so -# rebuild the filtered jar from extracted contents with the JDK's jar tool -# instead. Avoid Info-ZIP entirely, since it can also be interrupted while -# creating the replacement archive on lock-sensitive filesystems. -diff --git a/third_party/BUILD b/third_party/BUILD -index 1f35568..c8f1b35 100644 ---- a/third_party/BUILD -+++ b/third_party/BUILD -@@ -500,16 +500,16 @@ alias( - ) - - UNNECESSARY_DYNAMIC_LIBRARIES = select({ -- "//src/conditions:windows": "*.so *.jnilib", -- "//src/conditions:darwin": "*.so *.dll", -- "//src/conditions:linux_x86_64": "*.jnilib *.dll", -- "//src/conditions:linux_s390x": "*.jnilib *.dll", -+ "//src/conditions:windows": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && ", -+ "//src/conditions:darwin": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:linux_x86_64": "find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:linux_s390x": "find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", - # The .so file is an x86/s390x one, so we can just remove it if the CPU is not x86/s390x -- "//src/conditions:arm": "*.so *.jnilib *.dll", -- "//src/conditions:linux_aarch64": "*.so *.jnilib *.dll", -- "//src/conditions:linux_ppc": "*.so *.jnilib *.dll", -- "//src/conditions:freebsd": "*.so *.jnilib *.dll", -- "//src/conditions:openbsd": "*.so *.jnilib *.dll", -+ "//src/conditions:arm": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:linux_aarch64": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:linux_ppc": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:freebsd": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", -+ "//src/conditions:openbsd": "find $$NETTY_JAR_TMPDIR -name '*.so' -delete && find $$NETTY_JAR_TMPDIR -name '*.jnilib' -delete && find $$NETTY_JAR_TMPDIR -name '*.dll' -delete && ", - # Default is to play it safe -- better have a big binary than a slow binary - # The empty string means nothing is to be removed from the library; - # the rule command tests for the empty string explictly to avoid -@@ -530,10 +530,15 @@ genrule( - "//conditions:default": [], - }), - outs = ["netty_tcnative/netty-tcnative-filtered.jar"], -- cmd = "cp $< $@ && " + -- # Make sure we can write the output file, even if the input isn't writable. -- "chmod +w $@ && " + -- "zip -qd $@ */license/* " + UNNECESSARY_DYNAMIC_LIBRARIES, -+ cmd = "mkdir -p $$(dirname $@) && " + -+ "OUTPUT=$$(pwd)/$@ && " + -+ "rm -f $$OUTPUT && " + -+ "NETTY_JAR_TMPDIR=$$(mktemp -d) && " + -+ "trap 'chmod -R +w $$NETTY_JAR_TMPDIR && rm -rf $$NETTY_JAR_TMPDIR' EXIT && " + -+ "unzip -q $< -d $$NETTY_JAR_TMPDIR && " + -+ "find $$NETTY_JAR_TMPDIR -path '*/license/*' -delete && " + -+ UNNECESSARY_DYNAMIC_LIBRARIES + -+ "jar --create --no-manifest --file $$OUTPUT -C $$NETTY_JAR_TMPDIR .", - ) - - distrib_java_import( diff --git a/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb b/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb deleted file mode 100644 index eab87086a477..000000000000 --- a/easybuild/easyconfigs/f/flatbuffers/flatbuffers-25.9.23-GCCcore-14.3.0.eb +++ /dev/null @@ -1,33 +0,0 @@ -## -# Author: Robert Mijakovic -## -easyblock = 'CMakeNinja' - -name = 'flatbuffers' -version = '25.9.23' - -homepage = 'https://github.com/google/flatbuffers/' -description = """FlatBuffers: Memory Efficient Serialization Library""" - -toolchain = {'name': 'GCCcore', 'version': '14.3.0'} -toolchainopts = {'pic': True} - -source_urls = ['https://github.com/google/flatbuffers/archive/v%(version)s/'] -sources = [SOURCE_TAR_GZ] -checksums = ['9102253214dea6ae10c2ac966ea1ed2155d22202390b532d1dea64935c518ada'] - -builddependencies = [ - ('binutils', '2.44'), - ('CMake', '4.0.3'), - ('Ninja', '1.13.0'), - ('Python', '3.13.5'), -] - -configopts = '-DFLATBUFFERS_ENABLE_PCH=ON ' - -sanity_check_paths = { - 'files': ['include/flatbuffers/flatbuffers.h', 'bin/flatc', 'lib/libflatbuffers.a'], - 'dirs': ['lib/cmake'], -} - -moduleclass = 'devel' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index 7f35f4de0a85..a73fee07a9e8 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -14,7 +14,6 @@ builddependencies = [ ('Bazel', '7.7.0', '-Java-21'), # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053 ('git', '2.50.1'), - ('pybind11', '3.0.0'), ('UnZip', '6.0'), ('NASM', '2.16.03'), # Required to build some of the extensions @@ -27,23 +26,10 @@ dependencies = [ ('Python-bundle-PyPI', '2025.07'), ('SciPy-bundle', '2025.07'), ('h5py', '3.14.0'), - ('cURL', '8.14.1'), ('dill', '0.4.1'), - ('double-conversion', '3.3.1'), - ('flatbuffers', '25.9.23'), ('flatbuffers-python', '25.2.10'), - ('giflib', '5.2.2'), - ('hwloc', '2.12.1'), - ('ICU', '77.1'), - ('JsonCpp', '1.9.6'), - ('libjpeg-turbo', '3.1.1'), ('ml_dtypes', '0.5.3'), - ('nsync', '1.29.2'), - ('SQLite', '3.50.1'), ('patchelf', '0.18.0'), - ('libpng', '1.6.50'), - ('snappy', '1.2.2'), - ('zlib', '1.3.1'), ('protobuf-python', '6.31.1'), ('grpcio', '1.81.0'), ('wrapt', '1.17.3'), @@ -84,14 +70,12 @@ exts_list = [ }), (name, version, { 'patches': [ - 'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch', - 'TensorFlow-2.15.1_fix-flatbuffer-license.patch', - 'TensorFlow-2.21.0_fix-pybind11-build.patch', 'TensorFlow-2.4.0_dont-use-var-lock.patch', 'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch', 'TensorFlow-2.18.1_fix-xnnpack.patch', 'TensorFlow-2.18.1_fixedpoint.patch', 'TensorFlow-2.21.0_remove-libclang-dep.patch', + 'TensorFlow-2.21.0_relax-flatbuffers-requirement.patch', ], 'source_tmpl': 'v%(version)s.tar.gz', 'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'], @@ -128,25 +112,17 @@ exts_list = [ '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' ), - # EasyBuild 5.3.0's TF_SYSTEM_LIBS mapping is incompatible with TensorFlow 2.21. The invalid - # entries are removed, as is absl_py (no usable system repository). Compiled C/C++ libraries - # must use their vendored repositories because TF 2.21's hermetic Clang rejects headers found - # only through EasyBuild's absolute CPATH entries as undeclared inclusions. CPATH is cleared for - # Bazel actions above so installed headers cannot shadow the matching vendored repository headers. + # EasyBuild 5.3.0's TF_SYSTEM_LIBS mapping is incompatible with TensorFlow 2.21 for these entries: + # absl_py has no usable system repository, while boringssl is auto-enabled whenever OpenSSL is loaded. + # Run Bazel in batch mode to avoid Netty server startup crashes on filesystems without robust locking. + # CPATH is cleared for Bazel actions so installed headers cannot shadow vendored repository headers. 'prebuildopts': ( - "sed -i 's/absl_py,//; s/boringssl,//; s/,curl//; s/,double_conversion//; s/,flatbuffers//; " - "s/,gif//; s/,hwloc//; s/,icu//; s/,jsoncpp_git//; s/,libjpeg_turbo//; s/,nsync//; " - "s/,org_sqlite//; s/,png//; s/,pybind11//; s/,snappy//; s/,zlib//' .tf_configure.bazelrc && " + "printf 'startup --batch\\n' >> .bazelrc && " + "sed -i 's/absl_py,//; s/,absl_py//; s/boringssl,//; s/,boringssl//' .tf_configure.bazelrc && " ), 'with_xla': True, 'checksums': [ {'v2.21.0.tar.gz': 'ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921'}, - {'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch': - '77d8c8a5627493fc7c38b4de79d49e60ff6628b05ff969f4cd3ff9857176c459'}, - {'TensorFlow-2.15.1_fix-flatbuffer-license.patch': - '2c04d5095977a628a238dbf93c5fada7159c86752a7183e64e0cf7c7ab00caf4'}, - {'TensorFlow-2.21.0_fix-pybind11-build.patch': - 'e56fac5452372b4e85a2c65e58e008e4d1aa2dce47e3c8f100cf138c31053bc1'}, {'TensorFlow-2.4.0_dont-use-var-lock.patch': 'b14f2493fd2edf79abd1c4f2dde6c98a3e7d5cb9c25ab9386df874d5f072d6b5'}, {'TensorFlow-2.21.0_disable-tf32-in-fused-matmul-tests.patch': @@ -155,8 +131,14 @@ exts_list = [ {'TensorFlow-2.18.1_fixedpoint.patch': '5ea1eb3b32e7df5f9ae711a71778b4cae544b3380f18882186eea035873fb640'}, {'TensorFlow-2.21.0_remove-libclang-dep.patch': '4ee3773d07991c7f75d6dd4033ccf1bb9b017de478b39b4ffb6563a6bd66b981'}, + {'TensorFlow-2.21.0_relax-flatbuffers-requirement.patch': + 'c500796a1fe1f3de8322b1a1abeefbd3714fb255e6600d65e3815e20484c45ee'}, ], }), ] +postinstallcmds = [ + 'mkdir -p %(installdir)s/bin && ln -sf "$EBROOTTENSORBOARD/bin/tensorboard" %(installdir)s/bin/tensorboard', +] + moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch deleted file mode 100644 index 017bc07b416f..000000000000 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_fix-pybind11-build.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/third_party/systemlibs/pybind11.BUILD b/third_party/systemlibs/pybind11.BUILD -index 4cbdc5b..3992482 100644 ---- a/third_party/systemlibs/pybind11.BUILD -+++ b/third_party/systemlibs/pybind11.BUILD -@@ -3,6 +3,18 @@ package(default_visibility = ["//visibility:public"]) - cc_library( - name = "pybind11", - deps = [ -- "@xla@xla//third_party/python_runtime:headers", -+ "@xla//third_party/python_runtime:headers", - ], - ) -+ -+# Needed by pybind11_bazel. -+config_setting( -+ name = "osx", -+ constraint_values = ["@platforms//os:osx"], -+) -+ -+config_setting( -+ name = "msvc_compiler", -+ flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"}, -+ visibility = ["//visibility:public"], -+) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_relax-flatbuffers-requirement.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_relax-flatbuffers-requirement.patch new file mode 100644 index 000000000000..89db20052730 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0_relax-flatbuffers-requirement.patch @@ -0,0 +1,15 @@ +TensorFlow 2.21.0 only uses flatbuffers as a Python runtime dependency in this +EasyBuild configuration. Keep the wheel metadata compatible with the shared +flatbuffers-python dependency used by other 2025b recipes. + +--- tensorflow/tools/pip_package/setup.py.tpl.orig 2026-06-29 00:00:00.000000000 +0200 ++++ tensorflow/tools/pip_package/setup.py.tpl 2026-06-29 00:00:00.000000000 +0200 +@@ -97,7 +97,7 @@ + REQUIRED_PACKAGES = [ + 'absl-py >= 1.0.0', + 'astunparse >= 1.6.0', +- 'flatbuffers >= 25.9.23', ++ 'flatbuffers >= 25.2.10', + 'gast >=0.2.1,!=0.5.0,!=0.5.1,!=0.5.2', + 'google_pasta >= 0.1.1', + 'libclang >= 13.0.0', From 797eb787dcb3f33a6f3e315f70423cd1507ca993 Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Thu, 6 Aug 2026 22:23:05 +0200 Subject: [PATCH 11/12] move changes to easyblock --- .../TensorFlow-2.21.0-foss-2025b.eb | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index a73fee07a9e8..be2028caa31a 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -102,24 +102,16 @@ exts_list = [ '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test', '-//tensorflow/core/ir/importexport/tests/roundtrip/...', ], - 'buildopts': '--action_env=CPATH= --host_action_env=CPATH=', - 'testopts': ( - '--action_env=CPATH= --host_action_env=CPATH= ' - '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' - ), + 'testopts': '--test_timeout=3600 --test_size_filters=small ', 'testopts_gpu': ( - '--action_env=CPATH= --host_action_env=CPATH= ' - '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' + '--test_timeout=3600 --test_size_filters=small ' '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' ), - # EasyBuild 5.3.0's TF_SYSTEM_LIBS mapping is incompatible with TensorFlow 2.21 for these entries: - # absl_py has no usable system repository, while boringssl is auto-enabled whenever OpenSSL is loaded. - # Run Bazel in batch mode to avoid Netty server startup crashes on filesystems without robust locking. - # CPATH is cleared for Bazel actions so installed headers cannot shadow vendored repository headers. - 'prebuildopts': ( - "printf 'startup --batch\\n' >> .bazelrc && " - "sed -i 's/absl_py,//; s/,absl_py//; s/boringssl,//; s/,boringssl//' .tf_configure.bazelrc && " - ), + # Run Bazel in batch mode to avoid server startup issues on filesystems without robust locking. + 'bazel_startup_opts': ['--batch'], + # TensorFlow 2.21's system boringssl stub only links OpenSSL libraries; it does not expose headers + # to Bazel. Let TensorFlow use its bundled BoringSSL headers instead. + 'tf_system_libs_exclude': ['boringssl'], 'with_xla': True, 'checksums': [ {'v2.21.0.tar.gz': 'ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921'}, @@ -137,8 +129,4 @@ exts_list = [ }), ] -postinstallcmds = [ - 'mkdir -p %(installdir)s/bin && ln -sf "$EBROOTTENSORBOARD/bin/tensorboard" %(installdir)s/bin/tensorboard', -] - moduleclass = 'lib' From cf07481d45a85c20691a0a2c002b6963ac1e1eae Mon Sep 17 00:00:00 2001 From: Bert Droesbeke Date: Sun, 9 Aug 2026 07:50:49 +0200 Subject: [PATCH 12/12] less is more --- .../easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb index be2028caa31a..c76d194cf065 100644 --- a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.21.0-foss-2025b.eb @@ -107,11 +107,6 @@ exts_list = [ '--test_timeout=3600 --test_size_filters=small ' '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' ), - # Run Bazel in batch mode to avoid server startup issues on filesystems without robust locking. - 'bazel_startup_opts': ['--batch'], - # TensorFlow 2.21's system boringssl stub only links OpenSSL libraries; it does not expose headers - # to Bazel. Let TensorFlow use its bundled BoringSSL headers instead. - 'tf_system_libs_exclude': ['boringssl'], 'with_xla': True, 'checksums': [ {'v2.21.0.tar.gz': 'ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921'},