From 5a0bb9dc1078859b10fe06420a79c4dc31991308 Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Fri, 29 May 2026 12:06:00 +0100 Subject: [PATCH 1/3] Fix missing include leading to build error `RmtMutexCreate()` uses `new` in the non WIN32 path. Add the missing include and fix the build error. --- source/backend/rmt_mutex.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/backend/rmt_mutex.cpp b/source/backend/rmt_mutex.cpp index dbe3c4b..a77c8d1 100644 --- a/source/backend/rmt_mutex.cpp +++ b/source/backend/rmt_mutex.cpp @@ -6,6 +6,7 @@ //============================================================================= #ifndef _WIN32 +#include #include #endif // #ifndef _WIN32 From 2ad01b5bf602fa5b90bbeaa1889981f65ccf888e Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Fri, 29 May 2026 13:02:17 +0100 Subject: [PATCH 2/3] Only patch `libicudata.so.70` when needed Normally `libicudata.so` should be pulled in transitively so no need to `patchelf`, but if this was not done, only then `patchelf`. This also avoid an issue when executing the binary since normally the patchelf case would be avoided, also avoiding the hard-coded libicudata.so.70 . Some systems might have a different/newer version of the library pulled in transitively, but previously that was being `patchelf`ed away with the hard-corded version. --- cmake/devtools_qt_helper.cmake | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cmake/devtools_qt_helper.cmake b/cmake/devtools_qt_helper.cmake index 993ad86..230eaa0 100644 --- a/cmake/devtools_qt_helper.cmake +++ b/cmake/devtools_qt_helper.cmake @@ -27,6 +27,20 @@ if (Qt6_DIR) get_target_property(_qmake_executable Qt::qmake IMPORTED_LOCATION) get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + if (LINUX) + get_target_property(_qt_core_lib Qt6::Core IMPORTED_LOCATION) + if(_qt_core_lib) + execute_process( + COMMAND readelf -d ${_qt_core_lib} + OUTPUT_VARIABLE _qt_core_needed + ERROR_QUIET + ) + if(NOT _qt_core_needed MATCHES "libicui18n") + set(ICU_DATA_NEEDS_PATCHING TRUE) + endif() + endif() + endif() + function(deploy_qt_build target) if (WIN32) find_program(DEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") @@ -41,8 +55,8 @@ if (Qt6_DIR) ) endif () - # Ensure that libicudata.so.70 is added as an explicit dependency of Qt based targets so that it gets deployed - if (LINUX) + if (ICU_DATA_NEEDS_PATCHING) + message(WARNING "Qt6Core does not link libicudata. Manually adding libicudata.so.70.") add_custom_command(TARGET ${target} POST_BUILD COMMAND patchelf --add-needed libicudata.so.70 $) endif () From a9986c27b16051bfae59cf539dcc5d245317eb8d Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Fri, 29 May 2026 13:29:19 +0100 Subject: [PATCH 3/3] Avoid deprecated `CheckBoxWidget::stateChanged` Deprecated since Qt 6.9 so with `-Wall` this is a build error. For Qt 6.7 and above `checkStateChanged()` should be used. --- source/frontend/views/settings/settings_pane.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/frontend/views/settings/settings_pane.cpp b/source/frontend/views/settings/settings_pane.cpp index 01a70e9..356205a 100644 --- a/source/frontend/views/settings/settings_pane.cpp +++ b/source/frontend/views/settings/settings_pane.cpp @@ -69,7 +69,14 @@ SettingsPane::SettingsPane(QWidget* parent) ui_->byte_units_combo_push_button_->SetSelectedRow(0); connect(ui_->byte_units_combo_push_button_, &ArrowIconComboBox::SelectionChanged, this, &SettingsPane::ByteUnitsChanged); - connect(ui_->check_for_updates_on_startup_checkbox_, &CheckBoxWidget::stateChanged, this, &SettingsPane::CheckForUpdatesOnStartupStateChanged); + const auto state_change_function = +#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) + &CheckBoxWidget::checkStateChanged; +#else + &CheckBoxWidget::stateChanged; +#endif + + connect(ui_->check_for_updates_on_startup_checkbox_, state_change_function, this, &SettingsPane::CheckForUpdatesOnStartupStateChanged); } SettingsPane::~SettingsPane()