Skip to content

depends: set CMAKE_SYSTEM_NAME for Qt6 cross-compilation - #8

Draft
edtubbs with Copilot wants to merge 160 commits into
1.15.0-dev-qt-5_15_16from
copilot/update-qt-version
Draft

depends: set CMAKE_SYSTEM_NAME for Qt6 cross-compilation#8
edtubbs with Copilot wants to merge 160 commits into
1.15.0-dev-qt-5_15_16from
copilot/update-qt-version

Conversation

Copilot AI commented Feb 7, 2026

Copy link
Copy Markdown

The i686-win CI job (and its x86_64-win siblings) failed at link time with thousands of undefined reference to QString::..., QWidget::... errors when linking dogecoin-qt.exe.

Root cause

depends/packages/qt.mk configures the target Qt6 build with:

$(package)_cmake_opts += -DCMAKE_SYSTEM_NAME=$($(host_os)_cmake_system_name)

No host makefile ever defined *_cmake_system_name, so the value was empty. CMake therefore stayed in native mode, defaulted CMAKE_SYSTEM_NAME to the build host, and built Qt6 as x86_64 Linux ELF (Building for: linux-g++) instead of cross-compiling for i686-w64-mingw32. The MinGW PE linker silently ignores the wrong-arch libQt6*.a, leaving every app→Qt symbol unresolved (with zero Qt-internal undefined refs — the signature that this was an arch mismatch, not a link-order issue).

Changes

  • depends/hosts/mingw32.mk — add mingw32_cmake_system_name=Windows and mingw32_cmake_system_version=10.0. This is the fix for the reported failure and covers all three Windows GUI jobs (shared host_os=mingw32).
  • depends/hosts/darwin.mk — add darwin_cmake_system_name=Darwin and darwin_cmake_system_version=12.0 (Darwin 12 ↔ OSX_MIN_VERSION=10.8), addressing the same latent bug for the macOS target.

With these set, line 202 emits -DCMAKE_SYSTEM_NAME=Windows, putting CMake into cross-compile mode so Qt produces i686 Windows PE archives the MinGW linker can consume.

Notes

  • The macOS job has a separate, earlier compile error (QConcatenable/boost date_time) not addressed here.
  • Local validation isn't possible in this environment (no MinGW cross-toolchain / unbuilt depends tree); CI is required to confirm.

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: edtubbs <84785904+edtubbs@users.noreply.github.com>
Copilot AI changed the title [WIP] Update Qt version to latest release Upgrade Qt from 5.15.16 to 6.7.3 Feb 7, 2026
Copilot AI requested a review from edtubbs February 7, 2026 04:50
Copilot AI added 4 commits February 7, 2026 04:58
This commit implements the Qt 6 upgrade as documented in Qt6_Upgrade_Complete.md:

Build System Changes:
- Split Qt configuration into qt_details.mk, qt.mk, and native_qt.mk
- Updated to Qt 6.7.3 (matches Bitcoin Core)
- Qt 6 uses CMake instead of qmake for building

Dependencies:
- Added native_qt package for cross-compilation
- Added 6 xcb utility libraries (cursor, render, keysyms, image, wm, util)
- Updated packages.mk to include native_qt and additional xcb libs

Patches:
- Replaced 7 Qt 5 patches with 9 Qt 6-compatible patches from Bitcoin Core
- Includes fixes for static linking, reproducible builds, and platform support

Autotools Updates:
- Updated configure.ac: changed qt5 → qt6, Qt5PlatformSupport → Qt6PlatformSupport
- Updated bitcoin_qt.m4: changed version detection 0x050000 → 0x060000
- Updated module names (Qt5Core → Qt6Core, Qt5Gui → Qt6Gui, etc.)
- Removed QtPrintSupport as separate module (integrated in Qt 6)

SHA256 Hashes (Qt 6.7.3):
- qtbase: 8ccbb9ab055205ac76632c9eeddd1ed6fc66936fc56afc2ed0fd5d9e23da3097
- qttranslations: dcc762acac043b9bb5e4d369b6d6f53e0ecfcf76a408fe0db5f7ef071c9d6dc8
- qttools: f03bb7df619cd9ac9dba110e30b7bcab5dd88eb8bdc9cc752563b4367233203f
- Removed Qt 5 patches that are no longer needed with Qt 6
- Updated .gitignore to exclude backup files
Copilot AI added 3 commits February 7, 2026 05:13
The CI workflow was still referencing Qt 5 (--with-gui=qt5 and --enable-gui=qt5)
which is incompatible with the Qt 6.7.3 upgrade.

Changes:
- Replaced all --with-gui=qt5 with --with-gui=qt6 (5 occurrences)
- Replaced all --enable-gui=qt5 with --enable-gui=qt6 (2 occurrences)

This ensures CI builds will work correctly with the upgraded Qt 6.7.3.

Fixes: CI check failures after Qt upgrade
Copilot AI changed the title Upgrade Qt from 5.15.16 to 6.7.3 Fix CI: Update Qt 5 references to Qt 6 in workflow Feb 7, 2026
Copilot AI and others added 2 commits February 7, 2026 05:20
Documentation .txt files (like PUSH_READY.txt, VERIFICATION_REPORT.txt) were
triggering CI builds unnecessarily because they weren't in the paths-ignore list.

Changes:
- Added '**/*.txt' to paths-ignore in ci.yml (push and pull_request)
- Added '**/*.txt' to paths-ignore in linter.yml (push and pull_request)

This matches the configuration already present in codeql-analysis.yml and
prevents documentation text files from triggering expensive CI builds.

Fixes: GitHub Actions unnecessary triggers on documentation changes
Co-authored-by: edtubbs <84785904+edtubbs@users.noreply.github.com>
In Qt 6, QtPlatformSupport library no longer exists as a standalone library.
Its functionality has been merged into other Qt modules (mainly QtGui).
Removing the AC_CHECK_LIB check that was causing configure to fail with
"lib missing" error on Windows/MinGW builds.

This fixes the CI build failure at step 11 (Build Dogecoin).

Fixes: GitHub Actions run #21774899328 build error

Co-authored-by: edtubbs <84785904+edtubbs@users.noreply.github.com>
Copilot AI and others added 30 commits June 11, 2026 19:24
openssl.org no longer serves 1.0.2 branch tarballs under
/source/old/1.0.2 (404), and the FALLBACK_DOWNLOAD_PATH mirror
currently presents an expired TLS certificate. This switches the
primary download_path to the root openssl.org source directory,
which serves an identical file (verified against the existing
sha256_hash).
fukuchi.org has gone offline entirely (upstream homepage now points
to GitHub for releases), and the FALLBACK_DOWNLOAD_PATH mirror
presents an expired TLS certificate. This switches the source to
Debian's snapshot archive, which serves a byte-identical copy of the
original upstream tarball (verified against the existing
sha256_hash, no hash change needed).
zlib.net moves previous releases into a /fossils subdirectory once a
new version is published, and the zlib.net root no longer serves 1.3
directly. The FALLBACK_DOWNLOAD_PATH mirror also presents an expired
TLS certificate. This switches the download_path to the official
zlib.net fossils archive, which serves an identical file (verified
against the existing sha256_hash).
downloads.sourceforge.net is unreliable/slow from CI runners and
intermittently fails or times out. This switches the download_path
to the official GitHub release asset for the same version, which
serves an identical file (verified against the existing
sha256_hash).
download.savannah.gnu.org can reset connections mid-transfer,
causing CI failures. This switches to
download-mirror.savannah.gnu.org, which the FreeType project
explicitly recommends as the fallback for exactly this situation:

https://www.mail-archive.com/freetype@nongnu.org/msg05856.html

Serves an identical file (verified against the existing
sha256_hash). Also switchted to HTTPS.
updated to github source

Co-authored-by: xanimo <dakoda@xanimo.net>
updated to github source

Co-authored-by: xanimo <dakoda@xanimo.net>
depends: fix broken package source downloads
…ck-4020

ci: try multiple SDK_URL mirrors when installing the macOS SDK
This version of GCC, shipped with newer Linux releases, is stricter so we need
to patch some dependencies and relax some new compiler options for others.

The approach here should preserve the same behavior.

Note that the bdb change is scoped only to Linux, as the library uses Win32
mutexes on Windows.
…-builds-with-gcc-15

Fix `make -C depends` builds with GCC 15
…-version

# Conflicts:
#	.github/workflows/ci.yml
#	depends/packages/qrencode.mk
#	depends/packages/qt.mk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.