PETSc tight dependency on OpenMPI (or MPICH) version
PETSc has a tight dependency on the version of OpenMPI it was built
At l.154 of
PETSc tests the OpenMPI version:
# elif (OMPI_MAJOR_VERSION != PETSC_HAVE_OMPI_MAJOR_VERSION) || (OMPI_MINOR_VERSION != PETSC_HAVE_OMPI_MINOR_VERSION) || (OMPI_RELEASE_VERSION != PETSC_HAVE_OMPI_RELEASE_VERSION)
# error "PETSc was configured with one OpenMPI mpi.h version but now appears to be compiling using a different OpenMPI mpi.h version"
So each of the major, minor and release versions need to match. This
is really annoying, I thought the point of release versions is that
they didn't change the API or ABI and so could be swapped out
interchangeably. I can only imagine (or hope) the PETSc developers have
PETSc is not built directly against OpenMPI. The build-dependency
is mpi-default-dev (>= 1.0.2). mpi-default-dev is also used as a
dependency by the libpetsc3.6.4-dev and libpetsc-complex-3.6.4-dev
mpi-default-dev calls in libmpich-dev on hppa, m68k and sh4. li
bopenmpi-dev is the standard MPI implementation on all other
architectures. petscsys.h also checks the MPICH version if present,
just a single value (MPICH_NUMVERSION), but it too references the patch
version (e.g. 30101300 for MPICH v3.1.1)
Eventually the autobuildds will catch up and rebuild petsc against the
latest openmpi (or mpich). But while we wait for that, petsc (and
therefore its client programs like dolfin) are in a broken state.
Any thoughts on how we could improve that, while keeping the build-
dependency on the general mpi-default-dev rather than the specific
implementation of MPI?