Skip to content

Clang 8 Updates, master branch (2019.10.28.)

These are all the updates I had to make to be able to compile the AthenaExternals project using Clang 8 from /cvmfs/sft.cern.ch on CentOS 7.

First off, I updated the platform naming code to designate these builds as x86_64-centos7-clang8-opt. Because ever since Clang 4 the naming convention in LLVM is the same as what GCC adopted with GCC 7.

Then, since LCG_96 doesn't provide gperftools for the x86_64-centos7-clang8-opt platform, I had to teach the package how to deal with this.

Finally, and this was the most painful, I had to figure out how to compile Acts with Clang 8. Since Acts makes use of some "complicated enough" language features that Clang can just not handle when using GCC 8.2.0's standard library implementation. (This is the standard setup for Clang 8 that one gets with asetup none,clang8...) First off, one needs to make sure that the build does not use GCC 8.2.0's standard library, but that of GCC 8.3.0. This can be achieved with

export CXXFLAGS="--gcc-toolchain=/cvmfs/sft.cern.ch/lcg/contrib/gcc/8.3.0binutils/x86_64-centos7"

, before configuring the build of AthenaExternals.

But then I also had to add a patch that works around some issues with using std::reference_wrapper<std::any> in the code. (The GCC standard library implementation falls back on this type in some complicated way when interpreting the Acts code, and Clang just really doesn't like that implementation... 😦)

@pagessin, please have a look. It's really just a dirty hack that I've put in, but it seemed "good enough" for this exercise. However I'm very interested in any feedback.

This is all work for reviving the Clang nightlies of Athena, as discussed in ATLINFR-2904.

Merge request reports