CMake error trying to build VTK 9.2.0.rc1 with MPI

I’m trying to update the Fedora VTK package to 9.2.0.rc1 and getting the following error:

+ CC=mpicc
+ export CC
+ CXX=mpic++
+ export CXX
+ /usr/bin/cmake -S . -B build-mpich -DCMAKE_C_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_Fortran_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_INSTALL_DO_STRIP:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DLIB_SUFFIX=64 -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_INSTALL_DOCDIR=share/doc/vtk -DCMAKE_INSTALL_JARDIR=share/java -DCMAKE_INSTALL_LIBDIR:PATH=lib64 -DCMAKE_INSTALL_JNILIBDIR:PATH=lib64/vtk -DCMAKE_INSTALL_LICENSEDIR:PATH=share/licenses/vtk -DCMAKE_INSTALL_QMLDIR:PATH=lib64/qt5/qml -DVTK_CUSTOM_LIBRARY_SUFFIX= -DVTK_VERSIONED_INSTALL:BOOL=OFF -DVTK_GROUP_ENABLE_Imaging:STRING=YES -DVTK_GROUP_ENABLE_Qt:STRING=YES -DVTK_GROUP_ENABLE_Rendering:STRING=YES -DVTK_GROUP_ENABLE_StandAlone:STRING=YES -DVTK_GROUP_ENABLE_Views:STRING=YES -DVTK_GROUP_ENABLE_Web:STRING=YES -DVTK_MODULE_ENABLE_VTK_CommonArchive:STRING=YES -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy:STRING=YES -DVTK_MODULE_ENABLE_VTK_GeovisGDAL:STRING=YES -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2:STRING=YES -DVTK_MODULE_ENABLE_VTK_InfovisBoost:STRING=YES -DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms:STRING=YES -DVTK_MODULE_ENABLE_VTK_IOMySQL:STRING=YES -DVTK_PYTHON_VERSION=3 -DVTK_WRAP_JAVA:BOOL=ON -DJAVA_INCLUDE_PATH:PATH=/usr/lib/jvm/java/include -DJAVA_INCLUDE_PATH2:PATH=/usr/lib/jvm/java/include/linux -DJAVA_AWT_INCLUDE_PATH:PATH=/usr/lib/jvm/java/include -DVTK_WRAP_PYTHON:BOOL=ON -DVTK_USE_EXTERNAL=ON -DVTK_MODULE_USE_EXTERNAL_VTK_fmt:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_ioss:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_verdict:BOOL=OFF -DVTK_USE_TK=ON -DBLA_VENDOR=FlexiBLAS -DCMAKE_PREFIX_PATH:PATH=/usr/lib64/mpich -DCMAKE_INSTALL_PREFIX:PATH=/usr/lib64/mpich -DCMAKE_INSTALL_LIBDIR:PATH=lib -DCMAKE_INSTALL_JNILIBDIR:PATH=lib/vtk -DCMAKE_INSTALL_QMLDIR:PATH=lib/qt5/qml -DVTK_USE_MPI:BOOL=ON
-- The C compiler identification is GNU 12.1.1
-- The CXX compiler identification is GNU 12.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/lib64/mpich/bin/mpicc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/lib64/mpich/bin/mpic++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could not use git to determine source version, using version 
-- Performing Test HAVE_GCC_ERROR_RETURN_TYPE
-- Performing Test HAVE_GCC_ERROR_RETURN_TYPE - Success
-- Setting build type to 'Debug' as none was specified.
-- Performing Test VTK_REQUIRE_LARGE_FILE_SUPPORT
-- Performing Test VTK_REQUIRE_LARGE_FILE_SUPPORT - Success
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Checking whether wstring is available
-- Checking whether wstring is available - yes
-- Checking whether C compiler has ptrdiff_t in stddef.h
-- Checking whether C compiler has ptrdiff_t in stddef.h - yes
-- Checking whether C compiler has ssize_t in unistd.h
-- Checking whether C compiler has ssize_t in unistd.h - yes
-- Checking whether C compiler has clock_gettime
-- Checking whether C compiler has clock_gettime - yes
-- Checking whether CXX compiler has setenv
-- Checking whether CXX compiler has setenv - yes
-- Checking whether CXX compiler has unsetenv
-- Checking whether CXX compiler has unsetenv - yes
-- Checking whether CXX compiler has environ in stdlib.h
-- Checking whether CXX compiler has environ in stdlib.h - no
-- Checking whether CXX compiler has utimes
-- Checking whether CXX compiler has utimes - yes
-- Checking whether CXX compiler has utimensat
-- Checking whether CXX compiler has utimensat - yes
-- Checking whether CXX compiler struct stat has st_mtim member
-- Checking whether CXX compiler struct stat has st_mtim member - yes
-- Checking whether CXX compiler struct stat has st_mtimespec member
-- Checking whether CXX compiler struct stat has st_mtimespec member - no
-- Looking for include files sys/types.h, ifaddrs.h
-- Looking for include files sys/types.h, ifaddrs.h - found
-- Checking whether CXX compiler has rlimit64
-- Checking whether CXX compiler has rlimit64 - yes
-- Looking for C++ include execinfo.h
-- Looking for C++ include execinfo.h - found
-- Checking whether backtrace works with this C++ compiler
-- Checking whether backtrace works with this C++ compiler - yes
-- Looking for C++ include dlfcn.h
-- Looking for C++ include dlfcn.h - found
-- Checking whether dladdr works with this C++ compiler
-- Checking whether dladdr works with this C++ compiler - yes
-- Looking for C++ include cxxabi.h
-- Looking for C++ include cxxabi.h - found
-- Checking whether cxxabi works with this C++ compiler
-- Checking whether cxxabi works with this C++ compiler - yes
-- Checking whether CXX compiler has getloadavg
-- Checking whether CXX compiler has getloadavg - yes
-- Checking whether <ext/stdio_filebuf.h> is available
-- Checking whether <ext/stdio_filebuf.h> is available - yes
-- Found utf8cpp: /usr/include/utf8cpp  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Checking for builtin __atomic_add_fetch
-- Checking for builtin __atomic_add_fetch -- success
-- Performing Test VTK_HAS_STD_ISNAN
-- Performing Test VTK_HAS_STD_ISNAN - Success
-- Performing Test VTK_HAS_STD_ISINF
-- Performing Test VTK_HAS_STD_ISINF - Success
-- Performing Test VTK_HAS_STD_ISFINITE
-- Performing Test VTK_HAS_STD_ISFINITE - Success
-- Looking for isnan
-- Looking for isnan - found
-- Looking for isinf
-- Looking for isinf - found
-- Looking for isfinite
-- Looking for isfinite - found
-- Looking for finite
-- Looking for finite - found
-- Looking for fenv.h
-- Looking for fenv.h - found
-- Looking for feenableexcept
-- Looking for feenableexcept - found
-- Looking for getsockname in socket
-- Looking for getsockname in socket - not found
-- Checking for getsockname with socklen_t
-- Checking for getsockname with socklen_t -- 1
-- Looking for SO_REUSEADDR
-- Looking for SO_REUSEADDR - found
-- Performing Test has_std_11_flag
-- Performing Test has_std_11_flag - Success
-- Performing Test has_std_0x_flag
-- Performing Test has_std_0x_flag - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Performing Test FMT_HAS_VARIANT
-- Performing Test FMT_HAS_VARIANT - Success
-- Looking for strtod_l
-- Looking for strtod_l - not found
-- Found double-conversion: /usr/lib64/libdouble-conversion.so  
-- Found LZ4: /usr/lib64/liblz4.so (found version "1.9.3") 
-- Found LZMA: /usr/lib64/liblzma.so (found version "5.2.5") 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11") 
-- Found JPEG: /usr/lib64/libjpeg.so (found version "62") 
-- Found PNG: /usr/lib64/libpng.so (found version "1.6.37") 
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.4.0")  
-- Found Python3: /usr/bin/python3.11 (found suitable version "3.11.0", minimum required is "3.4") found components: Interpreter Development.Module Development.Embed 
-- Performing Test vtk_undefined_symbols_allowed - Failed
-- Found EXPAT: /usr/lib64/libexpat.so (found version "2.4.8") 
-- Found Freetype: /usr/lib64/libfreetype.so (found version "2.12.1") 
-- Found JsonCpp: /usr/lib64/libjsoncpp.so (found suitable version "1.9.5", minimum required is "0.7.0") 
-- Found OpenGL: /usr/lib64/libOpenGL.so  found components: OpenGL GLX 
-- Found X11: /usr/include   
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found GLEW: /usr/lib64/libGLEW.so  
-- Found nlohmann_json: /usr/lib64/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.10.5") 
-- Found LibHaru: /usr/lib64/libhpdf.so (found suitable version "2.3.0-RC2", minimum required is "2.3.0") 
-- Found Eigen3: /usr/include/eigen3 (found version "3.4.0") 
-- Found Boost: /usr/lib64/mpich/lib/cmake/Boost-1.78.0/BoostConfig.cmake (found version "1.78.0")  
-- Found JNI: /usr/lib/jvm/java/lib/libjawt.so  
-- Found HDF5: /usr/lib64/mpich/lib/libhdf5.so (found version "1.12.1") found components: C HL 
CMake Error at ThirdParty/hdf5/CMakeLists.txt:21 (message):
  An external MPI-aware HDF5 requires that VTK be built with MPI support as
  well.

This worked fine for VTK 9.1.0. What has changed?

It seems that VTK_USE_MPI=ON doesn’t guarantee MPI support anymore. I suspect that some “core” MPI support needs detected and added to vtk_requested_modules, not just the group manipulation.

Cc: @Ryan_Krattiger

Does this patch help? https://gitlab.kitware.com/vtk/vtk/-/merge_requests/9322

1 Like

That appears to do the trick. Thanks.

Hello,

If the answer solved the problem, please, mark it as a solution.

thanks,

Paulo