Skip to content

depends: Update Qt to version 6.10.2#34578

Closed
hebasto wants to merge 5 commits intobitcoin:masterfrom
hebasto:260212-qt6.10
Closed

depends: Update Qt to version 6.10.2#34578
hebasto wants to merge 5 commits intobitcoin:masterfrom
hebasto:260212-qt6.10

Conversation

@hebasto
Copy link
Member

@hebasto hebasto commented Feb 12, 2026

This PR updates the qt package 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.

@DrahtBot
Copy link
Contributor

🚧 At least one of the CI tasks failed.
Task macOS-cross to arm64: https://github.com/bitcoin/bitcoin/actions/runs/21967077478/job/63459576763
LLM reason (✨ experimental): Build failed during the bitcoin-qt target compilation (gmake exited with error 1).

Hints

Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:

  • Possibly due to a silent merge conflict (the changes in this pull request being
    incompatible with the current code in the target branch). If so, make sure to rebase on the latest
    commit of the target branch.

  • A sanitizer issue, which can only be found by compiling with the sanitizer and running the
    affected test.

  • An intermittent issue.

Leave a comment here, if you need help tracking down a confusing failure.

@ircinco-mh ircinco-mh mentioned this pull request Feb 13, 2026
Closed
@DrahtBot
Copy link
Contributor

DrahtBot commented Feb 13, 2026

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.
A summary of reviews will appear here.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #33593 (guix: Use UCRT runtime for Windows release binaries by hebasto)

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.

@hebasto hebasto marked this pull request as ready for review February 13, 2026 09:25
@hebasto
Copy link
Member Author

hebasto commented Feb 13, 2026

Added a commit to update the Windows build notes following @maflcko's suggestion.

@theuni
Copy link
Member

theuni commented Feb 13, 2026

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Member Author

@hebasto hebasto Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? According to cmake/configure-cmake-mapping.md, -dbus-runtime should be mapped to this. Does it not work?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? According to cmake/configure-cmake-mapping.md, -dbus-runtime should be mapped to this.

It is not, for some reason. An explanatory comment has been added.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What makes it safe to just require the old version? Sure they're not relying on an updated abi?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was bumped here: qt/qtbase@54132e5

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What makes it safe to just require the old version? Sure they're not relying on an updated abi?

  1. The commit you mentioned does not state that this is a prerequisite for other changes.
  2. libxkbcommon 0.9.0 Release Notes list a few changes, including the output of xkb_keymap_get_as_string(). Grepping the Qt source code did not find any calls of this function.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume one/both of these reports is no longer relevant? Is upstream aware of the remaining issue?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume one/both of these reports is no longer relevant?

Right. Removed.

Is upstream aware of the remaining issue?

Not yet.

@hebasto
Copy link
Member Author

hebasto commented Feb 13, 2026

There are lots of changes here with no explanation. @hebasto Could you please add a bunch of comments?

All changes in qt.mk aim to produce the same (semantically) configure script output as in the master branch.

@hebasto
Copy link
Member Author

hebasto commented Feb 13, 2026

It seems test_bitcoin-qt.exe is failing in the CI.

@fanquake
Copy link
Member

Is there are subset of these changes that can be backported to at least 30.x?

@@ -0,0 +1,16 @@
Disable macOS 15 features in QCocoaCursor
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? How does this effect the binary?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add some information to the patch.

@hebasto
Copy link
Member Author

hebasto commented Feb 16, 2026

Is there are subset of these changes that can be backported to at least 30.x?

Maybe two @theuni's commits?

@fanquake
Copy link
Member

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)

@hebasto
Copy link
Member Author

hebasto commented Feb 16, 2026

Looks like this introduces a dependency on an Xcode installation:

Are you building on macOS?

@fanquake
Copy link
Member

Yes that was on a macOS machine.

The `find_package(Qt .. MODULE REQUIRED COMPONENTS ...)` call must treat
any missing component as a fatal error.
hebasto and others added 4 commits February 16, 2026 15:45
@hebasto
Copy link
Member Author

hebasto commented Feb 16, 2026

Looks like this introduces a dependency on an Xcode installation:

Are you building on macOS?

Should be fixed now.

@hebasto
Copy link
Member Author

hebasto commented Feb 16, 2026

It seems test_bitcoin-qt.exe is failing in the CI.

Apparently, the issue occurs when building on Debian with GCC 14.0.

The same happens when building on Ubuntu with GCC 13.0.

Everything is fine when building on Fedora with GCC 15.2.

ifeq ($(build_os),darwin)
$(package)_cmake_opts += -DQT_NO_XCODE_MIN_VERSION_CHECK=ON
else
$(package)_cmake_opts += -DQT_INTERNAL_XCODE_VERSION=$(XCODE_VERSION)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

@hebasto
Copy link
Member Author

hebasto commented Feb 17, 2026

It seems test_bitcoin-qt.exe is failing in the CI.

Apparently, the issue occurs when building on Debian with GCC 14.0.

The same happens when building on Ubuntu with GCC 13.0.

Everything is fine when building on Fedora with GCC 15.2.

The upstream bug report is here: https://qt-project.atlassian.net/browse/QTBUG-144294.

UPDATE: Qt 6.8.3 seems to be working.

@hebasto
Copy link
Member Author

hebasto commented Feb 22, 2026

It seems test_bitcoin-qt.exe is failing in the CI.

Apparently, the issue occurs when building on Debian with GCC 14.0.
The same happens when building on Ubuntu with GCC 13.0.
Everything is fine when building on Fedora with GCC 15.2.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants