update cc crate to 1.0.86 #3624
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com> | |
# SPDX-FileContributor: Andrew Hayzen <andrew.hayzen@kdab.com> | |
# SPDX-FileContributor: Be <be.0@gmx.com> | |
# | |
# SPDX-License-Identifier: MIT OR Apache-2.0 | |
name: cxx-qt tests | |
on: [push, pull_request] | |
# Cancel any previous runs for the same pull request | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
clang_format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: sudo apt-get update && sudo apt-get install -y clang-format-12 | |
- run: ./clang_format_check.sh . | |
license_check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: REUSE Compliance Check | |
uses: fsfe/reuse-action@v2 | |
rust_format_check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: rustup component add rustfmt | |
- run: cargo fmt --all --check --verbose | |
markdown_lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: DavidAnson/markdownlint-cli2-action@v14 | |
with: | |
globs: '**/*.md' | |
build: | |
# Run after pre checks | |
needs: [clang_format, license_check, rust_format_check, markdown_lint] | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Ubuntu 22.04 (gcc) Qt5 | |
os: ubuntu-22.04 | |
qt_version: 5 | |
vcpkg: off | |
vcpkg_triplet: x64-linux-release | |
cores: 4 | |
# FIXME: valgrind complains about invalid debuginfo. Might be fixed when Ubuntu updates to valgrind 3.20 | |
# https://bugs.kde.org/show_bug.cgi?id=452758 | |
ctest_args: --exclude-regex '^(example_qml_features_test_valgrind|example_qml_minimal_myobject_test_valgrind)$' | |
qt_qpa_platform: offscreen | |
compiler_cache_path: /home/runner/.cache/sccache | |
cargo_dir: ~/.cargo | |
packages-extra: >- | |
qtbase5-dev | |
qtdeclarative5-dev | |
qtquickcontrols2-5-dev | |
qml-module-qtquick2 | |
qml-module-qtquick-controls2 | |
qml-module-qttest | |
workspace: /home/runner/cxx-qt | |
- name: Ubuntu 22.04 (gcc) Qt6 | |
os: ubuntu-22.04 | |
qt_version: 6 | |
vcpkg: off | |
vcpkg_triplet: x64-linux-release | |
cores: 4 | |
# FIXME: valgrind complains about invalid debuginfo. Might be fixed when Ubuntu updates to valgrind 3.20 | |
# https://bugs.kde.org/show_bug.cgi?id=452758 | |
ctest_args: --exclude-regex '^(example_qml_features_test_valgrind|example_qml_minimal_myobject_test_valgrind)$' | |
qt_qpa_platform: offscreen | |
compiler_cache_path: /home/runner/.cache/sccache | |
cargo_dir: ~/.cargo | |
packages-extra: >- | |
qt6-base-dev | |
qt6-declarative-dev | |
qt6-declarative-dev-tools | |
qml6-module-qtquick-controls | |
qml6-module-qtquick-window | |
qml6-module-qttest | |
qml6-module-qtqml-workerscript | |
libgl1-mesa-dev | |
libvulkan-dev | |
libxkbcommon-dev | |
workspace: /home/runner/cxx-qt | |
- name: macOS 12 (clang) Qt5 | |
os: macos-12 | |
qt_version: 5 | |
vcpkg: on | |
vcpkg_triplet: x64-osx-release | |
cores: 3 | |
# FIXME: qmltestrunner fails to import QtQuick module | |
# https://github.com/KDAB/cxx-qt/issues/110 | |
# | |
# FIXME: clang-format-14 causes formatting differences if it is selected by brew | |
# once Ubuntu 22.04 is we can move to clang-format-14 everywhere | |
# for now we need at least clang-format-12 otherwise include reordering fails after clang-format off | |
# https://github.com/KDAB/cxx-qt/issues/121 | |
ctest_args: --exclude-regex '^(cargo_clippy|cargo_doc|example_qml_features_test|example_qml_minimal_myobject_test|cargo_build_rerun|.*valgrind)$' | |
qt_qpa_platform: cocoa | |
compiler_cache_path: /Users/runner/Library/Caches/Mozilla.sccache | |
cargo_dir: ~/.cargo | |
workspace: /Users/runner/cxx-qt | |
cc: clang | |
cxx: clang++ | |
- name: macOS 12 (clang) Qt6 | |
os: macos-12 | |
qt_version: 6 | |
vcpkg: on | |
vcpkg_triplet: x64-osx-release | |
cores: 3 | |
# FIXME: qmltestrunner fails to import QtQuick module | |
# https://github.com/KDAB/cxx-qt/issues/110 | |
ctest_args: --exclude-regex '^(cargo_clippy|cargo_doc|example_qml_features_test|example_qml_minimal_myobject_test|cargo_build_rerun|.*valgrind)$' | |
qt_qpa_platform: cocoa | |
compiler_cache_path: /Users/runner/Library/Caches/Mozilla.sccache | |
cargo_dir: ~/.cargo | |
workspace: /Users/runner/cxx-qt | |
cc: clang | |
cxx: clang++ | |
- name: Windows 2022 (MSVC) Qt5 | |
os: windows-2022 | |
qt_version: 5 | |
vcpkg: on | |
# Use a short buildtrees root for building vcpkg | |
vcpkg_buildtrees_root: C:\v | |
vcpkg_triplet: x64-windows-release | |
cores: 4 | |
ctest_args: --exclude-regex '^(cargo_clippy|cargo_doc|cargo_build_rerun|.*valgrind)$' | |
exe_suffix: .exe | |
qt_qpa_platform: windows | |
compiler_cache_path: C:\Users\runneradmin\AppData\Local\Mozilla\sccache\cache | |
cargo_dir: C:\Users\runneradmin\.cargo | |
cc: cl | |
cxx: cl | |
# The D drive runs out of space when building dependencies with vcpkg. | |
workspace: C:\cxx-qt | |
- name: Windows 2022 (MSVC) Qt6 | |
os: windows-2022 | |
qt_version: 6 | |
vcpkg: on | |
# Use a short buildtrees root for building vcpkg | |
vcpkg_buildtrees_root: C:\v | |
vcpkg_triplet: x64-windows-release | |
cores: 4 | |
ctest_args: --exclude-regex '^(cargo_clippy|cargo_doc|cargo_build_rerun|.*valgrind)$' | |
exe_suffix: .exe | |
qt_qpa_platform: windows | |
compiler_cache_path: C:\Users\runneradmin\AppData\Local\Mozilla\sccache\cache | |
cargo_dir: C:\Users\runneradmin\.cargo | |
cc: cl | |
cxx: cl | |
# The D drive runs out of space when building dependencies with vcpkg. | |
workspace: C:\cxx-qt | |
runs-on: ${{ matrix.os }} | |
name: ${{ matrix.name }} | |
env: | |
# Match the deployment target that Qt was built with via vcpkg, otherwise the following error occurs | |
# ld: warning: object file (LIB) was built for newer macOS version (12.7) than being linked (12.0) | |
MACOSX_DEPLOYMENT_TARGET: 12.7 | |
# sccache is around 180-300M in size for a normal build | |
# With GitHub caches we have a 10 GB limit / 6 conditions = 1666 MB | |
# Allow a larger cache size so that code in branches can be cached | |
# but still leave room for the tools cache | |
SCCACHE_CACHE_SIZE: 600M | |
steps: | |
# On Windows, the D drive that the workspace is on by default runs out of space when | |
# vcpkg builds Qt, so the repo needs to be cloned to the C drive. GitHub's checkout | |
# action does not support cloning to a path outside GITHUB_WORKSPACE: | |
# https://github.com/actions/checkout/issues/197 | |
- name: "Clone Git repository" | |
uses: LebedevRI/checkout@issue197 | |
with: | |
path: ${{ matrix.workspace }} | |
# Ensure clippy and rustfmt is installed, they should come from github runner | |
# | |
# Note we still need rustfmt for the cxx-qt-gen tests | |
- name: "Install Rust toolchain" | |
run: rustup component add clippy rustfmt | |
- name: "Rust tools cache" | |
uses: actions/cache@v4 | |
id: rust-tools-cache | |
with: | |
path: | | |
${{ matrix.cargo_dir }}/bin/sccache${{ matrix.exe_suffix }} | |
${{ matrix.cargo_dir }}/bin/mdbook${{ matrix.exe_suffix }} | |
${{ matrix.cargo_dir }}/bin/mdbook-linkcheck${{ matrix.exe_suffix }} | |
key: ${{ matrix.os }}_sccache-0.7.6_mdbook-0.4.36_mdbook-linkcheck-0.7.7 | |
- name: "Build Rust tools" | |
if: steps.rust-tools-cache.outputs.cache-hit != 'true' | |
# Do not build with storage backends enabled, we only need local | |
run: | | |
cargo install --no-default-features sccache | |
cargo install mdbook mdbook-linkcheck | |
- name: "Compiler cache" | |
# Always cache and save all branches | |
# otherwise if we only restore here and only save the main branch | |
# we don't update the cache until something reaches main which | |
# causes an eviction of the cache if the cache isn't accessed for 1 week | |
uses: actions/cache@v4 | |
with: | |
path: ${{ matrix.compiler_cache_path }} | |
key: ${{ matrix.name }}_compiler_cache | |
- name: "[Ubuntu] Install dependencies" | |
if: runner.os == 'Linux' | |
run: >- | |
sudo apt-get update && | |
sudo apt-get install -y | |
ninja-build | |
clang-format-12 | |
libssl-dev | |
pkg-config | |
valgrind | |
${{ matrix.packages-extra }} | |
# hack around https://bugs.launchpad.net/ubuntu/+source/qtchooser/+bug/1964763 | |
- name: "[Ubuntu] Add Qt6 tools to PATH" | |
if: runner.os == 'Linux' && matrix.qt_version == 6 | |
run: echo "PATH=/usr/lib/qt6/bin:${PATH}" >> "${GITHUB_ENV}" | |
# FIXME: Workaround until meson supports Python 3.12+ in vcpkg | |
# for now force Python 3.11 | |
# https://github.com/microsoft/vcpkg/issues/35332 | |
- name: "[macOS] Force python 3.11 for vcpkg" | |
if: runner.os == 'macOS' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: "[macOS] Install dependencies" | |
if: runner.os == 'macOS' | |
# FIXME: clang-format-14 causes formatting differences if it is selected by brew | |
# once Ubuntu 22.04 is we can move to clang-format-14 everywhere | |
# for now we need at least clang-format-12 otherwise include reordering fails after clang-format off | |
# https://github.com/KDAB/cxx-qt/issues/121 | |
# | |
# automake is needed for building libicu which is a dependency of Qt | |
run: brew install automake autoconf-archive ninja clang-format | |
# Note that for nuget uploads to work this must be run as the kdab user | |
# eg a branch on the kdab repo rather than a users fork | |
# | |
# Otherwise you may see the following error: | |
# Pushing NuGet to "cxx-qt-github-packages" failed. Use --debug for more information. | |
- name: "Authenticate to GitHub Packages" | |
if: runner.os != 'Linux' && github.repository_owner == 'KDAB' | |
shell: bash | |
run: | | |
nuget sources add -Name cxx-qt-github-packages -Source https://nuget.pkg.github.com/KDAB/index.json -Username KDAB -Password ${{ secrets.GITHUB_TOKEN }} -NonInteractive | |
nuget setapikey ${{ secrets.GITHUB_TOKEN }} -Source cxx-qt-github-packages -NonInteractive | |
echo "VCPKG_BINARY_SOURCES=clear;nuget,cxx-qt-github-packages,readwrite;" >> "${GITHUB_ENV}" | |
# Required for CMake to find Ninja | |
- name: "[Windows] Set up MSVC Developer Command Prompt" | |
if: runner.os == 'Windows' | |
uses: seanmiddleditch/gha-setup-vsdevenv@v3 | |
# Ninja is required on Windows for CMAKE_CXX_COMPILER_LAUNCHER to work for using sccache. | |
# | |
# Until debug and release packages are split we only build release packages for vcpkg | |
# to improve CI run times, hence VCPKG_HOST_TRIPLET and VCPKG_TARGET_TRIPLET | |
# https://github.com/microsoft/vcpkg/issues/1626 | |
- name: "Configure" | |
run: >- | |
cmake | |
-D USE_QT5=${{ matrix.qt_version == 5 }} | |
-D CMAKE_BUILD_TYPE=Release | |
-D VCPKG=${{ matrix.vcpkg }} | |
-D VCPKG_HOST_TRIPLET=${{ matrix.vcpkg_triplet }} | |
-D VCPKG_BUILDTREES_ROOT=${{ matrix.vcpkg_buildtrees_root }} | |
-D VCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} | |
-G Ninja | |
-S . -B build | |
working-directory: ${{ matrix.workspace }} | |
env: | |
RUSTC_WRAPPER: sccache | |
CC: ${{ matrix.cc }} | |
CXX: ${{ matrix.cxx }} | |
- name: "Build" | |
run: cmake --build build --config Release --parallel ${{ matrix.cores }} | |
working-directory: ${{ matrix.workspace }} | |
env: | |
RUSTC_WRAPPER: sccache | |
- name: "Test" | |
run: ctest ${{ matrix.ctest_args }} -C Release -T test --output-on-failure --parallel ${{ matrix.cores }} | |
working-directory: ${{ matrix.workspace }}/build | |
env: | |
RUSTC_WRAPPER: sccache | |
QT_QPA_PLATFORM: ${{ matrix.qt_qpa_platform }} | |
QT_SELECT: qt${{ matrix.qt_version }} | |
- name: "Print compiler cache statistics" | |
run: sccache --show-stats | |
- name: Upload GitHub Actions artifacts of vcpkg logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vcpkg-logs-${{ matrix.name }} | |
path: | | |
${{ matrix.workspace }}/vcpkg/buildtrees/**/*.log | |
${{ matrix.workspace }}/build/vcpkg-bootstrap.log | |
${{ matrix.workspace }}/build/vcpkg-manifest-install.log | |
${{ matrix.workspace }}/build/vcpkg_installed/vcpkg/issue_body.md | |
if-no-files-found: ignore |