Compilation Issues on Centos 7

Asked by Daniel Kiracofe on 2019-11-23

Hi I'm contemplating using YADE for a research project. We have a high performance cluster at my university and I want to run YADE on that. The cluster uses Centos 7 (it's a little dated I know but that's what they've got). Trying to compile the code and getting an issue. Here is the error message:

[ 13%] Building CXX object CMakeFiles/yade.dir/pkg/common/ForceEngine.cpp.o
In file included from /usr/include/boost/random/detail/integer_log2.hpp:19:0,
                 from /usr/include/boost/random/detail/large_arithmetic.hpp:19,
                 from /usr/include/boost/random/detail/const_mod.hpp:23,
                 from /usr/include/boost/random/linear_congruential.hpp:30,
                 from /root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp:13:
/usr/include/boost/pending/integer_log2.hpp:7:2: error: stray ‘#’ in program
 BOOST_HEADER_DEPRECATED("<boost/integer/integer_log2.hpp>");
  ^
line-map.c: file "/usr/include/boost/random/detail/large_arithmetic.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/detail/large_arithmetic.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/detail/large_arithmetic.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/detail/const_mod.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/detail/const_mod.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/detail/const_mod.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/linear_congruential.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/linear_congruential.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/linear_congruential.hpp" left but not entered
line-map.c: file "/usr/include/boost/random/linear_congruential.hpp" left but not entered
line-map.c: file "/root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp" left but not entered
line-map.c: file "/root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp" left but not entered
line-map.c: file "/root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp" left but not entered
In file included from /usr/include/boost/random/detail/integer_log2.hpp:19:0,
                 from /usr/include/boost/random/detail/large_arithmetic.hpp:19,
                 from /usr/include/boost/random/detail/const_mod.hpp:23,
                 from /usr/include/boost/random/linear_congruential.hpp:30,
                 from /root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp:13:
/usr/include/boost/pending/integer_log2.hpp:7:97: note: #pragma message: This header is deprecated. Use <boost/integer/integer_log2.hpp> instead.
 BOOST_HEADER_DEPRECATED("<boost/integer/integer_log2.hpp>");
                                                                                                 ^
In file included from /usr/include/boost/random/detail/integer_log2.hpp:19:0,
                 from /usr/include/boost/random/detail/large_arithmetic.hpp:19,
                 from /usr/include/boost/random/detail/const_mod.hpp:23,
                 from /usr/include/boost/random/linear_congruential.hpp:30,
                 from /root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp:13:
/usr/include/boost/pending/integer_log2.hpp:7:4: error: expected unqualified-id before numeric constant
 BOOST_HEADER_DEPRECATED("<boost/integer/integer_log2.hpp>");
    ^
In file included from /usr/include/boost/random/detail/integer_log2.hpp:21:0,
                 from /usr/include/boost/random/detail/large_arithmetic.hpp:19,
                 from /usr/include/boost/random/detail/const_mod.hpp:23,
                 from /usr/include/boost/random/linear_congruential.hpp:30,
                 from /root/yade_2019.01a/trunk/pkg/common/ForceEngine.cpp:13:
/usr/include/boost/random/detail/disable_warnings.hpp:27:28: error: expected declaration before end of line
 #pragma GCC diagnostic push
                            ^
make[2]: *** [CMakeFiles/yade.dir/pkg/common/ForceEngine.cpp.o] Error 1
make[1]: *** [CMakeFiles/yade.dir/all] Error 2
make: *** [all] Error 2

I tried the 2019.01a release as well as a git clone of the most recent trunk and both gave the same error.

Looks like some issue related to boost library. I have installed version 1.69 from the RHEL EPEL 7 release library (again I know thats a little dated, but its the most recent one available for Centos 7... would like to avoid compiling boost myself if I have to). GCC version is 4.8.5

For what it's worth, the cmake configuration is here:
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found unsuitable Qt version "" from NOTFOUND
-- Version is set to 2019.01a
-- Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY OPENGL_INCLUDE_DIR)
-- GSL using pkgconfig
-- WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig
-- PKGCONFIG() indicates that gts is not installed (install the package which contains gts.pc if you want to support this feature)
FindGTS.cmake: gts-config/pkg-config gts not found. Please set it manually. GTS_CONFIG=GTS_CONFIG-NOTFOUND
-- ERROR: GTS was not found.
-- Could NOT find GL2PS (missing: GL2PS_LIBRARY GL2PS_INCLUDE_DIR)
-- CGAL not found.
-- GCC Version >= 4.8. Adding -ftrack-macro-expansion=0
-- GCC Version >= 4.8. Adding -save-temps
-- Boost_VERSION: 106900
-- Boost_LIB_VERSION: 1_69
-- Boost_INCLUDE_DIRS: /usr/include
-- Boost_LIBRARIES: /usr/lib64/libboost_python.so/usr/lib64/libboost_thread.sopthread/usr/lib64/libboost_filesystem.so/usr/lib64/libboost_iostreams.so/usr/lib64/libboost_regex.so/usr/lib64/libboost_serialization.so/usr/lib64/libboost_system.so/usr/lib64/libboost_date_time.so/usr/lib64/libboost_chrono.so/usr/lib64/libboost_atomic.so
-- Found Eigen3, version: 3.3.7
-- Disable vectorization
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP
-- GSL using pkgconfig
-- WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig
-- PKGCONFIG() indicates that gts is not installed (install the package which contains gts.pc if you want to support this feature)
FindGTS.cmake: gts-config/pkg-config gts not found. Please set it manually. GTS_CONFIG=GTS_CONFIG-NOTFOUND
-- ERROR: GTS was not found.
-- Checking for one of the modules 'glib-2.0'
-- GTS NOT found
-- GMP libs: /usr/lib64/libgmp.so /usr/lib64/libgmpxx.so
-- CGAL not found.
-- GMP libs: /usr/lib64/libgmp.so /usr/lib64/libgmpxx.so
-- CGAL NOT found
-- CGAL NOT found: PFVFLOW and TWOPHASEFLOW disabled
-- Could NOT find Cholmod (missing: CHOLMOD_LIBRARIES CHOLMOD_INCLUDE_DIR AMD_LIBRARY CAMD_LIBRARY COLAMD_LIBRARY CCOLAMD_LIBRARY)
-- Could NOT find Metis (missing: METIS_INCLUDE_DIR METIS_LIBRARY)
-- Missing dependency for LINSOLV, disabled
-- Could NOT find GL2PS (missing: GL2PS_LIBRARY GL2PS_INCLUDE_DIR)
-- GL2PS NOT found
LBMFLOW is still experimental, building and running LBM engine are at your own risk!
Yade will be installed to /root/yade_2019.01a/install
-- Suffix is set to -2019.01a
-- LIBRARY_OUTPUT_PATH is set to lib64
-- runtimePREFIX is set to /root/yade_2019.01a/install
-- Found tkinter: /usr/lib64/python3.6/tkinter
-- ===========================================================
-- Yade configured with following features: Odeint OpenMP TWOPHASEFLOW LBMFLOW
-- Disabled features: VTK GTS GUI CGAL PFVFLOW TWOPHASEFLOW LINSOLV SPH DEFORM LIQMIGRATION GL2PS MASK_ARBITRARY THERMAL PROFILING PotentialParticles PotentialBlocks
-- Optimized build
-- ===========================================================
-- Configuring done
-- Generating done
-- Build files have been written to: /root/yade_2019.01a/build

I'm happy to provide any other information that would help to debug. Any assistance is appreciated.

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Daniel Kiracofe
Solved:
2019-12-05
Last query:
2019-12-05
Last reply:
Daniel Kiracofe (kiracodl) said : #1

Answering my own question in case anyone else has the same problem. I finally fixed this by removing the CentOS boost package (1.69), downloading and compiling the latest boost package (1.71) directly from the source. This worked. I don't know if this represents a bug in YADE, a bug in Boost, or a problem with the CentOS packaging. One way or the other it worked.