The code is in petscsys.h. The flags HAVE_OMPI_MAJOR_VERSION etc should not be set [if the version cannot be determined]
So perhaps the attached patch is the fix. patch -Np1 < mpi-version-check.patch Satish On Thu, 11 Jun 2015, Matthew Knepley wrote: > On Thu, Jun 11, 2015 at 7:04 AM, Florian Lindner <mailingli...@xgm.de> > wrote: > > > configure.log is attached. > > > > Ah, you have the buggy Apple preprocessor, so you get > > Unable to parse OpenMPI version from header. Probably a > buggy preprocessor > Defined "HAVE_OMPI_MAJOR_VERSION" to "unknown" > Defined "HAVE_OMPI_MINOR_VERSION" to "unknown" > Defined "HAVE_OMPI_RELEASE_VERSION" to "unknown" > > In the new release, we catch this. However, I think then the make check > fails. > > Satish, how is the make check for this version number done? > > Thanks, > > Matt > > > > Thx! > > Florian > > > > Am Donnerstag, 11. Juni 2015, 06:26:27 schrieb Matthew Knepley: > > > Cannot tell without configure.log > > > > > > Thanks, > > > > > > Matt > > > > > > On Thu, Jun 11, 2015 at 6:23 AM, Florian Lindner <mailingli...@xgm.de> > > > wrote: > > > > > > > Hello, > > > > > > > > I try to setup petsc on my Arch Linux box. Download it using git -b > > maint. > > > > > > > > % python2 configure works fine: > > > > [...] > > > > Compilers: > > > > C Compiler: mpicc -fPIC -Wall -Wwrite-strings > > > > -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0 > > > > C++ Compiler: mpicxx -Wall -Wwrite-strings > > -Wno-strict-aliasing > > > > -Wno-unknown-pragmas -g -O0 -fPIC > > > > Fortran Compiler: mpif90 -fPIC -Wall -Wno-unused-variable > > > > -ffree-line-length-0 -g -O0 > > > > Linkers: > > > > Shared linker: mpicc -shared -fPIC -Wall -Wwrite-strings > > > > -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0 > > > > Dynamic linker: mpicc -shared -fPIC -Wall -Wwrite-strings > > > > -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0 > > > > make: > > > > [...] > > > > > > > > > > xxx=========================================================================xxx > > > > Configure stage complete. Now build PETSc libraries with (gnumake > > build): > > > > make PETSC_DIR=/home/florian/software/petsc > > > > PETSC_ARCH=arch-linux2-c-debug all > > > > > > > > > > xxx=========================================================================xxx > > > > > > > > Now building: > > > > > > > > % make PETSC_DIR=/home/florian/software/petsc > > > > PETSC_ARCH=arch-linux2-c-debug all > > > > > > > > yields this error: > > > > > > > > "PETSc was configured with one OpenMPI mpi.h version but now appears > > to be > > > > compiling using a different OpenMPI mpi.h version" > > > > > > > > I would prefer to use my distributions openmpi 1.8.5, there is no other > > > > MPI version installed. > > > > > > > > Using configure with --download-mpich and this compiler > > > > /home/florian/software/petsc/arch-linux2-c-debug/bin/mpicc seems to > > work. > > > > > > > > Is openmpi 1.8.5 incompatible with petsc? Is used to work fine some > > time > > > > ago, but I'm not sure how my system changed in the last weeks when I > > > > haven't used petsc on this machine (Arch is a rolling release). > > > > > > > > Thx, > > > > Florian > > > > > > > > > > > > > > > > > > > > > >
diff --git a/config/BuildSystem/config/packages/MPI.py b/config/BuildSystem/config/packages/MPI.py index 042aeeb..3b574f2 100644 --- a/config/BuildSystem/config/packages/MPI.py +++ b/config/BuildSystem/config/packages/MPI.py @@ -434,9 +434,9 @@ class Configure(config.package.Package): buf = self.outputPreprocess(mpich_test) try: mpich_numversion = re.compile('\nint mpich_ver = *([0-9]*) *;').search(buf).group(1) + self.addDefine('HAVE_MPICH_NUMVERSION',mpich_numversion) except: self.logPrint('Unable to parse MPICH version from header. Probably a buggy preprocessor') - self.addDefine('HAVE_MPICH_NUMVERSION',mpich_numversion) elif self.checkCompile(openmpi_test): buf = self.outputPreprocess(openmpi_test) ompi_major_version = ompi_minor_version = ompi_release_version = 'unknown' @@ -444,11 +444,11 @@ class Configure(config.package.Package): ompi_major_version = re.compile('\nint ompi_major = *([0-9]*) *;').search(buf).group(1) ompi_minor_version = re.compile('\nint ompi_minor = *([0-9]*) *;').search(buf).group(1) ompi_release_version = re.compile('\nint ompi_release = *([0-9]*) *;').search(buf).group(1) + self.addDefine('HAVE_OMPI_MAJOR_VERSION',ompi_major_version) + self.addDefine('HAVE_OMPI_MINOR_VERSION',ompi_minor_version) + self.addDefine('HAVE_OMPI_RELEASE_VERSION',ompi_release_version) except: self.logPrint('Unable to parse OpenMPI version from header. Probably a buggy preprocessor') - self.addDefine('HAVE_OMPI_MAJOR_VERSION',ompi_major_version) - self.addDefine('HAVE_OMPI_MINOR_VERSION',ompi_minor_version) - self.addDefine('HAVE_OMPI_RELEASE_VERSION',ompi_release_version) def findMPIInc(self): '''Find MPI include paths from "mpicc -show"''' import re