NEW 275872
error: pack expansion contains parameter pack '_UTypes' that has a different length (3 vs. 1) from outer parameter packs
https://bugs.webkit.org/show_bug.cgi?id=275872
Summary error: pack expansion contains parameter pack '_UTypes' that has a different ...
Michael Catanzaro
Reported 2024-06-25 14:32:26 PDT
I failed to build WebKitGTK 2.45.4 for GNOME. The error message is a little impressive: /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/tuple:691:2: error: pack expansion contains parameter pack '_UTypes' that has a different length (3 vs. 1) from outer parameter packs 691 | using __convertible = __and_<is_convertible<_UTypes, _Types>...>; | ^~~~~ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/tuple:853:27: note: in instantiation of template type alias '__convertible' requested here 853 | = _TCC<true>::template __convertible<_Args...>::value; | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/tuple:948:12: note: in instantiation of static data member 'std::tuple<gl::TextureType, unsigned int, unsigned int>::__convertible<const std::tuple<gl::TextureType, unsigned int, unsigned int> &>' requested here 948 | explicit(!__convertible<_UElements&...>) | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/type_traits:1108:57: note: while substituting deduced template arguments into function template 'tuple' [with _UElements = <const std::tuple<gl::TextureType, unsigned int, unsigned int> &>] 1108 | = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/type_traits:1108:57: note: while substituting deduced template arguments into function template 'tuple' [with _NotEmpty = (no value), $1 = (no value)] /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/type_traits:1114:14: note: in instantiation of template type alias '__is_nothrow_constructible_impl' requested here 1114 | : public __is_nothrow_constructible_impl<_Tp, _Args...> | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/bits/alloc_traits.h:534:16: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) 534 | noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/bits/stl_tree.h:614:4: note: in instantiation of function template specialization 'std::_Rb_tree<std::tuple<gl::TextureType, unsigned int, unsigned int>, std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>, std::_Select1st<std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>>, std::less<std::tuple<gl::TextureType, unsigned int, unsigned int>>>::_M_construct_node<const std::piecewise_construct_t &, std::tuple<const std::tuple<gl::TextureType, unsigned int, unsigned int> &>, std::tuple<>>' requested here 614 | _M_construct_node(__tmp, std::forward<_Args>(__args)...); | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/bits/stl_tree.h:1637:18: note: in instantiation of function template specialization 'std::_Rb_tree<std::tuple<gl::TextureType, unsigned int, unsigned int>, std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>, std::_Select1st<std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>>, std::less<std::tuple<gl::TextureType, unsigned int, unsigned int>>>::_M_create_node<const std::piecewise_construct_t &, std::tuple<const std::tuple<gl::TextureType, unsigned int, unsigned int> &>, std::tuple<>>' requested here 1637 | _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/bits/stl_tree.h:2462:13: note: in instantiation of function template specialization 'std::_Rb_tree<std::tuple<gl::TextureType, unsigned int, unsigned int>, std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>, std::_Select1st<std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>>, std::less<std::tuple<gl::TextureType, unsigned int, unsigned int>>>::_Auto_node::_Auto_node<const std::piecewise_construct_t &, std::tuple<const std::tuple<gl::TextureType, unsigned int, unsigned int> &>, std::tuple<>>' requested here 2462 | _Auto_node __z(*this, std::forward<_Args>(__args)...); | ^ /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/13.2.0/../../../../include/c++/13.2.0/bits/stl_map.h:513:15: note: in instantiation of function template specialization 'std::_Rb_tree<std::tuple<gl::TextureType, unsigned int, unsigned int>, std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>, std::_Select1st<std::pair<const std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>>, std::less<std::tuple<gl::TextureType, unsigned int, unsigned int>>>::_M_emplace_hint_unique<const std::piecewise_construct_t &, std::tuple<const std::tuple<gl::TextureType, unsigned int, unsigned int> &>, std::tuple<>>' requested here 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, | ^ /buildstream/gnome/sdk/webkit2gtk-4.1.bst/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp:1481:40: note: in instantiation of member function 'std::map<std::tuple<gl::TextureType, unsigned int, unsigned int>, rx::BlitGL::BlitProgram>::operator[]' requested here 1481 | BlitProgram &result = mBlitPrograms[programType]; | ^ Not sure what's wrong yet.
Attachments
Alberto Garcia
Comment 2 2024-06-27 02:08:56 PDT
This only happens with clang, with gcc it works fine
Michael Catanzaro
Comment 3 2024-06-27 06:15:02 PDT
Yes. I have switched the GNOME runtime from Clang back to GCC due to this issue because I cannot reproduce it on my host system with libstdc++ 14. I'm guessing only libstdc++ 13 is affected, but I'm not sure.
Michael Catanzaro
Comment 4 2024-07-02 08:06:10 PDT
By coincidence, GNOME just did its annual upgrade from GCC 13 to GCC 14. This Clang build failure is now fixed with the newer libstdc++.
Michael Catanzaro
Comment 5 2024-09-18 07:37:32 PDT
(In reply to Michael Catanzaro from comment #4) > By coincidence, GNOME just did its annual upgrade from GCC 13 to GCC 14. > This Clang build failure is now fixed with the newer libstdc++. Turns out this is a regression between 2.44 -> 2.46. I'm going to switch the GNOME 46 build back to GCC rather than Clang so that I can upgrade to 2.46. This means we lose all those Skia optimizations, but it's easier than trying to figure out what this error message goo is trying to tell us.
Michael Catanzaro
Comment 6 2024-09-18 07:40:38 PDT
(In reply to Michael Catanzaro from comment #4) > By coincidence, GNOME just did its annual upgrade from GCC 13 to GCC 14. > This Clang build failure is now fixed with the newer libstdc++. (For avoidance of doubt, GNOME 47 gets the new libstdc++. GNOME 46 stays on GCC 13 forever, just as Linux distros would do.)
Note You need to log in before you can comment on or make changes to this bug.