ADIOS2 icon indicating copy to clipboard operation
ADIOS2 copied to clipboard

ADIOS 2.7.0: Configuration errors with CMake 3.12 or 3.13

Open dqwu opened this issue 4 years ago • 1 comments

The minimum CMake version required by ADIOS 2.7.0 is 3.12 cmake_minimum_required(VERSION 3.12)

However, some errors occurred when configuring ADIOS 2.7.0 with CMake 3.12 or 3.13. CMake 3.14 or higher versions work.

It seems that ADIOS 2.7.0 needs to require CMake 3.14 as the minimum version for configuration.

This issue is reproducible on ANL Blues cluster and some other DOE supercomputers.

Steps to reproduce this issue on a login node of blues.lcrc.anl.gov:

module load cmake/3.13.4-354d6wl

wget https://github.com/ornladios/ADIOS2/archive/v2.7.0.tar.gz
tar zxf v2.7.0.tar.gz

cd ADIOS2-2.7.0
mkdir build
cd build

CC=mpicc CXX=mpicxx FC=mpif90 \
cmake -DCMAKE_INSTALL_PREFIX=/path/to/adios/installation \
-DBUILD_SHARED_LIBS=OFF \
-DADIOS2_BUILD_EXAMPLES=OFF \
-DADIOS2_BUILD_TESTING=OFF \
-DADIOS2_USE_Blosc=OFF \
-DADIOS2_USE_BZip2=OFF \
-DADIOS2_USE_ZFP=OFF \
-DADIOS2_USE_SZ=OFF \
-DADIOS2_USE_MGARD=OFF \
-DADIOS2_USE_PNG=OFF \
-DADIOS2_USE_DataMan=OFF \
-DADIOS2_USE_DataSpaces=OFF \
-DADIOS2_USE_SSC=OFF \
-DADIOS2_USE_Table=OFF \
-DADIOS2_USE_SST=OFF \
-DADIOS2_USE_ZeroMQ=OFF \
-DADIOS2_USE_HDF5=OFF \
-DADIOS2_USE_Python=OFF \
-DADIOS2_USE_Fortran=OFF \
-DADIOS2_USE_Profiling=OFF \
..

Error messages in CMakeError.log:

Run Build Command:"/usr/bin/gmake" "cmTC_ba17a/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_ba17a.dir/build.make CMakeFiles/cmTC_ba17a.dir/build
gmake[1]: Entering directory `ADIOS2-2.7.0/build/thirdparty/KWSys/adios2sys/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_ba17a.dir/kwsysPlatformTestsCXX.cxx.o
/blues/gpfs/home/software/spack-0.10.1/opt/spack/linux-centos7-x86_64/intel-17.0.4/intel-mpi-2017.3-dfphq6kavje2olnichisvjjndtridrok/compilers_and_libraries_2017.4.196/linux/mpi/intel64/bin/mpicxx  -DTEST_KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H  -w  -fPIE   -std=gnu++11 -o CMakeFiles/cmTC_ba17a.dir/kwsysPlatformTestsCXX.cxx.o -c ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx
ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx: In function ‘int main()’:
ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx:53:13: error: ‘environ’ was not declared in this scope
   char* e = environ[0];
             ^
gmake[1]: *** [CMakeFiles/cmTC_ba17a.dir/kwsysPlatformTestsCXX.cxx.o] Error 1
gmake[1]: Leaving directory `ADIOS2-2.7.0/build/thirdparty/KWSys/adios2sys/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_ba17a/fast] Error 2


Checking whether CXX compiler struct stat has st_mtimespec member failed to compile with the following output:
Change Dir: ADIOS2-2.7.0/build/thirdparty/KWSys/adios2sys/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/gmake" "cmTC_81e7c/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_81e7c.dir/build.make CMakeFiles/cmTC_81e7c.dir/build
gmake[1]: Entering directory `ADIOS2-2.7.0/build/thirdparty/KWSys/adios2sys/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_81e7c.dir/kwsysPlatformTestsCXX.cxx.o
/blues/gpfs/home/software/spack-0.10.1/opt/spack/linux-centos7-x86_64/intel-17.0.4/intel-mpi-2017.3-dfphq6kavje2olnichisvjjndtridrok/compilers_and_libraries_2017.4.196/linux/mpi/intel64/bin/mpicxx  -DTEST_KWSYS_CXX_STAT_HAS_ST_MTIMESPEC  -w  -fPIE   -std=gnu++11 -o CMakeFiles/cmTC_81e7c.dir/kwsysPlatformTestsCXX.cxx.o -c ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx
ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx: In function ‘int main()’:
ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx:26:15: error: ‘struct stat’ has no member named ‘st_mtimespec’
   (void)stat1.st_mtimespec.tv_sec;
               ^
ADIOS2-2.7.0/thirdparty/KWSys/adios2sys/kwsysPlatformTestsCXX.cxx:27:15: error: ‘struct stat’ has no member named ‘st_mtimespec’
   (void)stat1.st_mtimespec.tv_nsec;
               ^
gmake[1]: *** [CMakeFiles/cmTC_81e7c.dir/kwsysPlatformTestsCXX.cxx.o] Error 1
gmake[1]: Leaving directory `ADIOS2-2.7.0/build/thirdparty/KWSys/adios2sys/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_81e7c/fast] Error 2

dqwu avatar Jan 22 '21 19:01 dqwu

Have you tried not using the MPI compiler wrappers? The way CMake interacts with MPI it's expected that you use the "regular" compilers, letting CMake figure out the necessary MPI bits.

chuckatkins avatar Jan 27 '21 13:01 chuckatkins