build: Switch to Qt 6 #30997

pull hebasto wants to merge 9 commits into bitcoin:master from hebasto:240928-qt6 changing 49 files +2044 −605
  1. hebasto commented at 9:11 pm on September 28, 2024: member

    The currently used Qt 5.15 is approaching EOL. The recent migration of the Bitcoin Core’s build system to CMake makes it possible to switch to Qt 6.

    This PR is not fully functional yet, but it raises some conceptual questions that need to be discussed:

    1. Migrating to Qt 6 breaks compatibility with Debian 11 / Ubuntu 20.04 for the release binaries: https://github.com/bitcoin/bitcoin/blob/cdff967c2891a0a9ea7d7431cb9d0997d1e9928e/contrib/devtools/symbol-check.py#L35
    2. Qt 6 requires Windows 10 (1809 or later) / Windows 11.

    The first commit allows to build the GUI on Linux or macOS using the Qt 6 packages installed by a package manager and available system-wide.

    Guix builds work for Linux hosts and for Windows. However, the later fails the CONTROL_FLOW security check for bitcoin-qt.exe.

  2. cmake: Require Qt 6 to build GUI 906e9fd52a
  3. hebasto added the label Build system on Sep 28, 2024
  4. DrahtBot commented at 9:11 pm on September 28, 2024: contributor

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

    Code Coverage

    For detailed information about the code coverage, see the test coverage report.

    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:

    • #30935 (ci: Approximate MAKEJOBS in image build phase by maflcko)
    • #30634 (ci: Use clang-19 from apt.llvm.org by maflcko)
    • #30315 (Stratum v2 Transport by Sjors)
    • #30043 (net: Replace libnatpmp with built-in PCP+NATPMP implementation by laanwj)
    • #29346 (Stratum v2 Noise Protocol by Sjors)

    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.

  5. DrahtBot added the label CI failed on Sep 28, 2024
  6. hebasto force-pushed on Sep 28, 2024
  7. hebasto force-pushed on Sep 28, 2024
  8. depends: Bump `qt` package up to 6.7.2 00bf889eb1
  9. depends: Factor out Qt modules' details f2ec7a5443
  10. depends: Add `native_qt` package
    Unlike Qt 5, Qt 6 requires a separate native Qt build for
    cross-building.
    
    See: https://www.qt.io/blog/qt-6-build-system.
    a04d168c14
  11. qt: Fix compiling for Windows 51fe59fe4f
  12. guix: Adjust for Qt 6 d6b5cad590
  13. hebasto force-pushed on Sep 28, 2024
  14. hebasto force-pushed on Sep 28, 2024
  15. ci: Update for Qt 6 e0b62aa712
  16. build, msvc: Update `vcpkg.json` for Qt 6 c545023259
  17. build: Qt plugin DLL has to be copied on Windows only b9c75dca09
  18. hebasto force-pushed on Sep 28, 2024
  19. jarolrod commented at 11:47 pm on September 28, 2024: member
    concept ack 🌞

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-09-29 01:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me