Opened 12 months ago

Last modified 12 months ago

#68559 assigned defect

openbabel build fails to set correct C++ standard: C++14 is required by eigen3 (at least by -devel)

Reported by: barracuda156 Owned by: reneeotten (Renee Otten)
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: Cc:
Port: openbabel

Description

Error with eigen3:

:info:build [  8%] Building CXX object src/CMakeFiles/openbabel.dir/builder.cpp.o
:info:build cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/build/src && /opt/local/bin/g++-mp-13 -DHAVE_EIGEN -DHAVE_EIGEN3 -DHAVE_LIBZ -DHAVE_RADPIJSON -DHAVE_SHARED_POINTER -DHAVE_WXWIDGETS -DMAKE_OBDLL -DUSING_DYNAMIC_LIBS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXMAC__ -I/opt/local/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/build/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/openbabel-3.1.1/data -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/openbabel-3.1.1/include -I/opt/local/include/eigen3 -isystem /usr/lib/wx/include/mac-unicode-debug-2.8 -isystem /usr/include/wx-2.8 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++11 -arch ppc -mmacosx-version-min=10.6 -fPIC -MD -MT src/CMakeFiles/openbabel.dir/builder.cpp.o -MF CMakeFiles/openbabel.dir/builder.cpp.o.d -o CMakeFiles/openbabel.dir/builder.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/openbabel-3.1.1/src/builder.cpp
:info:build In file included from /opt/local/include/eigen3/Eigen/Core:19,
:info:build                  from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/openbabel-3.1.1/include/openbabel/distgeom.h:34,
:info:build                  from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_science_openbabel/openbabel/work/openbabel-3.1.1/src/builder.cpp:33:
:info:build /opt/local/include/eigen3/Eigen/src/Core/util/Macros.h:712:2: error: #error This compiler appears to be too old to be supported by Eigen
:info:build   712 | #error This compiler appears to be too old to be supported by Eigen
:info:build       |  ^~~~~

This happens because it requires C++14, while the build uses C++11:

#if EIGEN_MAX_CPP_VER < 14 || EIGEN_COMP_CXXVER < 14 || \
  (EIGEN_COMP_MSVC && EIGEN_COMP_MSVC < 1900) || \
  (EIGEN_COMP_ICC && EIGEN_COMP_ICC < 1500) || \
  (EIGEN_COMP_NVCC && EIGEN_COMP_NVCC < 80000) || \
  (EIGEN_COMP_CLANG_STRICT && EIGEN_COMP_CLANG < 390) || \
  (EIGEN_COMP_CLANGAPPLE && EIGEN_COMP_CLANGAPPLE < 9000000) || \
  (EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC < 510)
#error This compiler appears to be too old to be supported by Eigen
#endif

Change History (10)

comment:1 Changed 12 months ago by barracuda156

Also, if it actually uses Python for anything, perhaps it should use Macports one:

Found PythonInterp: /usr/bin/python (found version "2.5.1") 
Version 0, edited 12 months ago by barracuda156 (next)

comment:2 Changed 12 months ago by barracuda156

By the way, I can confirm that once C++ standard is set to 14, no more disaster with Eigen.

comment:3 Changed 12 months ago by barracuda156

On a side note, I have opened an issue with Eigen re that silly error, hopefully they gonna fix it: https://gitlab.com/libeigen/eigen/-/issues/2741 It is really confusing atm.

comment:4 in reply to:  2 ; Changed 12 months ago by reneeotten (Renee Otten)

Replying to barracuda156:

By the way, I can confirm that once C++ standard is set to 14, no more disaster with Eigen.

well eigen3 claims itself to be needing CXX11 so if that's indeed correct there should be no need for openbabel to require anything else.

comment:5 in reply to:  1 Changed 12 months ago by reneeotten (Renee Otten)

Replying to barracuda156:

Also, if it actually uses Python for anything, perhaps it should use Macports one:

Found PythonInterp: /usr/bin/python (found version "2.5.1") 
  1. S. And is it correct that is uses system wxWidgets?
    /usr/include/wx-2.8
    

(I am not saying that is wrong; Macports wxWidgets seems to have issues on old systems, so it could be that the old system one is actually preferable. Needs to be verified.)

that indeed doesn't seem right, but I cannot recall having seen that before - I can take a look at some point...

comment:6 Changed 12 months ago by reneeotten (Renee Otten)

with what variants are you installing this - it doesn't install any Python bindings so I don't think it should be using it

comment:7 in reply to:  4 Changed 12 months ago by barracuda156

Replying to reneeotten:

Replying to barracuda156:

By the way, I can confirm that once C++ standard is set to 14, no more disaster with Eigen.

well eigen3 claims itself to be needing CXX11 so if that's indeed correct there should be no need for openbabel to require anything else.

I have quoted eigen3 header above: the current version does require C++14. Possibly, the older one is at C++11.

UPD. However, since Macports has eigen3-devel port, either C++14 should be used across the board or at least conditionally.

Last edited 12 months ago by barracuda156 (previous) (diff)

comment:8 in reply to:  6 Changed 12 months ago by barracuda156

Replying to reneeotten:

with what variants are you installing this - it doesn't install any Python bindings so I don't think it should be using it

Whatever default was. I think CMake does not use Python, just checked for it.

comment:9 Changed 12 months ago by barracuda156

So it looks like gui is not default, so no wxWidgets should have been used, but the linking flag is still passed.

Also wxWidgets-3.2 is definitely broken on old systems atm; if it support 2.8 or 3.0, it should be conditionally preferred. (May not save PowerPC, as of now, but should help older Intel.)

Last edited 12 months ago by barracuda156 (previous) (diff)

comment:10 Changed 12 months ago by barracuda156

Summary: openbabel build fails to set correct C++ standard: C++14 is required due to Eigenopenbabel build fails to set correct C++ standard: C++14 is required by eigen3 (at least by -devel)
Note: See TracTickets for help on using tickets.