CI: fix timeout bug #598
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
name: Debug | |
on: [ push, workflow_dispatch, pull_request ] | |
jobs: | |
build: | |
name: ${{ matrix.config.name }} | |
needs: [ build-riscv-tests ] | |
# Avoid duplicate builds on PR from the same repository | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Ubuntu Latest GCC", | |
os: ubuntu-latest, | |
build_type: "Debug", | |
cc: "gcc", cxx: "g++", build_system: "Unix Makefiles", | |
qt_version: "native", | |
qt_install_command: "sudo apt-get update && sudo apt-get install qtbase5-dev", | |
# Apt is significantly faster that aqt. | |
} | |
- { | |
name: "Ubuntu Latest GCC + Qt6", | |
os: ubuntu-latest, | |
build_type: "Debug", | |
cc: "gcc", cxx: "g++", build_system: "Unix Makefiles", | |
qt_version: "6.2.1" | |
} | |
- { | |
name: "macOS Latest Clang", | |
os: macos-latest, | |
build_type: "Debug", | |
cc: "clang", cxx: "clang++", build_system: "Unix Makefiles", | |
qt_version: "5.15.2", | |
# Cached aqt is faster that brew. | |
} | |
- { | |
name: "Windows 2019 MinGW", | |
os: windows-2019, | |
build_type: "Debug", | |
cc: "gcc", cxx: "g++", build_system: "MinGW Makefiles", | |
# Older Qt releases do not have 64bit mingw release | |
qt_version: "5.12.9", qt_arch: "win64_mingw73" | |
} | |
- { | |
name: "Windows 2022 Clang + Qt6", | |
os: windows-2022, | |
build_type: "Debug", | |
# on Windows, msbuild does not support Clang with GNU-like interface | |
# and NMake does not support parallel builds | |
cc: "clang", cxx: "clang++", build_system: "Ninja", | |
qt_version: "6.7.0", qt_arch: "win64_msvc2019_64" | |
} | |
steps: | |
- uses: actions/checkout@v2 | |
- run: git submodule update --recursive --init | |
- name: Ccache | |
uses: hendrikmuhs/[email protected] # https://github.com/hendrikmuhs/ccache-action/issues/181 | |
with: | |
key: ${{ github.ref_name }}-${{ matrix.config.name }} | |
- name: Install specified Qt version | |
if: matrix.config.qt_version != 'native' | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: ${{ matrix.config.qt_version }} | |
cache: true | |
cache-key-prefix: ${{ runner.os }}-${{ matrix.config.qt_version }}-Qt | |
arch: ${{ matrix.config.qt_arch }} | |
dir: ${{ github.workspace }}/Qt | |
- name: Install native Qt by package manager | |
if: matrix.config.qt_version == 'native' | |
run: ${{ matrix.config.qt_install_command }} | |
- name: Setup Ninja | |
if: matrix.config.build_system == 'Ninja' | |
uses: seanmiddleditch/gha-setup-ninja@v4 | |
- name: Create Build Environment | |
run: cmake -E make_directory ${{ github.workspace }}/build | |
- name: Configure CMake | |
shell: bash | |
working-directory: ${{github.workspace}}/build | |
run: "cmake $GITHUB_WORKSPACE | |
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} | |
-DCMAKE_C_COMPILER=${{ matrix.config.cc }} | |
-DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DFORCE_COLORED_OUTPUT=true | |
-G \"${{ matrix.config.build_system }}\"" | |
- name: Build | |
working-directory: ${{ github.workspace }}/build | |
run: cmake --build . -j4 | |
- name: Deploy on Windows | |
if: runner.os == 'Windows' | |
working-directory: ${{ github.workspace }}/build/target | |
shell: bash | |
run: "windeployqt \"${{ github.workspace }}/build/target/qtrvsim_gui.exe\"" | |
- name: Test | |
working-directory: ${{ github.workspace }}/build | |
shell: bash | |
run: ctest --output-on-failure --verbose | |
- name: Get official RISC-V tests | |
if: ${{ steps.cache-tests.outputs.cache-hit != 'true' }} | |
uses: alehechka/download-tartifact@v1 | |
with: | |
name: riscv-official-tests | |
- name: Official RISC-V tests (single cycle) | |
# The testing python script does not support Ubuntu 18 | |
if: matrix.config.os != 'ubuntu-18.04' | |
working-directory: ${{ github.workspace }}/tests/riscv-official | |
#run: python qtrvsim_tester.py --no-64 ${{ github.workspace }}/build/target/qtrvsim_cli | |
run: python qtrvsim_tester.py -M -A ${{ github.workspace }}/build/target/qtrvsim_cli | |
- name: Official RISC-V tests (pipelined) | |
# The testing python script does not support Ubuntu 18 | |
if: matrix.config.os != 'ubuntu-18.04' | |
working-directory: ${{ github.workspace }}/tests/riscv-official | |
#run: python qtrvsim_tester.py --no-64 ${{ github.workspace }}/build/target/qtrvsim_cli | |
run: python qtrvsim_tester.py -M -A --pipeline ${{ github.workspace }}/build/target/qtrvsim_cli | |
- name: Official RISC-V tests (single cycle, cached) | |
# The testing python script does not support Ubuntu 18 | |
if: matrix.config.os != 'ubuntu-18.04' | |
working-directory: ${{ github.workspace }}/tests/riscv-official | |
#run: python qtrvsim_tester.py --no-64 ${{ github.workspace }}/build/target/qtrvsim_cli | |
run: python qtrvsim_tester.py -M -A --cache ${{ github.workspace }}/build/target/qtrvsim_cli | |
- name: Official RISC-V tests (pipelined, cached) | |
# The testing python script does not support Ubuntu 18 | |
if: matrix.config.os != 'ubuntu-18.04' | |
working-directory: ${{ github.workspace }}/tests/riscv-official | |
#run: python qtrvsim_tester.py --no-64 ${{ github.workspace }}/build/target/qtrvsim_cli | |
run: python qtrvsim_tester.py -M -A --pipeline --cache ${{ github.workspace }}/build/target/qtrvsim_cli | |
- name: Store created artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: target-${{ runner.os }}-qt${{ matrix.config.qt_version }} | |
path: ${{ github.workspace }}/build/target | |
build-emscripten: | |
name: ${{ matrix.config.name }} | |
# Avoid duplicate builds on PR from the same repository | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "WASM Linux", | |
os: ubuntu-latest, | |
build_type: Release, | |
qt_arch: wasm_32, | |
emsdk_version: 1.39.8, | |
qt_version: 5.15.2, | |
} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Ccache | |
uses: hendrikmuhs/[email protected] # https://github.com/hendrikmuhs/ccache-action/issues/181 | |
with: | |
key: ${{ github.ref_name }}-${{ matrix.config.name }} | |
- name: Setup EMSDK cache | |
id: cache-system-libraries | |
uses: actions/cache@v3 | |
with: | |
path: 'emsdk-cache' | |
key: ${{ runner.os }}-${{ matrix.config.emsdk_version }}-${{ matrix.config.qt_version }}-emsdk | |
- name: Setup emsdk | |
uses: mymindstorm/setup-emsdk@v11 | |
with: | |
version: ${{ matrix.config.emsdk_version }} | |
actions-cache-folder: 'emsdk-cache' | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: ${{ matrix.config.qt_version }} | |
cache: true | |
cache-key-prefix: 'wasm-qt' | |
arch: ${{ matrix.config.qt_arch }} | |
dir: ${{ github.workspace }}/Qt | |
- name: Create Build Environment | |
run: cmake -E make_directory ${{github.workspace}}/build | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/build | |
run: "emcmake cmake $GITHUB_WORKSPACE | |
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} | |
-DCMAKE_PREFIX_PATH=$Qt5_DIR | |
-DCMAKE_FIND_ROOT_PATH=$Qt5_DIR | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DFORCE_COLORED_OUTPUT=true | |
-Wno-dev" | |
- name: Build | |
working-directory: ${{ github.workspace }}/build | |
run: cmake --build . -j4 | |
- name: Store created artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: target-wasm-${{ runner.os }}-qt${{ matrix.config.qt_version }} | |
path: ${{ github.workspace }}/build/target | |
build-riscv-tests: | |
name: Build official RISC-V tests | |
# Avoid duplicate builds on PR from the same repository | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- run: git submodule update --recursive --init | |
- name: Get cache key | |
uses: mathiasvr/[email protected] | |
id: subtree-hash | |
with: | |
run: git rev-parse HEAD:tests/riscv-official/ | |
- name: Cache | |
id: cache-tests | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace }}/tests/riscv-official/isa | |
key: riscv-tests-${{ steps.subtree-hash.outputs.stdout }} | |
- name: Toolchain for official RISC-V tests | |
if: ${{ steps.cache-tests.outputs.cache-hit != 'true' }} | |
working-directory: ${{ github.workspace }}/tests/riscv-official | |
# Version 14 is needed to correctly process newer parts of RV | |
run: | | |
### Ubuntu 22 already provides those | |
# echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" | sudo tee -a /etc/apt/sources.list && | |
# wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && | |
sudo apt-get update && | |
sudo apt-get install clang-14 lldb-14 lld-14 | |
- name: Build official RISC-V tests | |
if: ${{ steps.cache-tests.outputs.cache-hit != 'true' }} | |
working-directory: ${{ github.workspace }}/tests/riscv-official/isa | |
env: | |
RISCV_COMPILER: clang-14 | |
USE_CLANG_OPTS: true | |
RISCV_OBJDUMP_CMD: llvm-objdump-14 | |
run: make | |
- name: Store created artifacts | |
# Use of tar significantly improves performance as artifact upload has significant per file penalty | |
uses: alehechka/upload-tartifact@v2 | |
with: | |
name: riscv-official-tests | |
path: tests/riscv-official/isa |