From f6767a1977aff985b5b24eaee915f052108a98f3 Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Wed, 25 Oct 2017 08:59:45 -0400 Subject: [PATCH] fix decay_t usage for gcc 4.8/c++11 --- ...-62.0.3202.62-epel7-c++11-decay-type.patch | 160 ++++++++++++++++++ chromium.spec | 2 + 2 files changed, 162 insertions(+) create mode 100644 chromium-62.0.3202.62-epel7-c++11-decay-type.patch diff --git a/chromium-62.0.3202.62-epel7-c++11-decay-type.patch b/chromium-62.0.3202.62-epel7-c++11-decay-type.patch new file mode 100644 index 00000000..af0c5a79 --- /dev/null +++ b/chromium-62.0.3202.62-epel7-c++11-decay-type.patch @@ -0,0 +1,160 @@ +diff -up chromium-62.0.3202.62/base/bind_helpers.h.epel7-c++11 chromium-62.0.3202.62/base/bind_helpers.h +--- chromium-62.0.3202.62/base/bind_helpers.h.epel7-c++11 2017-10-25 08:50:15.692276363 -0400 ++++ chromium-62.0.3202.62/base/bind_helpers.h 2017-10-25 08:50:39.977611740 -0400 +@@ -282,7 +282,7 @@ class PassedWrapper { + }; + + template +-using Unwrapper = BindUnwrapTraits>; ++using Unwrapper = BindUnwrapTraits::type>; + + template + auto Unwrap(T&& o) -> decltype(Unwrapper::Unwrap(std::forward(o))) { +diff -up chromium-62.0.3202.62/base/bind.h.epel7-c++11 chromium-62.0.3202.62/base/bind.h +--- chromium-62.0.3202.62/base/bind.h.epel7-c++11 2017-10-25 08:55:22.603877014 -0400 ++++ chromium-62.0.3202.62/base/bind.h 2017-10-25 08:56:41.636714097 -0400 +@@ -53,7 +53,7 @@ struct AssertConstructible { + // reference with repeating callbacks--is used instead of base::Passed(). + static_assert( + param_is_forwardable || +- !std::is_constructible&&>::value, ++ !std::is_constructible::type&&>::value, + "Bound argument |i| is move-only but will be forwarded by copy. " + "Ensure |Arg| is bound using base::Passed(), not std::move()."); + static_assert( +@@ -64,7 +64,7 @@ struct AssertConstructible { + static constexpr bool arg_is_storable = + std::is_constructible::value; + static_assert(arg_is_storable || +- !std::is_constructible&&>::value, ++ !std::is_constructible::type&&>::value, + "Bound argument |i| is move-only but will be bound by copy. " + "Ensure |Arg| is mutable and bound using std::move()."); + static_assert(arg_is_storable, +@@ -88,7 +88,7 @@ struct AssertBindArgsValidity, + TypeList, + TypeList> +- : AssertConstructible, Unwrapped, Params>... { ++ : AssertConstructible::type, Unwrapped, Params>... { + static constexpr bool ok = true; + }; + +@@ -98,14 +98,14 @@ struct TransformToUnwrappedTypeImpl; + + template + struct TransformToUnwrappedTypeImpl { +- using StoredType = std::decay_t; ++ using StoredType = typename std::decay::type; + using ForwardType = StoredType&&; + using Unwrapped = decltype(Unwrap(std::declval())); + }; + + template + struct TransformToUnwrappedTypeImpl { +- using StoredType = std::decay_t; ++ using StoredType = typename std::decay::type; + using ForwardType = const StoredType&; + using Unwrapped = decltype(Unwrap(std::declval())); + }; +@@ -153,7 +153,7 @@ using MakeUnwrappedTypeList = + template + inline OnceCallback> + BindOnce(Functor&& functor, Args&&... args) { +- static_assert(!internal::IsOnceCallback>() || ++ static_assert(!internal::IsOnceCallback::type>() || + (std::is_rvalue_reference() && + !std::is_const>()), + "BindOnce requires non-const rvalue for OnceCallback binding." +@@ -197,7 +197,7 @@ template > + BindRepeating(Functor&& functor, Args&&... args) { + static_assert( +- !internal::IsOnceCallback>(), ++ !internal::IsOnceCallback::type>(), + "BindRepeating cannot bind OnceCallback. Use BindOnce with std::move()."); + + // This block checks if each |args| matches to the corresponding params of the +diff -up chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11 chromium-62.0.3202.62/base/bind_internal.h +--- chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11 2017-10-25 08:52:20.018873878 -0400 ++++ chromium-62.0.3202.62/base/bind_internal.h 2017-10-25 08:55:07.779282724 -0400 +@@ -256,7 +256,7 @@ struct FunctorTraits +-using MakeFunctorTraits = FunctorTraits>; ++using MakeFunctorTraits = FunctorTraits::type>; + + // InvokeHelper<> + // +@@ -341,7 +341,7 @@ struct Invoker::is_method; + +- using DecayedArgsTuple = std::decay_t; ++ using DecayedArgsTuple = typename std::decay::type; + static constexpr bool is_weak_call = + IsWeakMethod...>(); +@@ -479,33 +479,33 @@ struct MakeBindStateTypeImpl; + + template + struct MakeBindStateTypeImpl { +- static_assert(!HasRefCountedTypeAsRawPtr...>::value, ++ static_assert(!HasRefCountedTypeAsRawPtr::type...>::value, + "A parameter is a refcounted type and needs scoped_refptr."); +- using Type = BindState, std::decay_t...>; ++ using Type = BindState::type, typename std::decay::type...>; + }; + + template + struct MakeBindStateTypeImpl { +- using Type = BindState>; ++ using Type = BindState::type>; + }; + + template + struct MakeBindStateTypeImpl { + static_assert(!std::is_array>::value, + "First bound argument to a method cannot be an array."); +- static_assert(!HasRefCountedTypeAsRawPtr...>::value, ++ static_assert(!HasRefCountedTypeAsRawPtr::type...>::value, + "A parameter is a refcounted type and needs scoped_refptr."); + + private: +- using DecayedReceiver = std::decay_t; ++ using DecayedReceiver = typename std::decay::type; + + public: + using Type = BindState< +- std::decay_t, ++ typename std::decay::type, + std::conditional_t::value, + scoped_refptr>, + DecayedReceiver>, +- std::decay_t...>; ++ typename std::decay::type...>; + }; + + template +diff -up chromium-62.0.3202.62/base/containers/span.h.epel7-c++11 chromium-62.0.3202.62/base/containers/span.h +--- chromium-62.0.3202.62/base/containers/span.h.epel7-c++11 2017-10-25 08:51:25.260372472 -0400 ++++ chromium-62.0.3202.62/base/containers/span.h 2017-10-25 08:52:07.597213826 -0400 +@@ -27,7 +27,7 @@ template + struct IsSpanImpl> : std::true_type {}; + + template +-using IsSpan = IsSpanImpl>; ++using IsSpan = IsSpanImpl::type>; + + template + struct IsStdArrayImpl : std::false_type {}; +@@ -36,7 +36,7 @@ template + struct IsStdArrayImpl> : std::true_type {}; + + template +-using IsStdArray = IsStdArrayImpl>; ++using IsStdArray = IsStdArrayImpl::type>; + + template + using IsLegalSpanConversion = std::is_convertible; diff --git a/chromium.spec b/chromium.spec index ac7a224a..4ae1ecb1 100644 --- a/chromium.spec +++ b/chromium.spec @@ -218,6 +218,7 @@ Patch63: chromium-gn-bootstrap-r17.patch Patch64: chromium-62.0.3202.62-correct-cplusplus-check.patch # epel7 does not know about c++14 Patch65: chromium-62.0.3202.62-epel7-noc++14.patch +Patch66: chromium-62.0.3202.62-epel7-c++11-decay-type.patch ### Chromium Tests Patches ### Patch100: chromium-46.0.2490.86-use_system_opus.patch @@ -668,6 +669,7 @@ udev. %patch60 -p1 -b .nonullptr %patch61 -p1 -b .another-rvalue-fix %patch65 -p1 -b .epel7-noc++14 +%patch66 -p1 -b .epel7-c++11 %endif %patch50 -p1 -b .pathfix %patch53 -p1 -b .nogccoptmath