Vector valued polynomials on facets #422
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Run tests | |
| # I stole this from the main firedrake repo | |
| on: | |
| # Run on pushes to main | |
| push: | |
| branches: | |
| - main | |
| # And all pull requests | |
| # cd /opt/firedrake/ | |
| # git fetch | |
| # git checkout indiamai/fuse-closures-with-pyop3 | |
| # git pull | |
| pull_request: | |
| jobs: | |
| test: | |
| name: Run tests | |
| strategy: | |
| # We want to know all of the tests which fail, so don't kill real if | |
| # complex fails and vice-versa | |
| fail-fast: false | |
| matrix: | |
| arch: [default] | |
| runs-on: [self-hosted, Linux] | |
| container: | |
| image: ubuntu:latest | |
| env: | |
| OMPI_ALLOW_RUN_AS_ROOT: 1 | |
| OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 | |
| OMP_NUM_THREADS: 1 | |
| OPENBLAS_NUM_THREADS: 1 | |
| FIREDRAKE_CI: 1 | |
| PYOP2_SPMD_STRICT: 1 | |
| EXTRA_PYTEST_ARGS: --splitting-algorithm least_duration --timeout=600 --timeout-method=thread -o faulthandler_timeout=660 --durations-path=./fuse-repo/test/test_durations.json --durations=50 | |
| PYTEST_MPI_MAX_NPROCS: 8 | |
| FIREDRAKE_USE_FUSE: 1 | |
| steps: | |
| - name: Fix HOME | |
| # For unknown reasons GitHub actions overwrite HOME to /github/home | |
| # which will break everything unless fixed | |
| # (https://github.com/actions/runner/issues/863) | |
| run: echo "HOME=/root" >> "$GITHUB_ENV" | |
| - name: Pre-run cleanup | |
| # Make sure the current directory is empty | |
| run: find . -delete | |
| # Use a different mirror to fetch apt packages from to get around | |
| # temporary outage. | |
| # (https://askubuntu.com/questions/1549622/problem-with-archive-ubuntu-com-most-of-the-servers-are-not-responding) | |
| # The mirror was chosen from https://launchpad.net/ubuntu/+archivemirrors. | |
| - name: Configure apt | |
| run: | | |
| sed -i 's|http://archive.ubuntu.com/ubuntu|http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu/|g' /etc/apt/sources.list.d/ubuntu.sources | |
| apt-get update | |
| # Git is needed for actions/checkout and Python for firedrake-configure | |
| - name: Install system dependencies (1) | |
| run: apt-get -y install git python3 | |
| - uses: actions/checkout@v5 | |
| with: | |
| repository: firedrakeproject/firedrake | |
| path: firedrake-repo | |
| ref: refs/heads/connorjward/pyop3-develop | |
| - name: Validate single source of truth | |
| run: ./firedrake-repo/scripts/check-config | |
| # Check that the Dockerfile is using the latest Ubuntu version. | |
| # The version is hardcoded into the Dockerfile so that the OS | |
| # for each release is fixed. | |
| - name: Check Dockerfile Ubuntu version | |
| run: | | |
| latest_version=$(grep "VERSION_ID=" /etc/os-release | cut -d '"' -f 2) | |
| docker_version=$(grep FROM firedrake-repo/docker/Dockerfile.vanilla | cut -d ':' -f 2) | |
| echo "Latest version: $latest_version" | |
| echo "Docker version: $docker_version" | |
| if [[ "$docker_version" != "$latest_version" ]]; then | |
| echo "Ubuntu version ${docker_version} in Dockerfile is out of date with latest version ${latest_version}" | |
| exit 1 | |
| fi | |
| - name: Install system dependencies (2) | |
| run: | | |
| apt-get -y install \ | |
| $(python3 ./firedrake-repo/scripts/firedrake-configure --arch ${{ matrix.arch }} --show-system-packages) | |
| apt-get -y install python3-venv | |
| : # Dependencies needed to run the test suite | |
| apt-get -y install fonts-dejavu graphviz graphviz-dev parallel poppler-utils | |
| - name: Install PETSc | |
| run: | | |
| git clone --depth 1 https://gitlab.com/petsc/petsc.git | |
| cd petsc | |
| python3 ../firedrake-repo/scripts/firedrake-configure \ | |
| --arch ${{ matrix.arch }} --show-petsc-configure-options | \ | |
| xargs -L1 ./configure --with-make-np=8 --download-slepc | |
| make PETSC_DIR=/__w/fuse/fuse/petsc PETSC_ARCH=arch-firedrake-${{ matrix.arch }} | |
| make check | |
| { | |
| echo "PETSC_DIR=/__w/fuse/fuse/petsc" | |
| echo "PETSC_ARCH=arch-firedrake-${{ matrix.arch }}" | |
| echo "SLEPC_DIR=/__w/fuse/fuse/petsc/arch-firedrake-${{ matrix.arch }}" | |
| } >> "$GITHUB_ENV" | |
| - name: Install Firedrake | |
| id: install | |
| run: | | |
| export $(python3 ./firedrake-repo/scripts/firedrake-configure --arch "${{ matrix.arch }}" --show-env) | |
| python3 -m venv venv | |
| . venv/bin/activate | |
| : # Empty the pip cache to ensure that everything is compiled from scratch | |
| pip cache purge | |
| : # Fix for petsc4py+slepc4py build | |
| echo 'setuptools<81' > constraints.txt | |
| export PIP_CONSTRAINT=constraints.txt | |
| : # Install build dependencies | |
| pip install "$PETSC_DIR"/src/binding/petsc4py | |
| pip install -r ./firedrake-repo/requirements-build.txt | |
| : # Install runtime dependencies that have been removed from the pyproject.toml | |
| : # because they rely on non-PyPI versions of petsc4py. | |
| pip install --no-build-isolation --no-deps \ | |
| "$PETSC_DIR"/"$PETSC_ARCH"/externalpackages/git.slepc/src/binding/slepc4py | |
| pip install --no-deps git+https://github.com/NGSolve/ngsPETSc.git netgen-mesher netgen-occt | |
| : # We have to pass '--no-build-isolation' to use a custom petsc4py | |
| EXTRA_BUILD_ARGS='--no-isolation' | |
| EXTRA_PIP_FLAGS='--no-build-isolation' | |
| : # Install from an sdist so we can make sure that it is not ill-formed | |
| : # pip install build | |
| : # python -m build ./firedrake-repo --sdist $EXTRA_BUILD_ARGS | |
| : #pip install --verbose $EXTRA_PIP_FLAGS \ | |
| : # --no-binary h5py \ | |
| : # --extra-index-url https://download.pytorch.org/whl/cpu \ | |
| : # "$(echo ./firedrake-repo/dist/firedrake-*.tar.gz)[ci]" | |
| pip install --verbose $EXTRA_PIP_FLAGS \ | |
| --no-binary h5py \ | |
| --extra-index-url https://download.pytorch.org/whl/cpu \ | |
| -e ./firedrake-repo[ci] | |
| firedrake-clean | |
| pip list | |
| - uses: actions/checkout@v5 | |
| with: | |
| repository: firedrakeproject/firedrake | |
| path: firedrake-repo | |
| ref: refs/heads/indiamai/fuse-closures-with-pyop3 | |
| - name: Make cython | |
| run: | | |
| . venv/bin/activate | |
| cd ./firedrake-repo | |
| make | |
| - uses: actions/checkout@v5 | |
| with: | |
| path: fuse-repo | |
| - name: Install checked out fuse | |
| run: | | |
| . venv/bin/activate | |
| python3 -m pip install --break-system-packages -e './fuse-repo[dev]' | |
| - uses: actions/checkout@v5 | |
| with: | |
| repository: firedrakeproject/fiat | |
| path: fiat-repo | |
| ref: refs/heads/indiamai/integrate_fuse | |
| - name: Install checked out FIAT | |
| run: | | |
| . venv/bin/activate | |
| python3 -m pip install --break-system-packages -e './fiat-repo' | |
| - name: Run tests | |
| run: | | |
| . venv/bin/activate | |
| cd ./fuse-repo | |
| firedrake-run-split-tests 1 1 -n 8 "$EXTRA_PYTEST_ARGS" ./test |