diff --git a/.github/actions/dependencies/action.yml b/.github/actions/dependencies/action.yml new file mode 100644 index 00000000000..44e45828e51 --- /dev/null +++ b/.github/actions/dependencies/action.yml @@ -0,0 +1,33 @@ +name: "Dependencies action" +description: "Reusable action that sets up dependencies for the ACTS CI build" +# inputs: +# example_input: +# description: "An example input" +# required: true +# default: "Hello, World!" +# outputs: +# example_output: +# description: "An example output" +runs: + using: "composite" + steps: + - name: Set up Spack + uses: spack/setup-spack@v2 + + - name: Apply spack patch + shell: bash + working-directory: spack + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + curl https://patch-diff.githubusercontent.com/raw/spack/spack/pull/47370.patch | git am + + - name: Locate OpenGL + shell: bash + run: ./opengl.sh + + # - name: Setup Xcode version + # if: startsWith(inputs.os, 'macos') + # uses: maxim-lobanov/setup-xcode@v1 + # with: + # xcode-version: "${{ inputs.xcode }}" diff --git a/.github/actions/dependencies/opengl.sh b/.github/actions/dependencies/opengl.sh new file mode 100755 index 00000000000..d3943c4d114 --- /dev/null +++ b/.github/actions/dependencies/opengl.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -u +set -e + +source detect_os.sh + +packages_file=${GITHUB_WORKSPACE}/spack/etc/spack/packages.yaml + +if [ "$os" == "ubuntu" ]; then + sudo apt-get update + sudo apt-get install -y libgl1-mesa-dev +cat < "$packages_file" +packages: + opengl: + buildable: false + externals: + - prefix: /usr/ + spec: opengl@4.5 +EOF +cat "$packages_file" +elif [ "$os" == "almalinux" ]; then + dnf install -y mesa-libGLU +cat < "$packages_file" +packages: + opengl: + buildable: false + externals: + - prefix: /usr/ + spec: opengl@4.6 +EOF +cat "$packages_file" +fi diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index 2d565795d9f..fb70b81dd3e 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -36,377 +36,379 @@ jobs: submodules: true lfs: true - - name: Set dependencies URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - - - name: Install dependencies - run: CI/dependencies.sh - - - name: Restore ccache - uses: actions/cache/restore@v4 - id: ccache-restore - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- - - - name: Configure - # setting CMAKE_CXX_STANDARD=20 is a workaround for a bug in the - # dd4hep CMake configuration that gets triggered on recent CMake - # versions - # Need to set git user & email for patching to work (GeoModel plugin) - run: > - git config --global user.name 'CI' && - git config --global user.email '<>' && - ccache -z && - cmake -B build -S . - --preset=github-ci - -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" - -DPython_EXECUTABLE=$(which python3) - -DACTS_BUILD_PLUGIN_ONNX=ON - - - name: Build - run: cmake --build build - - - name: ccache stats - run: ccache -s - - - name: Save ccache - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ github.workspace }}/ccache - key: ${{ steps.ccache-restore.outputs.cache-primary-key }} - - - name: Unit tests - run: ctest --test-dir build -j$(nproc) - - - name: Integration tests - run: cmake --build build --target integrationtests - - - name: Install - run: cmake --build build --target install - - - name: Package build - run: tar czf build.tar.gz -C build --exclude "*.o" --exclude "bin/ActsUnitTest*" --exclude "bin/ActsIntegrationTest*" . - - - uses: actions/upload-artifact@v4 - with: - name: acts-linux-ubuntu - path: build.tar.gz - - - name: Downstream configure - run: > - cmake -B build-downstream -S Tests/DownstreamProject - -GNinja - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_FLAGS=-Werror - -DCMAKE_CXX_STANDARD=20 - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" - - - name: Downstream build - run: cmake --build build-downstream - - - name: Downstream run - run: ./build-downstream/bin/ShowActsVersion - - linux_examples_test: - runs-on: ubuntu-latest - container: ghcr.io/acts-project/ubuntu2404:63 - needs: [linux_ubuntu] - env: - ACTS_SEQUENCER_DISABLE_FPEMON: true - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - lfs: true - - - name: Set dependencies URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - - - name: Install dependencies - run: CI/dependencies.sh - - - uses: actions/download-artifact@v4 - with: - name: acts-linux-ubuntu - - - name: Unpack build - run: mkdir build && tar xf build.tar.gz -C build - - - name: Python level tests - shell: bash - env: - PYTEST_MD_REPORT: true - PYTEST_MD_REPORT_VERBOSE: 0 - PYTEST_MD_REPORT_OUTPUT: pytest.md - run: > - geant4-config --install-datasets - && source build/this_acts_withdeps.sh - && python3 -m pip install -r Examples/Python/tests/requirements.txt - && python3 -m pip install pytest-md-report - && pytest -rFsv -k "not exatrkx" -v - && cat ${PYTEST_MD_REPORT_OUTPUT} >> $GITHUB_STEP_SUMMARY - - linux_physmon: - runs-on: ubuntu-latest - container: ghcr.io/acts-project/ubuntu2404:63 - needs: [linux_ubuntu] - env: - ACTS_SEQUENCER_DISABLE_FPEMON: true - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - lfs: true - - - run: apt-get update && apt-get install -y time - - - name: Set dependencies URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - - - name: Install dependencies - run: CI/dependencies.sh - - - uses: actions/download-artifact@v4 - with: - name: acts-linux-ubuntu - - - name: Unpack build - run: mkdir build && tar xf build.tar.gz -C build - - - name: Save PR number - if: ${{ github.event_name == 'pull_request' }} - run: | - mkdir -p physmon - echo ${{ github.event.number }} > physmon/pr_number - echo ${{ github.event.pull_request.head.sha }} > physmon/sha - - - name: Physics performance checks - shell: bash - run: > - echo "::group::Dependencies" - && git config --global safe.directory "$GITHUB_WORKSPACE" - && python3 -m pip install histcmp==0.6.8 matplotlib - && python3 -m pip install -r Examples/Scripts/requirements.txt - && geant4-config --install-datasets - && venv_python=$(which python3) - && echo $venv_python - && source build/this_acts_withdeps.sh - && export PATH=$(dirname $venv_python):$PATH - && echo $PATH - && which python3 - && echo "::endgroup::" - && CI/physmon/phys_perf_mon.sh all physmon - - - name: Post step summary - if: always() - run: cat physmon/summary.md >> $GITHUB_STEP_SUMMARY - - - uses: actions/upload-artifact@v4 - if: always() - with: - name: physmon - path: physmon - - linux_physmon_perf_report: - needs: [linux_physmon] - runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' - steps: - - name: Install dependencies - run: pip3 install spyral-cli==1.1.2 - - - uses: actions/download-artifact@v4 - with: - name: physmon - path: physmon - - - name: Store metrics - env: - SSH_AUTH_SOCK: /tmp/ssh_agent.sock - run: | - ssh-agent -a $SSH_AUTH_SOCK > /dev/null - ssh-add - <<< "${{ secrets.RUNTIME_METRIC_DEPLOY_SSH_KEY }}" - git config --global user.email "action@github.com" - git config --global user.name "GitHub Action" - git clone git@github.com:acts-project/runtime_metrics.git - spyral maxima runtime_metrics/metrics.csv physmon/memory/*.csv -e $(date +%Y-%m-%dT%H-%M-%S) -e ${GITHUB_REF_NAME} -e ${GITHUB_REF} -e ${GITHUB_SHA} - cd runtime_metrics - git add -A - git commit -m"update metrics" - git push - - linux_ubuntu_extra: - runs-on: ubuntu-latest - strategy: - matrix: - include: - - image: ubuntu2204 - std: 20 - - image: ubuntu2204_clang - std: 20 - container: ghcr.io/acts-project/${{ matrix.image }}:63 - env: - INSTALL_DIR: ${{ github.workspace }}/install - ACTS_LOG_FAILURE_THRESHOLD: WARNING - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - lfs: true - - - name: Set dependencies URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - - - name: Install dependencies - run: CI/dependencies.sh - - - name: Restore ccache - uses: actions/cache/restore@v4 - id: ccache-restore - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- - - - - name: Configure - # setting CMAKE_CXX_STANDARD=20 is a workaround for a bug in the - # dd4hep CMake configuration that gets triggered on recent CMake - # versions - run: > - ccache -z && - cmake -B build -S . - --preset=github-ci - -DCMAKE_CXX_STANDARD=${{ matrix.std }} - -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" - -DPython_EXECUTABLE=$(which python3) - - - name: Build - run: cmake --build build - - - name: ccache stats - run: ccache -s - - - name: Save ccache - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ github.workspace }}/ccache - key: ${{ steps.ccache-restore.outputs.cache-primary-key }} - - - name: Unit tests - run: cmake --build build --target test - - - name: Integration tests - run: cmake --build build --target integrationtests - - - name: Install - run: cmake --build build --target install - - - name: Downstream configure - run: > - cmake -B build-downstream -S Tests/DownstreamProject - -GNinja - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_FLAGS=-Werror - -DCMAKE_CXX_STANDARD=${{ matrix.std }} - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" - - - name: Downstream build - run: cmake --build build-downstream - - - name: Downstream run - run: ./build-downstream/bin/ShowActsVersion - - macos: - runs-on: macos-14 - env: - INSTALL_DIR: ${{ github.workspace }}/install_acts - ACTS_LOG_FAILURE_THRESHOLD: WARNING - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - lfs: true - - - name: Print architecture - run: uname -p - - - name: Set dependencies URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/macos-14/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - - - name: Install dependencies - run: > - brew install cmake ninja ccache xerces-c - && CI/dependencies.sh - - - name: Restore ccache - uses: actions/cache/restore@v4 - id: ccache-restore - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- - - - name: Configure - run: > - ccache -z - && cmake -B build -S . - --preset=github-ci - -DCMAKE_PREFIX_PATH="${{ env.DEPENDENCY_DIR }}" - -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" - -DPython_EXECUTABLE=$(which python3) - - - name: Build - run: cmake --build build - - - name: ccache stats - run: ccache -s - - - name: Save ccache - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ github.workspace }}/ccache - key: ${{ steps.ccache-restore.outputs.cache-primary-key }} - - - name: Unit tests - run: cmake --build build --target test - - - name: Integration tests - run: cmake --build build --target integrationtests - - - name: Install - run: cmake --build build --target install - - - uses: actions/upload-artifact@v4 - with: - name: acts-macos - path: ${{ env.INSTALL_DIR }} - - - name: Downstream configure - run: > - cmake -B build-downstream -S Tests/DownstreamProject - -GNinja - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_FLAGS=-Werror - -DCMAKE_CXX_STANDARD=20 - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" - - - name: Downstream build - run: cmake --build build-downstream - - - name: Downstream run - run: > - PATH="${{ env.DEPENDENCY_DIR }}/bin:$PATH" - && ./build-downstream/bin/ShowActsVersion + - uses: ./.github/actions/dependencies + + # - name: Set dependencies URL + # run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + # + # - name: Install dependencies + # run: CI/dependencies.sh + # + # - name: Restore ccache + # uses: actions/cache/restore@v4 + # id: ccache-restore + # with: + # path: ${{ env.CCACHE_DIR }} + # key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} + # restore-keys: | + # ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- + # + # - name: Configure + # # setting CMAKE_CXX_STANDARD=20 is a workaround for a bug in the + # # dd4hep CMake configuration that gets triggered on recent CMake + # # versions + # # Need to set git user & email for patching to work (GeoModel plugin) + # run: > + # git config --global user.name 'CI' && + # git config --global user.email '<>' && + # ccache -z && + # cmake -B build -S . + # --preset=github-ci + # -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" + # -DPython_EXECUTABLE=$(which python3) + # -DACTS_BUILD_PLUGIN_ONNX=ON + # + # - name: Build + # run: cmake --build build + # + # - name: ccache stats + # run: ccache -s + # + # - name: Save ccache + # uses: actions/cache/save@v4 + # if: always() + # with: + # path: ${{ github.workspace }}/ccache + # key: ${{ steps.ccache-restore.outputs.cache-primary-key }} + # + # - name: Unit tests + # run: ctest --test-dir build -j$(nproc) + # + # - name: Integration tests + # run: cmake --build build --target integrationtests + # + # - name: Install + # run: cmake --build build --target install + # + # - name: Package build + # run: tar czf build.tar.gz -C build --exclude "*.o" --exclude "bin/ActsUnitTest*" --exclude "bin/ActsIntegrationTest*" . + # + # - uses: actions/upload-artifact@v4 + # with: + # name: acts-linux-ubuntu + # path: build.tar.gz + # + # - name: Downstream configure + # run: > + # cmake -B build-downstream -S Tests/DownstreamProject + # -GNinja + # -DCMAKE_BUILD_TYPE=Release + # -DCMAKE_CXX_FLAGS=-Werror + # -DCMAKE_CXX_STANDARD=20 + # -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" + # + # - name: Downstream build + # run: cmake --build build-downstream + # + # - name: Downstream run + # run: ./build-downstream/bin/ShowActsVersion + + # linux_examples_test: + # runs-on: ubuntu-latest + # container: ghcr.io/acts-project/ubuntu2404:63 + # needs: [linux_ubuntu] + # env: + # ACTS_SEQUENCER_DISABLE_FPEMON: true + # + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + # lfs: true + # + # - name: Set dependencies URL + # run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + # + # - name: Install dependencies + # run: CI/dependencies.sh + # + # - uses: actions/download-artifact@v4 + # with: + # name: acts-linux-ubuntu + # + # - name: Unpack build + # run: mkdir build && tar xf build.tar.gz -C build + # + # - name: Python level tests + # shell: bash + # env: + # PYTEST_MD_REPORT: true + # PYTEST_MD_REPORT_VERBOSE: 0 + # PYTEST_MD_REPORT_OUTPUT: pytest.md + # run: > + # geant4-config --install-datasets + # && source build/this_acts_withdeps.sh + # && python3 -m pip install -r Examples/Python/tests/requirements.txt + # && python3 -m pip install pytest-md-report + # && pytest -rFsv -k "not exatrkx" -v + # && cat ${PYTEST_MD_REPORT_OUTPUT} >> $GITHUB_STEP_SUMMARY + # + # linux_physmon: + # runs-on: ubuntu-latest + # container: ghcr.io/acts-project/ubuntu2404:63 + # needs: [linux_ubuntu] + # env: + # ACTS_SEQUENCER_DISABLE_FPEMON: true + # + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + # lfs: true + # + # - run: apt-get update && apt-get install -y time + # + # - name: Set dependencies URL + # run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + # + # - name: Install dependencies + # run: CI/dependencies.sh + # + # - uses: actions/download-artifact@v4 + # with: + # name: acts-linux-ubuntu + # + # - name: Unpack build + # run: mkdir build && tar xf build.tar.gz -C build + # + # - name: Save PR number + # if: ${{ github.event_name == 'pull_request' }} + # run: | + # mkdir -p physmon + # echo ${{ github.event.number }} > physmon/pr_number + # echo ${{ github.event.pull_request.head.sha }} > physmon/sha + # + # - name: Physics performance checks + # shell: bash + # run: > + # echo "::group::Dependencies" + # && git config --global safe.directory "$GITHUB_WORKSPACE" + # && python3 -m pip install histcmp==0.6.8 matplotlib + # && python3 -m pip install -r Examples/Scripts/requirements.txt + # && geant4-config --install-datasets + # && venv_python=$(which python3) + # && echo $venv_python + # && source build/this_acts_withdeps.sh + # && export PATH=$(dirname $venv_python):$PATH + # && echo $PATH + # && which python3 + # && echo "::endgroup::" + # && CI/physmon/phys_perf_mon.sh all physmon + # + # - name: Post step summary + # if: always() + # run: cat physmon/summary.md >> $GITHUB_STEP_SUMMARY + # + # - uses: actions/upload-artifact@v4 + # if: always() + # with: + # name: physmon + # path: physmon + # + # linux_physmon_perf_report: + # needs: [linux_physmon] + # runs-on: ubuntu-latest + # if: github.ref == 'refs/heads/main' + # steps: + # - name: Install dependencies + # run: pip3 install spyral-cli==1.1.2 + # + # - uses: actions/download-artifact@v4 + # with: + # name: physmon + # path: physmon + # + # - name: Store metrics + # env: + # SSH_AUTH_SOCK: /tmp/ssh_agent.sock + # run: | + # ssh-agent -a $SSH_AUTH_SOCK > /dev/null + # ssh-add - <<< "${{ secrets.RUNTIME_METRIC_DEPLOY_SSH_KEY }}" + # git config --global user.email "action@github.com" + # git config --global user.name "GitHub Action" + # git clone git@github.com:acts-project/runtime_metrics.git + # spyral maxima runtime_metrics/metrics.csv physmon/memory/*.csv -e $(date +%Y-%m-%dT%H-%M-%S) -e ${GITHUB_REF_NAME} -e ${GITHUB_REF} -e ${GITHUB_SHA} + # cd runtime_metrics + # git add -A + # git commit -m"update metrics" + # git push + # + # linux_ubuntu_extra: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # include: + # - image: ubuntu2204 + # std: 20 + # - image: ubuntu2204_clang + # std: 20 + # container: ghcr.io/acts-project/${{ matrix.image }}:63 + # env: + # INSTALL_DIR: ${{ github.workspace }}/install + # ACTS_LOG_FAILURE_THRESHOLD: WARNING + # + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + # lfs: true + # + # - name: Set dependencies URL + # run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + # + # - name: Install dependencies + # run: CI/dependencies.sh + # + # - name: Restore ccache + # uses: actions/cache/restore@v4 + # id: ccache-restore + # with: + # path: ${{ env.CCACHE_DIR }} + # key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} + # restore-keys: | + # ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- + # + # + # - name: Configure + # # setting CMAKE_CXX_STANDARD=20 is a workaround for a bug in the + # # dd4hep CMake configuration that gets triggered on recent CMake + # # versions + # run: > + # ccache -z && + # cmake -B build -S . + # --preset=github-ci + # -DCMAKE_CXX_STANDARD=${{ matrix.std }} + # -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" + # -DPython_EXECUTABLE=$(which python3) + # + # - name: Build + # run: cmake --build build + # + # - name: ccache stats + # run: ccache -s + # + # - name: Save ccache + # uses: actions/cache/save@v4 + # if: always() + # with: + # path: ${{ github.workspace }}/ccache + # key: ${{ steps.ccache-restore.outputs.cache-primary-key }} + # + # - name: Unit tests + # run: cmake --build build --target test + # + # - name: Integration tests + # run: cmake --build build --target integrationtests + # + # - name: Install + # run: cmake --build build --target install + # + # - name: Downstream configure + # run: > + # cmake -B build-downstream -S Tests/DownstreamProject + # -GNinja + # -DCMAKE_BUILD_TYPE=Release + # -DCMAKE_CXX_FLAGS=-Werror + # -DCMAKE_CXX_STANDARD=${{ matrix.std }} + # -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" + # + # - name: Downstream build + # run: cmake --build build-downstream + # + # - name: Downstream run + # run: ./build-downstream/bin/ShowActsVersion + # + # macos: + # runs-on: macos-14 + # env: + # INSTALL_DIR: ${{ github.workspace }}/install_acts + # ACTS_LOG_FAILURE_THRESHOLD: WARNING + # + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + # lfs: true + # + # - name: Print architecture + # run: uname -p + # + # - name: Set dependencies URL + # run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/macos-14/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + # + # - name: Install dependencies + # run: > + # brew install cmake ninja ccache xerces-c + # && CI/dependencies.sh + # + # - name: Restore ccache + # uses: actions/cache/restore@v4 + # id: ccache-restore + # with: + # path: ${{ env.CCACHE_DIR }} + # key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }} + # restore-keys: | + # ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}- + # + # - name: Configure + # run: > + # ccache -z + # && cmake -B build -S . + # --preset=github-ci + # -DCMAKE_PREFIX_PATH="${{ env.DEPENDENCY_DIR }}" + # -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" + # -DPython_EXECUTABLE=$(which python3) + # + # - name: Build + # run: cmake --build build + # + # - name: ccache stats + # run: ccache -s + # + # - name: Save ccache + # uses: actions/cache/save@v4 + # if: always() + # with: + # path: ${{ github.workspace }}/ccache + # key: ${{ steps.ccache-restore.outputs.cache-primary-key }} + # + # - name: Unit tests + # run: cmake --build build --target test + # + # - name: Integration tests + # run: cmake --build build --target integrationtests + # + # - name: Install + # run: cmake --build build --target install + # + # - uses: actions/upload-artifact@v4 + # with: + # name: acts-macos + # path: ${{ env.INSTALL_DIR }} + # + # - name: Downstream configure + # run: > + # cmake -B build-downstream -S Tests/DownstreamProject + # -GNinja + # -DCMAKE_BUILD_TYPE=Release + # -DCMAKE_CXX_FLAGS=-Werror + # -DCMAKE_CXX_STANDARD=20 + # -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" + # + # - name: Downstream build + # run: cmake --build build-downstream + # + # - name: Downstream run + # run: > + # PATH="${{ env.DEPENDENCY_DIR }}/bin:$PATH" + # && ./build-downstream/bin/ShowActsVersion