commit 55af817284f149e234b81d44e35ccd5524462493
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Aug 13 15:39:15 2019 +0200
Add more fixes
chromium-76.0.3809.100-gcc-cc-no-except.patch | 105 +++++++++++++++++++++++
chromium-76.0.3809.100-gcc-net-fetcher.patch | 63 ++++++++++++++
chromium-76.0.3809.100-gcc-vulkan.patch | 115 ++++++++++++++++++++++++++
chromium.spec | 14 ++++
get_free_ffmpeg_source_files.py | 8 +-
sources | 2 +-
6 files changed, 302 insertions(+), 5 deletions(-)
---
diff --git a/chromium-76.0.3809.100-gcc-cc-no-except.patch
b/chromium-76.0.3809.100-gcc-cc-no-except.patch
new file mode 100644
index 0000000..e4d754a
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-cc-no-except.patch
@@ -0,0 +1,105 @@
+From 84c91abab33966f928497c24db4a39f436d2dca8 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Fri, 07 Jun 2019 09:50:11 +0000
+Subject: [PATCH] Make SharedMemoryMapping move constructor noexcept
+
+As LayerTreeHostImpl::UIResourceData move constructor is declared
+noexcept with default implementation, the move constructor of its
+members should also be noexcept. GCC will fail to build otherwise
+for mismatching noexcept declaration.
+
+We also set the move assignment operator.
+
+Bug: 819294
+Change-Id: Icd663da83b882e15f7d16780c9241972e09bc492
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645297
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Reviewed-by: Daniel Cheng <dcheng(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#667064}
+---
+
+diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc
+index 2be2570..8426fa8 100644
+--- a/base/memory/shared_memory_mapping.cc
++++ b/base/memory/shared_memory_mapping.cc
+@@ -33,7 +33,7 @@
+
+ SharedMemoryMapping::SharedMemoryMapping() = default;
+
+-SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping)
++SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping)
noexcept
+ : memory_(mapping.memory_),
+ size_(mapping.size_),
+ mapped_size_(mapping.mapped_size_),
+@@ -42,7 +42,7 @@
+ }
+
+ SharedMemoryMapping& SharedMemoryMapping::operator=(
+- SharedMemoryMapping&& mapping) {
++ SharedMemoryMapping&& mapping) noexcept {
+ Unmap();
+ memory_ = mapping.memory_;
+ size_ = mapping.size_;
+@@ -90,9 +90,9 @@
+
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping() = default;
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
+- ReadOnlySharedMemoryMapping&&) = default;
++ ReadOnlySharedMemoryMapping&&) noexcept = default;
+ ReadOnlySharedMemoryMapping& ReadOnlySharedMemoryMapping::operator=(
+- ReadOnlySharedMemoryMapping&&) = default;
++ ReadOnlySharedMemoryMapping&&) noexcept = default;
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
+ void* address,
+ size_t size,
+@@ -102,9 +102,9 @@
+
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping() = default;
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping(
+- WritableSharedMemoryMapping&&) = default;
++ WritableSharedMemoryMapping&&) noexcept = default;
+ WritableSharedMemoryMapping& WritableSharedMemoryMapping::operator=(
+- WritableSharedMemoryMapping&&) = default;
++ WritableSharedMemoryMapping&&) noexcept = default;
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping(
+ void* address,
+ size_t size,
+diff --git a/base/memory/shared_memory_mapping.h b/base/memory/shared_memory_mapping.h
+index d9569af..2b8858e 100644
+--- a/base/memory/shared_memory_mapping.h
++++ b/base/memory/shared_memory_mapping.h
+@@ -32,8 +32,8 @@
+ SharedMemoryMapping();
+
+ // Move operations are allowed.
+- SharedMemoryMapping(SharedMemoryMapping&& mapping);
+- SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping);
++ SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept;
++ SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping) noexcept;
+
+ // Unmaps the region if the mapping is valid.
+ virtual ~SharedMemoryMapping();
+@@ -93,8 +93,9 @@
+ ReadOnlySharedMemoryMapping();
+
+ // Move operations are allowed.
+- ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&);
+- ReadOnlySharedMemoryMapping& operator=(ReadOnlySharedMemoryMapping&&);
++ ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&) noexcept;
++ ReadOnlySharedMemoryMapping& operator=(
++ ReadOnlySharedMemoryMapping&&) noexcept;
+
+ // Returns the base address of the mapping. This is read-only memory. This is
+ // page-aligned. This is nullptr for invalid instances.
+@@ -171,8 +172,9 @@
+ WritableSharedMemoryMapping();
+
+ // Move operations are allowed.
+- WritableSharedMemoryMapping(WritableSharedMemoryMapping&&);
+- WritableSharedMemoryMapping& operator=(WritableSharedMemoryMapping&&);
++ WritableSharedMemoryMapping(WritableSharedMemoryMapping&&) noexcept;
++ WritableSharedMemoryMapping& operator=(
++ WritableSharedMemoryMapping&&) noexcept;
+
+ // Returns the base address of the mapping. This is writable memory. This is
+ // page-aligned. This is nullptr for invalid instances.
diff --git a/chromium-76.0.3809.100-gcc-net-fetcher.patch
b/chromium-76.0.3809.100-gcc-net-fetcher.patch
new file mode 100644
index 0000000..bc0ed98
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-net-fetcher.patch
@@ -0,0 +1,63 @@
+From 502e6e42633d2571c8236c8649b031fe9915eb5b Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 16:56:27 +0000
+Subject: [PATCH] GCC: CertNetFetcherImpl declares Job as a friend but it is in the
anonymous namespace
+
+GCC does not allow friendship declaration to anonymous namespace as done with Job
+object in the CertNetFetcherImpl. This fix removes the friend declaration, and just
+makes RemoveJob method public, that was the only reason to make Job a friend.
+
+Error was:
+./../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void
net::{anonymous}::Job::DetachRequest(net::CertNetFetcherImpl::RequestCore*)’:
+../../net/cert_net/cert_net_fetcher_impl.cc:458:42: error:
‘std::unique_ptr<net::{anonymous}::Job>
net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is
private within this context
+ delete_this = parent_->RemoveJob(this);
+ ^
+../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here
+ std::unique_ptr<Job> RemoveJob(Job* job);
+ ^~~~~~~~~
+../../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void
net::{anonymous}::Job::OnJobCompleted(net::Error)’:
+../../net/cert_net/cert_net_fetcher_impl.cc:610:61: error:
‘std::unique_ptr<net::{anonymous}::Job>
net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is
private within this context
+ std::unique_ptr<Job> delete_this = parent_->RemoveJob(this);
+ ^
+../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here
+ std::unique_ptr<Job> RemoveJob(Job* job);
+ ^~~~~~~~~
+
+Bug: 819294
+Change-Id: I3609f4558e570741395366de6a4cd40577d91450
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1651783
+Commit-Queue: Eric Roman <eroman(a)chromium.org>
+Reviewed-by: Eric Roman <eroman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#668015}
+---
+
+diff --git a/net/cert_net/cert_net_fetcher_impl.cc
b/net/cert_net/cert_net_fetcher_impl.cc
+index 11a1166..349c656 100644
+--- a/net/cert_net/cert_net_fetcher_impl.cc
++++ b/net/cert_net/cert_net_fetcher_impl.cc
+@@ -135,21 +135,19 @@
+ void Fetch(std::unique_ptr<RequestParams> request_params,
+ scoped_refptr<RequestCore> request);
+
++ // Removes |job| from the in progress jobs and transfers ownership to the
++ // caller.
++ std::unique_ptr<Job> RemoveJob(Job* job);
++
+ // Cancels outstanding jobs, which stops network requests and signals the
+ // corresponding RequestCores that the requests have completed.
+ void Shutdown();
+
+ private:
+- friend class Job;
+-
+ // Finds a job with a matching RequestPararms or returns nullptr if there was
+ // no match.
+ Job* FindJob(const RequestParams& params);
+
+- // Removes |job| from the in progress jobs and transfers ownership to the
+- // caller.
+- std::unique_ptr<Job> RemoveJob(Job* job);
+-
+ // The in-progress jobs. This set does not contain the job which is actively
+ // invoking callbacks (OnJobCompleted).
+ JobSet jobs_;
diff --git a/chromium-76.0.3809.100-gcc-vulkan.patch
b/chromium-76.0.3809.100-gcc-vulkan.patch
new file mode 100644
index 0000000..cf93bce
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-vulkan.patch
@@ -0,0 +1,115 @@
+From fdb3bb1f8c41d044a5b0cb80257a26dd3c8f83a3 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 17:39:38 +0000
+Subject: [PATCH] GCC: do not use old C notation to assign struct with property names.
+
+The notation for initialization of structs referring to its properties
+is invalid in C++. This is not accepted in GCC. It was making build
+fail in VulkanCommandBuffer.
+
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function
'void gpu::VulkanCommandBuffer::TransitionImageLayout(VkImage, VkImageLayout,
VkImageLayout)':
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:214:7: error:
expected primary-expression before '.' token
+ .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:215:7: error:
expected primary-expression before '.' token
+ .subresourceRange.baseMipLevel = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:216:7: error:
expected primary-expression before '.' token
+ .subresourceRange.levelCount = 1,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:217:7: error:
expected primary-expression before '.' token
+ .subresourceRange.baseArrayLayer = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:218:7: error:
expected primary-expression before '.' token
+ .subresourceRange.layerCount = 1,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function
'void gpu::VulkanCommandBuffer::CopyBufferToImage(VkBuffer, VkImage, uint32_t,
uint32_t, uint32_t, uint32_t)':
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:235:7: error:
expected primary-expression before '.' token
+ .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:236:7: error:
expected primary-expression before '.' token
+ .imageSubresource.mipLevel = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:237:7: error:
expected primary-expression before '.' token
+ .imageSubresource.baseArrayLayer = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:238:7: error:
expected primary-expression before '.' token
+ .imageSubresource.layerCount = 1,
+ ^
+Bug: 819294
+
+Change-Id: I999abece0c727e77964789183642ba62009c2c22
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1651802
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Reviewed-by: Antoine Labour <piman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#668033}
+---
+
+diff --git a/gpu/vulkan/vulkan_command_buffer.cc b/gpu/vulkan/vulkan_command_buffer.cc
+index ba776e4..4f14c85 100644
+--- a/gpu/vulkan/vulkan_command_buffer.cc
++++ b/gpu/vulkan/vulkan_command_buffer.cc
+@@ -207,21 +207,20 @@
+ void VulkanCommandBuffer::TransitionImageLayout(VkImage image,
+ VkImageLayout old_layout,
+ VkImageLayout new_layout) {
+- VkImageMemoryBarrier barrier = {
+- .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+- .srcAccessMask = GetAccessMask(old_layout),
+- .dstAccessMask = GetAccessMask(new_layout),
+- .oldLayout = old_layout,
+- .newLayout = new_layout,
+- .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+- .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+- .image = image,
+- .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+- .subresourceRange.baseMipLevel = 0,
+- .subresourceRange.levelCount = 1,
+- .subresourceRange.baseArrayLayer = 0,
+- .subresourceRange.layerCount = 1,
+- };
++ VkImageMemoryBarrier barrier = {};
++ barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
++ barrier.srcAccessMask = GetAccessMask(old_layout);
++ barrier.dstAccessMask = GetAccessMask(new_layout);
++ barrier.oldLayout = old_layout;
++ barrier.newLayout = new_layout;
++ barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
++ barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
++ barrier.image = image;
++ barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
++ barrier.subresourceRange.baseMipLevel = 0;
++ barrier.subresourceRange.levelCount = 1;
++ barrier.subresourceRange.baseArrayLayer = 0;
++ barrier.subresourceRange.layerCount = 1;
+ vkCmdPipelineBarrier(command_buffer_, GetPipelineStageFlags(old_layout),
+ GetPipelineStageFlags(new_layout), 0, 0, nullptr, 0,
+ nullptr, 1, &barrier);
+@@ -233,17 +232,16 @@
+ uint32_t buffer_height,
+ uint32_t width,
+ uint32_t height) {
+- VkBufferImageCopy region = {
+- .bufferOffset = 0,
+- .bufferRowLength = buffer_width,
+- .bufferImageHeight = buffer_height,
+- .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+- .imageSubresource.mipLevel = 0,
+- .imageSubresource.baseArrayLayer = 0,
+- .imageSubresource.layerCount = 1,
+- .imageOffset = {0, 0, 0},
+- .imageExtent = {width, height, 1},
+- };
++ VkBufferImageCopy region = {};
++ region.bufferOffset = 0;
++ region.bufferRowLength = buffer_width;
++ region.bufferImageHeight = buffer_height;
++ region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
++ region.imageSubresource.mipLevel = 0;
++ region.imageSubresource.baseArrayLayer = 0;
++ region.imageSubresource.layerCount = 1;
++ region.imageOffset = {0, 0, 0};
++ region.imageExtent = {width, height, 1};
+ vkCmdCopyBufferToImage(command_buffer_, buffer, image,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion);
+ }
diff --git a/chromium.spec b/chromium.spec
index 1d3a256..602b236 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -261,6 +261,13 @@ 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
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -818,6 +825,9 @@ udev.
%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
# EPEL specific patches
%if 0%{?rhel} == 7
@@ -1064,6 +1074,7 @@ ln -s %{_bindir}/node
third_party/node/linux/node-linux-x64/bin/node
# Remove most of the bundled libraries. Libraries specified below (taken from
# Gentoo's Chromium ebuild) are the libraries that needs to be preserved.
build/linux/unbundle/remove_bundled_libraries.py \
+ 'base/third_party/cityhash' \
'base/third_party/dmg_fp' \
'base/third_party/dynamic_annotations' \
'base/third_party/icu' \
@@ -1104,6 +1115,8 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/blink' \
'third_party/boringssl' \
'third_party/boringssl/src/third_party/fiat' \
+ 'third_party/boringssl/src/third_party/sike' \
+ 'third_party/boringssl/linux-x86_64/crypto/third_party/sike/' \
'third_party/breakpad' \
'third_party/breakpad/breakpad/src/third_party/curl' \
'third_party/brotli' \
@@ -1229,6 +1242,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/sinonjs' \
'third_party/skia' \
'third_party/skia/include/third_party/vulkan' \
+ 'third_party/skia/include/third_party/skcms' \
'third_party/skia/third_party/gif' \
'third_party/skia/third_party/skcms' \
'third_party/skia/third_party/vulkan' \
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
index 76c73ae..f2225ea 100755
--- a/get_free_ffmpeg_source_files.py
+++ b/get_free_ffmpeg_source_files.py
@@ -41,9 +41,9 @@ def parse_sources(input_sources, output_sources, arch_not_arm):
append_sources (block[1], output_sources)
-def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm):
+def parse_ffmpeg_gni_file(gni_path, arch_not_arm):
- with open(gyni_path, "r") as input_file:
+ with open(gni_path, "r") as input_file:
content = input_file.read().replace('\n', '')
output_sources = []
@@ -62,7 +62,7 @@ def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm):
limitations = ['ffmpeg_branding == "Chrome"',
'ffmpeg_branding == "ChromeOS"']
if ('use_linux_config' in condition) and not any(limitation in condition
for limitation in limitations):
if (arch_not_arm):
- if ('x64' in condition) or ('x86' in condition):
+ if ('x64' in condition) or ('x86' in condition) or
('use_linux_config' in condition):
parse_sources (block[1], output_sources, arch_not_arm)
inserted = True
else:
@@ -79,4 +79,4 @@ def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm):
if __name__ == "__main__":
path = "%s/third_party/ffmpeg/ffmpeg_generated.gni" % sys.argv[1]
- parse_ffmpeg_gyni_file (path, False if sys.argv[2] == "0" else True)
+ parse_ffmpeg_gni_file (path, False if sys.argv[2] == "0" else True)
diff --git a/sources b/sources
index 778c103..4e53fd1 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.100-clean.tar.xz) =
ad250b8cd0a01297fdff85c12a4dca85477cf027a68c0a9f7a3bc93b825772d17ddd062a89020ae954def781f19fe44beedb33ec8a86f3c12af290edb43d6ee9
+SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
f9fecad99618dffbfa3331b77dd82244447382761ca864380ea145d58f4bd90bb1c0fd3d433aca7d71f63e24c4120bff15c3a4dd9b86e94096cdf31c02b80cd5