Skip to content

API cleanup

API cleanup #281

Workflow file for this run

---
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)