Bug 275872
Summary: | error: pack expansion contains parameter pack '_UTypes' that has a different length (3 vs. 1) from outer parameter packs | ||
---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> |
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> |
Status: | NEW | ||
Severity: | Normal | CC: | berto, bugs-noreply, jbicha, mcatanzaro, webkit-bug-importer |
Priority: | P2 | ||
Version: | Other | ||
Hardware: | PC | ||
OS: | Linux |
Michael Catanzaro
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 | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Michael Catanzaro
https://gitlab.gnome.org/GNOME/gnome-build-meta/-/jobs/4014334
Alberto Garcia
This only happens with clang, with gcc it works fine
Michael Catanzaro
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
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
(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
(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.)