From 44fe6a047290cb7af891d54ab1283fc77409d754 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 6 May 2026 14:44:18 +0200 Subject: [PATCH 1/4] Add libinput as dependency for Qt6 for GCCcore/14.3.0+ --- eb_hooks.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/eb_hooks.py b/eb_hooks.py index 9c7b835c..4d2e4143 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -655,6 +655,29 @@ def parse_hook_qt5_check_qtwebengine_disable(ec, eprefix): raise EasyBuildError("Qt5-specific hook triggered for non-Qt5 easyconfig?!") +def parse_hook_qt6_libinput(ec, eprefix): + """ + Add dependency on libinput to Qt6. + This is not included in upstream EasyBuild as it brings a dependency on system-d + """ + qt6_toolchain_version_to_libinput_version_map = {'14.3.0': '1.30.1'} + if ec.name == 'Qt6': + # Only enforcing from GCCcore 14.3.0 onwards for Qt6 6.9.3 onwards + if ec.toolchain.version >= '14.3.0': + if ec.version >= LooseVersion('6.9.3'): + dep_names = [dep[0] for dep in ec['dependencies']] + if 'libinput' not in dep_names: + if ec.toolchain.version in qt6_toolchain_version_to_libinput_version_map.keys(): + libinput = ('libinput', qt6_toolchain_version_to_libinput_version_map[ec.toolchain.version]) + ec['dependencies'].append(libinput) + print_msg(f"Added {libinput} dependency for {ec.name} {ec.version}") + else: + raise EasyBuildError( + f"No libinput dependency found for {ec.name} {ec.version}, please update relevant Qt6 hook" + ) + else: + raise EasyBuildError("maturin-specific hook triggered for non-maturin easyconfig?!") + def parse_hook_maturin(ec, eprefix): """ Replace build dependency on Rust 1.88.0 by 1.91.1, @@ -2003,6 +2026,7 @@ def post_easyblock_hook(self, *args, **kwargs): 'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors, 'pybind11': parse_hook_pybind11_replace_catch2, 'Qt5': parse_hook_qt5_check_qtwebengine_disable, + 'Qt6': parse_hook_qt6_libinput, 'UCX': parse_hook_ucx_eprefix, } From d7dc733b5a14977bf4004475f994878206a69916 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 6 May 2026 15:11:34 +0200 Subject: [PATCH 2/4] Use LooseVersion everywhere --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 4d2e4143..5a0f63f6 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -663,7 +663,7 @@ def parse_hook_qt6_libinput(ec, eprefix): qt6_toolchain_version_to_libinput_version_map = {'14.3.0': '1.30.1'} if ec.name == 'Qt6': # Only enforcing from GCCcore 14.3.0 onwards for Qt6 6.9.3 onwards - if ec.toolchain.version >= '14.3.0': + if ec.toolchain.version >= LooseVersion('14.3.0'): if ec.version >= LooseVersion('6.9.3'): dep_names = [dep[0] for dep in ec['dependencies']] if 'libinput' not in dep_names: From 35e9ab51c3f12da049bb57ddf118812b1102d3bb Mon Sep 17 00:00:00 2001 From: ocaisa Date: Thu, 7 May 2026 14:25:19 +0200 Subject: [PATCH 3/4] Update eb_hooks.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 71237fd1..d1d01811 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -676,7 +676,7 @@ def parse_hook_qt6_libinput(ec, eprefix): f"No libinput dependency found for {ec.name} {ec.version}, please update relevant Qt6 hook" ) else: - raise EasyBuildError("maturin-specific hook triggered for non-maturin easyconfig?!") + raise EasyBuildError("Qt6-specific hook triggered for non-maturin easyconfig?!") def parse_hook_maturin(ec, eprefix): """ From 2c88dd90626a3ecc2ab7bfb35a19626adec506ee Mon Sep 17 00:00:00 2001 From: ocaisa Date: Thu, 7 May 2026 14:26:40 +0200 Subject: [PATCH 4/4] Apply suggestions from code review --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index d1d01811..488a572e 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -676,7 +676,7 @@ def parse_hook_qt6_libinput(ec, eprefix): f"No libinput dependency found for {ec.name} {ec.version}, please update relevant Qt6 hook" ) else: - raise EasyBuildError("Qt6-specific hook triggered for non-maturin easyconfig?!") + raise EasyBuildError(f"Qt6-specific hook triggered for non-Qt6 easyconfig?!") def parse_hook_maturin(ec, eprefix): """