Bump PETSc and SLEPc versions #4419
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This should hopefully fix CI. This will require us to make a new patch release.
Justification
Our hand was forced here by the latest releases of PETSc (3.23.4) and SLEPc (3.23.2) and hence the releases of new petsc4py and slepc4py dists on PyPI. The failure we started seeing occurred when importing Firedrake for the first time after install:
What is going on here is we are running
from slepc4py import SLEPc
and hitting an unknown symbol issue.This is caused by build isolation. Even though petsc4py and slepc4py versions are pinned by Firedrake, when slepc4py is built it fetches its own petsc4py==3.23.4 from upstream and links to that in the isolated build environment. Thus at runtime the petsc4py it now sees (3.23.3) is different to the one it was built against.
Possible solutions are:
PIP_CONSTRAINTS=<that file>
to force slepc4py to use the right petsc4py--no-build-isolation
. This means we can't really havepip install firedrake[slepc]
All the solutions suck but the first is the least effort. Hence that is what we are doing here.