O2 not compiling under Ubuntu 18.04

Dear experts,

Compilation of o2 under Ubuntu 18.04 (gcc 7.4) with fresh build recipes fails in framework (see below). How can this be fixed?

Thanks in advance!

Cheers

Markus

DEBUG:QualityControl:O2:aliceo2: In file included from /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/include/Framework/ServiceRegistry.h:14:0,
DEBUG:QualityControl:O2:aliceo2:                  from /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/test/test_Services.cxx:14:
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h: In instantiation of 'static constexpr size_t o2::framework::TypeIdHelpers::uniqueId() [with TYPE = TestServiceRegistry::test_method()::InterfaceA; size_t = long unsigned int]':
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/include/Framework/ServiceRegistry.h:61:61:   required from 'void o2::framework::ServiceRegistry::registerService(C*) [with I = TestServiceRegistry::test_method()::InterfaceA; C = TestServiceRegistry::test_method()::ConcreteA]'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/test/test_Services.cxx:51:49:   required from here
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20:   in constexpr expansion of 'o2::framework::TypeIdHelpers::typeName<TestServiceRegistry::test_method()::InterfaceA>().o2::framework::TypeIdHelpers::cstring::hash()'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:51:39:   in constexpr expansion of 'o2::framework::TypeIdHelpers::fnv1a_hash(((size_t)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::length), ((const char*)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::str), 14695981039346656037)'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20: error: the value of '__PRETTY_FUNCTION__' is not usable in a constant expression
DEBUG:QualityControl:O2:aliceo2:      constexpr auto h = typeName<TYPE>().hash();
DEBUG:QualityControl:O2:aliceo2:                     ^
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:60:13: note: '__PRETTY_FUNCTION__' was not declared 'constexpr'
DEBUG:QualityControl:O2:aliceo2:      return {__PRETTY_FUNCTION__};
DEBUG:QualityControl:O2:aliceo2:              ^~~~~~~~~~~~~~~~~~~
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h: In instantiation of 'static constexpr size_t o2::framework::TypeIdHelpers::uniqueId() [with TYPE = TestServiceRegistry::test_method()::InterfaceB; size_t = long unsigned int]':
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/include/Framework/ServiceRegistry.h:61:61:   required from 'void o2::framework::ServiceRegistry::registerService(C*) [with I = TestServiceRegistry::test_method()::InterfaceB; C = TestServiceRegistry::test_method()::ConcreteB]'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/test/test_Services.cxx:52:49:   required from here
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20:   in constexpr expansion of 'o2::framework::TypeIdHelpers::typeName<TestServiceRegistry::test_method()::InterfaceB>().o2::framework::TypeIdHelpers::cstring::hash()'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:51:39:   in constexpr expansion of 'o2::framework::TypeIdHelpers::fnv1a_hash(((size_t)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::length), ((const char*)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::str), 14695981039346656037)'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20: error: the value of '__PRETTY_FUNCTION__' is not usable in a constant expression
DEBUG:QualityControl:O2:aliceo2:      constexpr auto h = typeName<TYPE>().hash();
DEBUG:QualityControl:O2:aliceo2:                     ^
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:60:13: note: '__PRETTY_FUNCTION__' was not declared 'constexpr'
DEBUG:QualityControl:O2:aliceo2:      return {__PRETTY_FUNCTION__};
DEBUG:QualityControl:O2:aliceo2:              ^~~~~~~~~~~~~~~~~~~
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h: In instantiation of 'static constexpr size_t o2::framework::TypeIdHelpers::uniqueId() [with TYPE = TestServiceRegistry::test_method()::InterfaceC; size_t = long unsigned int]':
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/include/Framework/ServiceRegistry.h:81:61:   required from 'void o2::framework::ServiceRegistry::registerService(const C*) [with I = TestServiceRegistry::test_method()::InterfaceC; C = TestServiceRegistry::test_method()::ConcreteC]'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/test/test_Services.cxx:53:49:   required from here
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20:   in constexpr expansion of 'o2::framework::TypeIdHelpers::typeName<TestServiceRegistry::test_method()::InterfaceC>().o2::framework::TypeIdHelpers::cstring::hash()'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:51:39:   in constexpr expansion of 'o2::framework::TypeIdHelpers::fnv1a_hash(((size_t)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::length), ((const char*)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::str), 14695981039346656037)'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20: error: the value of '__PRETTY_FUNCTION__' is not usable in a constant expression
DEBUG:QualityControl:O2:aliceo2:      constexpr auto h = typeName<TYPE>().hash();
DEBUG:QualityControl:O2:aliceo2:                     ^
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:60:13: note: '__PRETTY_FUNCTION__' was not declared 'constexpr'
DEBUG:QualityControl:O2:aliceo2:      return {__PRETTY_FUNCTION__};
DEBUG:QualityControl:O2:aliceo2:              ^~~~~~~~~~~~~~~~~~~
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h: In instantiation of 'static constexpr size_t o2::framework::TypeIdHelpers::uniqueId() [with TYPE = o2::framework::CallbackService; size_t = long unsigned int]':
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/include/Framework/ServiceRegistry.h:61:61:   required from 'void o2::framework::ServiceRegistry::registerService(C*) [with I = o2::framework::CallbackService; C = o2::framework::CallbackService]'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Core/test/test_Services.cxx:66:58:   required from here
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20:   in constexpr expansion of 'o2::framework::TypeIdHelpers::typeName<o2::framework::CallbackService>().o2::framework::TypeIdHelpers::cstring::hash()'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:51:39:   in constexpr expansion of 'o2::framework::TypeIdHelpers::fnv1a_hash(((size_t)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::length), ((const char*)((const o2::framework::TypeIdHelpers::cstring*)this)->o2::framework::TypeIdHelpers::cstring::str), 14695981039346656037)'
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:66:20: error: the value of '__PRETTY_FUNCTION__' is not usable in a constant expression
DEBUG:QualityControl:O2:aliceo2:      constexpr auto h = typeName<TYPE>().hash();
DEBUG:QualityControl:O2:aliceo2:                     ^
DEBUG:QualityControl:O2:aliceo2: /clusterfs1/markus/alice/sw/SOURCES/O2/aliceo2/0/Framework/Foundation/include/Framework/TypeIdHelpers.h:60:13: note: '__PRETTY_FUNCTION__' was not declared 'constexpr'
DEBUG:QualityControl:O2:aliceo2:      return {__PRETTY_FUNCTION__};

Hi all,

I am also getting the same problem on ubunru 18.04.

Best Regards
Hadi

Hi,

I am getting the same on CC7 with the QualityControl. No idea what is going on.

Cheers,
Barth

Ciao,

there is a PR reverting the change, albeit it was actually tested on both linux and macOS and I do not understand what is going on. Can you reformat the error using ``` so that I can try to understand what is going on?

Could you try compiling this:

with c++ -std=c++17 ... ?

Ciao Giulio,

With the revert I am now able to compile O2 under ubuntu.

I have reformatted the error log as desired.

Cheers

Markus

i managed to reproduce. thanks.