Bug 1803351
| Summary: | mesa builds fail with llvm 10.0.0 rc1/rc2 on ppc64le | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Pete Walter <walter.pete> |
| Component: | llvm | Assignee: | Tom Stellard <tstellar> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 32 | CC: | ajax, dan, dmalcolm, jakub, jistone, klember, scottt.tw, sean, sguelton, siddharth.kde, tstellar |
| Target Milestone: | --- | Keywords: | Reopened |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | mesa-20.0.0-2.fc32 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-02-26 17:05:44 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1071880 | ||
|
Description
Pete Walter
2020-02-15 12:26:57 UTC
the errors start with
In file included from /usr/include/llvm/IR/Module.h:19,
from ../src/gallium/state_trackers/clover/llvm/codegen.hpp:35,
from ../src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp:34:
/usr/include/llvm/ADT/STLExtras.h:559:49: error: 'std::index_sequence' has not been declared
559 | template <size_t... Ns> value_type deref(std::index_sequence<Ns...>) const {
| ^~~~~~~~~~~~~~
/usr/include/llvm/ADT/STLExtras.h:559:63: error: expected ',' or '...' before '<' token
559 | template <size_t... Ns> value_type deref(std::index_sequence<Ns...>) const {
| ^
/usr/include/llvm/ADT/STLExtras.h:564:36: error: 'std::index_sequence' has not been declared
564 | decltype(iterators) tup_inc(std::index_sequence<Ns...>) const {
| ^~~~~~~~~~~~~~
/usr/include/llvm/ADT/STLExtras.h:564:50: error: expected ',' or '...' before '<' token
564 | decltype(iterators) tup_inc(std::index_sequence<Ns...>) const {
| ^
/usr/include/llvm/ADT/STLExtras.h:569:36: error: 'std::index_sequence' has not been declared
so my first guess is a missing #include ...
This looks like a bug in the mesa build. On ppc64le it's compiling with -std=gnu++11, but on other arches it is compiling with -std=gnu++14. LLVM uses c++14 features, so compiling with -std=gnu++11 won't work. Ahh, that makes sense. Indeed, mesa has this in meson.build:
if host_machine.cpu_family().startswith('ppc') and cpp.compiles('''
#if !defined(__VEC__) || !defined(__ALTIVEC__)
#error "AltiVec not enabled"
#endif''',
name : 'Altivec')
clover_cpp_std += ['cpp_std=gnu++11']
endif
... which ends up forcing gnu++11 on ppc arches.
I went ahead and hacked around this in https://src.fedoraproject.org/rpms/mesa/c/bd392f431cc481ea754581d3052959bb7454ca5b (In reply to Kalev Lember from comment #3) > Ahh, that makes sense. Indeed, mesa has this in meson.build: > > if host_machine.cpu_family().startswith('ppc') and cpp.compiles(''' > #if !defined(__VEC__) || !defined(__ALTIVEC__) > #error "AltiVec not enabled" > #endif''', > name : 'Altivec') > clover_cpp_std += ['cpp_std=gnu++11'] > endif > > ... which ends up forcing gnu++11 on ppc arches. which is probably from times, when the default was c++11 and using the altivec required gnu++11, because of some gnu extensions |