bempp 0.2.0

Boundary element method library.
# This file is based on one that was autogenerated by maturin v1.7.1 using:
#    maturin generate-ci github
name: 📦

on:
  push:
    tags: ['*']
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  linux:
    name: Build linux wheel
    runs-on: ubuntu-latest
    strategy:
      matrix:
        platform:
          - target: x86_64-unknown-linux-gnu
            container: quay.io/pypa/manylinux_2_28_x86_64
            wheel: wheels-linux-x86_64
            package-manager: yum
            python: /opt/python/cp38-cp38/bin/python
    container: ${{ matrix.platform.container }}
    steps:
      - name: Set up Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust-version }}
          components: rustfmt

      - name: Install OpenBLAS, LAPACK, OpenSSL (yum)
        run: yum -y install openblas-devel lapack-devel openssl-devel
        if: matrix.platform.package-manager == 'yum'
      - name: Install OpenBLAS, LAPACK, OpenSSL (apt)
        run: apt-get -y install libopenblas-dev liblapack-dev
        if: matrix.platform.package-manager == 'apt'

      - uses: actions/checkout@v4

        # TODO: swap to `pip install maturin>=1.7.2` once there's a new release
      - name: Install maturin, CFFI
        run: |
          ${{ matrix.platform.python }} -m pip install git+https://github.com/PyO3/maturin.git
          ${{ matrix.platform.python }} -m pip install cffi

      - name: Build wheel
        run: ${{ matrix.platform.python }} -m maturin build --release --out dist -i ${{ matrix.platform.python }} --target ${{ matrix.platform.target }}

      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.platform.wheel }}
          path: dist

  macos:
    name: Build MacOS wheel
    runs-on: ${{ matrix.platform.runner }}
    strategy:
      matrix:
        platform:
          - runner: macos-12
            target: x86_64
          - runner: macos-14
            target: aarch64
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - name: Build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.platform.target }}
          args: --release --out dist --find-interpreter
          sccache: 'true'
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: wheels-macos-${{ matrix.platform.target }}
          path: dist

  sdist:
    name: Make sdist
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build sdist
        uses: PyO3/maturin-action@v1
        with:
          command: sdist
          args: --out dist
      - name: Upload sdist
        uses: actions/upload-artifact@v4
        with:
          name: wheels-sdist
          path: dist

  release:
    permissions:
      id-token: write
    name: Push to PyPI
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/')
    needs: [linux, macos, sdist]
    steps:
      - uses: actions/download-artifact@v4
      - run: |
          mkdir dist
          mv wheels-*/* dist/
      - run: ls dist/
      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1