From 1d0bf117c4d34564e4e5ab5fae593edc58488267 Mon Sep 17 00:00:00 2001 From: Peter Urban Date: Mon, 15 Apr 2024 21:45:34 +0200 Subject: [PATCH] split ci per system --- .github/workflows/ci-linux.yml | 126 +++++++++++++++++ .github/workflows/ci-mac.yml | 112 +++++++++++++++ .github/workflows/{ci.yml => ci-windows.yml} | 136 +------------------ 3 files changed, 239 insertions(+), 135 deletions(-) create mode 100644 .github/workflows/ci-linux.yml create mode 100644 .github/workflows/ci-mac.yml rename .github/workflows/{ci.yml => ci-windows.yml} (52%) diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml new file mode 100644 index 0000000..db2e30b --- /dev/null +++ b/.github/workflows/ci-linux.yml @@ -0,0 +1,126 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Peter Urban, Ghent University +# +# SPDX-License-Identifier: CC0-1.0 + +name: CI + +on: + push: + branches: [ main ] + + paths-ignore: + - '.github/workflows/python-package*' + - '.github/workflows/cibuildwheels*' + - '.github/workflows/conda*' + - '.github/workflows/test_*' + - 'conda.recipe/*' + - '*.md' + - 'doc/*' + #paths: + # - "**meson.build" + # - "**.cpp" + # - "**.c" + # - "**.h" + pull_request: + branches: [ main ] + + paths-ignore: + - '.github/workflows/python-package*' + - '.github/workflows/cibuildwheels*' + - '.github/workflows/conda*' + - '.github/workflows/test_*' + - 'conda.recipe/*' + - '*.md' + - 'doc/*' + #paths: + # - "**meson.build" + # - "**.cpp" + # - "**.c" + # - "**.h" + + +# make sure that multiple jobs don't run for the same action (new commits cancel old jobs when they are still running) +# Souce Ralf Gommers (commit to meson-python) +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +# env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + #BUILD_TYPE: Release + +jobs: + linux: + name: ci on ${{matrix.container}} + strategy: + fail-fast: false + matrix: + include: + - { container: 'ghcr.io/themachinethatgoesping/ubuntu-dep:latest', + ccache: 'true', + pip2: 'pip install -r requirements.txt --break-system-packages' } + - { container: 'ubuntu:22.04', + ccache: 'true', + pre-dep : 'apt update && apt-get install -y sudo git git-lfs', + dep : 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential ccache pkg-config cmake python3-pip libboost-all-dev libcurl4-openssl-dev', + pip : 'pip install meson meson-python ninja pytest numpy', + pip2: 'pip install -r requirements.txt'} + - { container: 'archlinux', + pre-dep : 'pacman -Syu --noconfirm; pacman -Syy sudo git git-lfs --noconfirm', + dep : 'sudo pacman -Syy --noconfirm base-devel ccache pkg-config cmake python-pip boost curl', + pip : 'pip install meson meson-python ninja pytest numpy --break-system-packages', + pip2: 'pip install -r requirements.txt --break-system-packages' } + + runs-on: ubuntu-latest + container: ${{matrix.container}} + + steps: + - name: install perquisites + if: ${{matrix.pre-dep}} + run: ${{matrix.pre-dep}} + + - name: checkout main repository + uses: actions/checkout@v3 + with: + submodules: recursive + lfs: false + + - name: ccache + if: ${{ matrix.ccache }} + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: super-ci-${{ matrix.container }} # name for the cache + + - name: install dependencies (c++) + if: ${{matrix.dep}} + run: ${{matrix.dep}} + + - name: install dependencies (meson & python) + if: ${{matrix.pip}} + run: ${{matrix.pip}} + + - name: configure meson + run: meson setup builddir/; meson configure builddir -Dpython.install_env=auto -Dprefix=/usr/; + + - name: compile project + run: meson compile -C builddir/ + + - name: test (cpp) + run: meson test -C builddir/ --print-errorlogs + + - name: install project + run: meson install -C builddir/ + + - name: install pip requirements + if: ${{matrix.pip2}} + run: ${{matrix.pip2}} + + - name: test (pytest) + run: pytest -v + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: ${{matrix.container}}_testlog + path: builddir/meson-logs/testlog.txt + diff --git a/.github/workflows/ci-mac.yml b/.github/workflows/ci-mac.yml new file mode 100644 index 0000000..e45e1e4 --- /dev/null +++ b/.github/workflows/ci-mac.yml @@ -0,0 +1,112 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Peter Urban, Ghent University +# +# SPDX-License-Identifier: CC0-1.0 + +name: CI + +on: + push: + branches: [ main ] + + paths-ignore: + - '.github/workflows/python-package*' + - '.github/workflows/cibuildwheels*' + - '.github/workflows/conda*' + - '.github/workflows/test_*' + - 'conda.recipe/*' + - '*.md' + - 'doc/*' + #paths: + # - "**meson.build" + # - "**.cpp" + # - "**.c" + # - "**.h" + pull_request: + branches: [ main ] + + paths-ignore: + - '.github/workflows/python-package*' + - '.github/workflows/cibuildwheels*' + - '.github/workflows/conda*' + - '.github/workflows/test_*' + - 'conda.recipe/*' + - '*.md' + - 'doc/*' + #paths: + # - "**meson.build" + # - "**.cpp" + # - "**.c" + # - "**.h" + + +# make sure that multiple jobs don't run for the same action (new commits cancel old jobs when they are still running) +# Souce Ralf Gommers (commit to meson-python) +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +# env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + #BUILD_TYPE: Release + +jobs: + macos: + name: ci on macOS + runs-on: macos-12 + strategy: + fail-fast: false + matrix: + cxx_compiler: ["$(brew --prefix llvm@17)/bin/clang++"] + + # env does not work here because is resolved as string and not command + # env: + # CXX: ${{ matrix.cxx_compiler }} + + steps: + + - uses: actions/setup-python@v3 + with: + python-version: '3.12' + + - name: checkout main repository + uses: actions/checkout@v3 + with: + submodules: recursive + lfs: false + + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: super-ci-mac # name for the cache + + # install clang 15 + - run: brew install coreutils llvm@17 + + - run: brew install libomp boost + + - run: pip install meson meson-python ninja pytest numpy + + # LDFLAGS="-L/opt/homebrew/opt/libomp/lib" CPPFLAGS="-I/opt/homebrew/opt/libomp/include" + - name: configure meson + run: CXX=${{ matrix.cxx_compiler }} meson setup builddir/; meson configure builddir -Dpython.install_env=auto + + - name: compile project + run: meson compile -C builddir/ + + - name: test (cpp) + run: meson test -C builddir/ --print-errorlogs + + - name: install project + run: meson install -C builddir/ + + - name: install pip requirements + run: pip install -r requirements.txt + + - name: test (pytest) + run: pytest -v + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: ${{matrix.container}}_testlog + path: builddir/meson-logs/testlog.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci-windows.yml similarity index 52% rename from .github/workflows/ci.yml rename to .github/workflows/ci-windows.yml index afb8066..49a3bc1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci-windows.yml @@ -50,81 +50,7 @@ concurrency: #BUILD_TYPE: Release jobs: - linux: - name: ci on ${{matrix.container}} - strategy: - fail-fast: false - matrix: - include: - - { container: 'ghcr.io/themachinethatgoesping/ubuntu-dep:latest', - ccache: 'true', - pip2: 'pip install -r requirements.txt --break-system-packages' } - - { container: 'ubuntu:22.04', - ccache: 'true', - pre-dep : 'apt update && apt-get install -y sudo git git-lfs', - dep : 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential ccache pkg-config cmake python3-pip libboost-all-dev libcurl4-openssl-dev', - pip : 'pip install meson meson-python ninja pytest numpy', - pip2: 'pip install -r requirements.txt'} - - { container: 'archlinux', - pre-dep : 'pacman -Syu --noconfirm; pacman -Syy sudo git git-lfs --noconfirm', - dep : 'sudo pacman -Syy --noconfirm base-devel ccache pkg-config cmake python-pip boost curl', - pip : 'pip install meson meson-python ninja pytest numpy --break-system-packages', - pip2: 'pip install -r requirements.txt --break-system-packages' } - - runs-on: ubuntu-latest - container: ${{matrix.container}} - - steps: - - name: install perquisites - if: ${{matrix.pre-dep}} - run: ${{matrix.pre-dep}} - - - name: checkout main repository - uses: actions/checkout@v3 - with: - submodules: recursive - lfs: false - - - name: ccache - if: ${{ matrix.ccache }} - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: super-ci-${{ matrix.container }} # name for the cache - - - name: install dependencies (c++) - if: ${{matrix.dep}} - run: ${{matrix.dep}} - - - name: install dependencies (meson & python) - if: ${{matrix.pip}} - run: ${{matrix.pip}} - - - name: configure meson - run: meson setup builddir/; meson configure builddir -Dpython.install_env=auto -Dprefix=/usr/; - - - name: compile project - run: meson compile -C builddir/ - - - name: test (cpp) - run: meson test -C builddir/ --print-errorlogs - - - name: install project - run: meson install -C builddir/ - - - name: install pip requirements - if: ${{matrix.pip2}} - run: ${{matrix.pip2}} - - - name: test (pytest) - run: pytest -v - - - uses: actions/upload-artifact@v1 - if: failure() - with: - name: ${{matrix.container}}_testlog - path: builddir/meson-logs/testlog.txt - - + build-on-windows: name: ci on windows strategy: @@ -240,63 +166,3 @@ jobs: with: name: Windows_Meson_testlog path: builddir/meson-logs/testlog.txt - - macos: - name: ci on macOS - runs-on: macos-12 - strategy: - fail-fast: false - matrix: - cxx_compiler: ["$(brew --prefix llvm@17)/bin/clang++"] - - # env does not work here because is resolved as string and not command - # env: - # CXX: ${{ matrix.cxx_compiler }} - - steps: - - - uses: actions/setup-python@v3 - with: - python-version: '3.12' - - - name: checkout main repository - uses: actions/checkout@v3 - with: - submodules: recursive - lfs: false - - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: super-ci-mac # name for the cache - - # install clang 15 - - run: brew install coreutils llvm@17 - - - run: brew install libomp boost - - - run: pip install meson meson-python ninja pytest numpy - - - name: configure meson - run: LDFLAGS="-L/opt/homebrew/opt/libomp/lib" CPPFLAGS="-I/opt/homebrew/opt/libomp/include" BOOST_ROOT="/opt/homebrew/Cellar/boost/1.84.0_1" CXX=${{ matrix.cxx_compiler }} meson setup builddir/; meson configure builddir -Dpython.install_env=auto - - - name: compile project - run: meson compile -C builddir/ - - - name: test (cpp) - run: meson test -C builddir/ --print-errorlogs - - - name: install project - run: meson install -C builddir/ - - - name: install pip requirements - run: pip install -r requirements.txt - - - name: test (pytest) - run: pytest -v - - - uses: actions/upload-artifact@v1 - if: failure() - with: - name: ${{matrix.container}}_testlog - path: builddir/meson-logs/testlog.txt