commit f7aa602c50e32afa459f34444a03f40bb7e111a2
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 9 12:48:48 2019 -0400
here we go again
chromium-77.0.3865.75-base-gcc-no-alignas.patch | 12 +
...ium-77.0.3865.75-certificate-transparency.patch | 539 +++++++++++++++++++++
chromium-77.0.3865.75-el7-noexcept.patch | 165 +++++++
chromium-77.0.3865.75-fedora-user-agent.patch | 12 +
chromium-77.0.3865.75-gcc-abstract-class.patch | 61 +++
chromium-77.0.3865.75-gcc-include-memory.patch | 12 +
chromium-77.0.3865.75-harfbuzz-subset.patch | 49 ++
chromium-77.0.3865.75-missing-limits.patch | 28 ++
chromium-77.0.3865.75-no-zlib-mangle.patch | 22 +
chromium-77.0.3865.75-unbundle-zlib.patch | 25 +
chromium-77.0.3865.90-linked-hash-set.patch | 130 +++++
chromium.spec | 442 +++++++----------
sources | 2 +-
13 files changed, 1218 insertions(+), 281 deletions(-)
---
diff --git a/chromium-77.0.3865.75-base-gcc-no-alignas.patch
b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
new file mode 100644
index 0000000..86a2271
--- /dev/null
+++ b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas
chromium-77.0.3865.75/base/task/promise/dependent_list.h
+---
chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas 2019-09-13
21:45:51.873172347 +0200
++++ chromium-77.0.3865.75/base/task/promise/dependent_list.h 2019-09-13
21:46:21.661522514 +0200
+@@ -59,7 +59,7 @@ class BASE_EXPORT DependentList {
+
+ // Align Node on an 8-byte boundary to ensure the first 3 bits are 0 and can
+ // be used to store additional state (see static_asserts below).
+- class BASE_EXPORT alignas(8) Node {
++ class BASE_EXPORT ALIGNAS(8) Node {
+ public:
+ Node();
+ explicit Node(Node&& other) noexcept;
diff --git a/chromium-77.0.3865.75-certificate-transparency.patch
b/chromium-77.0.3865.75-certificate-transparency.patch
new file mode 100644
index 0000000..82e2958
--- /dev/null
+++ b/chromium-77.0.3865.75-certificate-transparency.patch
@@ -0,0 +1,539 @@
+diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-12
16:09:52.818635106 +0200
++++
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-12
16:11:07.662562005 +0200
+@@ -21,6 +21,7 @@
+ #include "components/version_info/version_info.h"
+ #include "content/public/common/content_switches.h"
+ #include "content/public/common/user_agent.h"
++#include "services/network/public/cpp/network_service_buildflags.h"
+ #include "services/network/public/mojom/network_context.mojom.h"
+ #include "services/network/public/mojom/network_service.mojom.h"
+ #include "testing/gmock/include/gmock/gmock.h"
+@@ -356,3 +357,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont
+ INSTANTIATE_TEST_SUITE_P(,
+ SystemNetworkContextManagerFreezeQUICUaBrowsertest,
+ ::testing::Values(true, false));
++
++class SystemNetworkContextManagerCertificateTransparencyBrowsertest
++ : public SystemNetworkContextManagerBrowsertest,
++ public testing::WithParamInterface<base::Optional<bool>> {
++ public:
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest() {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ GetParam());
++ }
++ ~SystemNetworkContextManagerCertificateTransparencyBrowsertest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
++};
++
++#if BUILDFLAG(IS_CT_SUPPORTED)
++IN_PROC_BROWSER_TEST_P(
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest,
++ CertificateTransparencyConfig) {
++ network::mojom::NetworkContextParamsPtr context_params =
++ g_browser_process->system_network_context_manager()
++ ->CreateDefaultNetworkContextParams();
++
++ const bool kDefault =
++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \
++ !defined(OS_ANDROID)
++ true;
++#else
++ false;
++#endif
++
++ EXPECT_EQ(GetParam().value_or(kDefault),
++ context_params->enforce_chrome_ct_policy);
++ EXPECT_NE(GetParam().value_or(kDefault), context_params->ct_logs.empty());
++
++ if (GetParam().value_or(kDefault)) {
++ bool has_google_log = false;
++ bool has_disqualified_log = false;
++ for (const auto& ct_log : context_params->ct_logs) {
++ has_google_log |= ct_log->operated_by_google;
++ has_disqualified_log |= ct_log->disqualified_at.has_value();
++ }
++ EXPECT_TRUE(has_google_log);
++ EXPECT_TRUE(has_disqualified_log);
++ }
++}
++#endif
++
++INSTANTIATE_TEST_SUITE_P(
++ ,
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest,
++ ::testing::Values(base::nullopt, true, false));
+diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc 2019-09-12
16:09:52.819635118 +0200
+@@ -4,11 +4,13 @@
+
+ #include "chrome/browser/net/system_network_context_manager.h"
+
++#include <algorithm>
+ #include <set>
+ #include <unordered_map>
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/build_time.h"
+ #include "base/command_line.h"
+ #include "base/feature_list.h"
+ #include "base/logging.h"
+@@ -50,6 +52,7 @@
+ #include "content/public/common/mime_handler_view_mode.h"
+ #include "content/public/common/service_names.mojom.h"
+ #include "content/public/common/user_agent.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
+ #include "net/dns/public/util.h"
+ #include "net/net_buildflags.h"
+@@ -79,6 +82,20 @@
+
+ namespace {
+
++constexpr bool kCertificateTransparencyEnabled =
++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \
++ !defined(OS_ANDROID)
++ // Certificate Transparency is only enabled if:
++ // - Desktop (!OS_ANDROID); OS_IOS does not use this file
++ // - base::GetBuildTime() is deterministic to the source (OFFICIAL_BUILD)
++ // - The build in reliably updatable (GOOGLE_CHROME_BUILD)
++ true;
++#else
++ false;
++#endif
++
++bool g_enable_certificate_transparency = kCertificateTransparencyEnabled;
++
+ // The global instance of the SystemNetworkContextmanager.
+ SystemNetworkContextManager* g_system_network_context_manager = nullptr;
+
+@@ -658,14 +675,35 @@ SystemNetworkContextManager::CreateDefau
+
+ bool http_09_on_non_default_ports_enabled = false;
+ #if !defined(OS_ANDROID)
+- // CT is only enabled on Desktop platforms for now.
+- network_context_params->enforce_chrome_ct_policy = true;
+- for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
+- // TODO(rsleevi):
https://crbug.com/702062 - Remove this duplication.
+- network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
+- log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
+- log_info->name = ct_log.log_name;
+- network_context_params->ct_logs.push_back(std::move(log_info));
++
++ if (g_enable_certificate_transparency) {
++ network_context_params->enforce_chrome_ct_policy = true;
++ network_context_params->ct_log_update_time = base::GetBuildTime();
++
++ std::vector<std::string> operated_by_google_logs =
++ certificate_transparency::GetLogsOperatedByGoogle();
++ std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs
=
++ certificate_transparency::GetDisqualifiedLogs();
++ for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
++ // TODO(rsleevi):
https://crbug.com/702062 - Remove this duplication.
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
++ log_info->name = ct_log.log_name;
++
++ std::string log_id = crypto::SHA256HashString(log_info->public_key);
++ log_info->operated_by_google =
++ std::binary_search(std::begin(operated_by_google_logs),
++ std::end(operated_by_google_logs), log_id);
++ auto it = std::lower_bound(
++ std::begin(disqualified_logs), std::end(disqualified_logs), log_id,
++ [](const auto& disqualified_log, const std::string& log_id) {
++ return disqualified_log.first < log_id;
++ });
++ if (it != std::end(disqualified_logs) && it->first == log_id) {
++ log_info->disqualified_at = it->second;
++ }
++ network_context_params->ct_logs.push_back(std::move(log_info));
++ }
+ }
+
+ const base::Value* value =
+@@ -723,6 +761,12 @@ SystemNetworkContextManager::GetHttpAuth
+ return CreateHttpAuthDynamicParams(g_browser_process->local_state());
+ }
+
++void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::Optional<bool> enabled) {
++ g_enable_certificate_transparency =
++ enabled.value_or(kCertificateTransparencyEnabled);
++}
++
+ network::mojom::NetworkContextParamsPtr
+ SystemNetworkContextManager::CreateNetworkContextParams() {
+ // TODO(mmenke): Set up parameters here (in memory cookie store, etc).
+diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h 2019-09-12
16:09:52.819635118 +0200
+@@ -139,6 +139,12 @@ class SystemNetworkContextManager {
+ static network::mojom::HttpAuthDynamicParamsPtr
+ GetHttpAuthDynamicParamsForTesting();
+
++ // Enables Certificate Transparency and enforcing the Chrome Certificate
++ // Transparency Policy. For test use only. Use base::nullopt_t to reset to
++ // the default state.
++ static void SetEnableCertificateTransparencyForTesting(
++ base::Optional<bool> enabled);
++
+ private:
+ class URLLoaderFactoryForSystem;
+
+diff -up
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc 2019-09-12
16:09:52.820635131 +0200
+@@ -4836,7 +4836,7 @@ IN_PROC_BROWSER_TEST_F(PolicyTest,
+ browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
+ }
+
+-IN_PROC_BROWSER_TEST_F(PolicyTest,
++IN_PROC_BROWSER_TEST_F(CertificateTransparencyPolicyTest,
+ CertificateTransparencyEnforcementDisabledForCas) {
+ net::EmbeddedTestServer https_server_ok(net::EmbeddedTestServer::TYPE_HTTPS);
+ https_server_ok.SetSSLConfig(net::EmbeddedTestServer::CERT_OK);
+diff -up
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-12
16:09:52.821635143 +0200
+@@ -8,6 +8,7 @@
+ #include "base/callback.h"
+ #include "base/run_loop.h"
+ #include "base/test/scoped_feature_list.h"
++#include "chrome/browser/net/system_network_context_manager.h"
+ #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/ssl/cert_verifier_browser_test.h"
+ #include "chrome/browser/ui/browser.h"
+@@ -27,7 +28,17 @@ namespace {
+ // received by a server.
+ class ExpectCTBrowserTest : public CertVerifierBrowserTest {
+ public:
+- ExpectCTBrowserTest() : CertVerifierBrowserTest() {}
++ ExpectCTBrowserTest() : CertVerifierBrowserTest() {
++ // Expect-CT reporting depends on actually enforcing Certificate
++ // Transparency.
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++
++ ~ExpectCTBrowserTest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
+
+ void SetUpOnMainThread() override {
+ run_loop_ = std::make_unique<base::RunLoop>();
+diff -up
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-12
16:09:52.821635143 +0200
+@@ -433,6 +433,13 @@ class SecurityStateTabHelperTest : publi
+ SecurityStateTabHelperTest()
+ : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+ https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir());
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++
++ ~SecurityStateTabHelperTest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
+ }
+
+ void SetUpOnMainThread() override {
+diff -up
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc 2019-09-12
16:09:52.822635155 +0200
+@@ -1853,8 +1853,14 @@ class CertificateTransparencySSLUITest :
+ public:
+ CertificateTransparencySSLUITest()
+ : CertVerifierBrowserTest(),
+- https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
+- ~CertificateTransparencySSLUITest() override {}
++ https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++ ~CertificateTransparencySSLUITest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
+
+ void SetUpOnMainThread() override {
+ CertVerifierBrowserTest::SetUpOnMainThread();
+diff -up
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h
+---
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-09-09
23:55:14.000000000 +0200
++++
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-12
16:09:52.823635168 +0200
+@@ -45,6 +45,19 @@ class ChromeCTPolicyEnforcer : public ne
+
+ void SetClockForTesting(const base::Clock* clock) { clock_ = clock; }
+
++ //
TODO(https://crbug.com/999240): These are exposed to allow end-to-end
++ // testing by higher layers (i.e. that the ChromeCTPolicyEnforcer is
++ // correctly constructed). When either this issue or
https://crbug.com/848277
++ // are fixed, the configuration can be tested independently, and these can
++ // be removed.
++ const std::vector<std::string>& operated_by_google_logs_for_testing() {
++ return operated_by_google_logs_;
++ }
++ const std::vector<std::pair<std::string, base::TimeDelta>>&
++ disqualified_logs_for_testing() {
++ return disqualified_logs_;
++ }
++
+ private:
+ // Returns true if the log identified by |log_id| (the SHA-256 hash of the
+ // log's DER-encoded SPKI) has been disqualified, and sets
+diff -up
chromium-77.0.3865.75/services/network/network_context.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context.cc
+---
chromium-77.0.3865.75/services/network/network_context.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context.cc 2019-09-12
16:09:52.823635168 +0200
+@@ -36,6 +36,7 @@
+ #include "components/prefs/pref_registry_simple.h"
+ #include "components/prefs/pref_service.h"
+ #include "components/prefs/pref_service_factory.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/strong_binding.h"
+ #include "net/base/layered_network_delegate.h"
+ #include "net/base/load_flags.h"
+@@ -1877,16 +1878,6 @@ URLRequestContextOwner NetworkContext::A
+ base::FeatureList::IsEnabled(features::kNetworkErrorLogging));
+ #endif // BUILDFLAG(ENABLE_REPORTING)
+
+-#if BUILDFLAG(IS_CT_SUPPORTED)
+- if (params_->enforce_chrome_ct_policy) {
+- builder->set_ct_policy_enforcer(
+- std::make_unique<certificate_transparency::ChromeCTPolicyEnforcer>(
+- base::GetBuildTime(),
+- certificate_transparency::GetDisqualifiedLogs(),
+- certificate_transparency::GetLogsOperatedByGoogle()));
+- }
+-#endif // BUILDFLAG(IS_CT_SUPPORTED)
+-
+ net::HttpNetworkSession::Params session_params;
+ bool is_quic_force_disabled = false;
+ if (network_service_ && network_service_->quic_disabled())
+@@ -1936,8 +1927,20 @@ URLRequestContextOwner NetworkContext::A
+
+ #if BUILDFLAG(IS_CT_SUPPORTED)
+ std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs;
++ std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs;
++ std::vector<std::string> operated_by_google_logs;
++
+ if (!params_->ct_logs.empty()) {
+ for (const auto& log : params_->ct_logs) {
++ if (log->operated_by_google || log->disqualified_at) {
++ std::string log_id = crypto::SHA256HashString(log->public_key);
++ if (log->operated_by_google)
++ operated_by_google_logs.push_back(log_id);
++ if (log->disqualified_at) {
++ disqualified_logs.push_back(
++ std::make_pair(log_id, log->disqualified_at.value()));
++ }
++ }
+ scoped_refptr<const net::CTLogVerifier> log_verifier =
+ net::CTLogVerifier::Create(log->public_key, log->name);
+ if (!log_verifier) {
+@@ -1950,6 +1953,17 @@ URLRequestContextOwner NetworkContext::A
+ ct_verifier->AddLogs(ct_logs);
+ builder->set_ct_verifier(std::move(ct_verifier));
+ }
++
++ if (params_->enforce_chrome_ct_policy) {
++ std::sort(std::begin(operated_by_google_logs),
++ std::end(operated_by_google_logs));
++ std::sort(std::begin(disqualified_logs), std::end(disqualified_logs));
++
++ builder->set_ct_policy_enforcer(
++ std::make_unique<certificate_transparency::ChromeCTPolicyEnforcer>(
++ params_->ct_log_update_time, disqualified_logs,
++ operated_by_google_logs));
++ }
+ #endif // BUILDFLAG(IS_CT_SUPPORTED)
+
+ const base::CommandLine* command_line =
+diff -up
chromium-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context_unittest.cc
+---
chromium-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context_unittest.cc 2019-09-12
16:13:10.479056669 +0200
+@@ -2,6 +2,7 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include <algorithm>
+ #include <map>
+ #include <memory>
+ #include <string>
+@@ -38,10 +39,12 @@
+ #include "base/threading/thread_task_runner_handle.h"
+ #include "base/time/default_clock.h"
+ #include "base/time/default_tick_clock.h"
++#include "base/time/time.h"
+ #include "build/build_config.h"
+ #include
"components/network_session_configurator/browser/network_session_configurator.h"
+ #include "components/network_session_configurator/common/network_switches.h"
+ #include "components/prefs/testing_pref_service.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/remote.h"
+ #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+ #include "mojo/public/cpp/system/data_pipe_utils.h"
+@@ -115,6 +118,11 @@
+ #include "url/scheme_host_port.h"
+ #include "url/url_constants.h"
+
++#if BUILDFLAG(IS_CT_SUPPORTED)
++#include "components/certificate_transparency/chrome_ct_policy_enforcer.h"
++#include "services/network/public/mojom/ct_log_info.mojom.h"
++#endif
++
+ #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
+ #include "net/ftp/ftp_auth_cache.h"
+ #endif // !BUILDFLAG(DISABLE_FTP_SUPPORT)
+@@ -5958,6 +5966,72 @@ TEST_F(NetworkContextSplitCacheTest,
+ true /* was_cached */, true /* is_navigation */);
+ }
+
++#if BUILDFLAG(IS_CT_SUPPORTED)
++TEST_F(NetworkContextTest, CertificateTransparencyConfig) {
++ mojom::NetworkContextParamsPtr params = CreateContextParams();
++ params->enforce_chrome_ct_policy = true;
++ params->ct_log_update_time = base::Time::Now();
++
++ // The log public keys do not matter for the test, so invalid keys are used.
++ // However, because the log IDs are derived from the SHA-256 hash of the log
++ // key, the log keys are generated such that qualified logs are in the form
++ // of four digits (e.g. "0000", "1111"), while disqualified logs
are in the
++ // form of four letters (e.g. "AAAA", "BBBB").
++
++ for (int i = 0; i < 6; ++i) {
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ // Shift to ASCII '0' (0x30)
++ log_info->public_key = std::string(4, 0x30 + static_cast<char>(i));
++ log_info->name = std::string(4, 0x30 + static_cast<char>(i));
++ log_info->operated_by_google = i % 2;
++
++ params->ct_logs.push_back(std::move(log_info));
++ }
++ for (int i = 0; i < 3; ++i) {
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ // Shift to ASCII 'A' (0x41)
++ log_info->public_key = std::string(4, 0x41 + static_cast<char>(i));
++ log_info->name = std::string(4, 0x41 + static_cast<char>(i));
++ log_info->operated_by_google = false;
++ log_info->disqualified_at = base::TimeDelta::FromSeconds(i);
++
++ params->ct_logs.push_back(std::move(log_info));
++ }
++ std::unique_ptr<NetworkContext> network_context =
++ CreateContextWithParams(std::move(params));
++
++ net::CTPolicyEnforcer* request_enforcer =
++ network_context->url_request_context()->ct_policy_enforcer();
++ ASSERT_TRUE(request_enforcer);
++
++ // Completely unsafe if |enforce_chrome_ct_policy| is false.
++ certificate_transparency::ChromeCTPolicyEnforcer* policy_enforcer =
++ reinterpret_cast<certificate_transparency::ChromeCTPolicyEnforcer*>(
++ request_enforcer);
++
++ EXPECT_TRUE(std::is_sorted(
++ policy_enforcer->operated_by_google_logs_for_testing().begin(),
++ policy_enforcer->operated_by_google_logs_for_testing().end()));
++ EXPECT_TRUE(
++ std::is_sorted(policy_enforcer->disqualified_logs_for_testing().begin(),
++ policy_enforcer->disqualified_logs_for_testing().end()));
++
++ EXPECT_THAT(
++ policy_enforcer->operated_by_google_logs_for_testing(),
++ ::testing::UnorderedElementsAreArray({crypto::SHA256HashString("1111"),
++ crypto::SHA256HashString("3333"),
++
crypto::SHA256HashString("5555")}));
++ EXPECT_THAT(policy_enforcer->disqualified_logs_for_testing(),
++ ::testing::UnorderedElementsAre(
++ ::testing::Pair(crypto::SHA256HashString("AAAA"),
++ base::TimeDelta::FromSeconds(0)),
++ ::testing::Pair(crypto::SHA256HashString("BBBB"),
++ base::TimeDelta::FromSeconds(1)),
++ ::testing::Pair(crypto::SHA256HashString("CCCC"),
++ base::TimeDelta::FromSeconds(2))));
++}
++#endif
++
+ } // namespace
+
+ } // namespace network
+diff -up
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom 2019-09-12
16:09:52.824635180 +0200
+@@ -4,6 +4,8 @@
+
+ module network.mojom;
+
++import "mojo/public/mojom/base/time.mojom";
++
+ // A single Certificate Transparency Log configuration.
+ struct CTLogInfo {
+ // The DER-encoded SubjectPublicKeyInfo of the log.
+@@ -14,4 +16,13 @@ struct CTLogInfo {
+ // The human-readable, log-supplied log name. Note that this will not be
+ // translated.
+ string name;
++
++ // Whether or not the log should should be considered a Google Log for the
++ // purposes of enforcing the "Certificate Transparency in Chrome" policy.
++ bool operated_by_google = false;
++
++ // If set, the time since the Unix Epoch when the log was disqualified. This
++ // is used to determine the "once or currently qualified" status of the
log.
++ // If the log is currently qualified, this will not be set.
++ mojo_base.mojom.TimeDelta? disqualified_at;
+ };
+diff -up
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom 2019-09-12
16:09:52.825635192 +0200
+@@ -239,15 +239,6 @@ struct NetworkContextParams {
+ [EnableIf=is_android]
+ bool check_clear_text_permitted = false;
+
+- // True if the "Certificate Transparency in Chrome" policy (see
+- //
https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should
+- // be enforced for certificates and connections.
+- //
+- // See //net/docs/certificate-transparency.md before setting this flag to
+- // true.
+- [EnableIf=is_ct_supported]
+- bool enforce_chrome_ct_policy = false;
+-
+ // Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS.
+ bool http_09_on_non_default_ports_enabled = false;
+
+@@ -300,6 +291,15 @@ struct NetworkContextParams {
+ // servers, so they can discover misconfigurations.
+ bool enable_certificate_reporting = false;
+
++ // True if the "Certificate Transparency in Chrome" policy (see
++ //
https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should
++ // be enforced for certificates and connections.
++ //
++ // See //net/docs/certificate-transparency.md before setting this flag to
++ // true.
++ [EnableIf=is_ct_supported]
++ bool enforce_chrome_ct_policy = false;
++
+ // Enables Expect CT reporting, which sends reports for opted-in sites that
+ // don't serve sufficient Certificate Transparency information.
+ [EnableIf=is_ct_supported]
+@@ -311,6 +311,13 @@ struct NetworkContextParams {
+ [EnableIf=is_ct_supported]
+ array<CTLogInfo> ct_logs;
+
++ // When the Certificate Transparency logs in |ct_logs| were last updated. If
++ // |enforce_chrome_ct_policy| is set, and |ct_log_update_time| is not
++ // sufficiently recent, enforcement of the "Certificate Transparency in
++ // Chrome" policy will be disabled.
++ [EnableIf=is_ct_supported]
++ mojo_base.mojom.Time ct_log_update_time;
++
+ // Specifies the path to the directory where NSS will store its database.
+ [EnableIf=is_chromeos]
+ mojo_base.mojom.FilePath? nss_path;
diff --git a/chromium-77.0.3865.75-el7-noexcept.patch
b/chromium-77.0.3865.75-el7-noexcept.patch
new file mode 100644
index 0000000..366c139
--- /dev/null
+++ b/chromium-77.0.3865.75-el7-noexcept.patch
@@ -0,0 +1,165 @@
+diff -up chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc
+---
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-09-17
18:42:37.137393137 +0200
++++ chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc 2019-09-17
18:42:37.145393201 +0200
+@@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id
+ provider_id_(provider_id) {}
+
+ MediaSink::MediaSink(const MediaSink& other) = default;
+-MediaSink::MediaSink(MediaSink&& other) noexcept = default;
++MediaSink::MediaSink(MediaSink&& other) = default;
+ MediaSink::MediaSink() = default;
+ MediaSink::~MediaSink() = default;
+
+ MediaSink& MediaSink::operator=(const MediaSink& other) = default;
+-MediaSink& MediaSink::operator=(MediaSink&& other) noexcept = default;
++MediaSink& MediaSink::operator=(MediaSink&& other) = default;
+
+ bool MediaSink::IsMaybeCloudSink() const {
+ switch (icon_type_) {
+diff -up
chromium-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.cc
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept 2019-09-17
18:42:09.417172829 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.cc 2019-09-17
18:42:09.385172574 +0200
+@@ -42,7 +42,7 @@ QueryResults::QueryResults(QueryResults&
+ Swap(&other);
+ }
+
+-QueryResults& QueryResults::operator=(QueryResults&& other) noexcept {
++QueryResults& QueryResults::operator=(QueryResults&& other) {
+ Swap(&other);
+ return *this;
+ }
+@@ -186,7 +186,7 @@ QueryURLResult::QueryURLResult(QueryURLR
+
+ QueryURLResult& QueryURLResult::operator=(const QueryURLResult&) = default;
+
+-QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) noexcept =
default;
++QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) = default;
+
+ // MostVisitedURL --------------------------------------------------------------
+
+diff -up
chromium-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.h
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept 2019-09-17
18:42:09.437172988 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.h 2019-09-17
18:42:09.365172415 +0200
+@@ -143,7 +143,7 @@ class QueryResults {
+ ~QueryResults();
+
+ QueryResults(QueryResults&& other) noexcept;
+- QueryResults& operator=(QueryResults&& other) noexcept;
++ QueryResults& operator=(QueryResults&& other);
+
+ void set_reached_beginning(bool reached) { reached_beginning_ = reached; }
+ bool reached_beginning() { return reached_beginning_; }
+@@ -278,7 +278,7 @@ struct QueryURLResult {
+ QueryURLResult(const QueryURLResult&);
+ QueryURLResult(QueryURLResult&&) noexcept;
+ QueryURLResult& operator=(const QueryURLResult&);
+- QueryURLResult& operator=(QueryURLResult&&) noexcept;
++ QueryURLResult& operator=(QueryURLResult&&);
+ ~QueryURLResult();
+
+ // Indicates whether the call to HistoryBackend::QueryURL was successfull
+diff -up chromium-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/url_row.cc
+---
chromium-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept 2019-09-18
08:03:25.458138423 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/url_row.cc 2019-09-18
08:03:34.363234155 +0200
+@@ -26,7 +26,7 @@ URLRow::~URLRow() {
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
++URLRow& URLRow::operator=(URLRow&& other) = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
+diff -up
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc
+---
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept 2019-09-17
22:00:18.670108528 +0200
++++ chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc 2019-09-17
22:00:32.518272148 +0200
+@@ -60,7 +60,7 @@ SuggestionAnswer::TextField::TextField(T
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+ const TextField&) = default;
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+- TextField&&) noexcept = default;
++ TextField&&) = default;
+
+ // static
+ bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json,
+diff -up chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc
+---
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept 2019-09-17
18:42:14.622214197 +0200
++++ chromium-77.0.3865.75/components/policy/core/common/policy_map.cc 2019-09-17
18:42:14.556213673 +0200
+@@ -52,7 +52,7 @@ PolicyMap::Entry::Entry(
+ PolicyMap::Entry::~Entry() = default;
+
+ PolicyMap::Entry::Entry(Entry&&) noexcept = default;
+-PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) noexcept = default;
++PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default;
+
+ PolicyMap::Entry PolicyMap::Entry::DeepCopy() const {
+ Entry copy;
+diff -up
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc
+---
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept 2019-09-17
21:06:27.037828110 +0200
++++
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc 2019-09-17
21:07:20.726472932 +0200
+@@ -52,7 +52,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc
+ CoreAccountInfo& CoreAccountInfo::operator=(const CoreAccountInfo& other) =
+ default;
+
+-CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other)
noexcept =
++CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other) =
+ default;
+
+ bool CoreAccountInfo::IsEmpty() const {
+@@ -69,7 +69,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
+
+ AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
+
+-AccountInfo& AccountInfo::operator=(AccountInfo&& other) noexcept =
default;
++AccountInfo& AccountInfo::operator=(AccountInfo&& other) = default;
+
+ bool AccountInfo::IsEmpty() const {
+ return CoreAccountInfo::IsEmpty() && hosted_domain.empty() &&
+diff -up chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept 2019-09-17
18:43:12.969677930 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc 2019-09-17
18:43:12.989678089 +0200
+@@ -14,7 +14,7 @@ CoreAccountId::~CoreAccountId() = defaul
+
+ CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
+
+-CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept =
default;
++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) = default;
+
+ CoreAccountId::CoreAccountId(const char* id) : id(id) {}
+
+diff -up chromium-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.h
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept 2019-09-17
18:43:12.978678001 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.h 2019-09-17
18:43:12.983678041 +0200
+@@ -20,7 +20,7 @@ struct CoreAccountId {
+ ~CoreAccountId();
+
+ CoreAccountId& operator=(const CoreAccountId&);
+- CoreAccountId& operator=(CoreAccountId&&) noexcept;
++ CoreAccountId& operator=(CoreAccountId&&);
+
+ // Those implicit constructor and conversion operator allow to
+ // progressively migrate the code to use this struct. Removing
+diff -up chromium-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept
chromium-77.0.3865.75/gpu/config/gpu_info.cc
+--- chromium-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept 2019-09-17
18:42:25.049297073 +0200
++++ chromium-77.0.3865.75/gpu/config/gpu_info.cc 2019-09-17 18:42:25.049297073 +0200
+@@ -170,7 +170,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
+ const GPUInfo::GPUDevice& other) = default;
+
+ GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=(
+- GPUInfo::GPUDevice&& other) noexcept = default;
++ GPUInfo::GPUDevice&& other) = default;
+
+ GPUInfo::GPUInfo()
+ : optimus(false),
+diff -up
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h
+---
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept 2019-09-17
21:46:46.378655525 +0200
++++ chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h 2019-09-17
21:47:16.897035418 +0200
+@@ -21,7 +21,7 @@ struct ServiceInfo {
+ ServiceInfo(ServiceInfo&&) MAYBE_NOEXCEPT = default;
+ ServiceInfo(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+- ServiceInfo& operator=(ServiceInfo&&) MAYBE_NOEXCEPT = default;
++ ServiceInfo& operator=(ServiceInfo&&) = default;
+ ServiceInfo& operator=(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+ bool operator==(const ServiceInfo& other) const;
diff --git a/chromium-77.0.3865.75-fedora-user-agent.patch
b/chromium-77.0.3865.75-fedora-user-agent.patch
new file mode 100644
index 0000000..8f6de51
--- /dev/null
+++ b/chromium-77.0.3865.75-fedora-user-agent.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent
chromium-77.0.3865.75/content/common/user_agent.cc
+--- chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent 2019-09-12
15:49:11.902270729 +0200
++++ chromium-77.0.3865.75/content/common/user_agent.cc 2019-09-12 15:50:11.555732044
+0200
+@@ -35,7 +35,7 @@ std::string GetUserAgentPlatform() {
+ #elif defined(OS_MACOSX)
+ return "Macintosh; ";
+ #elif defined(USE_X11) || defined(USE_OZONE)
+- return "X11; "; // strange, but that's what Firefox uses
++ return "X11; Fedora; "; // strange, but that's what Firefox uses
+ #elif defined(OS_ANDROID)
+ return "Linux; ";
+ #elif defined(OS_POSIX)
diff --git a/chromium-77.0.3865.75-gcc-abstract-class.patch
b/chromium-77.0.3865.75-gcc-abstract-class.patch
new file mode 100644
index 0000000..6d77299
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-abstract-class.patch
@@ -0,0 +1,61 @@
+From f08cb0022527081c078e8b96062e6c9b4fbda151 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Fri, 26 Jul 2019 16:48:06 +0000
+Subject: [PATCH] BinaryUploadService: change parameter passing that cannot afford
abstract class
+
+The method UploadForDeepScanning gets a Request as parameter. But Request is an
+abstract class, so GCC will not allow that declaration (polimorphycs should be
+passed by reference). Use std::unique_ptr so BinaryUploadService can assume
+ownership.
+
+Bug: 819294
+Change-Id: I9e8c75cc92b01abd704d9049b0421555377da5ba
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1713550
+Reviewed-by: Daniel Rubery <drubery(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#681333}
+---
+
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+index 6430c89..4e90487 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+@@ -10,7 +10,7 @@
+ namespace safe_browsing {
+
+ void BinaryUploadService::UploadForDeepScanning(
+- BinaryUploadService::Request request) {
++ std::unique_ptr<BinaryUploadService::Request> request) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ NOTREACHED();
+ }
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+index d2dfd83..9b6f395 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+ #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+
++#include <memory>
++
+ #include "base/callback.h"
+ #include "components/safe_browsing/proto/webprotect.pb.h"
+
+@@ -40,6 +42,7 @@
+ public:
+ // |callback| will run on the UI thread.
+ explicit Request(Callback callback);
++ virtual ~Request() = default;
+ Request(const Request&) = delete;
+ Request& operator=(const Request&) = delete;
+
+@@ -67,7 +70,7 @@
+ // Upload the given file contents for deep scanning. The results will be
+ // returned asynchronously by calling |request|'s |callback|. This must be
+ // called on the UI thread.
+- void UploadForDeepScanning(Request request);
++ void UploadForDeepScanning(std::unique_ptr<Request> request);
+ };
+
+ } // namespace safe_browsing
diff --git a/chromium-77.0.3865.75-gcc-include-memory.patch
b/chromium-77.0.3865.75-gcc-include-memory.patch
new file mode 100644
index 0000000..93b4399
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-include-memory.patch
@@ -0,0 +1,12 @@
+diff -up
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h
+---
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory 2019-09-13
14:44:24.962770079 +0200
++++ chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h 2019-09-13
14:44:45.347073612 +0200
+@@ -3,6 +3,8 @@
+
+ #include "low_pass_filter.h"
+
++#include <memory>
++
+ namespace one_euro_filter {
+ namespace test {
+ class OneEuroFilterTest;
diff --git a/chromium-77.0.3865.75-harfbuzz-subset.patch
b/chromium-77.0.3865.75-harfbuzz-subset.patch
new file mode 100644
index 0000000..55d78d1
--- /dev/null
+++ b/chromium-77.0.3865.75-harfbuzz-subset.patch
@@ -0,0 +1,49 @@
+From 27e25336b8316ff3ec4e464058682ed85801fd06 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Date: Mon, 29 Jul 2019 10:54:28 +0000
+Subject: [PATCH] Also link against libharfbuzz-subset when use_system_harfbuzz is true
+
+When building HarfBuzz as part of Chromium, there is a single source set
+with all the files we need in the build.
+
+Upstream HarfBuzz, on the other hand, produces a few different libraries:
+harfbuzz, harfbuzz-icu and harfbuzz-subset. When |use_system_harfbuzz| is
+true, we were only looking for (and using) harfbuzz.pc with pkg-config even
+though we also use symbols from libharfbuzz-subset.so. This resulted in
+errors when linking:
+
+ ld: obj/skia/skia/SkPDFSubsetFont.o: in function
`SkPDFSubsetFont(sk_sp<SkData>, SkPDFGlyphUse const&,
SkPDF::Metadata::Subsetter, char const*, int)':
+
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x48a):
undefined reference to `hb_subset_input_create_or_fail'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x4af):
undefined reference to `hb_subset_input_glyph_set'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5d7):
undefined reference to `hb_subset_input_set_retain_gids'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5e4):
undefined reference to `hb_subset_input_set_drop_hints'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5f3):
undefined reference to `hb_subset'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x66f):
undefined reference to `hb_subset_input_destroy'
+
+as reported in
+https://groups.google.com/a/chromium.org/d/msg/chromium-packagers/UyJsVJ5QqWo/jSv5z7-rEQAJ
+
+Change-Id: I997af075c7b7263cd7cc71a63db5b0f93bd1ab59
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1715288
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Commit-Queue: Dominik Röttsches <drott(a)chromium.org>
+Reviewed-by: Dominik Röttsches <drott(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#681760}
+---
+
+diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
+index 37d8e33..72013eb1d 100644
+--- a/third_party/harfbuzz-ng/BUILD.gn
++++ b/third_party/harfbuzz-ng/BUILD.gn
+@@ -16,7 +16,10 @@
+ "//third_party:freetype_harfbuzz",
+ "//third_party/freetype:freetype_source",
+ ]
+- packages = [ "harfbuzz" ]
++ packages = [
++ "harfbuzz",
++ "harfbuzz-subset",
++ ]
+ }
+ } else {
+ config("harfbuzz_config") {
diff --git a/chromium-77.0.3865.75-missing-limits.patch
b/chromium-77.0.3865.75-missing-limits.patch
new file mode 100644
index 0000000..3ac1770
--- /dev/null
+++ b/chromium-77.0.3865.75-missing-limits.patch
@@ -0,0 +1,28 @@
+From 5baf7df7f4c5971dab552897eeef94b194650ce5 Mon Sep 17 00:00:00 2001
+From: Dave Tapuska <dtapuska(a)chromium.org>
+Date: Mon, 12 Aug 2019 22:30:13 +0000
+Subject: [PATCH] Fix build failure due to missing include for std::numeric_limits usage.
+
+Some configurations fail to build, limits should have been included.
+
+BUG=992832
+
+Change-Id: I894ba0543bfcef101c93259e39a31d12ae6d035c
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1747981
+Commit-Queue: Dave Tapuska <dtapuska(a)chromium.org>
+Reviewed-by: Mostyn Bramley-Moore <mostynb(a)vewd.com>
+Cr-Commit-Position: refs/heads/master@{#686214}
+---
+
+diff --git a/third_party/blink/renderer/platform/exported/web_time_range.cc
b/third_party/blink/renderer/platform/exported/web_time_range.cc
+index 384566a..68d83e1 100644
+--- a/third_party/blink/renderer/platform/exported/web_time_range.cc
++++ b/third_party/blink/renderer/platform/exported/web_time_range.cc
+@@ -31,6 +31,7 @@
+ #include "third_party/blink/public/platform/web_time_range.h"
+
+ #include <cmath>
++#include <limits>
+
+ namespace blink {
+
diff --git a/chromium-77.0.3865.75-no-zlib-mangle.patch
b/chromium-77.0.3865.75-no-zlib-mangle.patch
new file mode 100644
index 0000000..c32d226
--- /dev/null
+++ b/chromium-77.0.3865.75-no-zlib-mangle.patch
@@ -0,0 +1,22 @@
+diff -up chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle
chromium-77.0.3865.75/third_party/zlib/zconf.h
+--- chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle 2019-09-12
09:36:37.924086850 +0200
++++ chromium-77.0.3865.75/third_party/zlib/zconf.h 2019-09-12 09:53:01.623958551 +0200
+@@ -9,18 +9,6 @@
+ #define ZCONF_H
+
+ /*
+- * This library is also built as a part of AOSP, which does not need to include
+- * chromeconf.h. This config does not want chromeconf.h, so it can set this
+- * macro to opt out. While this works today, there's no guarantee that building
+- * zlib outside of Chromium keeps working in the future.
+- */
+-#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF)
+-/* This include does prefixing as below, but with an updated set of names. Also
+- * sets up export macros in component builds. */
+-#include "chromeconf.h"
+-#endif
+-
+-/*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without
it.
+ * Even better than compiling with -DZ_PREFIX would be to use configure to set
diff --git a/chromium-77.0.3865.75-unbundle-zlib.patch
b/chromium-77.0.3865.75-unbundle-zlib.patch
new file mode 100644
index 0000000..d6c45ad
--- /dev/null
+++ b/chromium-77.0.3865.75-unbundle-zlib.patch
@@ -0,0 +1,25 @@
+From e1bbdec720a333937bd1b990ae0f7ee97db0d3b0 Mon Sep 17 00:00:00 2001
+From: Your Name <you(a)example.com>
+Date: Fri, 28 Jun 2019 15:56:23 +0000
+Subject: [PATCH] update zlib
+
+---
+ third_party/perfetto/gn/BUILD.gn | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
+index c951f5f..297eee3 100644
+--- a/third_party/perfetto/gn/BUILD.gn
++++ b/third_party/perfetto/gn/BUILD.gn
+@@ -200,7 +200,7 @@ group("zlib") {
+ "//buildtools:zlib",
+ ]
+ } else if (build_with_chromium) {
+- public_configs = [ "//third_party/zlib:zlib_config" ]
++ public_configs = [ "//third_party/zlib:system_zlib" ]
+ public_deps = [
+ "//third_party/zlib",
+ ]
+--
+2.21.0
+
diff --git a/chromium-77.0.3865.90-linked-hash-set.patch
b/chromium-77.0.3865.90-linked-hash-set.patch
new file mode 100644
index 0000000..f921f1a
--- /dev/null
+++ b/chromium-77.0.3865.90-linked-hash-set.patch
@@ -0,0 +1,130 @@
+From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001
+From: Jeremy Roman <jbroman(a)chromium.org>
+Date: Wed, 07 Aug 2019 13:26:48 +0000
+Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset
initialization would be bad.
+
+Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits.
+
+Bug: 980025
+Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1739948
+Reviewed-by: Kentaro Hara <haraken(a)chromium.org>
+Reviewed-by: Yutaka Hirano <yhirano(a)chromium.org>
+Commit-Queue: Jeremy Roman <jbroman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#684731}
+---
+
+diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h
b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+index 0efc8fb..90063cb 100644
+--- a/third_party/blink/renderer/platform/fonts/font_cache_key.h
++++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+@@ -133,6 +133,10 @@
+
+ struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> {
+ STATIC_ONLY(FontCacheKeyTraits);
++
++ // std::string's empty state need not be zero in all implementations,
++ // and it is held within FontFaceCreationParams.
++ static const bool kEmptyValueIsZero = false;
+ };
+
+ } // namespace blink
+diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+index b35b6e9..77e524c 100644
+--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+@@ -146,6 +146,11 @@
+ LinkedHashSetNodeBase* next)
+ : LinkedHashSetNodeBase(prev, next), value_(value) {}
+
++ LinkedHashSetNode(ValueArg&& value,
++ LinkedHashSetNodeBase* prev,
++ LinkedHashSetNodeBase* next)
++ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
++
+ LinkedHashSetNode(LinkedHashSetNode&& other)
+ : LinkedHashSetNodeBase(std::move(other)),
+ value_(std::move(other.value_)) {}
+@@ -445,10 +450,13 @@
+
+ // The slot is empty when the next_ field is zero so it's safe to zero
+ // the backing.
+- static const bool kEmptyValueIsZero = true;
++ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero;
+
+ static const bool kHasIsEmptyValueFunction = true;
+ static bool IsEmptyValue(const Node& node) { return !node.next_; }
++ static Node EmptyValue() {
++ return Node(ValueTraits::EmptyValue(), nullptr, nullptr);
++ }
+
+ static const int kDeletedValue = -1;
+
+diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+index 4c3f899..cd1be00 100644
+--- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
++++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+@@ -487,6 +487,7 @@
+ };
+
+ struct Complicated {
++ Complicated() : Complicated(0) {}
+ Complicated(int value) : simple_(value) { objects_constructed_++; }
+
+ Complicated(const Complicated& other) : simple_(other.simple_) {
+@@ -495,9 +496,6 @@
+
+ Simple simple_;
+ static int objects_constructed_;
+-
+- private:
+- Complicated() = delete;
+ };
+
+ int Complicated::objects_constructed_ = 0;
+@@ -731,4 +729,45 @@
+
+ } // anonymous namespace
+
++// A unit type which objects to its state being initialized wrong.
++struct InvalidZeroValue {
++ InvalidZeroValue() = default;
++ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {}
++ ~InvalidZeroValue() { CHECK(ok_); }
++ bool IsHashTableDeletedValue() const { return deleted_; }
++
++ bool ok_ = true;
++ bool deleted_ = false;
++};
++
++template <>
++struct HashTraits<InvalidZeroValue> :
SimpleClassHashTraits<InvalidZeroValue> {
++ static const bool kEmptyValueIsZero = false;
++};
++
++template <>
++struct DefaultHash<InvalidZeroValue> {
++ struct Hash {
++ static unsigned GetHash(const InvalidZeroValue&) { return 0; }
++ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) {
++ return true;
++ }
++ };
++};
++
++template <typename Set>
++class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {};
++
++using InvalidZeroValueSetTypes =
++ testing::Types<ListHashSet<InvalidZeroValue>,
++ ListHashSet<InvalidZeroValue, 1>,
++ LinkedHashSet<InvalidZeroValue>>;
++TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes);
++
++TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) {
++ using Set = TypeParam;
++ Set set;
++ set.insert(InvalidZeroValue());
++}
++
+ } // namespace WTF
diff --git a/chromium.spec b/chromium.spec
index 81982e2..96c8f36 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -2,6 +2,13 @@
#
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompi...
%global _python_bytecompile_extra 1
+# Fancy build status, so we at least know, where we are..
+# %1 where
+# %2 what
+%global build_target() \
+ export NINJA_STATUS="[%2:%f/%t] " ; \
+ ../depot_tools/ninja -C '%1' -vvv '%2'
+
# This is faster when it works, but it doesn't always.
%ifarch aarch64
%global use_jumbo 0
@@ -28,9 +35,9 @@
%global useapikeys 1
# Leave this alone, please.
-%global target out/Release
-%global headlesstarget out/Headless
-%global remotingtarget out/Remoting
+%global builddir out/Release
+%global headlessbuilddir out/Headless
+%global remotingbuilddir out/Remoting
# Debuginfo packages aren't very useful here. If you need to debug
# you should do a proper debug build (not implemented in this spec yet)
@@ -45,7 +52,7 @@
%global crd_path %{_libdir}/chrome-remote-desktop
# We don't want any libs in these directories to generate Provides
-# Requires is trickier.
+# Requires is trickier.
# To generate this list, go into %%{buildroot}%%{chromium_path} and run
# for i in `find . -name "*.so"`; do NAME=`basename -s .so $i`; printf
"$NAME|"; done
@@ -54,17 +61,15 @@
%global __provides_exclude_from
%{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_emb
edder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLaye
r_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo
_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|l
iblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libreso
urce_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia|libfontconfig
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_
common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libpr
inting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_
blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|l
ibcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevic
es|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido|libfontconfig
%else
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_emb
edder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLaye
r_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo
_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|l
iblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libreso
urce_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_
common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libpr
inting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_
blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|l
ibcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevic
es|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
# If we build with shared on, then chrome-remote-desktop depends on chromium libs.
# If we build with shared off, then users cannot swap out libffmpeg (and i686 gets a lot
harder to build)
%global shared 1
-# We should not need to turn this on. The app in the webstore _should_ work.
-%global build_remoting_app 0
# AddressSanitizer mode
#
https://www.chromium.org/developers/testing/addresssanitizer
@@ -118,9 +123,9 @@ BuildRequires: libicu-devel >= 5.4
%global bundlefontconfig 0
%endif
-# Needs at least harfbuzz 2.3.0 now.
-# 2019-03-13
-%if 0%{?fedora} < 30
+# Needs at least harfbuzz 2.4.0 now.
+# 2019-09-13
+%if 0%{?fedora} < 31
%global bundleharfbuzz 1
%else
%global bundleharfbuzz 0
@@ -133,13 +138,6 @@ BuildRequires: libicu-devel >= 5.4
%global pulseaudioapichange 0
%endif
-# RHEL 8 doesn't have minizip
-%if 0%{?rhel} == 8
-%global bundleminizip 1
-%else
-%global bundleminizip 0
-%endif
-
### Google API keys (see
http://www.chromium.org/developers/how-tos/api-keys)
### Note: These are for Fedora use ONLY.
### For your own distribution, please get your own set of keys.
@@ -156,156 +154,80 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 76
+%global majorversion 77
%if %{freeworld}
-Name: chromium%{chromium_channel}%{?freeworld:-libs-media-freeworld}
-Summary: Chromium media libraries built with all possible codecs
+Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
-Summary: A WebKit (Blink) powered web browser
%endif
-Version: %{majorversion}.0.3809.132
+Version: %{majorversion}.0.3865.90
Release: 3%{?dist}
+Summary: A WebKit (Blink) powered web browser
Url:
http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and
(MPLv1.1 or GPLv2 or LGPLv2)
### Chromium Fedora Patches ###
-Patch0: chromium-67.0.3396.62-gcc5.patch
-Patch1: chromium-45.0.2454.101-linux-path-max.patch
-Patch2: chromium-55.0.2883.75-addrfix.patch
-Patch3: chromium-72.0.3626.121-notest.patch
-# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
-Patch4: chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
-# Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
-Patch6: chromium-70.0.3538.67-sandbox-pie.patch
+Patch0: chromium-70.0.3538.67-sandbox-pie.patch
# Use /etc/chromium for master_prefs
-Patch7: chromium-68.0.3440.106-master-prefs-path.patch
+Patch1: chromium-68.0.3440.106-master-prefs-path.patch
# Use gn system files
-Patch8: chromium-67.0.3396.62-gn-system.patch
-# Fix issue where timespec is not defined when sys/stat.h is included.
-Patch9: chromium-53.0.2785.92-boringssl-time-fix.patch
-# I wouldn't have to do this if there was a standard way to append extra compiler
flags
-Patch10: chromium-63.0.3289.84-nullfix.patch
-# Add explicit includedir for jpeglib.h
-Patch11: chromium-54.0.2840.59-jpeg-include-dir.patch
-# On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
-Patch12: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+Patch2: chromium-67.0.3396.62-gn-system.patch
# Revert
https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8...
#
https://bugs.chromium.org/p/chromium/issues/detail?id=712737
#
https://bugzilla.redhat.com/show_bug.cgi?id=1446851
-Patch13: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
-# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
-Patch14: chromium-64.0.3282.119-ffmpeg-stdatomic.patch
-# Nacl can't die soon enough
-Patch15: chromium-66.0.3359.117-system-clang.patch
+Patch3: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
# Do not prefix libpng functions
-Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
+Patch4: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
-Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch
+Patch5: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-Patch18: chromium-75.0.3770.80-no-zlib-mangle.patch
-# Fix libavutil include pathing to find arch specific timer.h
-# For some reason, this only fails on aarch64. No idea why.
-Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
-# from gentoo
-Patch20: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
-# From gentoo
-Patch21: chromium-72.0.3626.121-gcc5-r3.patch
-# To use round with gcc, you need to #include <cmath>
-Patch22: chromium-65.0.3325.146-gcc-round-fix.patch
-# Include proper headers to invoke memcpy()
-Patch23: chromium-65.0.3325.146-memcpy-fix.patch
-# ../../mojo/public/cpp/bindings/associated_interface_ptr_info.h:48:43: error: cannot
convert 'const mojo::ScopedInterfaceEndpointHandle' to 'bool' in return
-Patch24: chromium-68.0.3440.106-boolfix.patch
-# From Debian
-Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
+Patch6: chromium-77.0.3865.75-no-zlib-mangle.patch
# Do not use unrar code, it is non-free
-Patch27: chromium-73.0.3683.75-norar.patch
-# Upstream GCC fixes
-Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
-# Add "Fedora" to the user agent string
-Patch29: chromium-72.0.3626.121-fedora-user-agent.patch
-# Try to fix version.py for Rawhide
-Patch30: chromium-71.0.3578.98-py2-bootstrap.patch
-# Fix default on redeclaration error
-#
https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c...
-Patch31: chromium-68.0.3440.106-fix-default-on-redeclaration.patch
+Patch7: chromium-73.0.3683.75-norar.patch
# Use Gentoo's Widevine hack
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch32: chromium-71.0.3578.98-widevine-r3.patch
-# Do not require sysroot
-# Forget about trying to make libc++
-# BUILD SANELY PLEASE
-Patch33: chromium-69.0.3497.81-build-sanely-please.patch
+Patch8: chromium-71.0.3578.98-widevine-r3.patch
# Disable fontconfig cache magic that breaks remoting
-Patch34: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
-# Fix aarch64 build against latest linux kernel headers
-Patch35: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
+Patch9: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
-Patch36: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+Patch10: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
-Patch37: chromium-widevine-other-locations.patch
-# Disable -fno-delete-null-pointer-checks
-Patch38: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
-# Linux 5.2 defines SIOCGSTAMP in a slightly different way, so we need to teach chromium
where to find it
-Patch41: chromium-75.0.3770.80-SIOCGSTAMP.patch
-# Revert
https://chromium.googlesource.com/chromium/src/+/daff6b66faae53a0cefb8898...
-# It might make clang happy but it breaks gcc. F*** clang.
-Patch43: chromium-75.0.3770.80-revert-daff6b.patch
-# Avoid pure virtual crash destroying RenderProcessUserData
-#
https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa95448758...
-Patch44: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
+Patch11: chromium-widevine-other-locations.patch
+# Try to fix version.py for Rawhide
+Patch12: chromium-71.0.3578.98-py2-bootstrap.patch
+# Add "Fedora" to the user agent string
+Patch13: chromium-77.0.3865.75-fedora-user-agent.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
-Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
-# fix v8 compile with gcc
-#
https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550...
-Patch46: chromium-75.0.3770.100-fix-v8-gcc.patch
-# Fix Vulkan compilation with gcc
-#
https://chromium.googlesource.com/chromium/src/+/fdb3bb1f8c41d044a5b0cb80...
-Patch47: chromium-76.0.3809.100-gcc-vulkan.patch
-#
https://chromium-review.googlesource.com/c/chromium/src/+/1645297
-Patch48: chromium-76.0.3809.100-gcc-cc-no-except.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/502e6e42633d2571c823...
-Patch49: chromium-76.0.3809.100-gcc-net-fetcher.patch
-#
https://quiche.googlesource.com/quiche.git/+/9424add9d73432a794b794479025...
-Patch50: chromium-76.0.3809.100-quiche-compile-fix.patch
-#
https://chromium.googlesource.com/chromium/src/+/53bb5a463ee956c70230eaa5...
-Patch51: chromium-76.0.3809.100-throttling-dead-beef.patch
-#
https://chromium.googlesource.com/chromium/src/+/52b5ceac95b67491b1c71f0e...
-Patch52: chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/715cb38eac889625de0c...
-Patch53: chromium-76.0.3809.100-weak-ptr-no-except.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/c6afbd59c997c2b64f11...
-Patch54: chromium-76.0.3809.100-gcc-feature-policy-parser.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/cf6d6b40d711fce93a24...
-Patch55: chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/dcb55fb8f18abe5f43d2...
-Patch56: chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/7dc76c8d9f4cfbce7cf1...
-Patch57: chromium-76.0.3809.100-gcc-initialization-order.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/138904af5d6a4158ef42...
-Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/bdc24128b75008743d81...
-Patch59: chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/5d7f227fa844e79568df...
-Patch60: chromium-76.0.3809.100-gcc-themeservice-includes.patch
+Patch50: chromium-75.0.3770.80-grpc-gettid-fix.patch
# In GCC one can't use alignas() for exported classes
#
https://chromium.googlesource.com/chromium/src.git/+/8148fd96ae04a1150a9c...
-Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
+Patch51: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
# Needs to be submitted..
-Patch62: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
+Patch52: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
# Needs to be submitted.. (ugly hack, needs to be added properly to GN files)
-Patch63: chromium-76.0.3809.100-vtable-symbol-undefined.patch
+Patch53: chromium-76.0.3809.100-vtable-symbol-undefined.patch
#
https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222...
-Patch64: chromium-76.0.3809.132-certificate-transparency.patch
+Patch54: chromium-77.0.3865.75-certificate-transparency.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch55: chromium-77.0.3865.75-unbundle-zlib.patch
+# Needs to be submitted..
+Patch56: chromium-77.0.3865.75-gcc-include-memory.patch
+#
https://chromium.googlesource.com/chromium/src/+/6b633c4b14850df376d5cec5...
+Patch57: chromium-77.0.3865.75-base-gcc-no-alignas.patch
+#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
+Patch58: chromium-77.0.3865.75-harfbuzz-subset.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
+Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
+#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
+Patch60: chromium-77.0.3865.75-missing-limits.patch
+#
https://chromium.googlesource.com/chromium/src/+/74138b9febd37eac0fc26b8e...
+Patch61: chromium-77.0.3865.90-linked-hash-set.patch
-# Apply these changes to work around EPEL7 compiler issues
-Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
# el7 only patch
-Patch102: chromium-76.0.3809.100-el7-noexcept.patch
+Patch102: chromium-77.0.3865.75-el7-noexcept.patch
# Enable VAAPI support on Linux
# NOTE: This patch will never land upstream
@@ -318,7 +240,6 @@ Patch205: chromium-76.0.3809.100-pulse-api-change.patch
# Apply these patches to work around EPEL8 issues
Patch300: chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
-Patch301: chromium-76.0.3809.132-chromedriver-zlib-fix.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
@@ -370,12 +291,15 @@ BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: GConf2-devel
BuildRequires: glib2-devel
+%if 0%{?fedora} <= 27
+BuildRequires: gnome-keyring-devel
+%endif
BuildRequires: glibc-devel
BuildRequires: gperf
%if 0%{?bundleharfbuzz}
#nothing
%else
-BuildRequires: harfbuzz-devel >= 2.3.0
+BuildRequires: harfbuzz-devel >= 2.4.0
%endif
BuildRequires: libatomic
BuildRequires: libcap-devel
@@ -391,15 +315,11 @@ BuildRequires: libusb-devel
BuildRequires: libXdamage-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXtst-devel
-%if %{bundleminizip}
-# We're using the bundle, baby.
-%else
%if 0%{?fedora} >= 30
BuildRequires: minizip-compat-devel
%else
BuildRequires: minizip-devel
%endif
-%endif
# RHEL 7's nodejs is too old
%if 0%{?fedora}
BuildRequires: nodejs
@@ -540,9 +460,9 @@
Source109:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldIt
Source110:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Italic.ttf
Source111:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Regular.ttf
%else
-BuildRequires: google-croscore-arimo-fonts
-BuildRequires: google-croscore-cousine-fonts
-BuildRequires: google-croscore-tinos-fonts
+BuildRequires: google-croscore-arimo-fonts
+BuildRequires: google-croscore-cousine-fonts
+BuildRequires: google-croscore-tinos-fonts
%endif
%if 0%{?rhel} == 7
Source112:
https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
@@ -633,7 +553,7 @@ Provides: bundled(freetype) = 2.9.3
%endif
Provides: bundled(gperftools) = svn144
%if 0%{?bundleharfbuzz}
-Provides: bundled(harfbuzz) = 2.3.0
+Provides: bundled(harfbuzz) = 2.4.0
%endif
Provides: bundled(hunspell) = 1.6.0
Provides: bundled(iccjpeg)
@@ -703,36 +623,18 @@ Provides: bundled(xdg-user-dirs)
Requires(post): /usr/sbin/semanage
Requires(post): /usr/sbin/restorecon
-%if %{freeworld}
-Provides: chromium-libs-media = %{version}-%{release}
-Provides: chromium-libs-media%{_isa} = %{version}-%{release}
-Requires: chromium-libs%{_isa} = %{version}
-Requires(post): %{_sbindir}/update-alternatives
-Requires(preun): %{_sbindir}/update-alternatives
-
-%description
-Chromium media libraries built with all possible codecs. Chromium is an
-open-source web browser, powered by WebKit (Blink). This package replaces
-the default chromium-libs-media package, which is limited in what it
-can include.
-%else
%description
Chromium is an open-source web browser, powered by WebKit (Blink).
-%endif
%package common
Summary: Files needed for both the headless_shell and full Chromium
# Chromium needs an explicit Requires: minizip-compat
# We put it here to cover headless too.
-%if %{bundleminizip}
-# Using the bundle. No Requires needed.
-%else
%if 0%{?fedora} >= 30
Requires: minizip-compat%{_isa}
%else
Requires: minizip%{_isa}
%endif
-%endif
%description common
%{summary}.
@@ -749,6 +651,19 @@ Requires(preun): %{_sbindir}/update-alternatives
Shared libraries used by chromium (and chrome-remote-desktop).
%if %{freeworld}
+%package -n chromium-libs-media-freeworld
+Summary: Chromium media libraries built with all possible codecs
+Provides: chromium-libs-media = %{version}-%{release}
+Provides: chromium-libs-media%{_isa} = %{version}-%{release}
+Requires: chromium-libs%{_isa} = %{version}
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+%description -n chromium-libs-media-freeworld
+Chromium media libraries built with all possible codecs. Chromium is an
+open-source web browser, powered by WebKit (Blink). This package replaces
+the default chromium-libs-media package, which is limited in what it
+can include.
%else
%package libs-media
Summary: Shared libraries used by the chromium media subsystem
@@ -807,80 +722,46 @@ udev.
%setup -q -n chromium-%{version}
### Chromium Fedora Patches ###
-%patch0 -p1 -b .gcc5
-%patch1 -p1 -b .pathmax
-%patch2 -p1 -b .addrfix
-%patch3 -p1 -b .notest
-%patch4 -p1 -b .modern-libusbx
-%patch6 -p1 -b .sandboxpie
-%patch7 -p1 -b .etc
-%patch8 -p1 -b .gnsystem
-%patch9 -p1 -b .timefix
-%patch10 -p1 -b .nullfix
-%patch11 -p1 -b .jpegfix
-%patch12 -p1 -b .ldmemory
-%patch13 -p1 -b .revert
-%patch14 -p1 -b .ffmpeg-stdatomic
-%patch15 -p1 -b .system-clang
-%patch16 -p1 -b .noprefix
-%patch17 -p1 -b .nomangle
-%if %{bundleminizip}
-# Leave zlib mangling in place
-%else
-%patch18 -p1 -b .nozmangle
-%endif
-%patch19 -p1 -b .pathfix
-%patch20 -p1 -b .nogccoptmath
-%patch21 -p1 -b .gcc5-r3
-%patch22 -p1 -b .gcc-round-fix
-%patch23 -p1 -b .memcpyfix
-%patch24 -p1 -b .boolfix
-%patch25 -p1 -b .aarch64fix
-%patch27 -p1 -b .nounrar
-%patch28 -p1 -b .gcc-cpolicyprovider
-%patch29 -p1 -b .fedora-user-agent
-%patch30 -p1 -b .py2
-%patch31 -p1 -b .fix-default-redeclaration
-%patch32 -p1 -b .wvhack
-%patch33 -p1 -b .sanebuild
-%patch34 -p1 -b .nofc
-%patch35 -p1 -b .aarch64-new-stat
-%patch36 -p1 -b .gcc9
-%patch37 -p1 -b .widevine-other-locations
-%patch38 -p1 -b .disable-ndnpc
-%patch41 -p1 -b .SIOCGSTAMP
-%patch43 -p1 -b .revert-daff6b
-%patch44 -p1 -b .pure-virtual-fix
-%patch45 -p1 -b .gettid-fix
-%patch46 -p1 -b .fix-v8-gcc
-%patch47 -p1 -b .gcc-vulkan
-%patch48 -p1 -b .gcc-cc-no-except
-%patch49 -p1 -b .gcc-net-fetcher
-%patch50 -p1 -b .quiche-compile-fix
-%patch51 -p1 -b .throttling-dead-beef
-%patch52 -p1 -b .gcc-ambigous-instantiation
-%patch53 -p1 -b .weak-ptr-no-except
-%patch54 -p1 -b .gcc-feature-policy-parser
-%patch55 -p1 -b .gcc-hasfraction-constexpr
-%patch56 -p1 -b .gcc-move-explicit-initialization
-%patch57 -p1 -b .gcc-initialization-order
-%patch58 -p1 -b .gcc-history-move-noexcept
-%patch59 -p1 -b .gcc-accountinfo-move-noexcept
-%patch60 -p1 -b .gcc-themeservice-includes
-%patch61 -p1 -b .gcc-no-alignas-and-export
-%patch62 -p1 -b .gcc-remoting-constexpr
-%patch63 -p1 -b .vtable-symbol-undefined
-%patch64 -p1 -b .certificate-transparency
+%patch0 -p1 -b .sandboxpie
+%patch1 -p1 -b .etc
+%patch2 -p1 -b .gnsystem
+%patch3 -p1 -b .revert
+%patch4 -p1 -b .nolibpngprefix
+%patch5 -p1 -b .nolibjpegmangle
+%patch6 -p1 -b .nozlibmangle
+%patch7 -p1 -b .nounrar
+%patch8 -p1 -b .widevine-hack
+%patch9 -p1 -b .nofontconfigcache
+%patch10 -p1 -b .gcc9
+%patch11 -p1 -b .widevine-other-locations
+%patch12 -p1 -b .py2
+
+# Short term fixes (usually gcc and backports)
+%patch50 -p1 -b .gettid-fix
+%patch51 -p1 -b .gcc-no-alignas-and-export
+%patch52 -p1 -b .gcc-remoting-constexpr
+%patch53 -p1 -b .vtable-symbol-undefined
+%patch54 -p1 -b .certificate-transparency
+%patch55 -p1 -b .unbundle-zlib
+%patch56 -p1 -b .gcc-include-memory
+%patch57 -p1 -b .base-gcc-no-alignas
+%patch58 -p1 -b .harfbuzz-subset
+%patch59 -p1 -b .gcc-abstract-class
+%patch60 -p1 -b .missing-limits
+%patch61 -p1 -b .linked-hash-set
+
+# Fedora branded user agent
+%if 0%{?fedora}
+%patch13 -p1 -b .fedora-user-agent
+%endif
# EPEL specific patches
%if 0%{?rhel} == 7
-%patch100 -p1 -b .kmaxskip
%patch101 -p1 -b .epel7
%patch102 -p1 -b .el7-noexcept
-# Revert patch58 because it's breaking the build on el7
-%patch58 -R -p1
%endif
+# Feature specific patches
%if %{use_vaapi}
%patch202 -p1 -b .vaapi
%ifarch i686
@@ -897,10 +778,6 @@ udev.
%patch300 -p1 -b .disblegnomekeyring
%endif
-%if %{bundleminizip}
-%patch301 -p1 -b .chromedriver-zlib
-%endif
-
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env
python\)[23]\?=#!%{__python2}=' {} +
@@ -1162,9 +1039,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
%endif
'third_party/mesa' \
'third_party/metrics_proto' \
-%if %{bundleminizip}
- 'third_party/minizip' \
-%endif
'third_party/modp_b64' \
'third_party/nasm' \
'third_party/node' \
@@ -1173,7 +1047,9 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/openh264' \
%endif
'third_party/openscreen' \
+ 'third_party/openscreen/src/third_party/tinycbor' \
'third_party/opus' \
+ 'third_party/one_euro_filter' \
'third_party/ots' \
'third_party/pdfium' \
'third_party/pdfium/third_party/agg23' \
@@ -1218,6 +1094,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/swiftshader/third_party/subzero' \
'third_party/swiftshader/third_party/llvm-subzero' \
'third_party/swiftshader/third_party/llvm-7.0' \
+ 'third_party/swiftshader/third_party/SPIRV-Headers' \
'third_party/tcmalloc' \
'third_party/test_fonts' \
'third_party/usb_ids' \
@@ -1311,12 +1188,8 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
re2 \
%endif
-%if %{bundleminizip}
- yasm
-%else
yasm \
zlib
-%endif
# fix arm gcc
sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn
@@ -1341,18 +1214,18 @@ if python2 -c 'import google ; print google.__path__'
2> /dev/null ; then \
exit 1 ; \
fi
-tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES"
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target}
+tools/gn/bootstrap/bootstrap.py -v --no-clean
--gn-gen-args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{builddir}
%if %{freeworld}
# do not need to do headless gen
%else
%if %{build_headless}
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlesstarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlessbuilddir}
%endif
%endif
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingtarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingbuilddir}
%if %{bundlelibusbx}
# no hackity hack hack
@@ -1372,33 +1245,31 @@ sed -i.orig -e
's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
. /opt/rh/devtoolset-%{dts_version}/enable
%endif
+# Decrease the debuginfo verbosity, so it compiles in koji
+%ifarch %{ix86}
+%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
+%endif
+
+echo
# Now do the full browser
%if 0%{freeworld}
-../depot_tools/ninja -C %{target} -vvv media
+%build_target %{builddir} media
%else
%if %{build_headless}
-# Do headless first.
-../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+# Do headless first.
+%build_target %{headlessbuilddir} headless_shell
%endif
-../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver clear_key_cdm
policy_templates
+%build_target %{builddir} chrome
+%build_target %{builddir} chrome_sandbox
+%build_target %{builddir} chromedriver
+%build_target %{builddir} clear_key_cdm
+%build_target %{builddir} policy_templates
# remote client
-pushd remoting
-
-# ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
-../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all
-%if 0%{?build_remoting_app}
-GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja
-vv -C ../out/Release/ remoting_webapp
+# ../../depot_tools/ninja -C ../%{builddir} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
+%build_target %{remotingbuilddir} remoting_all
%endif
-popd
-
-%endif
-
-# Nuke nacl/pnacl bits at the end of the build
-rm -rf out/Release/gen/sdk
-rm -rf native_client/toolchain
-rm -rf third_party/llvm-build/*
%install
rm -rf %{buildroot}
@@ -1406,7 +1277,7 @@ rm -rf %{buildroot}
%if 0%{freeworld}
mkdir -p %{buildroot}%{chromium_path}
-pushd %{target}
+pushd %{builddir}
cp -a libffmpeg.so* %{buildroot}%{chromium_path}
cp -a libmedia.so* %{buildroot}%{chromium_path}
mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
@@ -1435,9 +1306,12 @@ sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g"
%{buildroot}%{chromium_path}/%{chromiu
ln -s %{chromium_path}/%{chromium_browser_channel}.sh
%{buildroot}%{_bindir}/%{chromium_browser_channel}
mkdir -p %{buildroot}%{_mandir}/man1/
-pushd %{target}
+pushd %{builddir}
cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
# Reasonably sure we don't need this anymore. Chrome doesn't include it.
+%if 0
+cp -a protoc pyproto %{buildroot}%{chromium_path}
+%endif
%ifarch x86_64 i686 aarch64
cp -a swiftshader %{buildroot}%{chromium_path}
%endif
@@ -1479,7 +1353,7 @@ popd
%endif
popd
-pushd %{remotingtarget}
+pushd %{remotingbuilddir}
# See remoting/host/installer/linux/Makefile for logic
cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host
@@ -1515,12 +1389,8 @@ pushd %{buildroot}%{_sysconfdir}/pam.d/
ln -s system-auth chrome-remote-desktop
popd
-%if 0%{?build_remoting_app}
-cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
-%endif
-
%if %{build_headless}
-pushd %{headlesstarget}
+pushd %{headlessbuilddir}
cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
popd
%endif
@@ -1549,8 +1419,6 @@ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
cp -a chrome/app/theme/chromium/product_logo_48.png
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
cp -a chrome/app/theme/chromium/product_logo_24.png
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps
-cp -a chrome/app/theme/chromium/product_logo_22.png
%{buildroot}%{_datadir}/icons/hicolor/22x22/apps/%{chromium_browser_channel}.png
# Install the master_preferences file
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
@@ -1588,7 +1456,7 @@ if st and st.type == "link" then
end
%if %{freeworld}
-%posttrans
+%posttrans -n chromium-libs-media-freeworld
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
@@ -1599,7 +1467,7 @@ end
--slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
%{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
-%preun
+%preun -n chromium-libs-media-freeworld
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld
@@ -1660,6 +1528,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{chromium_path}/swiftshader/
%endif
%dir %{chromium_path}/PepperFlash/
+%if 0
+%{chromium_path}/protoc
+%endif
# %%{chromium_path}/remoting_locales/
# %%{chromium_path}/pseudo_locales/
# %%{chromium_path}/plugins/
@@ -1769,9 +1640,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{crd_path}/user-session
%{_unitdir}/chrome-remote-desktop@.service
/var/lib/chrome-remote-desktop/
-%if 0%{?build_remoting_app}
-%{chromium_path}/remoting_client_plugin_newlib.*
-%endif
%files -n chromedriver
%doc AUTHORS
@@ -1783,7 +1651,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%if 0%{?shared}
%if %{freeworld}
-%files
+%files -n chromium-libs-media-freeworld
%else
%files libs-media
%endif
@@ -1795,9 +1663,23 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
-* Fri Sep 6 2019 Tom Callaway <spot(a)fedoraproject.org> - 76.0.3809.132-3
+* Wed Oct 9 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-3
- spec cleanups and changes to make EPEL8 try to build
-- freeworld changes from Nicolas Chauvet
+
+* Mon Sep 23 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-2
+- Fix the icon
+- Remove quite a few of downstream patches
+- Fix the crashes by backporting an upstream bug
+- Resolves: rhbz#1754179
+
+* Thu Sep 19 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-1
+- Update to 77.0.3865.90
+
+* Mon Sep 16 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-2
+- Update the list of private libraries
+
+* Fri Sep 13 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-1
+- Update to 77.0.3865.75
* Tue Sep 03 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-2
- Backport patch to fix certificate transparency
diff --git a/sources b/sources
index 2d38a7c..13e91e7 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.132-clean.tar.xz) =
fbc5f989945adfaffb9fb5199ccb988accdc53f41a03bba9c4ab3df8585b9267b1f34cd7a6ac487eff34ebb6e65865e32ceea4ad945eec30f871d8eed41f3e6f
+SHA512 (chromium-77.0.3865.90-clean.tar.xz) =
696c5b01756fb720645512fc997f4c378001a01f74bb61fe2b27722b7a3c6bbef782af82ec5678e8fe7ff76285164a331b3a99eff9c5f605ff477b3795c968c4