RESOLVED FIXED 162056
REGRESSION(r206000): Build broken with GCC < 5
https://bugs.webkit.org/show_bug.cgi?id=162056
Summary REGRESSION(r206000): Build broken with GCC < 5
Carlos Garcia Campos
Reported 2016-09-16 01:15:17 PDT
Changes introduced in r206000 are not supported by GCC 4.9. We need to find a workaround or simply bump GCC requirements to 5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60511 In file included from ../../Source/WebKit2/Platform/IPC/Decoder.h:31:0, from ../../Source/WebKit2/NetworkProcess/Downloads/DownloadID.h:30, from ../../Source/WebKit2/NetworkProcess/NetworkSession.h:34, from ../../Source/WebKit2/Shared/Authentication/AuthenticationManager.h:31, from ../../Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:29: ../../Source/WTF/wtf/EnumTraits.h: In instantiation of ‘static constexpr bool WTF::EnumValueChecker<T, WTF::EnumValues<E, e, es ...> >::isValidEnum(T) [with T = long unsigned int; E = WebCore::HasInsecureContent; E e = (WebCore::HasInsecureContent)0; E ...es = {}]’: ../../Source/WTF/wtf/EnumTraits.h:45:72: required from ‘static constexpr bool WTF::EnumValueChecker<T, WTF::EnumValues<E, e, es ...> >::isValidEnum(T) [with T = long unsigned int; E = WebCore::HasInsecureContent; E e = (WebCore::HasInsecureContent)1; E ...es = {(WebCore::HasInsecureContent)0}]’ ../../Source/WTF/wtf/EnumTraits.h:62:78: required from ‘constexpr std::enable_if_t<std::is_enum<_Tp>::value, bool> WTF::isValidEnum(T) [with E = WebCore::HasInsecureContent; T = long unsigned int; std::enable_if_t<std::is_enum<_Tp>::value, bool> = bool]’ ../../Source/WebKit2/Platform/IPC/Decoder.h:93:34: required from ‘std::enable_if_t<std::is_enum<_Tp>::value, bool> IPC::Decoder::decode(E&) [with E = WebCore::HasInsecureContent; std::enable_if_t<std::is_enum<_Tp>::value, bool> = bool]’ ../../Source/WebKit2/Platform/IPC/ArgumentCoders.h:135:13: required from ‘static bool IPC::TupleCoder<index, Elements>::decode(IPC::Decoder&, std::tuple<_Elements ...>&) [with long unsigned int index = 1ul; Elements = {WebCore::HasInsecureContent&}]’ ../../Source/WebKit2/Platform/IPC/ArgumentCoders.h:161:83: required from ‘static bool IPC::ArgumentCoder<std::tuple<_Elements ...> >::decode(IPC::Decoder&, std::tuple<_Elements ...>&) [with Elements = {WebCore::HasInsecureContent&}]’ ../../Source/WebKit2/Platform/IPC/Decoder.h:126:49: required from ‘std::enable_if_t<(! std::is_enum<_Tp>::value), bool> IPC::Decoder::decode(T&) [with T = std::tuple<WebCore::HasInsecureContent&>; std::enable_if_t<(! std::is_enum<_Tp>::value), bool> = bool]’ ../../Source/WebKit2/Platform/IPC/Connection.h:389:38: required from ‘bool IPC::Connection::sendSync(T&&, typename T::Reply&&, uint64_t, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; uint64_t = long unsigned int; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/Platform/IPC/MessageSender.h:65:125: required from ‘bool IPC::MessageSender::sendSync(T&&, typename T::Reply&&, uint64_t, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; uint64_t = long unsigned int; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/Platform/IPC/MessageSender.h:57:121: required from ‘bool IPC::MessageSender::sendSync(T&&, typename T::Reply&&, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1291:142: required from here ../../Source/WTF/wtf/EnumTraits.h:46:5: error: body of constexpr function ‘static constexpr bool WTF::EnumValueChecker<T, WTF::EnumValues<E, e, es ...> >::isValidEnum(T) [with T = long unsigned int; E = WebCore::HasInsecureContent; E e = (WebCore::HasInsecureContent)0; E ...es = {}]’ not a return-statement } ^ ../../Source/WTF/wtf/EnumTraits.h: In instantiation of ‘static constexpr bool WTF::EnumValueChecker<T, WTF::EnumValues<E, e, es ...> >::isValidEnum(T) [with T = long unsigned int; E = WebCore::HasInsecureContent; E e = (WebCore::HasInsecureContent)1; E ...es = {(WebCore::HasInsecureContent)0}]’: ../../Source/WTF/wtf/EnumTraits.h:62:78: required from ‘constexpr std::enable_if_t<std::is_enum<_Tp>::value, bool> WTF::isValidEnum(T) [with E = WebCore::HasInsecureContent; T = long unsigned int; std::enable_if_t<std::is_enum<_Tp>::value, bool> = bool]’ ../../Source/WebKit2/Platform/IPC/Decoder.h:93:34: required from ‘std::enable_if_t<std::is_enum<_Tp>::value, bool> IPC::Decoder::decode(E&) [with E = WebCore::HasInsecureContent; std::enable_if_t<std::is_enum<_Tp>::value, bool> = bool]’ ../../Source/WebKit2/Platform/IPC/ArgumentCoders.h:135:13: required from ‘static bool IPC::TupleCoder<index, Elements>::decode(IPC::Decoder&, std::tuple<_Elements ...>&) [with long unsigned int index = 1ul; Elements = {WebCore::HasInsecureContent&}]’ ../../Source/WebKit2/Platform/IPC/ArgumentCoders.h:161:83: required from ‘static bool IPC::ArgumentCoder<std::tuple<_Elements ...> >::decode(IPC::Decoder&, std::tuple<_Elements ...>&) [with Elements = {WebCore::HasInsecureContent&}]’ ../../Source/WebKit2/Platform/IPC/Decoder.h:126:49: required from ‘std::enable_if_t<(! std::is_enum<_Tp>::value), bool> IPC::Decoder::decode(T&) [with T = std::tuple<WebCore::HasInsecureContent&>; std::enable_if_t<(! std::is_enum<_Tp>::value), bool> = bool]’ ../../Source/WebKit2/Platform/IPC/Connection.h:389:38: required from ‘bool IPC::Connection::sendSync(T&&, typename T::Reply&&, uint64_t, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; uint64_t = long unsigned int; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/Platform/IPC/MessageSender.h:65:125: required from ‘bool IPC::MessageSender::sendSync(T&&, typename T::Reply&&, uint64_t, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; uint64_t = long unsigned int; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/Platform/IPC/MessageSender.h:57:121: required from ‘bool IPC::MessageSender::sendSync(T&&, typename T::Reply&&, std::chrono::milliseconds, WTF::OptionSet<IPC::SendSyncOption>) [with T = Messages::WebPageProxy::HasInsecureContent; typename T::Reply = std::tuple<WebCore::HasInsecureContent&>; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]’ ../../Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1291:142: required from here ../../Source/WTF/wtf/EnumTraits.h:46:5: error: body of constexpr function ‘static constexpr bool WTF::EnumValueChecker<T, WTF::EnumValues<E, e, es ...> >::isValidEnum(T) [with T = long unsigned int; E = WebCore::HasInsecureContent; E e = (WebCore::HasInsecureContent)1; E ...es = {(WebCore::HasInsecureContent)0}]’ not a return-statement [5473/6080] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o
Attachments
Carlos Garcia Campos
Comment 1 2016-09-16 03:12:23 PDT
Renaming since this is not specific to GTK+, all ports require GCC 4.9, so we are all affected. EFL bots are building fine, so I guess they are using GCC 5
Michael Catanzaro
Comment 2 2016-09-16 10:02:19 PDT
(In reply to comment #0) > Changes introduced in r206000 are not supported by GCC 4.9. We need to find > a workaround or simply bump GCC requirements to 5. Fortunately we just agreed on a new dependency policy, under which we have to support GCC 4.9 for Ubuntu 14.04 until April 2017, and for Debian Jessie until roughly spring/summer 2018. So no, we'll have to roll it out.
Michael Catanzaro
Comment 3 2016-09-16 10:05:03 PDT
I created a wiki page for it last week: http://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy
Brady Eidson
Comment 4 2016-09-16 11:07:36 PDT
This rollout was not okay. 206006 relied on it, for example.
Brady Eidson
Comment 5 2016-09-16 11:17:23 PDT
Looks like Anders came along a reimplemented in 206030/206031
Carlos Garcia Campos
Comment 6 2016-09-17 01:27:33 PDT
(In reply to comment #2) > (In reply to comment #0) > > Changes introduced in r206000 are not supported by GCC 4.9. We need to find > > a workaround or simply bump GCC requirements to 5. > > Fortunately we just agreed on a new dependency policy, under which we have > to support GCC 4.9 for Ubuntu 14.04 until April 2017, and for Debian Jessie > until roughly spring/summer 2018. So no, we'll have to roll it out. Our deps policy is for runtime dependencies, not build time ones.
Note You need to log in before you can comment on or make changes to this bug.