Release v0.8.5 #26
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
# ================================================================================================== | |
# Header | |
# ================================================================================================== | |
name: CI | |
on: [push, pull_request] | |
# ================================================================================================== | |
# Jobs | |
# ================================================================================================== | |
jobs: | |
ci: | |
runs-on: ${{ matrix.os }} | |
# ========================================================================== | |
# Matrix | |
# ========================================================================== | |
strategy: | |
fail-fast: false | |
# ------------------------------------------------------- | |
# matrix | |
# ------------------------------------------------------- | |
matrix: | |
os: | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- macos-11 | |
- macos-12 | |
compiler: | |
- gcc-7 | |
- gcc-8 | |
- gcc-9 | |
- gcc-10 | |
- gcc-11 | |
- gcc-12 | |
- gcc-13 | |
- llvm-5 | |
- llvm-6 | |
- llvm-7 | |
- llvm-8 | |
- llvm-9 | |
- llvm-10 | |
- llvm-11 | |
- llvm-12 | |
- llvm-13 | |
# ------------------------------------------------------- | |
# exclude | |
# ------------------------------------------------------- | |
exclude: | |
# Newer GCC versions are not available on all Ubuntu | |
- os: ubuntu-20.04 | |
compiler: gcc-12 | |
- os: ubuntu-20.04 | |
compiler: gcc-13 | |
- os: ubuntu-20.04 | |
compiler: llvm-13 | |
# Older GCC versions are not supported by Ubuntu any more | |
- os: ubuntu-22.04 | |
compiler: gcc-7 | |
- os: ubuntu-22.04 | |
compiler: gcc-8 | |
# llvm-9 causes weird segfauls on Ubuntu, which do not seem to be our fault. | |
# Need to investiage further at some point. We used setup-cpp locally to install | |
# the very same version of llvm-9, and got tons of segfauls for all kind of functions... | |
- os: ubuntu-20.04 | |
compiler: llvm-9 | |
- os: ubuntu-22.04 | |
compiler: llvm-9 | |
# We also currently exclude clang from macos, as it fails with different types of | |
# linker errors. As this is merely a problem in the setup, we defer solving this for now. | |
# Wildcards do not work here, so we have to list them all... :-( | |
- os: macos-11 | |
compiler: llvm-5 | |
- os: macos-11 | |
compiler: llvm-6 | |
- os: macos-11 | |
compiler: llvm-7 | |
- os: macos-11 | |
compiler: llvm-8 | |
- os: macos-11 | |
compiler: llvm-9 | |
- os: macos-11 | |
compiler: llvm-10 | |
- os: macos-11 | |
compiler: llvm-11 | |
- os: macos-11 | |
compiler: llvm-12 | |
- os: macos-11 | |
compiler: llvm-13 | |
- os: macos-12 | |
compiler: llvm-5 | |
- os: macos-12 | |
compiler: llvm-6 | |
- os: macos-12 | |
compiler: llvm-7 | |
- os: macos-12 | |
compiler: llvm-8 | |
- os: macos-12 | |
compiler: llvm-9 | |
- os: macos-12 | |
compiler: llvm-10 | |
- os: macos-12 | |
compiler: llvm-11 | |
- os: macos-12 | |
compiler: llvm-12 | |
- os: macos-12 | |
compiler: llvm-13 | |
# ------------------------------------------------------- | |
# include | |
# ------------------------------------------------------- | |
include: | |
# We test AppleClang as well, as a special case. | |
# - os: macos-10.15 | |
# compiler: apple | |
- os: macos-11 | |
compiler: apple | |
- os: macos-12 | |
compiler: apple | |
# ========================================================================== | |
# Steps | |
# ========================================================================== | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
# ------------------------------------------------------- | |
# Setup | |
# ------------------------------------------------------- | |
- name: Setup C++ | |
# Reference: https://github.com/marketplace/actions/setup-cpp-c-c | |
uses: aminya/setup-cpp@v0.37.0 | |
if: matrix.compiler != 'apple' | |
with: | |
compiler: ${{ matrix.compiler }} | |
cmake: true | |
# ------------------------------------------------------- | |
# Dependencies | |
# ------------------------------------------------------- | |
- name: Install Dependencies - Ubuntu | |
if: runner.os == 'linux' | |
# clang on ubuntu 22 is not properly set up, we need libtinfo5, | |
# see https://github.com/aminya/setup-cpp/issues/149 | |
run: | | |
sudo apt-get install libtinfo5 | |
- name: Install Dependencies - MacOS | |
if: runner.os == 'macos' | |
# For our test script, we need gdate, see https://apple.stackexchange.com/a/47181 | |
# and see ./test/run.sh for details. | |
run: | | |
brew install coreutils | |
# ------------------------------------------------------- | |
# Configure | |
# ------------------------------------------------------- | |
- name: Configure | |
run: | | |
# Deactivate OpenMP on MacOS for now. Causes way too much trouble. | |
export GENESIS_USE_OPENMP=ON | |
if [[ "${RUNNER_OS}" == "macOS" ]]; then export GENESIS_USE_OPENMP=OFF; fi | |
# Need to set the xcode patch here as well, as job steps don't keep status. | |
if [[ "${RUNNER_OS}" == "macOS" ]] && [[ "${{ matrix.compiler }}" == gcc* ]]; then | |
echo "Patching xcode gcc issues" | |
sudo xcode-select --switch /Library/Developer/CommandLineTools | |
fi | |
# For static builds, set the according CMake option | |
# Deactivated for now, as static building with OpenMP is not possible. | |
# Will have to wait for gappa to use the genesis ThreadPool instead. | |
export GAPPA_BUILD_STATIC="" | |
# if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]] && [[ "${{ matrix.compiler }}" == "gcc-13" ]]; then | |
# export GAPPA_BUILD_STATIC="-DGAPPA_BUILD_STATIC=ON" | |
# fi | |
cmake -S . -B ./build -DGENESIS_USE_OPENMP=${GENESIS_USE_OPENMP} ${GAPPA_BUILD_STATIC} | |
# ------------------------------------------------------- | |
# Build & Test | |
# ------------------------------------------------------- | |
- name: Build | |
run: | | |
# Need to set the xcode patch here as well, as job steps don't keep status. | |
if [[ "${RUNNER_OS}" == "macOS" ]] && [[ "${{ matrix.compiler }}" == gcc* ]]; then | |
echo "Patching xcode gcc issues" | |
sudo xcode-select --switch /Library/Developer/CommandLineTools | |
fi | |
cmake --build ./build -- -j 2 | |
- name: Tests | |
run: | | |
./test/run.sh | |
- name: Upload Logs | |
if: always() | |
uses: actions/upload-artifact@v4.3.1 | |
with: | |
name: logs-${{ matrix.os }}-${{ matrix.compiler }} | |
path: | | |
test/log | |
test/out | |
build/**/*.log | |
# ------------------------------------------------------- | |
# Upload Binaries | |
# ------------------------------------------------------- | |
- name: Upload Binaries | |
if: ( matrix.os == 'ubuntu-22.04' && matrix.compiler == 'gcc-13' ) || matrix.compiler == 'apple' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binary-${{ matrix.os }} | |
path: | | |
bin/gappa |