- 
    Bug 
- 
    Resolution: Done
- 
    P2: Important 
- 
    5.13.0 Beta2, 5.13.0 Beta3
- 
    None
When building with clang on Linux, the Chromium build process (copied into Qt) assumes it can access a PGO profile file at chrome/android/profiles/afdo.prof (see qtwebengine-everywhere-src-5.13.0-beta2/src/3rdparty/chromium/build/config/compiler/BUILD.gn around line 2175), but that file isn't included in the qtwebengine tarball.
Patching out its use allows the build to start, but it still fails to build later in the build process (with clang 8.0.0).
/usr/bin/clang++ -MMD -MF obj/media/learning/impl/impl/random_tree_trainer.o.d -DIS_LEARNING_IMPL_IMPL -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DNO_TCMALLOC -DOFFICIAL_BUILD -DCHROMIUM_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_STDC_CONSTANT_MACROS -D_STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../../../src/3rdparty/chromium -Igen -Igen -Igen -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-unknown-attributes -Wno-unknown-pragmas -Wno-unknown-warning-option -funwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -no-canonical-prefixes -m64 -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wimplicit-fallthrough -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-ignored-pragma-optimize -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g0 -fvisibility=hidd
 en -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wno-parentheses-equality -Wno-tautological-compare -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=c++14 -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../../../src/3rdparty/chromium/media/learning/impl/random_tree_trainer.cc -o obj/media/learning/impl/impl/random_tree_trainer.o 
 In file included from ../../../../src/3rdparty/chromium/media/learning/impl/random_tree_trainer.cc:11: 
 ../../../../src/3rdparty/chromium/base/optional.h:348:61: error: no member named 'value' in 'std::is_constructible<media::learning::Value, const base::Optional<media::learning::Value> &>' 
              std::is_constructible<T, const Optional<U>&>::value || 
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
../../../../src/3rdparty/chromium/base/optional.h:451:39: note: in instantiation of template class 'base::internal::IsConvertibleFromOptional<media::learning::Value, media::learning::Value>' requested here 
                           !internal::IsConvertibleFromOptional<T, U>::value && 
                                      ^ 
 ../../../../src/3rdparty/chromium/base/optional.h:454:3: note: while substituting prior template arguments into non-type template parameter [with U = media::learning::Value] 
  Optional(const Optional<U>& other) : internal::OptionalBase<T>(other) {} 
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:921:56: note: whi
 le substituting deduced template arguments into function template 'Optional' [with U = media::learning::Value, $1 = (no value)] 
      : public _bool_constant<_is_constructible(_Tp, _Args...)> 
                                                       ^ 
 ../../../../src/3rdparty/chromium/base/optional.h:540:16: note: in instantiation of template class 'std::is_construct
 ible<media::learning::Value, const base::Optional<media::learning::Value> &>' requested here 
          std::is_constructible<T, U>::value && 
               ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:1049:56: note: while substituting deduced template arguments into function template 'operator=' [with U = const base::Optional<media::learning::Value> &] 
      : public _bool_constant<_is_assignable(_Tp, _Up)> 
                                                       ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:1061:14: note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) 
    : public is_assignable<_Tp&, const _Tp&> 
             ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_uninitialized.h:579:
 33: note: in instantiation of template class 'std::is_copy_assignable<base::Optional<media::learning::Value> >' requested here 
      const bool __assignable = is_copy_assignable<_ValueType>::value; 
                                ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_uninitialized.h:645:
 19: note: in instantiation of function template specialization 'std::__uninitialized_default_n<base::Optional<media::learning::Value> *, unsigned long>' requested here 
    
 
                  ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/vector.tcc:596:8: note: 
 in instantiation of function template specialization 'std::__uninitialized_default_n_a<base::Optional<media::learning::Value> *, unsigned long, base::Optional<media::learning::Value> >' requested here 
                std::__uninitialized_default_n_a(this->_M_impl._M_finish, 
                     ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_vector.h:827:4: note
 : in instantiation of member function 'std::vector<base::Optional<media::learning::Value>, std::allocator<base::Optional<media::learning::Value> > >::_M_default_append' requested here 
          _M_default_append(__new_size - size()); 
          ^ 
 ../../../../src/3rdparty/chromium/media/learning/impl/random_tree_trainer.cc:190:18: note: in instantiation of member
 function 'std::vector<base::Optional<media::learning::Value>, std::allocator<base::Optional<media::learning::Value> 
 > >::resize' requested here
feature_values.resize(training_data[0].features.size()); 
                 ^ 
 In file included from ../../../../src/3rdparty/chromium/media/learning/impl/random_tree_trainer.cc:11: 
 ../../../../src/3rdparty/chromium/base/optional.h:360:44: error: no member named 'value' in 'base::internal::IsConvertibleFromOptional<media::learning::Value, media::learning::Value>' 
          IsConvertibleFromOptional<T, U>::value || 
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 
 ../../../../src/3rdparty/chromium/base/optional.h:552:31: note: in instantiation of template class 'base::internal::IsAssignableFromOptional<media::learning::Value, media::learning::Value>' requested here 
  std::enable_if_t<!internal::IsAssignableFromOptional<T, U>::value && 
                              ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:1049:56: note: while substituting deduced template arguments into function template 'operator=' [with U = media::learning::Value] 
      : public _bool_constant<_is_assignable(_Tp, _Up)> 
                                                       ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:1061:14: note: in
 instantiation of template class 'std::is_assignable<base::Optional<media::learning::Value> &, const base::Optional<m
 edia::learning::Value> &>' requested here
   : public is_assignable<_Tp&, const _Tp&> 
             ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/type_traits:1067:14: note: in
 instantiation of template class 'std::__is_copy_assignable_impl<base::Optional<media::learning::Value>, true>' requested here 
    : public __is_copy_assignable_impl<_Tp> 
             ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_uninitialized.h:579:
 33: note: in instantiation of template class 'std::is_copy_assignable<base::Optional<media::learning::Value> >' requested here 
      const bool __assignable = is_copy_assignable<_ValueType>::value; 
                                ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_uninitialized.h:645:
 19: note: in instantiation of function template specialization 'std::__uninitialized_default_n<base::Optional<media::
 learning::Value> *, unsigned long>' requested here 
    
 
                  ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/vector.tcc:596:8: note: 
 in instantiation of function template specialization 'std::__uninitialized_default_n_a<base::Optional<media::learning
 ::Value> *, unsigned long, base::Optional<media::learning::Value> >' requested here 
                std::__uninitialized_default_n_a(this->_M_impl._M_finish, 
                     ^ 
 /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/stl_vector.h:827:4: note
 : in instantiation of member function 'std::vector<base::Optional<media::learning::Value>, std::allocator<base::Optio
 nal<media::learning::Value> > >::_M_default_append' requested here 
          _M_default_append(__new_size - size()); 
          ^ 
 ../../../../src/3rdparty/chromium/media/learning/impl/random_tree_trainer.cc:190:18: note: in instantiation of member
 function 'std::vector<base::Optional<media::learning::Value>, std::allocator<base::Optional<media::learning::Value> 
 > >::resize' requested here 
  feature_values.resize(training_data[0].features.size()); 
                 ^ 
 2 errors generated.