Context
Follow-up to #352 / PR #354, which consolidated the test shards and cut Qt CDN downloads per run from ~27 to ~10 (Windows is already down to 1: its test jobs run windeployqt'd binaries from the build artifact with no Qt install at all).
This issue is speculative - open for observation. If the Qt CDN flakes stop biting after #354, close it unneeded. If builds or the remaining Linux/mac test groups keep flaking on aqt downloads, this is round two.
Goal
One Qt install per OS per run (i.e. only the build jobs install Qt): Linux 5 → 1, macOS 4 → 1.
Plan (the Windows recipe, applied to Linux/mac)
- Move the self-building unit suites' builds into the build jobs.
test_unit_suites (Linux) and the mac live-integration build currently qmake/make on the test runner, which is why those jobs need Qt dev tools. build_linux / build_mac already build the other test binaries - add the unit suites there and ship the binaries in the artifact.
- Bundle the Qt runtime into the artifact, like
build/qwtlib already does for QWT:
- Linux: copy the needed
libQt6*.so* plus plugin dirs (platforms, tls, sqldrivers, imageformats, multimedia) into build/qtlib; test groups set LD_LIBRARY_PATH + QT_PLUGIN_PATH.
- macOS: copy the frameworks or use
DYLD_FRAMEWORK_PATH; test binaries are plain executables (not .app bundles), so macdeployqt doesn't apply directly.
Known hard parts
- QtWebEngine: login_screen and ui_navigation link it; bundling adds ~300-400 MB (WebEngineCore lib + resources + locales) to the linux/mac artifacts. Consider whether those two suites keep a Qt install (one group) while everything else goes bundled - that alone would still be Linux 5 → 2.
- Plugin path resolution under offscreen/Xvfb needs
QT_QPA_PLATFORM_PLUGIN_PATH verification.
- Artifact size vs. download time trade-off: artifacts are GitHub-internal (reliable) vs. the Qt CDN (flaky) - the trade is favourable for stability, but download time for 4 consumers/OS grows.
Decision gate
Watch CI for ~a week after #354 merges. Count aqt failures (the auto-retry workflow log is the tally). Zero or near-zero → close this. Recurring → implement.
Context
Follow-up to #352 / PR #354, which consolidated the test shards and cut Qt CDN downloads per run from ~27 to ~10 (Windows is already down to 1: its test jobs run windeployqt'd binaries from the build artifact with no Qt install at all).
This issue is speculative - open for observation. If the Qt CDN flakes stop biting after #354, close it unneeded. If builds or the remaining Linux/mac test groups keep flaking on
aqtdownloads, this is round two.Goal
One Qt install per OS per run (i.e. only the build jobs install Qt): Linux 5 → 1, macOS 4 → 1.
Plan (the Windows recipe, applied to Linux/mac)
test_unit_suites(Linux) and the mac live-integration build currently qmake/make on the test runner, which is why those jobs need Qt dev tools.build_linux/build_macalready build the other test binaries - add the unit suites there and ship the binaries in the artifact.build/qwtlibalready does for QWT:libQt6*.so*plus plugin dirs (platforms,tls,sqldrivers,imageformats,multimedia) intobuild/qtlib; test groups setLD_LIBRARY_PATH+QT_PLUGIN_PATH.DYLD_FRAMEWORK_PATH; test binaries are plain executables (not .app bundles), somacdeployqtdoesn't apply directly.Known hard parts
QT_QPA_PLATFORM_PLUGIN_PATHverification.Decision gate
Watch CI for ~a week after #354 merges. Count aqt failures (the auto-retry workflow log is the tally). Zero or near-zero → close this. Recurring → implement.