OPM / opm-core

Collection of utilities, solvers and other components.
http://www.opm-project.org
GNU General Public License v3.0
44 stars 50 forks source link

cmake build system fails in FindSuiteSparse #130

Closed andlaus closed 11 years ago

andlaus commented 11 years ago

During enablement of CDash, I tried out the new cmake build system (using the 'cmake' branch) on openSUSE Tumbleweed.

It failed and produced the following logfiles:

http://poware.org/opm-core/CMakeError.log http://poware.org/opm-core/CMakeOutput.log

(BTW: does anybody know if there is a more convenient way to attach files to the github bugtracker than gists?) The output on the terminal was the following:

lauser@jabba:/temp/lauser/build/opm-core > cmake ~/src/opm-core/ -- The C compiler identification is GNU 4.7.1 -- The CXX compiler identification is GNU 4.7.1 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Build type: Debug -- Performing Test HAVE_C99 -- Performing Test HAVE_C99 - Success -- Found C99: -std=c99
-- Checking to see if CXX compiler accepts flag -std=c++11 -- Checking to see if CXX compiler accepts flag -std=c++11 - yes -- Performing Test HAVE_NULLPTR -- Performing Test HAVE_NULLPTR - Success -- Performing Test HAVE_ARRAY -- Performing Test HAVE_ARRAY - Success -- Performing Test HAVE_INTEGRAL_CONSTANT -- Performing Test HAVE_INTEGRAL_CONSTANT - Success -- Performing Test HAVE_ATTRIBUTE_ALWAYS_INLINE -- Performing Test HAVE_ATTRIBUTE_ALWAYS_INLINE - Success -- Performing Test HAS_ATTRIBUTE_UNUSED -- Performing Test HAS_ATTRIBUTE_UNUSED - Success -- Performing Test HAS_ATTRIBUTE_DEPRECATED -- Performing Test HAS_ATTRIBUTE_DEPRECATED - Success -- Performing Test HAS_ATTRIBUTE_DEPRECATED_MSG -- Performing Test HAS_ATTRIBUTE_DEPRECATED_MSG - Success -- Performing Test HAVE_STATIC_ASSERT -- Performing Test HAVE_STATIC_ASSERT - Success -- Performing Test HAVE_VARIADIC_TEMPLATES -- Performing Test HAVE_VARIADIC_TEMPLATES - Success -- Performing Test HAVE_VARIADIC_CONSTRUCTOR_SFINAE -- Performing Test HAVE_VARIADIC_CONSTRUCTOR_SFINAE - Success -- Performing Test HAVE_RVALUE_REFERENCES -- Performing Test HAVE_RVALUE_REFERENCES - Success -- Looking for C++ include tuple -- Looking for C++ include tuple - found -- Looking for C++ include tr1/tuple -- Looking for C++ include tr1/tuple - found -- Looking for C++ include type_traits -- Looking for C++ include type_traits - found -- Looking for C++ include tr1/type_traits -- Looking for C++ include tr1/typetraits - found -- Looking for sgemm -- Looking for sgemm_ - found -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthreadcreate in pthread - found -- Found Threads: TRUE
-- A library with BLAS API found. -- A library with BLAS API found. -- Looking for cheev
-- Looking for cheev_ - found -- A library with LAPACK API found. CMake Error at cmake/Modules/FindSuiteSparse.cmake:153 (list): list sub-command REMOVE_DUPLICATES requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:53 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:154 (list): list sub-command REVERSE requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:53 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:155 (list): list sub-command REMOVE_DUPLICATES requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:53 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:156 (list): list sub-command REVERSE requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:53 (find_and_append_package_list)

-- Could NOT find SuiteSparse (missing: SuiteSparse_LIBRARIES SuiteSparse_INCLUDE_DIRS) -- Performing Test HAVE_MEM_USAGE_T_EXPANSIONS -- Performing Test HAVE_MEM_USAGE_T_EXPANSIONS - Failed -- Performing Test SUPERLU_MIN_VERSION_4_3 -- Performing Test SUPERLU_MIN_VERSION_4_3 - Failed -- Performing Test SUPERLU_POST_2005_VERSION -- Performing Test SUPERLU_POST_2005_VERSION - Failed -- Could NOT find SuperLU (missing: SUPERLU_INCLUDE_DIR SUPERLU_LIBRARY) -- Found LibXml2: /usr/lib64/libxml2.so (found version "2.7.8") -- Boost version: 1.49.0 -- Found the following Boost libraries: -- date_time -- filesystem -- system -- unit_test_framework -- A library with BLAS API found. -- Found PkgConfig: /usr/bin/pkg-config (found version "0.25") -- Performing Test HAVE_DUNE_COMMON -- Performing Test HAVE_DUNE_COMMON - Failed CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:97 (message): Could NOT find dune-common (missing: _req_vars) Call Stack (most recent call first): /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE) cmake/Modules/OpmPackage.cmake:164 (find_package_handle_standard_args) cmake/Modules/Finddune-common.cmake:14 (find_opm_package) cmake/Modules/OpmPackage.cmake:69 (find_package) cmake/Modules/Finddune-istl.cmake:14 (find_opm_package) cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:53 (find_and_append_package_list)

-- Configuring incomplete, errors occurred!

andlaus commented 11 years ago

It seems like this is an issue with the FindSuiteSparse macro. I would normally investigate this myself, but I'm currently a bit short on time since I want to finish my thesis...

rolk commented 11 years ago

This error message stems from some path being blank and then tripping up the CMake parser. However, the log also refers to the variable _req_vars, which is not used since commit 11f3314d2d7b918ad09847ec477c5afa047732ed; are you sure this is the latest version? (git log -1 --pretty=format:"%h")

andlaus commented 11 years ago

nope, I'm not sure. Did you push your changes into cmake branch of the main repo?

andlaus commented 11 years ago

strange, I don't see this issue appearing in opm-core's issue list...

andlaus commented 11 years ago

okay, I somehow screwed it up. now I hope that I didn't, but it still does not work. I've updated the logfiles on poware.org and that's the new output:

lauser@jabba:/temp/lauser/build/opm-core > cmake ~/src/opm-core -- The C compiler identification is GNU 4.7.1 -- The CXX compiler identification is GNU 4.7.1 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Build type: Debug
-- Performing Test HAVE_C99
-- Performing Test HAVE_C99 - Success
-- Found C99: -std=c99
-- Checking to see if CXX compiler accepts flag -std=c++11
-- Checking to see if CXX compiler accepts flag -std=c++11 - yes
-- Performing Test HAVE_NULLPTR
-- Performing Test HAVE_NULLPTR - Success
-- Performing Test HAVE_ARRAY
-- Performing Test HAVE_ARRAY - Success
-- Performing Test HAVE_INTEGRAL_CONSTANT
-- Performing Test HAVE_INTEGRAL_CONSTANT - Success
-- Performing Test HAVE_ATTRIBUTE_ALWAYS_INLINE
-- Performing Test HAVE_ATTRIBUTE_ALWAYS_INLINE - Success
-- Performing Test HAS_ATTRIBUTE_UNUSED
-- Performing Test HAS_ATTRIBUTE_UNUSED - Success
-- Performing Test HAS_ATTRIBUTE_DEPRECATED
-- Performing Test HAS_ATTRIBUTE_DEPRECATED - Success
-- Performing Test HAS_ATTRIBUTE_DEPRECATED_MSG
-- Performing Test HAS_ATTRIBUTE_DEPRECATED_MSG - Success
-- Performing Test HAVE_STATIC_ASSERT
-- Performing Test HAVE_STATIC_ASSERT - Success
-- Performing Test HAVE_VARIADIC_TEMPLATES
-- Performing Test HAVE_VARIADIC_TEMPLATES - Success
-- Performing Test HAVE_VARIADIC_CONSTRUCTOR_SFINAE
-- Performing Test HAVE_VARIADIC_CONSTRUCTOR_SFINAE - Success
-- Performing Test HAVE_RVALUE_REFERENCES
-- Performing Test HAVE_RVALUE_REFERENCES - Success
-- Looking for C++ include tuple
-- Looking for C++ include tuple - found -- Looking for C++ include tr1/tuple -- Looking for C++ include tr1/tuple - found -- Looking for C++ include type_traits -- Looking for C++ include type_traits - found -- Looking for C++ include tr1/type_traits -- Looking for C++ include tr1/typetraits - found -- Looking for sgemm -- Looking for sgemm_ - found -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthreadcreate in pthread - found -- Found Threads: TRUE
-- A library with BLAS API found. -- A library with BLAS API found. -- Looking for cheev
-- Looking for cheev_ - found -- A library with LAPACK API found. CMake Error at cmake/Modules/FindSuiteSparse.cmake:153 (list): list sub-command REMOVE_DUPLICATES requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:62 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:154 (list): list sub-command REVERSE requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:62 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:155 (list): list sub-command REMOVE_DUPLICATES requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:62 (find_and_append_package_list)

CMake Error at cmake/Modules/FindSuiteSparse.cmake:156 (list): list sub-command REVERSE requires list to be present. Call Stack (most recent call first): cmake/Modules/OpmFind.cmake:69 (find_package) cmake/Modules/OpmFind.cmake:98 (find_and_append_package_to) cmake/Modules/OpmFind.cmake:104 (find_and_append_package_list_to) CMakeLists.txt:62 (find_and_append_package_list)

-- Could NOT find SuiteSparse (missing: SuiteSparse_LIBRARIES SuiteSparse_INCLUDE_DIRS) -- Performing Test HAVE_MEM_USAGE_T_EXPANSIONS -- Performing Test HAVE_MEM_USAGE_T_EXPANSIONS - Failed -- Performing Test SUPERLU_MIN_VERSION_4_3 -- Performing Test SUPERLU_MIN_VERSION_4_3 - Failed -- Performing Test SUPERLU_POST_2005_VERSION -- Performing Test SUPERLU_POST_2005_VERSION - Failed -- Could NOT find SuperLU (missing: SUPERLU_INCLUDE_DIR SUPERLU_LIBRARY) -- Found PkgConfig: /usr/bin/pkg-config (found version "0.25") -- Performing Test HAVE_TINYXML -- Performing Test HAVE_TINYXML - Failed -- Could NOT find TinyXML (missing: TinyXML_INCLUDE_DIR TinyXML_LIBRARY) -- Boost version: 1.49.0 -- Found the following Boost libraries: -- date_time -- filesystem -- system -- unit_test_framework -- A library with BLAS API found. -- Performing Test HAVE_DUNE_COMMON -- Performing Test HAVE_DUNE_COMMON - Failed -- Could NOT find SuperLU (missing: SUPERLU_INCLUDE_DIR SUPERLU_LIBRARY) -- Performing Test HAVE_DUNE_ISTL -- Performing Test HAVE_DUNE_ISTL - Failed -- Could NOT find dune-istl (missing: dune-istl_INCLUDE_DIR) -- Looking for isfinite -- Looking for isfinite - found -- Looking for glob -- Looking for glob - found -- Looking for fork -- Looking for fork - found -- Looking for getuid -- Looking for getuid - found -- Looking for lockf -- Looking for lockf - found -- Looking for opendir -- Looking for opendir - found -- Looking for readlinkat -- Looking for readlinkat - found -- Looking for symlink -- Looking for symlink - found -- Looking for va_copy -- Looking for va_copy - found -- Try OpenMP C flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Success -- Try OpenMP CXX flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Success -- Found OpenMP: -fopenmp
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7") -- A library with BLAS API found. -- A library with BLAS API found. -- A library with LAPACK API found. -- Could NOT find ERT (missing: ERT_INCLUDE_DIR ERT_LIBRARY HAVE_ERT) -- Generating debug symbols: -ggdb3 -- Looking for strip utility -- Looking for strip utility - found -- Checking to see if CXX compiler accepts flag -flto -- Checking to see if CXX compiler accepts flag -flto - yes -- Checking to see if CXX compiler accepts flag -mtune=native -- Checking to see if CXX compiler accepts flag -mtune=native - yes -- All warnings enabled: -Wall -- Performing Test HAVE_DYNAMIC_BOOST_TEST -- Performing Test HAVE_DYNAMIC_BOOST_TEST - Success -- Could NOT find AGMG (missing: AGMG_SOURCES CMAKE_Fortran_COMPILER_SUPPORTS_F90) -- Writing config file "/temp/lauser/build/opm-core/config.h"... -- Fortran/C interface not activated -- Writing config file "/temp/lauser/build/opm-core/opm-core-config.cmake"... -- This build defaults to installing in /usr/local -- Writing config file "/temp/lauser/build/opm-core/opm-core-install.cmake"... -- AGMG test disabled, since AGMG is not found. -- ERT test disabled, since ERT is not found. -- Found Doxygen: /usr/bin/doxygen (found version "1.8.1") -- Configuring incomplete, errors occurred!

rolk commented 11 years ago

There was still a bug in FindSuiteSparse.cmake, which doesn't quite use the same infrastructure as the other modules; this bug should now be fixed in commit a2189fa9ac0b3682e9606c8a8380b8d13fecfc33, pushed just a minute ago.

However, the underlaying issue is that it cannot find umfpack on your system (or dune-istl or AGMG, so you don't have any solvers). If you followed the README, there is an issue with the command, it should be:

sudo zypper in libumfpack

(perhaps also after enabling the science.repo; I haven't tested it -- maybe Iris can chime in)

andlaus commented 11 years ago

thanks, now cmake works (I've updated the logfiles as usual), but compilation fails:

lauser@jabba:/temp/lauser/build/opm-core > make [ 2%] Built target opmcore_CXX_pch [ 3%] [ 4%] [ 6%] [ 4%] [ 6%] Building C object CMakeFiles/opmcore.dir/opm/core/pressure/mimetic/hybsys.c.o Building C object CMakeFiles/opmcore.dir/opm/core/linalg/call_umfpack.c.o Building C object CMakeFiles/opmcore.dir/opm/core/linalg/sparse_sys.c.o Building C object CMakeFiles/opmcore.dir/opm/core/pressure/mimetic/hybsys_global.c.o Building C object CMakeFiles/opmcore.dir/opm/core/pressure/mimetic/mimetic.c.o /home/lh2/lauser/src/opm-core/opm/core/linalg/call_umfpack.c:39:33: fatal error: suitesparse/umfpack.h: No such file or directory compilation terminated. make[3]: * [CMakeFiles/opmcore.dir/opm/core/linalg/call_umfpack.c.o] Error 1 make[3]: * Waiting for unfinished jobs.... make[2]: * [CMakeFiles/opmcore.dir/all] Error 2 make[1]: * [all] Error 2 make: *\ [__everything] Error 2

I've also verified that I've umfpack installed:

root@jabba:/temp/lauser/src/opm-coreformattedGitBranch: command not found > zypper se umfpack Loading repository data... Reading installed packages...

S | Name | Summary | Type
--+------------------------------------+------------------------------------------------------+----------- i | libumfpack-5_6_0 | Sparse Multifrontal LU Factorization | package
| libumfpack-5_6_0-debuginfo | Debug information for package libumfpack-5_6_0 | package
i | libumfpack-5_6_1 | Sparse Multifrontal LU Factorization | package

andlaus commented 11 years ago

Okay, I've found out that I need to install suitesparse-devel:

zypper in suitesparse-devel

maybe it is a good idea to adapt the FindSuiteSparse macro accordingly...

rolk commented 11 years ago

maybe it is a good idea to adapt the FindSuiteSparse macro accordingly...

Documentation you mean? I don't see how FindSuiteSparse can be adapted; it already claims you don't have the necessary library installed.

andlaus commented 11 years ago

Documentation you mean? I don't see how FindSuiteSparse can be adapted; it already claims you don't have the necessary library installed.

possibly documentation, or an #if around the suitesparse dependent bits of code. (OPM-core is useful without a linear solver as well, e.g. for the eclipse parser.)

rolk commented 11 years ago

or an #if around the suitesparse dependent bits of code

That one should be solved by commit 99120d88384741559b073ff67f2a3965aeda805b

andlaus commented 11 years ago

Confirmed. The library compiles cleanly now, only the tests fail to compile, but I suppose that's a minor issue:

lauser@jabba:~/build/opm-core > make tests [ 82%] Built target opmcore [ 83%] [ 84%] [ 85%] [ 86%] Built target test_wells [ 87%] Building C object CMakeFiles/test_cfs_tpfa.dir/tests/test_cfs_tpfa.c.o Built target test_column_extract Built target sparsetable_test Built target monotcubicinterpolator_test /home/lh2/lauser/src/opm-core/tests/test_cfs_tpfa.c:6:33: fatal error: suitesparse/umfpack.h: No such file or directory compilation terminated. make[4]: * [CMakeFiles/test_cfs_tpfa.dir/tests/test_cfs_tpfa.c.o] Error 1 make[3]: * [CMakeFiles/test_cfs_tpfa.dir/all] Error 2 make[3]: * Waiting for unfinished jobs.... [ 88%] [ 88%] [ 89%] Built target sparsevector_test Built target test_wachspresscoord Built target test_sf2p [ 90%] Built target test_read_vag make[2]: * [CMakeFiles/tests.dir/rule] Error 2 make[1]: * [tests] Error 2 make: * [__everything] Error 2

rolk commented 11 years ago

only the tests fail to compile

The entire tests/ directory is revamped due to issue #128; that particular bug incidently goes away (because the program is not a proper unit test; when it is converted to one, we should think about selectively disabling it)