Mark 1.0.1 as released #1527
Workflow file for this run
This file contains hidden or 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: CI | |
on: ['push', 'pull_request'] | |
jobs: | |
linux_macos: | |
name: CI | |
strategy: | |
fail-fast: false | |
matrix: | |
name: [""] | |
os: | |
- macos-12 | |
- macos-13 | |
- macos-14 | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
build_type: | |
- Debug | |
- Release | |
- RelWithDebInfo | |
compiler: | |
- compiler: gcc | |
version: 7 | |
libcxx: libstdc++11 | |
cc: gcc-7 | |
cxx: g++-7 | |
homebrew_package: gcc@7 | |
apt_package: g++-7 | |
- compiler: gcc | |
version: 8 | |
libcxx: libstdc++11 | |
cc: gcc-8 | |
cxx: g++-8 | |
homebrew_package: gcc@8 | |
apt_package: g++-8 | |
- compiler: gcc | |
version: 9 | |
libcxx: libstdc++11 | |
cc: gcc-9 | |
cxx: g++-9 | |
apt_package: g++-9 | |
homebrew_package: gcc@9 | |
- compiler: gcc | |
version: 10 | |
libcxx: libstdc++11 | |
cc: gcc-10 | |
cxx: g++-10 | |
apt_package: g++-10 | |
homebrew_package: gcc@10 | |
- compiler: gcc | |
version: 11 | |
libcxx: libstdc++11 | |
cc: gcc-11 | |
cxx: g++-11 | |
apt_package: g++-11 | |
homebrew_package: gcc@11 | |
- compiler: gcc | |
version: 12 | |
libcxx: libstdc++11 | |
cc: gcc-12 | |
cxx: g++-12 | |
apt_package: g++-12 | |
homebrew_package: gcc@12 | |
- compiler: gcc | |
version: 13 | |
libcxx: libstdc++11 | |
cc: gcc-13 | |
cxx: g++-13 | |
apt_package: g++-13 | |
homebrew_package: gcc@13 | |
- compiler: gcc | |
version: 14 | |
libcxx: libstdc++11 | |
cc: gcc-14 | |
cxx: g++-14 | |
apt_package: g++-14 | |
homebrew_package: gcc@14 | |
- compiler: clang | |
version: 7.1 | |
libcxx: libc++ | |
cc: clang-7 | |
cxx: clang++-7 | |
macos_cc: llvm@7/bin/clang | |
macos_cxx: llvm@7/bin/clang++ | |
apt_package: clang-7 libc++-7-dev libc++abi-7-dev | |
homebrew_package: llvm@7 | |
- compiler: clang | |
version: 8 | |
libcxx: libc++ | |
cc: clang-8 | |
cxx: clang++-8 | |
macos_cc: llvm@8/bin/clang | |
macos_cxx: llvm@8/bin/clang++ | |
apt_package: clang-8 libc++-8-dev libc++abi-8-dev | |
homebrew_package: llvm@8 | |
- compiler: clang | |
version: 9 | |
libcxx: libc++ | |
cc: clang-9 | |
cxx: clang++-9 | |
macos_cc: llvm@9/bin/clang | |
macos_cxx: llvm@9/bin/clang++ | |
apt_package: clang-9 libc++-9-dev libc++abi-9-dev | |
homebrew_package: llvm@9 | |
- compiler: clang | |
version: 10 | |
libcxx: libc++ | |
cc: clang-10 | |
cxx: clang++-10 | |
macos_cc: llvm@10/bin/clang | |
macos_cxx: llvm@10/bin/clang++ | |
apt_package: clang-10 libc++-10-dev libc++abi-10-dev | |
homebrew_package: llvm@10 | |
- compiler: clang | |
version: 11 | |
libcxx: libc++ | |
cc: clang-11 | |
cxx: clang++-11 | |
macos_cc: llvm@11/bin/clang | |
macos_cxx: llvm@11/bin/clang++ | |
apt_package: clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev | |
homebrew_package: llvm@11 | |
- compiler: clang | |
version: 12 | |
libcxx: libc++ | |
cc: clang-12 | |
cxx: clang++-12 | |
macos_cc: llvm@12/bin/clang | |
macos_cxx: llvm@12/bin/clang++ | |
apt_package: clang-12 libc++-12-dev libc++abi-12-dev libomp5-12 libomp-12-dev | |
homebrew_package: llvm@12 | |
- compiler: clang | |
version: 13 | |
libcxx: libc++ | |
cc: clang-13 | |
cxx: clang++-13 | |
macos_cc: llvm@13/bin/clang | |
macos_cxx: llvm@13/bin/clang++ | |
apt_package: clang-13 libc++-13-dev libc++abi-13-dev libomp5-13 libomp-13-dev | |
homebrew_package: llvm@13 | |
- compiler: clang | |
version: 14 | |
libcxx: libc++ | |
cc: clang-14 | |
cxx: clang++-14 | |
macos_cc: llvm@14/bin/clang | |
macos_cxx: llvm@14/bin/clang++ | |
apt_package: clang-14 libc++-14-dev libc++abi-14-dev libomp5-14 libomp-14-dev | |
homebrew_package: llvm@14 | |
- compiler: clang | |
version: 15 | |
libcxx: libc++ | |
cc: clang-15 | |
cxx: clang++-15 | |
macos_cc: llvm@15/bin/clang | |
macos_cxx: llvm@15/bin/clang++ | |
apt_package: clang-15 libc++-15-dev libc++abi-15-dev libomp5-15 libomp-15-dev | |
homebrew_package: llvm@15 | |
- compiler: clang | |
version: 16 | |
libcxx: libc++ | |
cc: clang-16 | |
cxx: clang++-16 | |
macos_cc: llvm@16/bin/clang | |
macos_cxx: llvm@16/bin/clang++ | |
apt_package: clang-16 libc++-16-dev libc++abi-16-dev libomp5-16 libomp-16-dev | |
homebrew_package: llvm@16 | |
- compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
homebrew_package: llvm@17 | |
# Apple Clang | |
# - compiler: apple-clang | |
# version: xxx | |
# homebrew_package: "" | |
extra_conan_flags: [""] | |
extra_cxxflags: ['[]'] | |
extra_env_vars_for_test: [""] | |
install_dependencies_manually: [false] | |
run_build: [true] | |
run_tests: [true] | |
run_cpack: [false] | |
run_clang_tidy: [false] | |
gtest_args: [""] | |
exclude: | |
# MacOS CI doesn't have Clang 7, 8, 9, 10, 11 or GCC 7, 8 anymore. And other GCC versions are often incompatible, so we don't support them officially. | |
- os: macos-12 | |
compiler: {compiler: clang, version: 7.1, libcxx: libc++, cc: clang-7, cxx: clang++-7, macos_cc: llvm@7/bin/clang, macos_cxx: llvm@7/bin/clang++, apt_package: "clang-7 libc++-7-dev libc++abi-7-dev", homebrew_package: llvm@7} | |
- os: macos-12 | |
compiler: {compiler: clang, version: 8, libcxx: libc++, cc: clang-8, cxx: clang++-8, macos_cc: llvm@8/bin/clang, macos_cxx: llvm@8/bin/clang++, apt_package: "clang-8 libc++-8-dev libc++abi-8-dev", homebrew_package: llvm@8} | |
- os: macos-12 | |
compiler: {compiler: clang, version: 9, libcxx: libc++, cc: clang-9, cxx: clang++-9, macos_cc: llvm@9/bin/clang, macos_cxx: llvm@9/bin/clang++, apt_package: "clang-9 libc++-9-dev libc++abi-9-dev", homebrew_package: llvm@9} | |
- os: macos-12 | |
compiler: {compiler: clang, version: 10, libcxx: libc++, cc: clang-10, cxx: clang++-10, macos_cc: llvm@10/bin/clang, macos_cxx: llvm@10/bin/clang++, apt_package: "clang-10 libc++-10-dev libc++abi-10-dev", homebrew_package: llvm@10} | |
- os: macos-12 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 7, libcxx: libstdc++11, cc: gcc-7, cxx: g++-7, homebrew_package: gcc@7, apt_package: g++-7} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 8, libcxx: libstdc++11, cc: gcc-8, cxx: g++-8, homebrew_package: gcc@8, apt_package: g++-8} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 9, libcxx: libstdc++11, cc: gcc-9, cxx: g++-9, homebrew_package: gcc@9, apt_package: g++-9} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 10, libcxx: libstdc++11, cc: gcc-10, cxx: g++-10, homebrew_package: gcc@10, apt_package: g++-10} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 11, libcxx: libstdc++11, cc: gcc-11, cxx: g++-11, homebrew_package: gcc@11, apt_package: g++-11} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 12, libcxx: libstdc++11, cc: gcc-12, cxx: g++-12, homebrew_package: gcc@12, apt_package: g++-12} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 13, libcxx: libstdc++11, cc: gcc-13, cxx: g++-13, homebrew_package: gcc@13, apt_package: g++-13} | |
- os: macos-12 | |
compiler: {compiler: gcc, version: 14, libcxx: libstdc++11, cc: gcc-14, cxx: g++-14, homebrew_package: gcc@14, apt_package: g++-14} | |
- os: macos-13 | |
compiler: {compiler: clang, version: 7.1, libcxx: libc++, cc: clang-7, cxx: clang++-7, macos_cc: llvm@7/bin/clang, macos_cxx: llvm@7/bin/clang++, apt_package: "clang-7 libc++-7-dev libc++abi-7-dev", homebrew_package: llvm@7} | |
- os: macos-13 | |
compiler: {compiler: clang, version: 8, libcxx: libc++, cc: clang-8, cxx: clang++-8, macos_cc: llvm@8/bin/clang, macos_cxx: llvm@8/bin/clang++, apt_package: "clang-8 libc++-8-dev libc++abi-8-dev", homebrew_package: llvm@8} | |
- os: macos-13 | |
compiler: {compiler: clang, version: 9, libcxx: libc++, cc: clang-9, cxx: clang++-9, macos_cc: llvm@9/bin/clang, macos_cxx: llvm@9/bin/clang++, apt_package: "clang-9 libc++-9-dev libc++abi-9-dev", homebrew_package: llvm@9} | |
- os: macos-13 | |
compiler: {compiler: clang, version: 10, libcxx: libc++, cc: clang-10, cxx: clang++-10, macos_cc: llvm@10/bin/clang, macos_cxx: llvm@10/bin/clang++, apt_package: "clang-10 libc++-10-dev libc++abi-10-dev", homebrew_package: llvm@10} | |
- os: macos-13 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 7, libcxx: libstdc++11, cc: gcc-7, cxx: g++-7, homebrew_package: gcc@7, apt_package: g++-7} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 8, libcxx: libstdc++11, cc: gcc-8, cxx: g++-8, homebrew_package: gcc@8, apt_package: g++-8} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 9, libcxx: libstdc++11, cc: gcc-9, cxx: g++-9, homebrew_package: gcc@9, apt_package: g++-9} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 10, libcxx: libstdc++11, cc: gcc-10, cxx: g++-10, homebrew_package: gcc@10, apt_package: g++-10} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 11, libcxx: libstdc++11, cc: gcc-11, cxx: g++-11, homebrew_package: gcc@11, apt_package: g++-11} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 12, libcxx: libstdc++11, cc: gcc-12, cxx: g++-12, homebrew_package: gcc@12, apt_package: g++-12} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 13, libcxx: libstdc++11, cc: gcc-13, cxx: g++-13, homebrew_package: gcc@13, apt_package: g++-13} | |
- os: macos-13 | |
compiler: {compiler: gcc, version: 14, libcxx: libstdc++11, cc: gcc-14, cxx: g++-14, homebrew_package: gcc@14, apt_package: g++-14} | |
# MacOS 14 doesn't have Clang 7, 8, 9, 10, 11, 12 or GCC 7, 8 anymore. And other GCC versions are often incompatible, so we don't support them officially. | |
- os: macos-14 | |
compiler: {compiler: clang, version: 7.1, libcxx: libc++, cc: clang-7, cxx: clang++-7, macos_cc: llvm@7/bin/clang, macos_cxx: llvm@7/bin/clang++, apt_package: "clang-7 libc++-7-dev libc++abi-7-dev", homebrew_package: llvm@7} | |
- os: macos-14 | |
compiler: {compiler: clang, version: 8, libcxx: libc++, cc: clang-8, cxx: clang++-8, macos_cc: llvm@8/bin/clang, macos_cxx: llvm@8/bin/clang++, apt_package: "clang-8 libc++-8-dev libc++abi-8-dev", homebrew_package: llvm@8} | |
- os: macos-14 | |
compiler: {compiler: clang, version: 9, libcxx: libc++, cc: clang-9, cxx: clang++-9, macos_cc: llvm@9/bin/clang, macos_cxx: llvm@9/bin/clang++, apt_package: "clang-9 libc++-9-dev libc++abi-9-dev", homebrew_package: llvm@9} | |
- os: macos-14 | |
compiler: {compiler: clang, version: 10, libcxx: libc++, cc: clang-10, cxx: clang++-10, macos_cc: llvm@10/bin/clang, macos_cxx: llvm@10/bin/clang++, apt_package: "clang-10 libc++-10-dev libc++abi-10-dev", homebrew_package: llvm@10} | |
- os: macos-14 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 7, libcxx: libstdc++11, cc: gcc-7, cxx: g++-7, homebrew_package: gcc@7, apt_package: g++-7} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 8, libcxx: libstdc++11, cc: gcc-8, cxx: g++-8, homebrew_package: gcc@8, apt_package: g++-8} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 9, libcxx: libstdc++11, cc: gcc-9, cxx: g++-9, homebrew_package: gcc@9, apt_package: g++-9} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 10, libcxx: libstdc++11, cc: gcc-10, cxx: g++-10, homebrew_package: gcc@10, apt_package: g++-10} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 11, libcxx: libstdc++11, cc: gcc-11, cxx: g++-11, homebrew_package: gcc@11, apt_package: g++-11} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 12, libcxx: libstdc++11, cc: gcc-12, cxx: g++-12, homebrew_package: gcc@12, apt_package: g++-12} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 13, libcxx: libstdc++11, cc: gcc-13, cxx: g++-13, homebrew_package: gcc@13, apt_package: g++-13} | |
- os: macos-14 | |
compiler: {compiler: gcc, version: 14, libcxx: libstdc++11, cc: gcc-14, cxx: g++-14, homebrew_package: gcc@14, apt_package: g++-14} | |
# Clang 12 on macos-14 fails the cmake step saying "The C compiler is not able to compile a simple test program. ld: library 'System' not found" | |
- os: macos-14 | |
compiler: {compiler: clang, version: 12, libcxx: libc++, cc: clang-12, cxx: clang++-12, macos_cc: llvm@12/bin/clang, macos_cxx: llvm@12/bin/clang++, apt_package: "clang-12 libc++-12-dev libc++abi-12-dev B41A libomp5-12 libomp-12-dev", homebrew_package: llvm@12} | |
# Clang 14, 16 on macos-14 builds fine but tests fail with "line 9: 55242 Trace/BPT trap: 5 ./cpp-utils/cpp-utils-test" | |
# TODO Can we fix this? Not sure what's causing it | |
- os: macos-14 | |
compiler: {compiler: clang, version: 14, libcxx: libc++, cc: clang-14, cxx: clang++-14, macos_cc: llvm@14/bin/clang, macos_cxx: llvm@14/bin/clang++, apt_package: "clang-14 libc++-14-dev libc++abi-14-dev libomp5-14 libomp-14-dev", homebrew_package: llvm@14} | |
- os: macos-14 | |
compiler: {compiler: clang, version: 16, libcxx: libc++, cc: clang-16, cxx: clang++-16, macos_cc: llvm@16/bin/clang, macos_cxx: llvm@16/bin/clang++, apt_package: "clang-16 libc++-16-dev libc++abi-16-dev libomp5-16 libomp-16-dev", homebrew_package: llvm@16} | |
# Ubuntu 20.04 doesn't have GCC 11, 12, 13, 14 yet | |
- os: ubuntu-20.04 | |
compiler: {compiler: gcc, version: 11, libcxx: libstdc++11, cc: gcc-11, cxx: g++-11, homebrew_package: gcc@11, apt_package: g++-11} | |
- os: ubuntu-20.04 | |
compiler: {compiler: gcc, version: 12, libcxx: libstdc++11, cc: gcc-12, cxx: g++-12, homebrew_package: gcc@12, apt_package: g++-12} | |
- os: ubuntu-20.04 | |
compiler: {compiler: gcc, version: 13, libcxx: libstdc++11, cc: gcc-13, cxx: g++-13, homebrew_package: gcc@13, apt_package: g++-13} | |
- os: ubuntu-20.04 | |
compiler: {compiler: gcc, version: 14, libcxx: libstdc++11, cc: gcc-14, cxx: g++-14, homebrew_package: gcc@14, apt_package: g++-14} | |
# Ubuntu 22.04 doesn't have gcc 7, 8 or clang 7, 8, 9, 10 anymore, and doesn't have gcc 13, 14 yet | |
- os: ubuntu-22.04 | |
compiler: {compiler: gcc, version: 7, libcxx: libstdc++11, cc: gcc-7, cxx: g++-7, homebrew_package: gcc@7, apt_package: g++-7} | |
- os: ubuntu-22.04 | |
compiler: {compiler: gcc, version: 8, libcxx: libstdc++11, cc: gcc-8, cxx: g++-8, homebrew_package: gcc@8, apt_package: g++-8} | |
- os: ubuntu-22.04 | |
compiler: {compiler: gcc, version: 13, libcxx: libstdc++11, cc: gcc-13, cxx: g++-13, homebrew_package: gcc@13, apt_package: g++-13} | |
- os: ubuntu-22.04 | |
compiler: {compiler: gcc, version: 14, libcxx: libstdc++11, cc: gcc-14, cxx: g++-14, homebrew_package: gcc@14, apt_package: g++-14} | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 7.1, libcxx: libc++, cc: clang-7, cxx: clang++-7, macos_cc: llvm@7/bin/clang, macos_cxx: llvm@7/bin/clang++, apt_package: "clang-7 libc++-7-dev libc++abi-7-dev", homebrew_package: llvm@7} | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 8, libcxx: libc++, cc: clang-8, cxx: clang++-8, macos_cc: llvm@8/bin/clang, macos_cxx: llvm@8/bin/clang++, apt_package: "clang-8 libc++-8-dev libc++abi-8-dev", homebrew_package: llvm@8} | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 9, libcxx: libc++, cc: clang-9, cxx: clang++-9, macos_cc: llvm@9/bin/clang, macos_cxx: llvm@9/bin/clang++, apt_package: "clang-9 libc++-9-dev libc++abi-9-dev", homebrew_package: llvm@9} | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 10, libcxx: libc++, cc: clang-10, cxx: clang++-10, macos_cc: llvm@10/bin/clang, macos_cxx: llvm@10/bin/clang++, apt_package: "clang-10 libc++-10-dev libc++abi-10-dev", homebrew_package: llvm@10} | |
# Ubuntu 22.04 can't install clang-12 due to a apt package misconfiguration | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 12, libcxx: libc++, cc: clang-12, cxx: clang++-12, macos_cc: llvm@12/bin/clang, macos_cxx: llvm@12/bin/clang++, apt_package: "clang-12 libc++-12-dev libc++abi-12-dev libomp5-12 libomp-12-dev", homebrew_package: llvm@12} | |
# Ubuntu 24.04 doesn't have gcc 7, 8 or clang 7, 8, 9, 10, 11, 12, 13 anymore | |
- os: ubuntu-24.04 | |
compiler: {compiler: gcc, version: 7, libcxx: libstdc++11, cc: gcc-7, cxx: g++-7, homebrew_package: gcc@7, apt_package: g++-7} | |
- os: ubuntu-24.04 | |
compiler: {compiler: gcc, version: 8, libcxx: libstdc++11, cc: gcc-8, cxx: g++-8, homebrew_package: gcc@8, apt_package: g++-8} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 7.1, libcxx: libc++, cc: clang-7, cxx: clang++-7, macos_cc: llvm@7/bin/clang, macos_cxx: llvm@7/bin/clang++, apt_package: "clang-7 libc++-7-dev libc++abi-7-dev", homebrew_package: llvm@7} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 8, libcxx: libc++, cc: clang-8, cxx: clang++-8, macos_cc: llvm@8/bin/clang, macos_cxx: llvm@8/bin/clang++, apt_package: "clang-8 libc++-8-dev libc++abi-8-dev", homebrew_package: llvm@8} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 9, libcxx: libc++, cc: clang-9, cxx: clang++-9, macos_cc: llvm@9/bin/clang, macos_cxx: llvm@9/bin/clang++, apt_package: "clang-9 libc++-9-dev libc++abi-9-dev", homebrew_package: llvm@9} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 10, libcxx: libc++, cc: clang-10, cxx: clang++-10, macos_cc: llvm@10/bin/clang, macos_cxx: llvm@10/bin/clang++, apt_package: "clang-10 libc++-10-dev libc++abi-10-dev", homebrew_package: llvm@10} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 12, libcxx: libc++, cc: clang-12, cxx: clang++-12, macos_cc: llvm@12/bin/clang, macos_cxx: llvm@12/bin/clang++, apt_package: "clang-12 libc++-12-dev libc++abi-12-dev libomp5-12 libomp-12-dev", homebrew_package: llvm@12} | |
- os: ubuntu-24.04 | |
compiler: {compiler: clang, version: 13, libcxx: libc++, cc: clang-13, cxx: clang++-13, macos_cc: llvm@13/bin/clang, macos_cxx: llvm@13/bin/clang++, apt_package: "clang-13 libc++-13-dev libc++abi-13-dev libomp5-13 libomp-13-dev", homebrew_package: llvm@13} | |
# Clang 11 on Ubuntu seems to have a bug that fails CI, see https://github.com/gabime/spdlog/issues/2812 | |
- os: ubuntu-20.04 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
build_type: Debug | |
- os: ubuntu-22.04 | |
compiler: {compiler: clang, version: 11, libcxx: libc++, cc: clang-11, cxx: clang++-11, macos_cc: llvm@11/bin/clang, macos_cxx: llvm@11/bin/clang++, apt_package: "clang-11 libc++-11-dev libc++abi-11-dev libomp5-11 libomp-11-dev", homebrew_package: llvm@11} | |
build_type: Debug | |
include: | |
- name: Local dependencies | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "" | |
extra_cxxflags: '[]' | |
extra_env_vars_for_test: "" | |
install_dependencies_manually: true | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
- name: Werror gcc | |
os: ubuntu-24.04 | |
compiler: | |
compiler: gcc | |
version: 14 | |
libcxx: libstdc++ | |
cc: gcc-14 | |
cxx: g++-14 | |
apt_package: g++-14 | |
# build_type cannot be debug because gcc checks for some errors in optimization passes | |
build_type: RelWithDebInfo | |
extra_conan_flags: "-o '&:use_werror=True'" | |
extra_cxxflags: '[]' | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: false | |
run_cpack: false | |
- name: Werror clang | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "-o '&:use_werror=True'" | |
extra_cxxflags: '["-D_LIBCPP_ENABLE_NODISCARD=1", "-D_LIBCPP_ENABLE_DEPRECATION_WARNINGS=1"]' | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: false | |
run_cpack: false | |
- name: No compatibility | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: RelWithDebInfo | |
extra_conan_flags: "" | |
extra_cxxflags: '["-DCRYFS_NO_COMPATIBILITY"]' | |
extra_env_vars_for_test: "" | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
- name: No update checks | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: RelWithDebInfo | |
extra_conan_flags: "-o '&:update_checks=False'" | |
extra_cxxflags: '[]' | |
extra_env_vars_for_test: "" | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
- name: cpack | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
F438 build_type: RelWithDebInfo | |
extra_conan_flags: "" | |
extra_cxxflags: '[]' | |
extra_env_vars_for_test: "" | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: false | |
run_cpack: true | |
- name: ASAN | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
# Using libstdc++11 instead of libc++ for ASAN because of | |
# - https://github.com/llvm/llvm-project/issues/52771 | |
# - https://github.com/llvm/llvm-project/issues/59432 | |
libcxx: libstdc++11 | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "" | |
extra_cxxflags: '["-O1", "-fsanitize=address", "-fno-omit-frame-pointer", "-fno-optimize-sibling-calls", "-fno-common", "-fsanitize-address-use-after-scope"]' | |
extra_env_vars_for_test: ASAN_OPTIONS="detect_leaks=1 check_initialization_order=1 detect_stack_use_after_return=1 detect_invalid_pointer_pairs=1 atexit=1" | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
- name: UBSAN | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "" | |
extra_cxxflags: '["-O1", "-fno-sanitize-recover=undefined,nullability,implicit-conversion,unsigned-integer-overflow,local-bounds,float-divide-by-zero", "-fno-omit-frame-pointer", "-fno-optimize-sibling-calls", "-fno-common"]' | |
extra_env_vars_for_test: UBSAN_OPTIONS="print_stacktrace=1" | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
- name: TSAN | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "" | |
extra_cxxflags: '["-O2", "-fsanitize=thread", "-fno-omit-frame-pointer", "-fno-omit-frame-pointer", "-fno-optimize-sibling-calls", "-fno-common"]' | |
install_dependencies_manually: false | |
run_build: true | |
run_tests: true | |
run_cpack: false | |
gtest_args: "--gtest_filter=-LoggingTest.LoggingAlsoWorksAfterFork:AssertTest_*:BacktraceTest.*:SubprocessTest.*:SignalCatcherTest.*_thenDies:SignalHandlerTest.*_thenDies:SignalHandlerTest.givenMultipleSigIntHandlers_whenRaising_thenCatchesCorrectSignal:CliTest_Setup.*:CliTest_IntegrityCheck.*:*/CliTest_WrongEnvironment.*:CliTest_Unmount.*:CliTest.WorksWithCommasInBasedir" | |
extra_env_vars_for_test: OMP_NUM_THREADS=1 | |
- name: clang-tidy | |
os: ubuntu-24.04 | |
compiler: | |
compiler: clang | |
version: 17 | |
libcxx: libc++ | |
cc: clang-17 | |
cxx: clang++-17 | |
macos_cc: llvm@17/bin/clang | |
macos_cxx: llvm@17/bin/clang++ | |
apt_package: clang-17 clang-tidy-17 libc++-17-dev libc++abi-17-dev libomp5-17 libomp-17-dev | |
build_type: Debug | |
extra_conan_flags: "" | |
extra_cxxflags: '[]' | |
install_dependencies_manually: false | |
run_build: false | |
run_tests: false | |
run_cpack: false | |
extra_env_vars_for_test: "" | |
run_clang_tidy: true | |
runs-on: ${{matrix.os}} | |
env: | |
# Setting conan cache dir to a location where our Github Cache Action can find it | |
CONAN_HOME: "${{ github.workspace }}/conan-cache/" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Fetch all history because we need that to determine our version number | |
fetch-depth: 0 | |
#TODO Ideally, all the setup actions would be in their own subaction, but Github doesn't support using third party actions (e.g. cache) from nested actions yet, see https://github.com/actions/runner/issues/862 | |
- name: Setup MacOS | |
if: ${{ runner.os == 'macOS' }} | |
uses: ./.github/workflows/actions/setup_macos | |
with: | |
macos_version: ${{ matrix.os }} | |
extra_homebrew_packages: ${{ matrix.compiler.homebrew_package }} | |
- name: Setup Linux | |
if: ${{ runner.os == 'Linux' }} | |
uses: ./.github/workflows/actions/setup_linux | |
with: | |
os: ${{ matrix.os }} | |
extra_apt_packages: ${{ matrix.compiler.apt_package }} | |
- name: Install local dependencies | |
if: ${{ matrix.install_dependencies_manually }} | |
uses: ./.github/workflows/actions/install_local_dependencies | |
#TODO Ideally, the Setup ccache step would be part of the build action, but Github doesn't support nested actions yet, see https://github.com/actions/runner/issues/862 | |
- name: Hash flags | |
id: hash_flags | |
shell: bash | |
run: | | |
echo __${{matrix.extra_conan_flags}}__${{matrix.extra_cxxflags}}__ | (echo -n "hash_flags=" && sha256sum | awk '{print $1}') >> $GITHUB_OUTPUT | |
- name: Setup ccache | |
uses: ./.github/workflows/actions/ccache/setup | |
with: | |
ccache_dir: ${{github.workspace}}/.ccache | |
cache_key: v3-${{ runner.os }}-${{ matrix.os }}-ccache__${{matrix.compiler.compiler}}__${{matrix.compiler.version}}__${{matrix.build_type}}__${{matrix.run_build}}__${{matrix.install_dependencies_manually}}__${{matrix.run_clang_tidy}}__${{steps.hash_flags.outputs.hash_flags}}__ | |
# TODO Ideally, the Setup conan cache step would be part of the build action, but Github doesn't support nested actions yet, see https://github.com/actions/runner/issues/862 | |
- name: Restore conan cache | |
uses: ./.github/workflows/actions/conan/cache | |
with: | |
action: load | |
cache_key: v7-${{ runner.os }}-${{ matrix.os }}-conancache__${{matrix.compiler.compiler}}__${{matrix.compiler.version}}__${{matrix.build_type}}__${{matrix.install_dependencies_manually}}__${{steps.hash_flags.outputs.hash_flags}}__ | |
# Setup conan is after restoring the cache so the cache doesn't overwrite the conan profile | |
- name: Setup conan | |
uses: ./.github/workflows/actions/conan/setup | |
with: | |
arch: ${{ matrix.os == 'macos-14' && 'armv8' || 'x86_64' }} | |
compiler: ${{ matrix.compiler.compiler }} | |
compiler_version: ${{ matrix.compiler.version }} | |
compiler_libcxx: ${{ matrix.compiler.libcxx }} | |
compiler_executable_c: ${{ runner.os == 'macOS' && format('{0}{1}', matrix.os == 'macos-14' && '/opt/homebrew/opt/' || '/usr/local/opt/', matrix.compiler.macos_cc) || matrix.compiler.cc }} | |
compiler_executable_cxx: ${{ runner.os == 'macOS' && format('{0}{1}', matrix.os == 'macos-14' && '/opt/homebrew/opt/' || '/usr/local/opt/', matrix.compiler.macos_cxx) || matrix.compiler.cxx }} | |
build_type: ${{ matrix.build_type }} | |
extra_cxxflags: ${{ matrix.extra_cxxflags }} | |
- name: Install dependencies | |
if: ${{ !matrix.install_dependencies_manually }} | |
uses: ./.github/workflows/actions/conan/install_dependencies | |
- name: Build | |
if: ${{ matrix.run_build && !matrix.install_dependencies_manually }} | |
uses: ./.github/workflows/actions/conan/build | |
with: | |
extra_conan_flags: ${{ matrix.extra_conan_flags}} | |
- name: Build (with local dependencies) | |
if: ${{ matrix.run_build && matrix.install_dependencies_manually }} | |
shell: bash | |
run: | | |
set -v | |
set -e | |
mkdir build | |
mkdir build/${{matrix.build_type}} | |
cd build/${{matrix.build_type}} | |
cmake -G Ninja ../.. -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_TESTING=True -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} -DCMAKE_C_COMPILER=${{matrix.compiler.cc}} | |
ninja | |
- name: Run clang-tidy | |
id: clang_tidy | |
if: ${{ matrix.run_clang_tidy }} | |
shell: bash | |
run: | | |
set -v | |
set -e | |
if ! ./run-clang-tidy.sh -fix ; then | |
git diff > /tmp/clang-tidy-fixes | |
echo Found clang tidy fixes: | |
cat /tmp/clang-tidy-fixes | |
exit 1 | |
else | |
echo Did not find any clang-tidy fixes | |
fi | |
- name: Upload fixes as artifact | |
if: ${{ always() && matrix.run_clang_tidy }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clang-tidy-fixes | |
path: /tmp/clang-tidy-fixes | |
if-no-files-found: ignore | |
- name: Save ccache | |
uses: ./.github/workflows/actions/ccache/cache | |
with: | |
action: 'save' | |
ccache_dir: ${{github.workspace}}/.ccache | |
cache_key: v3-${{ runner.os }}-${{ matrix.os }}-ccache__${{matrix.compiler.compiler}}__${{matrix.compiler.version}}__${{matrix.build_type}}__${{matrix.run_build}}__${{matrix.install_dependencies_manually}}__${{matrix.run_clang_tidy}}__${{steps.hash_flags.outputs.hash_flags}}__ | |
secret_aws_access_key_id: ${{ secrets.CACHE_AWS_ACCESS_KEY_ID }} | |
secret_aws_secret_access_key: ${{ secrets.CACHE_AWS_SECRET_ACCESS_KEY }} | |
- name: Save conan cache | |
uses: ./.github/workflows/actions/conan/cache | |
with: | |
action: save | |
secret_aws_access_key_id: ${{ secrets.CACHE_AWS_ACCESS_KEY_ID }} | |
secret_aws_secret_access_key: ${{ secrets.CACHE_AWS_SECRET_ACCESS_KEY }} | |
cache_key: v7-${{ runner.os }}-${{ matrix.os }}-conancache__${{matrix.compiler.compiler}}__${{matrix.compiler.version}}__${{matrix.build_type}}__${{matrix.install_dependencies_manually}}__${{steps.hash_flags.outputs.hash_flags}}__ | |
- name: Test | |
if: ${{ matrix.run_tests }} | |
uses: ./.github/workflows/actions/run_tests | |
with: | |
build_type: ${{matrix.build_type}} | |
gtest_args: ${{matrix.gtest_args}} | |
extra_env_vars: ${{matrix.extra_env_vars_for_test}} | |
- name: CPack | |
if: ${{ matrix.run_cpack }} | |
uses: ./.github/workflows/actions/cpack | |
with: | |
build_type: ${{matrix.build_type}} | |
windows: | |
name: CI | |
strategy: | |
fail-fast: false | |
matrix: | |
name: [""] | |
os: | |
- windows-2019 | |
- windows-2022 | |
build_type: | |
- Debug | |
- Release | |
- RelWithDebInfo | |
runs-on: ${{matrix.os}} | |
env: | |
# Setting conan cache dir to a location where our Github Cache Action can find it | |
CONAN_HOME: "D:/.conan/" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Fetch all history because we need that to determine our version number | |
fetch-depth: 0 | |
#TODO Ideally, all the setup actions would be in their own subaction, but Github doesn't support using third party actions (e.g. cache) from nested actions yet, see https://github.com/actions/runner/issues/862 | |
- name: Setup Windows | |
uses: ./.github/workflows/actions/setup_windows | |
- name: Get ccache dir | |
id: ccache_dir | |
shell: bash | |
run: | | |
# Windows CI has backwards slashes in github.workspace, so we need to convert that to forward slashes | |
CCACHE_DIR="${{github.workspace}}/.ccache" | |
echo "ccache_dir=${CCACHE_DIR//\\//}" >> $GITHUB_OUTPUT | |
- name: Setup ccache | |
uses: ./.github/workflows/actions/ccache/setup | |
with: | |
ccache_dir: ${{steps.ccache_dir.outputs.ccache_dir}} | |
cache_key: v2-${{ runner.os }}-${{ matrix.os }}-ccache__${{matrix.build_type}}__ | |
# TODO Ideally, the Setup conan cache step would be part of the build action, but Github doesn't support nested actions yet, see https://github.com/actions/runner/issues/862 | |
- name: Restore conan cache | |
uses: ./.github/workflows/actions/conan/cache | |
with: | |
action: load | |
cache_key: v9-${{ runner.os }}-${{ matrix.os }}-conancache__${{matrix.build_type}}__ | |
# Setup conan is after restoring the conan cache so that the cache doesn't overwrite the conan profile | |
- name: Setup conan | |
uses: ./.github/workflows/actions/conan/setup | |
with: | |
arch: "x86_64" | |
compiler: "msvc" | |
compiler_version: ${{ matrix.os == 'windows-2022' && '194' || '192' }} | |
build_type: ${{ matrix.build_type }} | |
- name: Install dependencies | |
uses: ./.github/workflows/actions/conan/install_dependencies | |
- name: Build | |
uses: ./.github/workflows/actions/conan/build | |
with: | |
extra_conan_flags: "-o '&:windows_dokany_path=C:/Program Files/Dokan/DokanLibrary-2.2.0'" | |
- name: Save ccache | |
uses: ./.github/workflows/actions/ccache/cache | |
with: | |
action: 'save' | |
ccache_dir: ${{steps.ccache_dir.outputs.ccache_dir}} | |
cache_key: v2-${{ runner.os }}-${{ matrix.os }}-ccache__${{matrix.build_type}}__ | |
secret_aws_access_key_id: ${{ secrets.CACHE_AWS_ACCESS_KEY_ID }} | |
secret_aws_secret_access_key: ${{ secrets.CACHE_AWS_SECRET_ACCESS_KEY }} | |
- name: Save conan cache | |
uses: ./.github/workflows/actions/conan/cache | |
with: | |
action: save | |
secret_aws_access_key_id: ${{ secrets.CACHE_AWS_ACCESS_KEY_ID }} | |
secret_aws_secret_access_key: ${{ secrets.CACHE_AWS_SECRET_ACCESS_KEY }} | |
cache_key: v9-${{ runner.os }}-${{ matrix.os }}-conancache__${{matrix.build_type}}__ | |
- name: Test | |
shell: bash | |
run: | | |
set -v | |
set -e | |
cd build/${{matrix.build_type}}/test | |
./gitversion/gitversion-test.exe | |
./cpp-utils/cpp-utils-test.exe | |
# ./fspp/fspp-test.exe | |
./parallelaccessstore/parallelaccessstore-test.exe | |
./blockstore/blockstore-test.exe | |
./blobstore/blobstore-test.exe | |
./cryfs/cryfs-test.exe | |
# TODO Enable cryfs-cli-test on Windows | |
# ./cryfs-cli/cryfs-cli-test.exe | |
- name: CPack | |
uses: ./.github/workflows/actions/cpack | |
if: ${{ matrix.os == 'windows-2022' }} | |
with: | |
build_type: ${{matrix.build_type}} |