Skip to content

Make sure that no exceptions get lost in the parallel Turtle parser #3464

Make sure that no exceptions get lost in the parallel Turtle parser

Make sure that no exceptions get lost in the parallel Turtle parser #3464

Workflow file for this run

name: Native build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
merge_group:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build:
# The CMake configure and build commands are platform-agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
strategy:
fail-fast: false
matrix:
compiler: [gcc, clang]
compiler-version: [11, 12, 13, 16, 17]
warnings: [ "-Wall -Wextra -Werror " ]
build-type: [Release]
expensive-tests: [true]
exclude:
- compiler: gcc
compiler-version: 16
- compiler: gcc
compiler-version: 17
- compiler: clang
compiler-version: 11
- compiler: clang
compiler-version: 12
- compiler: clang
compiler-version: 13
include:
- compiler: clang
compiler-version: 16
asan-flags: "-fsanitize=address -fno-omit-frame-pointer"
build-type: Release
expensive-tests: false
- compiler: clang
compiler-version: 16
ubsan-flags: " -fsanitize=undefined"
build-type: Release
expensive-tests: false
- compiler: clang
compiler-version: 17
build-type: Debug
expensive-tests: false
ubsan-flags: " -fsanitize=thread -O1 -g"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install dependencies
run: |
sudo gem install apt-spy2 && sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
sudo apt-get install -y libicu-dev tzdata gcc-10 libzstd-dev libjemalloc-dev
- name: Install boost Ubuntu 22.04
run: sudo add-apt-repository -y ppa:mhier/libboost-latest && sudo apt update && sudo apt install -y libboost1.81-all-dev libboost-url1.81-dev
- name: Install gcc 11
run : sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt install -y gcc-11 g++-11
if : matrix.compiler == 'gcc' && matrix.compiler-version == 11
- name: Install gcc 12
run : sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt install -y gcc-12 g++-12
if : matrix.compiler == 'gcc' && matrix.compiler-version == 12
- name: Install gcc 13
run : sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt install -y gcc-13 g++-13
if : matrix.compiler == 'gcc' && matrix.compiler-version == 13
- name: Install clang
# The sed command fixes a bug in `llvm.sh` in combination with the latest version of
# `apt-key`. Without it the GPG key for the llvm repository is downloaded but deleted
# immediately after.
run: |
wget https://apt.llvm.org/llvm.sh
sudo chmod +x llvm.sh
sed 's/apt-key del/echo/' llvm.sh -iy
sudo ./llvm.sh ${{matrix.compiler-version}}
sudo apt install -y clang-${{matrix.compiler-version}}
if : matrix.compiler == 'clang'
- name: Python dependencies
run: sudo apt-get install python3-yaml unzip pkg-config python3-icu
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build-type}} -DCMAKE_TOOLCHAIN_FILE="$(pwd)/toolchains/${{matrix.compiler}}${{matrix.compiler-version}}.cmake" -DADDITIONAL_COMPILER_FLAGS="${{matrix.warnings}} ${{matrix.asan-flags}} ${{matrix.ubsan-flags}}" -DUSE_PARALLEL=true -DRUN_EXPENSIVE_TESTS=${{matrix.expensive-tests}} -DENABLE_EXPENSIVE_CHECKS=true
- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build-type}} -- -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/build/test
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: env CTEST_OUTPUT_ON_FAILURE=1 ctest -C ${{matrix.build-type}} .
- name: Running and printing the benchmark examples.
run: ${{github.workspace}}/build/benchmark/BenchmarkExamples -p
- name: E2E
run: ${{github.workspace}}/e2e/e2e.sh