edf-hpc/verrou

Does not compile with openmpi-4.0.3 (and it seems with any openmpi >= 3.0)

ojamond opened this issue · 2 comments

Hi,

Verrou fails to compile on my ubuntu20.04 where openmpi is 4.0.3. It seems that it fails with any openmpi >= 3.0, as the error message looks like:

>> 1628    /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:322:57: error: expected expression before '_Static_assert'
    1629      322 | #define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(func, newfunc) _Static_assert(0, #func " was removed in MPI-3.0.  Use " #newfunc " instead.")
    1630          |                                                         ^~~~~~~~~~~~~~
    1631    /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:745:45: note: in expansion of macro 'THIS_SYMBOL_WAS_REMOVED_IN_MPI30'
    1632      745 | #        define MPI_COMBINER_STRUCT_INTEGER THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_COMBINER_STRUCT_INTEGER, MPI_COMBINER_STRUCT);
    1633          |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1634    libmpiwrap.c:366:12: note: in expansion of macro 'MPI_COMBINER_STRUCT_INTEGER'
    1635      366 |       case MPI_COMBINER_STRUCT_INTEGER: fprintf(f, "STRUCT_INTEGER"); break;

It works with openmpi-2.1.6.

The spack build also fails for the same reason (the dependency with mpi seems to be missing in the spack package).

Thanks!
Olivier

Thanks @ojamond. Your workaround helps, here is the diff on the spack recipe if it can help others:

--- a/var/spack/repos/builtin/packages/verrou/package.py
+++ b/var/spack/repos/builtin/packages/verrou/package.py
@@ -58,6 +58,7 @@ class Verrou(AutotoolsPackage):
     depends_on('automake', type='build')
     depends_on('libtool', type='build')
     depends_on('m4', type='build')
+    depends_on('openmpi@2.1.6', type='build')
 
     depends_on('python@:2.99.99', when='@1.1.0:2.0.99', type=('build', 'run'))
     depends_on('python@3.0:', when='@2.1.0:', type=('build', 'run'))

It's a problem already reported in the valgrind bugtracker (https://bugs.kde.org/show_bug.cgi?id=420518 )

As verrou do not use the mpi wrapper, you can use old versions of openmpi. For other valgrind tool (memcheck dhar ...) I don't know what are the consequences.