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/2] 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/2] 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: