API cleanup #281
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: Build and Test | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main ] | |
paths: | |
- '**.h' | |
- '**.c' | |
- '**.hpp' | |
- '**.cpp' | |
- '**.y' | |
- '**.l' | |
- '**.sh' | |
- '**.cmake' | |
- '**CMakeLists.txt' | |
pull_request: | |
branches: [ main ] | |
paths: | |
- '**.h' | |
- '**.c' | |
- '**.hpp' | |
- '**.cpp' | |
- '**.y' | |
- '**.l' | |
- '**.sh' | |
- '**.cmake' | |
- '**.xml' | |
- '**CMakeLists.txt' | |
jobs: | |
formatting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get clang-format-11 | |
run: | | |
echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections | |
echo 'DPkg::Use-Pty "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
echo 'DPkg::Progress-Fancy "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
sudo apt-get -qq update | |
sudo apt-get -qq install clang-format-11 | |
- name: Formatting | |
run: find src include test -iregex '.*\.\(c\|h\|cpp\|hpp\|cc\|hh\|cxx\|hxx\)$' -exec clang-format-11 -n -Werror {} \; | |
linux-x86_64: | |
needs: [ formatting ] | |
strategy: | |
fail-fast: false | |
runs-on: ubuntu-latest | |
env: | |
CCACHE_DIR: ${{ github.workspace }}/CCACHE | |
BUILD_DIR: build-linux64-gcc10 | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
CMAKE_BUILD_TYPE: Debug | |
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/cmake/toolchain/linux64-gcc10.cmake | |
CMAKE_PREFIX_PATH: ${{ github.workspace }}/local/linux64-gcc10 | |
CMAKE_GENERATOR: Ninja | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get Ubuntu dependencies | |
run: | | |
echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections | |
echo 'DPkg::Use-Pty "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
echo 'DPkg::Progress-Fancy "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
sudo apt-get -qq update | |
sudo apt-get -qq install bison curl wget unzip xz-utils cmake ninja-build flex ccache g++-10 | |
- name: Compute CCache keys | |
id: linux64-keys | |
run: | | |
key2=ccache-linux64- | |
key1="${key2}$(date +%W)" | |
echo "key1=${key1}" >> $GITHUB_OUTPUT | |
echo "key2=${key2}" >> $GITHUB_OUTPUT | |
- name: Restore CCache | |
id: ccache-restore | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ steps.linux64-keys.outputs.key1 }} | |
restore-keys: ${{ steps.linux64-keys.outputs.key2 }} | |
- name: CCache limits and stats | |
run: | | |
ccache -M120M | |
ccache --show-stats | |
- name: Restore Libs | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: local/linux64-gcc10 | |
key: libs-linux64-${{ hashFiles('getlibs/**') }} | |
restore-keys: libs-linux64- | |
- name: Get library dependencies | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: ./getlibs/getlibs.sh linux64-gcc10 | |
- name: Save Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
id: save-libs | |
uses: actions/cache/save@v4 | |
with: | |
path: local/linux64-gcc10 | |
key: ${{ steps.restore-libs.outputs.cache-primary-key }} | |
- name: Configure CMake build system | |
run: cmake -B "$BUILD_DIR" -DCMAKE_PREFIX_PATH=$PWD/local/linux64-gcc10 -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/toolchain/linux64-gcc10.cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DSSP=ON -DUBSAN=ON -DASAN=ON -DLSAN=ON | |
- name: Build | |
run: cmake --build "$BUILD_DIR" --config $CMAKE_BUILD_TYPE | |
- name: Test | |
run: ctest --test-dir "$BUILD_DIR" -C $CMAKE_BUILD_TYPE | |
- name: CCache Statistics | |
run: ccache --show-stats | |
windows-x86_64: | |
needs: [ formatting ] | |
strategy: | |
fail-fast: false | |
runs-on: ubuntu-latest | |
env: | |
CCACHE_DIR: ${{ github.workspace }}/CCACHE | |
BUILD_DIR: build-win64 | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
CROSSCOMPILING_EMULATOR: wine | |
CMAKE_BUILD_TYPE: Debug | |
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/cmake/toolchain/win64.cmake | |
CMAKE_PREFIX_PATH: ${{ github.workspace }}/local/win64 | |
CMAKE_GENERATOR: Ninja | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get Ubuntu dependencies | |
run: | | |
echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections | |
echo 'DPkg::Use-Pty "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
echo 'DPkg::Progress-Fancy "false";' | sudo tee -a /etc/apt/apt.conf.d/98-quiet | |
sudo apt-get -qq update | |
sudo apt-get -qq install bison curl wget unzip xz-utils cmake ninja-build flex ccache g++-mingw-w64-x86-64-posix wine | |
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
- name: Setup Wine | |
run: | | |
sudo apt-get -qq install wine-binfmt | |
sudo update-binfmts --disable cli # disable mono attempts to execute windows binaries | |
sudo update-binfmts --import /usr/share/binfmts/wine # enable wine to execute windows binaries | |
echo "WINARCH=win64" >> $GITHUB_ENV | |
echo "WINEDEBUG=fixme-all,-all" >> $GITHUB_ENV | |
echo "WINEPATH=\"$(./winepath-for x86_64-w64-mingw32)\"" >> $GITHUB_ENV | |
- name: Compute CCache keys | |
id: win64-keys | |
run: | | |
key2=ccache-win64- | |
key1="${key2}$(date +%W)" | |
echo "key1=${key1}" >> $GITHUB_OUTPUT | |
echo "key2=${key2}" >> $GITHUB_OUTPUT | |
- name: Restore CCache | |
id: ccache-restore | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ steps.win64-keys.outputs.key1 }} | |
restore-keys: ${{ steps.win64-keys.outputs.key2 }} | |
- name: CCache limits and stats | |
run: | | |
ccache -M120M | |
ccache --show-stats | |
- name: Restore Libs | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: local/win64 | |
key: libs-win64-${{ hashFiles('getlibs/**') }} | |
restore-keys: libs-win64- | |
- name: Get library dependencies | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: | | |
echo "steps.restore-libs.outputs.cache-primary-key: ${{ steps.restore-libs.outputs.cache-primary-key }}" | |
echo "steps.restore-libs.outputs.cache-matched-key: ${{ steps.restore-libs.outputs.cache-matched-key }}" | |
./getlibs/getlibs.sh win64 | |
- name: Save Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
id: save-libs | |
uses: actions/cache/save@v4 | |
with: | |
path: local/win64 | |
key: ${{ steps.restore-libs.outputs.cache-primary-key }} | |
- name: Configure CMake build system | |
run: cmake -B "$BUILD_DIR" -DCMAKE_PREFIX_PATH=$PWD/local/win64 -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/toolchain/win64.cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DSSP=ON | |
- name: Build | |
run: cmake --build "$BUILD_DIR" --config $CMAKE_BUILD_TYPE | |
- name: Test | |
run: ctest --test-dir "$BUILD_DIR" -C $CMAKE_BUILD_TYPE | |
- name: CCache Statistics | |
run: ccache --show-stats | |
darwin-brew-gcc10: | |
needs: [ formatting ] | |
strategy: | |
fail-fast: false | |
runs-on: macos-13 | |
# see https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md | |
env: | |
CCACHE_DIR: ${{ github.workspace }}/CCACHE | |
BUILD_DIR: build-darwin-brew-gcc10 | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
CMAKE_BUILD_TYPE: Debug | |
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/cmake/toolchain/darwin-brew-gcc10.cmake | |
CMAKE_PREFIX_PATH: ${{ github.workspace }}/local/darwin-brew-gcc10 | |
CMAKE_GENERATOR: Ninja | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: '14.3.1' | |
- name: Get Home Brew dependencies | |
run: brew install -q cmake ninja ccache gcc@10 flex bison wget curl coreutils automake autoconf libtool gnu-sed gawk | |
- name: Compute CCache keys | |
id: darwin-keys | |
run: | | |
key2=ccache-darwin-brew-gcc10- | |
key1="${key2}$(date +%W)" | |
echo "key1=${key1}" >> $GITHUB_OUTPUT | |
echo "key2=${key2}" >> $GITHUB_OUTPUT | |
- name: Restore CCache | |
id: ccache-restore | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ steps.darwin-keys.outputs.key1 }} | |
restore-keys: ${{ steps.darwin-keys.outputs.key2 }} | |
- name: CCache Limits and Stats | |
run: | | |
ccache -M120M | |
ccache --show-stats | |
- name: Restore Libs | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: local/darwin-brew-gcc10 | |
key: libs-darwin-brew-gcc10-${{ hashFiles('getlibs/**') }} | |
restore-keys: libs-darwin-brew-gcc10 | |
- name: Get library dependencies | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: ./getlibs/getlibs.sh darwin-brew-gcc10 | |
- name: Store Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
id: save-libs | |
uses: actions/cache/save@v4 | |
with: | |
path: local/darwin-brew-gcc10 | |
key: ${{ steps.restore-libs.outputs.cache-primary-key }} | |
- name: Configure CMake build system | |
run: cmake -B "$BUILD_DIR" -DCMAKE_PREFIX_PATH=$PWD/local/darwin-brew-gcc10 -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/toolchain/darwin-brew-gcc10.cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DSSP=ON -DUBSAN=ON -DASAN=ON -DLSAN=ON | |
- name: Build | |
run: cmake --build "$BUILD_DIR" --config $CMAKE_BUILD_TYPE | |
- name: Test | |
run: ctest --test-dir "$BUILD_DIR" -C $CMAKE_BUILD_TYPE | |
- name: CCache Statistics | |
run: ccache --show-stats | |
# build-nix: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: cachix/install-nix-action@v15 | |
# with: | |
# nix_path: nixpkgs=channel:nixos-unstable | |
# - name: Build and test | |
# run: nix build | |
# build-nix-mac: | |
# runs-on: macos-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: cachix/install-nix-action@v15 | |
# with: | |
# nix_path: nixpkgs=channel:nixos-unstable | |
# - name: Build and test | |
# run: nix build | |
# build-nix-cross: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: cachix/install-nix-action@v15 | |
# with: | |
# nix_path: nixpkgs=channel:nixos-unstable | |
# - name: Build and test | |
# run: nix build .\#utapWindows.x86_64-linux | |
# build-linux64: | |
# needs: [ format ] | |
# strategy: | |
# fail-fast: false | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Set default environment variables | |
# run: | | |
# echo "DEBIAN_FRONTEND=noninteractive" >> "$GITHUB_ENV" | |
# echo "BUILD_DIR=build-linux64-gcc10" >> "$GITHUB_ENV" | |
# echo "CROSSCOMPILING_EMULATOR=wine" >> "$GITHUB_ENV" | |
# echo "CTEST_OUTPUT_ON_FAILURE=1" >> "$GITHUB_ENV" | |
# - name: Get Ubuntu dependencies | |
# run: | | |
# sudo apt-get -qy update | |
# sudo apt-get -qy install bison curl wget unzip xz-utils cmake ninja-build flex libc6-dev g++-10 | |
# - name: Get library dependencies | |
# run: ./getlibs/getlibs.sh linux64-gcc10 | |
# - name: Configure CMake build system | |
# run: cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/toolchain/linux64-gcc10.cmake -DCMAKE_PREFIX_PATH=$PWD/local/linux64-gcc10 -DCMAKE_BUILD_TYPE=Debug -DUBSAN=ON -DASAN=ON -B $BUILD_DIR -S . -G Ninja | |
# - name: Build | |
# run: cmake --build $BUILD_DIR | |
# - name: Test | |
# run: (cd $BUILD_DIR ; ctest) |