root-project / root-docker

Docker recipes for ROOT
31 stars 33 forks source link

Build with cxx17 #35

Closed vvolkl closed 3 years ago

vvolkl commented 4 years ago

The binaries here are built with cxx11, which means they cannot be used for some software packages that require cxx17. I see that the binaries are just copied from the root download page, so I'm not sure this is the right place, but still, is it possible to switch to cxx17?

chrisburr commented 4 years ago

Someone else might have another solution but the conda based images are built with C++ 17.

eguiraud commented 4 years ago

Hi Valentin, the arch and conda tags are C++17 and the Fedora tag is C++14. The centos7 and ubuntu20.04 tags (the latter is the default one you get with rootproject/root) are C++11.

I assume here you refer to rootproject/root:latest i.e. ubuntu20.04. I think there are good arguments to use it as default tag (it's the only ROOT package we directly control among those that we use to build the images, and Ubuntu is a common default linux flavour). I'll check whether we can move those builds to at least C++14, but if you need C++17 I suggest you switch to a different tag. Would that work for you?

vvolkl commented 4 years ago

Hi Enrico,

yes, indeed, I meant the ubuntu image - sorry for not being more specific about which image I was talking about. That works for me, we can indeed switch to a different tag, but I think also the build works with a root: cxxstd14 / downstreampackage: cxxstd17 situation. Thanks!

eguiraud commented 4 years ago

The Ubuntu 20.04 build should indeed be C++14, it's a known (critical) bug: https://sft.its.cern.ch/jira/browse/ROOT-10692 . This will soon be rectified, so rootproject/root:latest will be C++14. I will close this issue when ROOT-10692 is fixed, does that sound reasonable?

Note that mixing C++ standards works until it doesn't: compilers might introduce ABI incompatibilities, or cling+C++14 might have ABI incompatibilities with, e.g., gcc+C++17 that we don't test for.

eguiraud commented 4 years ago

(the README now mentions which tags support which C++ standard)

eguiraud commented 3 years ago

ROOT 6.24 will be built with C++14 also on Ubuntu20.04.