Linux build and test #473
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
# Adapted from https://github.com/catchorg/Catch2/blob/devel/.github/workflows/linux-simple-builds.yml | |
name: Linux build and test | |
on: | |
push: | |
paths-ignore: | |
- "docs" | |
- "docker" | |
pull_request: | |
paths: | |
- "docs" | |
- "docker" | |
jobs: | |
test-arm: | |
timeout-minutes: 30 | |
runs-on: [ self-hosted, ARM64 ] # self-hosted, using Oracle free tier instance | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare environment | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y \ | |
g++ \ | |
cmake \ | |
ninja-build \ | |
libboost-locale-dev libboost-thread-dev libboost-filesystem-dev libboost-log-dev libboost-stacktrace-dev \ | |
libssl-dev \ | |
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ | |
libwayland-dev libwayland-server0 libinput-dev libxkbcommon-dev libgbm-dev \ | |
libcurl4-openssl-dev \ | |
libpulse-dev \ | |
libevdev-dev \ | |
libudev-dev \ | |
libdrm-dev \ | |
libpci-dev | |
- name: Setup Rust | |
uses: ATiltedTree/setup-rust@v1 | |
with: | |
rust-version: stable | |
- name: Setup gst-wayland-display | |
run: | | |
git clone https://github.com/games-on-whales/gst-wayland-display | |
cd gst-wayland-display | |
cargo install cargo-c | |
cargo cinstall -p c-bindings --prefix=/usr/local | |
- name: Configure build | |
working-directory: ${{runner.workspace}} | |
run: | | |
cmake -Bbuild \ | |
-H$GITHUB_WORKSPACE \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DCMAKE_CXX_EXTENSIONS=OFF \ | |
-DCMAKE_CXX_STANDARD=17 \ | |
-DTEST_UINPUT=OFF \ | |
-DTEST_DOCKER=ON \ | |
-DLINK_RUST_WAYLAND=ON \ | |
-DTEST_RUST_WAYLAND=OFF \ | |
-DTEST_NVIDIA=OFF \ | |
-DCARGO_TARGET_BUILD=aarch64-unknown-linux-gnu \ | |
-G Ninja | |
- name: Build tests + lib | |
working-directory: ${{runner.workspace}}/build | |
run: ninja -j 4 wolftests | |
- name: Run tests | |
working-directory: ${{runner.workspace}}/build/tests | |
run: ./wolftests | |
test: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
cxx: | |
- g++-10 | |
- g++-12 | |
- clang++-11 | |
- clang++-14 | |
build_type: [ Release ] | |
shared: [ true, false ] | |
std: [ 17 ] | |
include: | |
- cxx: g++-10 | |
other_pkgs: [ g++-10 ] | |
- cxx: g++-12 | |
other_pkgs: [ g++-12 ] | |
- cxx: clang++-11 | |
other_pkgs: [ clang-11 ] | |
- cxx: clang++-14 | |
other_pkgs: [ clang-14 ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare environment | |
# ubuntu-latest breaks without libunwind-dev, | |
# see: https://github.com/actions/runner-images/issues/6399#issuecomment-1286050292 | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libunwind-dev | |
sudo apt-get install -y \ | |
ninja-build \ | |
libboost-locale-dev libboost-thread-dev libboost-filesystem-dev libboost-log-dev libboost-stacktrace-dev \ | |
libssl-dev \ | |
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ | |
libwayland-dev libwayland-server0 libinput-dev libxkbcommon-dev libgbm-dev \ | |
libcurl4-openssl-dev \ | |
libpulse-dev \ | |
libevdev-dev \ | |
libudev-dev \ | |
libdrm-dev \ | |
libpci-dev \ | |
${{ join(matrix.other_pkgs, ' ') }} | |
- name: Setup Rust | |
uses: ATiltedTree/setup-rust@v1 | |
with: | |
rust-version: stable | |
- name: Setup gst-wayland-display | |
run: | | |
git clone https://github.com/games-on-whales/gst-wayland-display | |
cd gst-wayland-display | |
cargo install cargo-c | |
cargo cinstall -p c-bindings --prefix=/usr/local --destdir=temp | |
sudo cp -r temp/usr/local/* /usr/local/ | |
- name: Configure build | |
working-directory: ${{runner.workspace}} | |
env: | |
CXX: ${{matrix.cxx}} | |
CXXFLAGS: ${{matrix.cxxflags}} | |
# Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}. | |
# This is important | |
run: | | |
cmake -Bbuild \ | |
-H$GITHUB_WORKSPACE \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \ | |
-DCMAKE_CXX_EXTENSIONS=OFF \ | |
-DBUILD_SHARED_LIBS=${{ matrix.shared }} \ | |
-DCATCH_DEVELOPMENT_BUILD=ON \ | |
-DTEST_UINPUT=OFF \ | |
-DTEST_DOCKER=OFF \ | |
-DLINK_RUST_WAYLAND=ON \ | |
-DTEST_RUST_WAYLAND=OFF \ | |
-DTEST_NVIDIA=OFF \ | |
-G Ninja | |
- name: Build tests + lib | |
working-directory: ${{runner.workspace}}/build | |
run: ninja -j 2 wolftests | |
- name: Run tests | |
working-directory: ${{runner.workspace}}/build/tests | |
run: ./wolftests |