depends: Update Qt to version 6.10.2#34578
Conversation
|
🚧 At least one of the CI tasks failed. HintsTry to run the tests locally, according to the documentation. However, a CI failure may still
Leave a comment here, if you need help tracking down a confusing failure. |
a851bf7 to
8aa8792
Compare
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
|
Added a commit to update the Windows build notes following @maflcko's suggestion. |
|
There are lots of changes here with no explanation. @hebasto Could you please add a bunch of comments? |
| 'GDI32.dll', # graphics device interface | ||
| 'IMM32.dll', # input method editor | ||
| 'NETAPI32.dll', # network management | ||
| 'ntdll.dll', # native system services |
There was a problem hiding this comment.
I didn't track the exact changes in Windows plugins that link to symbols in ntdll.dll.
|
|
||
| $(package)_cmake_opts := -DCMAKE_PREFIX_PATH=$(host_prefix) | ||
| $(package)_cmake_opts += -DQT_FEATURE_cxx20=ON | ||
| $(package)_cmake_opts += -DQT_ENABLE_CXX_EXTENSIONS=OFF |
There was a problem hiding this comment.
Otherwise, the configuration step logs the following:
-- Configuring done (20.0s)
-- Generating done (1.0s)
CMake Warning:
Manually-specified variables were not used by the project:
QT_ENABLE_CXX_EXTENSIONS
Related upstream items:
| $(package)_cmake_opts += -DCMAKE_DISABLE_FIND_PACKAGE_WrapZSTD=TRUE | ||
| endif | ||
| ifeq ($(host_os),linux) | ||
| $(package)_cmake_opts += -DINPUT_dbus=runtime |
There was a problem hiding this comment.
Why? According to cmake/configure-cmake-mapping.md, -dbus-runtime should be mapped to this. Does it not work?
There was a problem hiding this comment.
Why? According to
cmake/configure-cmake-mapping.md,-dbus-runtimeshould be mapped to this.
It is not, for some reason. An explanatory comment has been added.
There was a problem hiding this comment.
Have we opened an upstream issue?
| endif() | ||
| qt_add_qmake_lib_dependency(xcb_xinput xcb) | ||
| if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS) | ||
| - qt_find_package(XKB 0.9.0 MODULE PROVIDED_TARGETS XKB::XKB MODULE_NAME gui QMAKE_LIB xkbcommon) |
There was a problem hiding this comment.
What makes it safe to just require the old version? Sure they're not relying on an updated abi?
There was a problem hiding this comment.
What makes it safe to just require the old version? Sure they're not relying on an updated abi?
- The commit you mentioned does not state that this is a prerequisite for other changes.
libxkbcommon0.9.0 Release Notes list a few changes, including the output ofxkb_keymap_get_as_string(). Grepping the Qt source code did not find any calls of this function.
There was a problem hiding this comment.
This patch should explain why this is fine to do, rather than explaining why the libxkbcommon package hasn't been updated.
| @@ -7,70 +7,9 @@ Date: Sat Oct 4 01:00:25 2025 +0100 | |||
| See: https://bugreports.qt.io/browse/QTBUG-86287 | |||
| See: https://bugreports.qt.io/browse/QTBUG-137004 | |||
There was a problem hiding this comment.
I assume one/both of these reports is no longer relevant? Is upstream aware of the remaining issue?
There was a problem hiding this comment.
I assume one/both of these reports is no longer relevant?
Right. Removed.
Is upstream aware of the remaining issue?
Not yet.
63ecaa1 to
6affd12
Compare
All changes in |
|
It seems |
|
Is there are subset of these changes that can be backported to at least |
| @@ -0,0 +1,16 @@ | |||
| Disable macOS 15 features in QCocoaCursor | |||
There was a problem hiding this comment.
Why? How does this effect the binary?
There was a problem hiding this comment.
Why?
Otherwise, @available(macOS 15, *) causes a linker error:
<snip>
[ 73%] Linking CXX executable ../../bin/bitcoin-qt
ld64.lld: error: undefined symbol: __isPlatformVersionAtLeast
>>> referenced by /home/hebasto/dev/bitcoin/depends/arm64-apple-darwin/plugins/platforms/libqcocoa.a(qcocoacursor.mm.o):(symbol QCocoaCursor::convertCursor(QCursor*)+0x78)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [src/qt/CMakeFiles/bitcoin-qt.dir/build.make:179: bin/bitcoin-qt] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2470: src/qt/CMakeFiles/bitcoin-qt.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
How does this effect the binary?
The disabled code was introduced in qt/qtbase@4aeb27f. The referenced QTBUG-126240, in turn, refers to the NSCursor API for window resize cursors.
While testing on macOS Tahoe 26.2, I didn't notice any differences in behavior compared to v30.2.
There was a problem hiding this comment.
Can you add some information to the patch.
Maybe two @theuni's commits? |
|
Looks like this introduces a dependency on an Xcode installation: CMake Error at qtbase/cmake/QtPublicAppleHelpers.cmake:943 (message):
Can't determine Xcode version. Is Xcode installed? Error details:
xcrun: error: unable to find utility "xcodebuild", not a developer tool or
in PATH
Call Stack (most recent call first):
qtbase/cmake/QtAutoDetectHelpers.cmake:332 (_qt_internal_get_xcode_version_raw)
qtbase/cmake/QtAutoDetectHelpers.cmake:671 (qt_auto_detect_apple)
qtbase/cmake/QtAutoDetect.cmake:5 (qt_internal_setup_autodetect)
qtbase/cmake/QtBaseTopLevelHelpers.cmake:31 (include)
CMakeLists.txt:13 (qt_internal_top_level_setup_autodetect) |
Are you building on macOS? |
|
Yes that was on a macOS machine. |
The `find_package(Qt .. MODULE REQUIRED COMPONENTS ...)` call must treat any missing component as a fatal error.
6affd12 to
ef29945
Compare
Backported from: qt/qtbase@7fccc79
Meta-Issue: https://qt-project.atlassian.net/browse/QTBUG-143470 Backports: qt/qtbase@679e8bd qt/qtbase@3312e89 qt/qtbase@05f201a An additional includes fix is needed after the others: qt/qtbase@d68fc6e
Cross-compiling Qt 6.10 for Windows requires GCC 13.1 or newer, which exceeds the currently documented minimum. See https://doc.qt.io/qt-6/windows.html.
ef29945 to
f857d92
Compare
Should be fixed now. |
| ifeq ($(build_os),darwin) | ||
| $(package)_cmake_opts += -DQT_NO_XCODE_MIN_VERSION_CHECK=ON | ||
| else | ||
| $(package)_cmake_opts += -DQT_INTERNAL_XCODE_VERSION=$(XCODE_VERSION) |
There was a problem hiding this comment.
What does this actually effect, and why can't it be disabled everywhere? Xcode isn't available when cross-compiling.
| $(package)_cmake_opts += -DQT_INTERNAL_XCODE_VERSION=$(XCODE_VERSION) | ||
| $(package)_cmake_opts += -DQT_NO_APPLE_SDK_MAX_VERSION_CHECK=ON | ||
| ifeq ($(build_os),darwin) | ||
| $(package)_cmake_opts += -DQT_NO_XCODE_MIN_VERSION_CHECK=ON |
There was a problem hiding this comment.
Given we have to add patches (https://github.com/bitcoin/bitcoin/pull/34578/changes#diff-672a42bd2b42c415f9edf44da60b1649239f57323844bb042cd595b2f6bc9fc1), just to make these options work properly, should we just patch out the problematic code?
The upstream bug report is here: https://qt-project.atlassian.net/browse/QTBUG-144294. UPDATE: Qt 6.8.3 seems to be working. |
Closing in favour of #34650. |
This PR updates the
qtpackage in depends to the most recent version 6.10.2.The update includes many bugfixes that enable dropping some patches.
Additionally, patches for compatibility with GCC 16 have been included.
A commit from #32709 is also included.