diff --git a/.github/workflows/edm4eic.yml b/.github/workflows/edm4eic.yml index 6af7b7098..8f6901883 100644 --- a/.github/workflows/edm4eic.yml +++ b/.github/workflows/edm4eic.yml @@ -41,18 +41,11 @@ jobs: run: | STARTDIR=$(pwd) echo "::group::Build podio" - cmake -B ${STARTDIR}/podio/build -S ${STARTDIR}/podio \ + cmake -S ${STARTDIR}/podio \ + --preset ci-build \ -DCMAKE_INSTALL_PREFIX=${STARTDIR}/podio/install \ - -DCMAKE_CXX_STANDARD=20 \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DUSE_EXTERNAL_CATCH2=ON \ - -DENABLE_RNTUPLE=ON \ - -DENABLE_DATASOURCE=ON \ - -DPODIO_SET_RPATH=ON \ -DBUILD_TESTING=OFF \ - -DENABLE_JULIA=OFF \ - -G Ninja + -DENABLE_JULIA=OFF cmake --build ${STARTDIR}/podio/build --target install cd ${STARTDIR}/podio && source init.sh && source env.sh && cd ${STARTDIR} echo "::endgroup::" diff --git a/.github/workflows/edm4hep.yaml b/.github/workflows/edm4hep.yaml index a73d4361f..8ac679d16 100644 --- a/.github/workflows/edm4hep.yaml +++ b/.github/workflows/edm4hep.yaml @@ -42,43 +42,34 @@ jobs: STARTDIR=$(pwd) echo "::group::Build Catch2" cd $STARTDIR/catch2 - mkdir build && cd build - cmake -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") -DCMAKE_INSTALL_PREFIX=../install -G Ninja .. - ninja -k0 install + cmake -B build -S . -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") -DCMAKE_INSTALL_PREFIX=$(pwd)/install -G Ninja + cmake --build build --target install export CMAKE_PREFIX_PATH=$STARTDIR/catch2/install:$CMAKE_PREFIX_PATH echo "::endgroup::" echo "::group::Build podio" cd $STARTDIR/podio - mkdir build && cd build - cmake -DENABLE_SIO=ON \ + cmake -S . --preset ci-build \ -DENABLE_JULIA=ON \ - -DENABLE_DATASOURCE=ON \ - -DENABLE_RNTUPLE=ON \ - -DCMAKE_INSTALL_PREFIX=../install \ + -DCMAKE_INSTALL_PREFIX=$(pwd)/install \ -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ -DUSE_EXTERNAL_CATCH2=ON \ - -DBUILD_TESTING=ON \ - -DPODIO_RUN_STRACE_TEST=ON \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ - -G Ninja .. - ninja -k0 + -DPODIO_RUN_STRACE_TEST=ON + cmake --build --preset ci-build echo "::endgroup::" echo "::group::Test and install podio" - ctest --output-on-failure --schedule-random -j$(nproc) --timeout 600 - ninja install + ctest --preset ci-build -j$(nproc) + cmake --build --preset ci-build --target install cd $STARTDIR/podio source init.sh && source env.sh echo "::endgroup::" echo "::group::Build and test EDM4hep" cd $STARTDIR/edm4hep - mkdir build && cd build - cmake -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") \ + cmake -B build -S . \ + -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") \ -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always " \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DUSE_EXTERNAL_CATCH2=ON \ - -G Ninja .. - ninja -k0 - ctest --output-on-failure + -G Ninja + cmake --build build -- -k0 + ctest --test-dir build --output-on-failure echo "::endgroup::" diff --git a/.github/workflows/key4hep.yml b/.github/workflows/key4hep.yml index 0d1c43d85..004971945 100644 --- a/.github/workflows/key4hep.yml +++ b/.github/workflows/key4hep.yml @@ -38,28 +38,17 @@ jobs: echo "::group::Run k4_local_repo" k4_local_repo echo "::group::Run CMake" - mkdir -p build install - cd build - cmake -DENABLE_SIO=ON \ - -DENABLE_JULIA=OFF \ - -DCMAKE_INSTALL_PREFIX=../install \ - -DCMAKE_CXX_STANDARD=20 \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + cmake --preset ci-build \ + -DCMAKE_INSTALL_PREFIX=$(pwd)/install \ -DUSE_EXTERNAL_CATCH2=AUTO \ - -DENABLE_RNTUPLE=ON \ - -DENABLE_DATASOURCE=ON \ - -DPODIO_SET_RPATH=ON \ - -DPODIO_RUN_STRACE_TEST=ON \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ - -G Ninja .. + -DPODIO_RUN_STRACE_TEST=ON echo "::endgroup::" echo "::group::Build" - ninja -k0 + cmake --build --preset ci-build echo "::endgroup" echo "::group::Run tests" - ctest --output-on-failure --schedule-random -j$(nproc) --timeout 600 + ctest --preset ci-build -j$(nproc) echo "::endgroup::" echo "::group::Install" - ninja install + cmake --build --preset ci-build --target install echo "::endgroup::" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index d992dc59d..6af7500a4 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -25,19 +25,11 @@ jobs: git config --global --add safe.directory $(pwd) echo "::endgroup::" echo "::group::Run CMake" - mkdir build - cd build - cmake .. -DENABLE_SIO=ON \ + cmake -B build -S . \ + --preset ci-build \ -DENABLE_JULIA=ON \ - -DENABLE_RNTUPLE=ON \ - -DENABLE_DATASOURCE=ON \ - -DCMAKE_CXX_STANDARD=20 \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror "\ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ -DUSE_EXTERNAL_CATCH2=OFF - ln -s $(pwd)/compile_commands.json ../ - cd .. + ln -s build/compile_commands.json compile_commands.json echo "::endgroup::" echo "::group::Run pre-commit" pre-commit run --show-diff-on-failure \ diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 5188903ec..31d225749 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -31,10 +31,9 @@ jobs: python3 -m pip install -r doc/requirements.txt export PYTHONPATH=$VIRTUAL_ENV/lib/python3.$(python3 -c 'import sys; print(f"{sys.version_info[1]}")')/site-packages:$PYTHONPATH echo -e "::endgroup::\n::group::Build podio" - cmake -B build . --install-prefix=$(pwd)/install \ - -GNinja -DENABLE_SIO=ON -DENABLE_RNTUPLE=ON \ - -DENABLE_DATASOURCE=ON -DBUILD_TESTING=OFF \ - -DCMAKE_CXX_STANDARD=20 + cmake -S . --install-prefix=$(pwd)/install \ + --preset full-build \ + -DBUILD_TESTING=OFF cmake --build build --target install source ./init.sh && source ./env.sh echo -e "::endgroup::\n::group::build doc" diff --git a/.github/workflows/sanitizers.yaml b/.github/workflows/sanitizers.yaml index aa0d74b83..23e860552 100644 --- a/.github/workflows/sanitizers.yaml +++ b/.github/workflows/sanitizers.yaml @@ -41,23 +41,15 @@ jobs: ccache-key: ccache-sanitizers-el9-${{ matrix.compiler }}-${{ matrix.sanitizer }} run: | echo "::group::Run CMake" - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Debug \ + cmake -B build S . \ + --preset ci-build \ + -DCMAKE_BUILD_TYPE=Debug \ -DUSE_SANITIZER=${{ matrix.sanitizer }} \ - -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.compiler }} == gcc15 ]] && echo "23" || echo "20") \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always " \ - -DENABLE_SIO=ON \ - -DENABLE_JULIA=OFF \ - -DENABLE_RNTUPLE=ON \ - -DENABLE_DATASOURCE=ON \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ - -G Ninja .. + -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.compiler }} == gcc15 ]] && echo "23" || echo "20") echo "::endgroup::" echo "::group::Build" - ninja -k0 + cmake --build build -- -k0 echo "::endgroup::" echo "::group::Run tests" - ctest --output-on-failure --schedule-random -j$(nproc) + ctest --test-dir build --output-on-failure --schedule-random -j$(nproc) echo "::endgroup::" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ea8b98009..4456fd810 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,24 +34,15 @@ jobs: run: | echo "::group::Run CMake" # export JULIA_DEPOT_PATH="$(mktemp -d -p /tmp -t julia_depot_XXXXX):" - mkdir -p build install - cd build - cmake -DENABLE_SIO=ON \ + cmake --preset ci-build \ -DENABLE_JULIA=ON \ -DENABLE_RNTUPLE=$([[ ${{ matrix.LCG }} == LCG_104/* ]] && echo "OFF" || echo "ON") \ - -DENABLE_DATASOURCE=ON \ -DPODIO_RUN_STRACE_TEST=$([[ ${{ matrix.LCG }} == LCG_104/* ]] && echo "OFF" || echo "ON") \ - -DCMAKE_INSTALL_PREFIX=../install \ - -DCMAKE_CXX_STANDARD=$([[ ${{ matrix.LCG }} == *-gcc15-* ]] && echo "23" || echo "20") \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ - -DUSE_EXTERNAL_CATCH2=AUTO \ - -DPODIO_USE_CLANG_FORMAT=AUTO \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ - -G Ninja .. + -DCMAKE_INSTALL_PREFIX=$(pwd)/install \ + -DUSE_EXTERNAL_CATCH2=AUTO echo "::endgroup::" echo "::group::Build" - ninja -k0 + cmake --build --preset ci-build echo "::endgroup::" echo "::group::Julia StaticArrays Package Install" # # Temporary workaround for https://its.cern.ch/jira/browse/SPI-2838 @@ -59,8 +50,8 @@ jobs: julia -e 'import Pkg; Pkg.add("StaticArrays")' echo "::endgroup" echo "::group::Run tests" - ctest --output-on-failure --schedule-random -j$(nproc) --timeout 600 + ctest --preset ci-build -j$(nproc) echo "::endgroup::" echo "::group::Install" - ninja install + cmake --build --preset ci-build --target install echo "::endgroup::" diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 4187e4180..629ca6d08 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -30,31 +30,22 @@ jobs: ccache-key: ccache-ubuntu-${{ matrix.LCG }} run: | echo "::group::Run CMake" - mkdir -p build install - cd build - cmake -DENABLE_SIO=ON \ + cmake -S . --preset ci-build \ -DENABLE_JULIA=ON \ - -DENABLE_DATASOURCE=ON \ -DCMAKE_INSTALL_PREFIX=../install \ -DCMAKE_CXX_STANDARD=20 \ - -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DUSE_EXTERNAL_CATCH2=OFF \ - -DPODIO_SET_RPATH=ON \ - -DPODIO_RUN_STRACE_TEST=ON \ - -DENABLE_RNTUPLE=ON \ - -DPODIO_ENABLE_SCHEMA_EVOLUTION_TESTS=ON \ - -G Ninja .. + -DPODIO_RUN_STRACE_TEST=ON echo "::endgroup::" echo "::group::Build" - ninja -k0 + cmake --build --preset ci-build echo "::endgroup" echo "::group::Julia StaticArrays Package Install" julia -e 'import Pkg; Pkg.add("StaticArrays")' echo "::endgroup" echo "::group::Run tests" - ctest --output-on-failure --schedule-random -j$(nproc) --timeout 600 + ctest --preset ci-build -j$(nproc) echo "::endgroup::" echo "::group::Install" - ninja install + cmake --build --preset ci-build --target install echo "::endgroup::" diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..d9743d210 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,73 @@ +{ + "version": 3, + "configurePresets": [ + { + "name": "common", + "hidden": true, + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", + "CMAKE_CXX_STANDARD": "20", + "CMAKE_CXX_FLAGS": " -fdiagnostics-color=always ", + "PODIO_USE_CLANG_FORMAT": "OFF", + "PODIO_SET_RPATH": "ON" + } + }, + { + "name": "base-build", + "displayName": "Base Build including RNTuple backend and DataSource", + "inherits": "common", + "generator": "Ninja", + "cacheVariables": { + "BUILD_TESTING": "ON", + "ENABLE_RNTUPLE": "ON", + "ENABLE_DATASOURCE": "ON", + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache" + } + }, + { + "name": "full-build", + "displayName": "Full build including schema evolution tests and SIO", + "inherits": "base-build", + "cacheVariables": { + "ENABLE_SIO": "ON", + "PODIO_ENABLE_SCHEMA_EVOLUTION_TESTS": "ON" + } + }, + { + "name": "ci-build", + "displayName": "Full build with warnings as errors", + "inherits": "full-build", + "cacheVariables": { + "CMAKE_CXX_FLAGS": " -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations", + "PODIO_USE_CLANG_FORMAT": "AUTO" + } + } + ], + + "buildPresets": [ + { + "name": "ci-build", + "displayName": "Building like on CI", + "configurePreset": "ci-build", + "nativeToolOptions": ["-k0"] + } + ], + + "testPresets": [ + { + "name": "ci-build", + "displayName": "Testing like on CI", + "configurePreset": "ci-build", + "execution": { + "stopOnFailure": false, + "scheduleRandom": true, + "timeout": 600 + }, + "output": { + "outputOnFailure": true + } + + } + ] +}