Skip to content

Commit ca49fa0

Browse files
committed
Include Ubuntu 22.04 and Windows 2025 builds in CI
Note, the (pre-existing) macos-15 failures are unrelated, and reported at actions/runner-images#12725. Squashed commit of the following: commit 036e143 Author: Paul Colby <[email protected]> Date: Sat Aug 9 11:48:49 2025 +1000 Allow for `C:` drives on Windows 2025 runners Since the drive letter differs between Window 2022 and 2025 runners. Also relates to commit 64cfa6c. commit 07b3c4a Author: Paul Colby <[email protected]> Date: Fri Aug 8 20:26:58 2025 +1000 Restore Linux and macOS builds commit d5aa170 Author: Paul Colby <[email protected]> Date: Fri Aug 8 20:10:12 2025 +1000 Skip test collation in some specific cases ie for Windows 2025, x86, MinGW, Qt 5.9 to 5.13. commit e3df155 Author: Paul Colby <[email protected]> Date: Fri Aug 8 19:48:37 2025 +1000 See in Qt's MinGW affects Windows 2022 Since it does help (somewhat) on Windows 2025. commit 8eb2729 Author: Paul Colby <[email protected]> Date: Fri Aug 8 19:44:38 2025 +1000 Revert "Verify that Qt's MinGW makes no difference for lcov on Windows 2025" This reverts commit e517237. commit e517237 Author: Paul Colby <[email protected]> Date: Fri Aug 8 19:34:32 2025 +1000 Verify that Qt's MinGW makes no difference for lcov on Windows 2025 commit f7174ae Author: Paul Colby <[email protected]> Date: Fri Aug 8 17:16:24 2025 +1000 Exclude the segfaultint Windows 2025 builds for now And revert most (all?) of the temporary debugging code. commit a2aba2d Author: Paul Colby <[email protected]> Date: Fri Aug 8 17:06:17 2025 +1000 Revert to the Win2025 host runners' MinGW Since Qt's version is not helping. commit d61da71 Author: Paul Colby <[email protected]> Date: Fri Aug 8 16:41:23 2025 +1000 Add more debug logging commit 45c3e6e Author: Paul Colby <[email protected]> Date: Fri Aug 8 16:31:09 2025 +1000 Add some more debug logging commit 2311c6e Author: Paul Colby <[email protected]> Date: Fri Aug 8 16:16:11 2025 +1000 Check if the io rdbuf redirection is problematic commit 5778559 Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:49:42 2025 +1000 Add some debug logging To debug some Windows Server 2025 MinGW segfaults. commit 0013154 Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:41:50 2025 +1000 Install the win32 versions specifically commit 598afb2 Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:27:57 2025 +1000 Try installing Qt's MinGW for some Windows Server 2025 cases commit 9adb59c Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:15:53 2025 +1000 Correct YAML syntax commit 64cfa6c Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:14:01 2025 +1000 Don't hardcode the temp path The drive letter differs between Window 2022 and 2025 runners. commit be3ff4b Author: Paul Colby <[email protected]> Date: Fri Aug 8 15:12:39 2025 +1000 Revert "Try using Qt's MinGW everywhere that it's newer" This reverts commit 4220c79. commit 4220c79 Author: Paul Colby <[email protected]> Date: Fri Aug 8 13:58:07 2025 +1000 Try using Qt's MinGW everywhere that it's newer commit 3f5c9ea Author: Paul Colby <[email protected]> Date: Fri Aug 8 13:13:53 2025 +1000 Update the collation job for the new test artifact names commit 0f613af Author: Paul Colby <[email protected]> Date: Fri Aug 8 13:00:10 2025 +1000 Move runner host OS version numbers into build IDs commit d1c8a18 Author: Paul Colby <[email protected]> Date: Thu Aug 7 18:08:15 2025 +1000 Ensure Windows portable artifact names are unique commit 034a4c3 Author: Paul Colby <[email protected]> Date: Thu Aug 7 18:07:18 2025 +1000 Exclude L10n tests for Ubuntu 22.04's Qt6 packages for now Since they are affected by an existing, known (to this project) L10n issue. commit 8234bb5 Author: Paul Colby <[email protected]> Date: Thu Aug 7 18:03:06 2025 +1000 Ensure Windows build artifact names are unique commit 860e534 Author: Paul Colby <[email protected]> Date: Thu Aug 7 18:00:00 2025 +1000 Ensure Windows test artifacts names are unique commit c6da652 Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:14:08 2025 +1000 Exclude Ubuntu 22.04 on ARM64 from Qt 6.8 onwards Since Qt 6.8 and 6.9, both require a more recent glibc version. commit 3e69444 Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:10:13 2025 +1000 Only verify tagfiles in the generate-docs workflow Because they are (typically) not configured in other builds, since GitHub runners don't ship with Doxygen already installed. commit f21f16b Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:08:38 2025 +1000 Correct path to Doxyfiles commit 1cb4c99 Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:07:42 2025 +1000 Make QtDoc linkage optional But issue a notice if not being used, and require it in most cases in CI. commit d7cfead Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:05:47 2025 +1000 Correct workflow 'ternary' expression The previous version (missing the `|| ''`) was just an experiment. commit 6c2c716 Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:04:56 2025 +1000 Invert workflow ternary condition Because `''` evaluates as `false`. commit 540c078 Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:03:35 2025 +1000 Correct Bash brace expansion commit 614586a Author: Paul Colby <[email protected]> Date: Wed Aug 6 18:00:00 2025 +1000 Skip *.tags packages for Qt6 on Ubuntu 22.04 Because Ubuntu (and presumably Debian) never packaged those files for Qt6 on Ubuntu 22.04 (they available in 24.04). commit 2991b1f Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:42:59 2025 +1000 Correct workflow expression commit f297224 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:42:40 2025 +1000 Only upload test results when we have them commit 2624cd1 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:40:39 2025 +1000 Correct workflow syntax commit 4e93e39 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:38:55 2025 +1000 See what's going on with Windows builds commit 38aae48 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:37:05 2025 +1000 Separate the coverage and non-coverage steps Makes the Linux and macOS steps consistent with the Windows job. commit 6a638eb Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:36:11 2025 +1000 Tweak a comment to fix a yamllint warning commit 2066185 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:35:05 2025 +1000 Check if YAML typing is fouling GitHub Actions commit bc0efde Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:32:49 2025 +1000 Don't try to run the non-existent coverage tests commit 94dd5a5 Author: Paul Colby <[email protected]> Date: Tue Aug 5 22:28:19 2025 +1000 Skip coverage reports for Ubuntu 22.04 w/ clang Since Ubuntu 22.04's llvm-lcov version does not support the `--sources` option. commit 695b9d9 Author: Paul Colby <[email protected]> Date: Tue Aug 5 21:49:58 2025 +1000 Ensure Linux artifacts are unique commit 7d6686f Author: Paul Colby <[email protected]> Date: Tue Aug 5 21:32:30 2025 +1000 Try out GitHub's old Ubuntu 22.04 runners commit 1301d06 Author: Paul Colby <[email protected]> Date: Tue Aug 5 20:57:13 2025 +1000 Try out GitHub's new Windows 2025 runners
1 parent 79407e0 commit ca49fa0

File tree

3 files changed

+98
-38
lines changed

3 files changed

+98
-38
lines changed

.github/workflows/build.yaml

Lines changed: 86 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ env:
1414

1515
jobs:
1616
linux:
17-
runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}
17+
runs-on: ubuntu-${{ matrix.os }}${{ matrix.arch == 'arm64' && '-arm' || '' }}
1818
strategy:
1919
fail-fast: false
2020
matrix:
@@ -36,6 +36,9 @@ jobs:
3636
- 6.7.3
3737
- 6.8.3
3838
- 6.9.1
39+
os:
40+
- 22.04
41+
- 24.04
3942
arch:
4043
- arm64
4144
- x86-64
@@ -57,6 +60,9 @@ jobs:
5760
- { qt: 6.4.3, arch: arm64 }
5861
- { qt: 6.5.3, arch: arm64 }
5962
- { qt: 6.6.3, arch: arm64 }
63+
# Qt 6.8+ moc requires more a more recent glibc (specifically GLIBC_2.38) than Ubuntu 22.04 provides.
64+
- { qt: 6.8.3, arch: arm64, os: 22.04 }
65+
- { qt: 6.9.1, arch: arm64, os: 22.04 }
6066
steps:
6167
- name: Upgrade OS
6268
run: |
@@ -71,8 +77,9 @@ jobs:
7177
run: sudo apt install qtbase5{,-doc}-dev qtconnectivity5-{dev,doc-html} qttools5-dev{,-tools}
7278
- name: Install Ubuntu's Qt6
7379
if: matrix.qt == 6
74-
run: >
75-
sudo apt install qt6-{base-{dev{,-tools},doc-dev},connectivity-{dev,doc-html},l10n-tools,tools-dev{,-tools}}
80+
run: sudo apt install qt6-{base-dev{,-tools},connectivity-dev,l10n-tools,tools-dev{,-tools}} ${tagsPackages}
81+
env: # The *.tags files (we want for building documentation) are not available in Ubuntu 22.04's Qt6 packages.
82+
tagsPackages: ${{ matrix.os != '22.04' && 'qt6-base-doc-dev qt6-connectivity-doc-html' || '' }}
7683
- name: Install online Qt version
7784
if: contains(matrix.qt, '.') # ie if not using Ubuntu's Qt5/Qt6.
7885
uses: jurplel/install-qt-action@v4
@@ -90,7 +97,7 @@ jobs:
9097
if: failure()
9198
uses: actions/upload-artifact@v4
9299
with:
93-
name: aqtinstall-log-linux-${{ matrix.cc }}-${{ matrix.qt }}
100+
name: aqtinstall-log-linux-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.cc }}-${{ matrix.qt }}
94101
path: aqtinstall.log
95102
if-no-files-found: error
96103
- name: Install linuxdeploy
@@ -103,11 +110,13 @@ jobs:
103110
env:
104111
CC: ${{ matrix.cc }}
105112
CXX: ${{ matrix.cc == 'gcc' && 'g++' || 'clang++' }}
106-
PROJECT_BUILD_ID: ${{ github.run_number }}.linux.${{ matrix.arch }}.${{ matrix.cc }}.qt-${{ matrix.qt }}
113+
PROJECT_BUILD_ID: >-
114+
${{ github.run_number }}.linux.${{ matrix.os }}.${{ matrix.arch }}.${{ matrix.cc }}.qt-${{ matrix.qt }}
107115
run: |
108116
[[ '${{ matrix.qt }}' =~ ^[56]$ ]] ||
109117
qtInstallDocs="$RUNNER_WORKSPACE/Qt/Docs/Qt-${QT_VERSION:-${{ matrix.qt }}}"
110-
# With coverage instrumentation.
118+
# With coverage instrumentation (except Ubuntu 22.04's llvm-lcov version does not support `--sources`)
119+
[[ '${{ matrix.os }}' == '22.04' && '${{ matrix.cc }}' == 'clang' ]] ||
111120
cmake -D CMAKE_BUILD_TYPE=Release \
112121
-D ENABLE_COVERAGE=true \
113122
${qtInstallDocs:+-D "QT_INSTALL_DOCS=$qtInstallDocs"} \
@@ -118,19 +127,27 @@ jobs:
118127
${qtInstallDocs:+-D "QT_INSTALL_DOCS=$qtInstallDocs"} \
119128
-S "$GITHUB_WORKSPACE" -B "$RUNNER_TEMP/release"
120129
tee -a "$GITHUB_OUTPUT" <<< "dokitVersion=$(cat "$RUNNER_TEMP/release/version.txt")"
121-
cmake --build "$RUNNER_TEMP/coverage"
130+
[[ '${{ matrix.os }}' == '22.04' && '${{ matrix.cc }}' == 'clang' ]] ||
131+
cmake --build "$RUNNER_TEMP/coverage"
122132
cmake --build "$RUNNER_TEMP/release"
123-
"$RUNNER_TEMP/coverage/src/cli/dokit" --version
133+
[[ '${{ matrix.os }}' == '22.04' && '${{ matrix.cc }}' == 'clang' ]] ||
134+
"$RUNNER_TEMP/coverage/src/cli/dokit" --version
124135
"$RUNNER_TEMP/release/src/cli/dokit" --version
125-
- name: Test
126-
run: |
127-
ctest --output-on-failure --test-dir "$RUNNER_TEMP/coverage" --verbose
128-
ctest --output-on-failure --test-dir "$RUNNER_TEMP/release" --verbose
129-
cmake --build "$RUNNER_TEMP/coverage" --target coverage
136+
- name: Test w/ coverage
137+
if: matrix.os != '22.04' || matrix.cc != 'clang'
138+
run: ctest --output-on-failure --test-dir "$RUNNER_TEMP/coverage" --verbose
139+
- name: Test w/o coverage
140+
run: ctest --output-on-failure --test-dir "$RUNNER_TEMP/release" --verbose
141+
- name: Collate test coverage
142+
if: matrix.os != '22.04' || matrix.cc != 'clang'
143+
run: cmake --build "$RUNNER_TEMP/coverage" --target coverage
130144
- name: Test localisations
131145
# \todo For unknown reasons, Qt 6.2.4 w/ GCC fails to include full set of *.qm file - happens locally too, not
132146
# just on GitHub hosted runners. We could diagnose further, but this one corner case is very low value today.
133-
if: startsWith(matrix.qt, '6') && !(startsWith(matrix.qt, '6.2.') && matrix.cc == 'gcc')
147+
# Note, Ubuntu 22.04's Qt6 packages are (at the time of writing) Qt 6.2.4, so they are affected also.
148+
if: >-
149+
startsWith(matrix.qt, '6') &&
150+
!( matrix.cc == 'gcc' && ( startsWith(matrix.qt, '6.2.') || (matrix.qt == '6' && matrix.os == '22.04') ) )
134151
run: |
135152
declare -Ar languages=(
136153
[en_AU]='Australia|Unrecognised'
@@ -150,6 +167,9 @@ jobs:
150167
grep "${localText} temperature format" <<< "${output}"
151168
done
152169
- name: Upload test results
170+
if: >- # If we have coverage reports, and/or TAP files (TAP support added in Qt Test v5.12).
171+
matrix.os != '22.04' || matrix.cc != 'clang' || !startsWith(matrix.qt, '5') ||
172+
( startsWith(matrix.qt, '5.1') && !startsWith(matrix.qt, '5.10') && !startsWith(matrix.qt, '5.11') )
153173
uses: actions/upload-artifact@v4
154174
with:
155175
name: test-results-${{ steps.build.outputs.dokitVersion }}
@@ -160,14 +180,18 @@ jobs:
160180
${{ runner.temp }}/release/test/**/*.tap
161181
if-no-files-found: error
162182
- name: Report parallel coverage to Codacy
163-
if: github.event_name == 'push' && github.actor != 'dependabot[bot]'
183+
if: >-
184+
( matrix.os != '22.04' || matrix.cc == 'gcc' )
185+
&& github.event_name == 'push' && github.actor != 'dependabot[bot]'
164186
env:
165187
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
166188
run: >
167189
bash <(curl -Ls https://coverage.codacy.com/get.sh) report --partial \
168190
-l CPP -r "${{ runner.temp }}/coverage/coverage.info"
169191
- name: Report parallel coverage to Coveralls
170-
if: github.event_name == 'push' && github.actor != 'dependabot[bot]'
192+
if: >-
193+
( matrix.os != '22.04' || matrix.cc == 'gcc' )
194+
&& github.event_name == 'push' && github.actor != 'dependabot[bot]'
171195
uses: coverallsapp/github-action@v2
172196
with:
173197
# Note, the coverage-reporter-platform option is currently undocumented. See
@@ -341,11 +365,12 @@ jobs:
341365
sudo sqlite3 "$HOME/Library/Application Support/com.apple.TCC/TCC.db" "INSERT or REPLACE INTO access
342366
( service, client, client_type, auth_value, auth_reason, auth_version, flags ) VALUES
343367
( 'kTCCServiceBluetoothAlways', '/usr/local/opt/runner/provisioner/provisioner', 1, 2, 3, 1, 0 )"
344-
- name: Test
345-
run: |
346-
[[ '${{ matrix.os }}' == 'macos-13' && '${{ matrix.cc }}' == 'clang' ]] ||
347-
ctest --output-on-failure --test-dir "$RUNNER_TEMP/coverage" --verbose
348-
ctest --output-on-failure --test-dir "$RUNNER_TEMP/release" --verbose
368+
- name: Test w/ coverage
369+
if: matrix.os != 'macos-13' || matrix.cc != 'clang'
370+
run: ctest --output-on-failure --test-dir "$RUNNER_TEMP/coverage" --verbose
371+
timeout-minutes: 1
372+
- name: Test w/o coverage
373+
run: ctest --output-on-failure --test-dir "$RUNNER_TEMP/release" --verbose
349374
timeout-minutes: 1
350375
- name: Test localisations
351376
if: startsWith(matrix.qt, '6')
@@ -413,7 +438,7 @@ jobs:
413438
if-no-files-found: error
414439

415440
win:
416-
runs-on: windows-latest
441+
runs-on: windows-${{ matrix.os }}
417442
defaults: { run: { shell: cmd } }
418443
strategy:
419444
fail-fast: false
@@ -434,6 +459,9 @@ jobs:
434459
- 6.7.3
435460
- 6.8.3
436461
- 6.9.1
462+
os:
463+
- '2022'
464+
- '2025'
437465
arch: [ x86, x86-64, arm64 ]
438466
toolchain: [ llvm, mingw, msvc ]
439467
exclude:
@@ -483,6 +511,13 @@ jobs:
483511
- { toolchain: llvm, qt: '6.4.3' }
484512
- { toolchain: llvm, qt: '6.5.3' }
485513
- { toolchain: llvm, qt: '6.6.3' }
514+
# \todo Exclude some additional 64-bit MinGW builds on Windows 2025 (only) for now, as they segfault on
515+
# std::cout. Probably due to some incompatibly runtime linkage.
516+
- { toolchain: mingw, arch: x86-64, qt: '5.12.12', os: '2025' }
517+
- { toolchain: mingw, arch: x86-64, qt: '5.13.2', os: '2025' }
518+
- { toolchain: mingw, arch: x86-64, qt: '6.2.4', os: '2025' }
519+
- { toolchain: mingw, arch: x86-64, qt: '6.3.2', os: '2025' }
520+
486521
include:
487522
# Map the aqtinstall (aqt) architectures.
488523
- { qt: '5.9.9', toolchain: mingw, arch: x86, aqtArch: win32_mingw53 }
@@ -566,6 +601,18 @@ jobs:
566601
- { toolchain: 'mingw', arch: x86-64, qt: '6.8.3', aqtTools: 'tools_mingw1310' }
567602
- { toolchain: 'llvm', arch: x86-64, qt: '6.9.1', aqtTools: 'tools_llvm_mingw1706' }
568603
- { toolchain: 'mingw', arch: x86-64, qt: '6.9.1', aqtTools: 'tools_mingw1310' }
604+
## Windows Server 2025-specific cases.
605+
- { os: '2025', toolchain: 'mingw', arch: x86, qt: '5.9.9',
606+
aqtTools: 'tools_mingw81,qt.tools.win32_mingw810' }
607+
- { os: '2025', toolchain: 'mingw', arch: x86, qt: '5.10.1',
608+
aqtTools: 'tools_mingw81,qt.tools.win32_mingw810' }
609+
- { os: '2025', toolchain: 'mingw', arch: x86, qt: '5.11.3',
610+
aqtTools: 'tools_mingw81,qt.tools.win32_mingw810' }
611+
- { os: '2025', toolchain: 'mingw', arch: x86, qt: '5.12.12',
612+
aqtTools: 'tools_mingw81,qt.tools.win32_mingw810' }
613+
- { os: '2025', toolchain: 'mingw', arch: x86, qt: '5.13.2',
614+
aqtTools: 'tools_mingw81,qt.tools.win32_mingw810' }
615+
569616
steps:
570617
- name: Configure path
571618
if: matrix.toolchain != 'msvc'
@@ -595,7 +642,7 @@ jobs:
595642
if: matrix.arch == 'arm64' && failure()
596643
uses: actions/upload-artifact@v4
597644
with:
598-
name: aqtinstall-log-win-${{ matrix.arch }}-${{ matrix.toolchain }}-${{ matrix.qt }}-cross
645+
name: aqtinstall-log-win-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.toolchain }}-${{ matrix.qt }}-cross
599646
path: aqtinstall.log
600647
if-no-files-found: error
601648
- name: Install Qt
@@ -616,7 +663,7 @@ jobs:
616663
if: failure()
617664
uses: actions/upload-artifact@v4
618665
with:
619-
name: aqtinstall-log-win-${{ matrix.arch }}-${{ matrix.toolchain }}-${{ matrix.qt }}
666+
name: aqtinstall-log-win-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.toolchain }}-${{ matrix.qt }}
620667
path: aqtinstall.log
621668
if-no-files-found: error
622669
- name: Configure cross-compilation
@@ -635,7 +682,8 @@ jobs:
635682
if: matrix.toolchain != 'msvc'
636683
env:
637684
CMAKE_MESSAGE_LOG_LEVEL: VERBOSE
638-
PROJECT_BUILD_ID: ${{ github.run_number }}.win.${{ matrix.arch }}.${{ matrix.toolchain }}.qt-${{ matrix.qt }}
685+
PROJECT_BUILD_ID: >-
686+
${{ github.run_number }}.win${{ matrix.os }}.${{ matrix.arch }}.${{ matrix.toolchain }}.qt-${{ matrix.qt }}
639687
run: |
640688
cmake -D CMAKE_BUILD_TYPE=Release ^
641689
-D ENABLE_COVERAGE=true ^
@@ -646,7 +694,8 @@ jobs:
646694
- name: Build w/o coverage instrumentation
647695
env:
648696
CMAKE_MESSAGE_LOG_LEVEL: VERBOSE
649-
PROJECT_BUILD_ID: ${{ github.run_number }}.win.${{ matrix.arch }}.${{ matrix.toolchain }}.qt-${{ matrix.qt }}
697+
PROJECT_BUILD_ID: >-
698+
${{ github.run_number }}.win${{ matrix.os }}.${{ matrix.arch }}.${{ matrix.toolchain }}.qt-${{ matrix.qt }}
650699
run: |
651700
cmake -D CMAKE_BUILD_TYPE=Release ^
652701
-D ENABLE_COVERAGE=false ^
@@ -676,15 +725,20 @@ jobs:
676725
- name: Test StatusService for LLVM debugging
677726
if: matrix.toolchain == 'llvm'
678727
shell: bash
679-
run: /d/a/_temp/coverage/test/unit/lib/testStatusService.exe -o output,txt || :; cat output
728+
run: '"${RUNNER_TEMP}/coverage/test/unit/lib/testStatusService.exe" -o output,txt || :; cat output'
680729
- name: Test w/ coverage # We can't execute arm64 binaries on an x86-64 host.
681730
if: matrix.arch != 'arm64' && matrix.toolchain != 'msvc'
682731
run: ctest --output-on-failure --test-dir "%RUNNER_TEMP%/coverage" --verbose
683732
- name: Test w/o coverage # We can't execute arm64 binaries on an x86-64 host.
684733
if: matrix.arch != 'arm64'
685734
run: ctest --output-on-failure --test-dir "%RUNNER_TEMP%/release" --verbose
686-
- name: Collate test coverage
687-
if: matrix.toolchain != 'msvc' && matrix.toolchain != 'llvm'
735+
- name: Collate test coverage # Currently available on MinGW builds only.
736+
# \todo The MinGW versions needed for building and testing on 32-bin binaries on Windows 2025 with Qt 5.9 to
737+
# 5.13, include a gcov binaries that can't be spawned by geninfo. We could probably work around this by somehow
738+
# overriding `gcov.exe` and/or `geninfo` binaries (to us the host's), but this is a low priority.
739+
if: >-
740+
matrix.toolchain == 'mingw' && !( matrix.os == '2025' && matrix.arch == 'x86' &&
741+
contains(fromJSON('["5.9.9", "5.10.1", "5.11.3", "5.12.12", "5.13.2"]'), matrix.qt) )
688742
run: cmake --build "%RUNNER_TEMP%/coverage" --target coverage --verbose
689743
- name: Upload test results
690744
if: matrix.arch != 'arm64' && ( matrix.toolchain != 'msvc' || fromJSON(steps.post-build.outputs.tap) )
@@ -782,14 +836,14 @@ jobs:
782836
# Update source code paths from macOS tracefiles to match Linux.
783837
sed -i -Ee 's|^SF:/Users|SF:/home|' artifacts/*.macos-*/**/coverage.info
784838
# Update source code paths from Windows tracefiles to match Linux, and remove all \r chars from line endings.
785-
sed -i -Ee 's|\r$||' -e 's|\\|/|g' -e 's|^SF:D:/a|SF:/home/runner/work|' artifacts/*.win.*/**/coverage.info
839+
sed -i -Ee 's|\r$||' -e 's|\\|/|g' -e 's|^SF:[CD]:/a|SF:/home/runner/work|' artifacts/*.win*/**/coverage.info
786840
# Combine all tracefiles into one. Note, ignoring inconsistencies between Clang and GCC reports :|
787841
lcov --ignore-errors inconsistent $(find artifacts -name '*.info' -type f -printf '-a %p\n') -o coverage.info
788842
# Generate the HTML report. Note, ignoring inconsistencies between Clang and GCC reports :|
789843
genhtml --demangle-cpp --ignore-errors inconsistent --no-sort --output-directory coverage coverage.info
790844
# Can use any of the removeHtmlDates.sh scripts here, so the Ubuntu x86-64 GCC Qt6 job's version will do.
791-
/usr/bin/env bash ./artifacts/test-results-*.x86-64.gcc.qt-6/coverage/removeHtmlDates.sh coverage
792-
# Remove build numbers from pre-releases, and remove extra build info (such as ".linux.x86-64.gcc.qt-6")
845+
/usr/bin/env bash ./artifacts/test-results-*.linux.24.04.x86-64.gcc.qt-6/coverage/removeHtmlDates.sh coverage
846+
# Remove build numbers from pre-releases, and remove extra build info (such as ".linux.24.04.x86-64.gcc.qt-6")
793847
# from all releases, since this coverage report is an aggregation of many build hosts.
794848
sed -i -Ee 's/(headerValue">([0-9]+\.){2}[0-9]+)(((-pre)\+[0-9]+)|(\+[0-9]+))\..*</\1\5\6</' \
795849
coverage/**/*.html

.github/workflows/docs.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ jobs:
3131
run: |
3232
cmake -D "DOXYGEN_EXECUTABLE=$RUNNER_TEMP/doxygen-${DOXYGEN_VERSION}/bin/doxygen" \
3333
-S "$GITHUB_WORKSPACE" -B "$RUNNER_TEMP"
34+
grep -Ee 'qt(core|bluetooth)\.tags' "$RUNNER_TEMP/doc/public.doxy" # Verify that tagfiles were configured,
35+
grep -Ee 'qt(core|bluetooth)\.tags' "$RUNNER_TEMP/doc/internal.doxy" # since they're optional in CMakeLists.
3436
cmake --build "$RUNNER_TEMP" --target doc doc-internal
3537
- name: Upload public docs
3638
uses: actions/upload-artifact@v4

doc/CMakeLists.txt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ include(FetchContent)
55
FetchContent_Declare(FindQtDocs GIT_REPOSITORY "https://github.com/pcolby/cmake-modules" GIT_TAG "v1")
66
FetchContent_MakeAvailable(FindQtDocs)
77
list(PREPEND CMAKE_MODULE_PATH "${findqtdocs_SOURCE_DIR}")
8-
find_package(QtDocs REQUIRED COMPONENTS Core Bluetooth)
8+
find_package(QtDocs COMPONENTS Core Bluetooth)
99

1010
# Include Qt doc tagfiles, if available.
11-
set(QT_DOCS_BASEURL "https://doc.qt.io/qt-${QT_VERSION_MAJOR}/")
12-
message(STATUS "Using Qt doc tagfiles ${QT_INSTALL_DOCS} => ${QT_DOCS_BASEURL}")
13-
set(DOX_TAGFILES "\\
14-
\"${QtDocs_Core_TAGS}=${QT_DOCS_BASEURL}\" \\
15-
\"${QtDocs_Bluetooth_TAGS}=${QT_DOCS_BASEURL}\" \\")
11+
if (QtDocs_FOUND)
12+
set(QT_DOCS_BASEURL "https://doc.qt.io/qt-${QT_VERSION_MAJOR}/")
13+
message(STATUS "Using Qt doc tagfiles ${QT_INSTALL_DOCS} => ${QT_DOCS_BASEURL}")
14+
set(DOX_TAGFILES "\\
15+
\"${QtDocs_Core_TAGS}=${QT_DOCS_BASEURL}\" \\
16+
\"${QtDocs_Bluetooth_TAGS}=${QT_DOCS_BASEURL}\" \\")
17+
else()
18+
message(NOTICE "QtDocs not found. Project docs will be built without external links to Qt documentation.")
19+
endif()
1620

1721
find_package(Doxygen)
1822
if (DOXYGEN_FOUND)

0 commit comments

Comments
 (0)