Skip to content

DO NOT SQUASH Add PyOP2 to Firedrake repository #82

DO NOT SQUASH Add PyOP2 to Firedrake repository

DO NOT SQUASH Add PyOP2 to Firedrake repository #82

Workflow file for this run

name: PyOP2
# Trigger the workflow on push or pull request,
# but only for the master branch
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
test:
runs-on: ubuntu-latest
strategy:
# Don't immediately kill all if one Python version fails
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
env:
CC: mpicc
PETSC_DIR: ${{ github.workspace }}/petsc
PETSC_ARCH: default
RDMAV_FORK_SAFE: 1
PYOP2_CI_TESTS: 1
timeout-minutes: 60
steps:
- name: Install system dependencies
shell: bash
run: |
sudo apt update
sudo apt install build-essential mpich libmpich-dev \
libblas-dev liblapack-dev gfortran libhwloc-dev libfabric-dev
- name: Set correct Python version
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Clone PETSc
uses: actions/checkout@v4
with:
repository: firedrakeproject/petsc
path: ${{ env.PETSC_DIR }}
- name: Build and install PETSc
shell: bash
working-directory: ${{ env.PETSC_DIR }}
run: |
./configure \
--download-hdf5 \
--with-debugging=1 \
--with-shared-libraries=1 \
--with-c2html=0 \
--with-fortran-bindings=0
make
- name: Checkout PyOP2
uses: actions/checkout@v4
with:
path: PyOP2
- name: Install PyOP2 dependencies
shell: bash
working-directory: PyOP2
run: |
python -m pip install -U pip
python -m pip install -U pytest-timeout
- name: Install PyOP2
shell: bash
working-directory: PyOP2
run: python -m pip install -v ".[test]"
- name: Run tests
shell: bash
working-directory: PyOP2
run: |
# Running parallel test cases separately works around a bug in pytest-mpi
pytest -k "not parallel" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
mpiexec -n 3 pytest -k "parallel[3]" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
timeout-minutes: 10