[xorg-x11-drv-nvidia] Complete description pt2
by Leigh Scott
commit cce3e205742f4ed03ac53603e4ca689c772dfca6
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 08:22:34 2019 +0100
Complete description pt2
xorg-x11-drv-nvidia.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/xorg-x11-drv-nvidia.spec b/xorg-x11-drv-nvidia.spec
index e059c8f..28f5591 100644
--- a/xorg-x11-drv-nvidia.spec
+++ b/xorg-x11-drv-nvidia.spec
@@ -56,7 +56,7 @@ Requires: nvidia-settings%{?_isa} = %{?epoch}:%{version}
# AppStream metadata generation
BuildRequires: python3
BuildRequires: libappstream-glib >= 0.6.3
-# Needed so nvidia-settings can broken configs
+# Needed so nvidia-settings can write broken configs
Suggests: nvidia-xconfig%{?_isa} = %{?epoch}:%{version}
# nvidia-bug-report.sh requires needed to provide extra info
Suggests: acpica-tools
5 years, 3 months
[xorg-x11-drv-nvidia] Complete description
by Leigh Scott
commit efd9769fec821ad6ef9cc4654b0ed6ec45780291
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 08:21:43 2019 +0100
Complete description
xorg-x11-drv-nvidia.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/xorg-x11-drv-nvidia.spec b/xorg-x11-drv-nvidia.spec
index 3ed64a0..e059c8f 100644
--- a/xorg-x11-drv-nvidia.spec
+++ b/xorg-x11-drv-nvidia.spec
@@ -56,7 +56,7 @@ Requires: nvidia-settings%{?_isa} = %{?epoch}:%{version}
# AppStream metadata generation
BuildRequires: python3
BuildRequires: libappstream-glib >= 0.6.3
-# Needed so nvidia-settings can
+# Needed so nvidia-settings can broken configs
Suggests: nvidia-xconfig%{?_isa} = %{?epoch}:%{version}
# nvidia-bug-report.sh requires needed to provide extra info
Suggests: acpica-tools
5 years, 3 months
[xorg-x11-drv-nvidia] Add Suggests acpica-tools and vulkan-tools (nvidia-bug-report.sh)
by Leigh Scott
commit aa1dc86593cc24f4ff4ddb706052daa3cfac61f4
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 08:06:16 2019 +0100
Add Suggests acpica-tools and vulkan-tools (nvidia-bug-report.sh)
xorg-x11-drv-nvidia.spec | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/xorg-x11-drv-nvidia.spec b/xorg-x11-drv-nvidia.spec
index 3530f62..3ed64a0 100644
--- a/xorg-x11-drv-nvidia.spec
+++ b/xorg-x11-drv-nvidia.spec
@@ -46,11 +46,6 @@ Requires(preun): systemd
Requires(postun): systemd
# Xorg with PrimaryGPU
Requires: Xorg >= 1.19.0-3
-%if 0%{?fedora}
-# AppStream metadata generation
-BuildRequires: python3
-BuildRequires: libappstream-glib >= 0.6.3
-%endif
Requires(post): ldconfig
Requires(postun): ldconfig
@@ -58,7 +53,14 @@ Requires(post): grubby
Requires: which
Requires: nvidia-settings%{?_isa} = %{?epoch}:%{version}
%if 0%{?fedora}
+# AppStream metadata generation
+BuildRequires: python3
+BuildRequires: libappstream-glib >= 0.6.3
+# Needed so nvidia-settings can
Suggests: nvidia-xconfig%{?_isa} = %{?epoch}:%{version}
+# nvidia-bug-report.sh requires needed to provide extra info
+Suggests: acpica-tools
+Suggests: vulkan-tools
%else
Requires: nvidia-xconfig%{?_isa} = %{?epoch}:%{version}
%endif
@@ -499,6 +501,7 @@ fi ||:
%changelog
* Sat Aug 24 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 3:435.17-4
- Add Vulkan layer for Optimus
+- Add Suggests acpica-tools and vulkan-tools (nvidia-bug-report.sh)
* Wed Aug 21 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 3:435.17-3
- Switch to python3 for appdata
5 years, 3 months
[xorg-x11-drv-nvidia] Add Vulkan layer for Optimus
by Leigh Scott
commit 52d317d8e22723479387a043270241dbc22fb0e2
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 07:40:39 2019 +0100
Add Vulkan layer for Optimus
xorg-x11-drv-nvidia.spec | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/xorg-x11-drv-nvidia.spec b/xorg-x11-drv-nvidia.spec
index b1d59f4..3530f62 100644
--- a/xorg-x11-drv-nvidia.spec
+++ b/xorg-x11-drv-nvidia.spec
@@ -20,7 +20,7 @@
Name: xorg-x11-drv-nvidia
Epoch: 3
Version: 435.17
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: NVIDIA's proprietary display driver for NVIDIA graphic cards
License: Redistributable, no modification permitted
@@ -240,8 +240,9 @@ popd
%endif
# Vulkan config
-install -m 0755 -d %{buildroot}%{_datadir}/vulkan/icd.d/
+install -m 0755 -d %{buildroot}%{_datadir}/vulkan/{icd.d,implicit_layer.d}/
install -p -m 0644 nvidia_icd.json %{buildroot}%{_datadir}/vulkan/icd.d/nvidia_icd.%{_target_cpu}.json
+install -p -m 0644 nvidia_layers.json %{buildroot}%{_datadir}/vulkan/implicit_layer.d/nvidia_layers.%{_target_cpu}.json
%ifarch x86_64
# X DDX driver and GLX extension
@@ -427,6 +428,7 @@ fi ||:
%files libs
%{_datadir}/vulkan/icd.d/nvidia_icd.%{_target_cpu}.json
+%{_datadir}/vulkan/implicit_layer.d/nvidia_layers.%{_target_cpu}.json
%{_libdir}/libEGL_nvidia.so.0
%{_libdir}/libEGL_nvidia.so.%{version}
%{_libdir}/libGLESv1_CM_nvidia.so.1
@@ -495,6 +497,9 @@ fi ||:
%{_libdir}/libnvidia-encode.so
%changelog
+* Sat Aug 24 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 3:435.17-4
+- Add Vulkan layer for Optimus
+
* Wed Aug 21 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 3:435.17-3
- Switch to python3 for appdata
5 years, 3 months
[rfpkg-minimal] Use pull request instead
by Leigh Scott
commit 719d4e626d63899b7166aa43ad9ee67efcee4987
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 02:08:43 2019 +0100
Use pull request instead
add-fedpkg-base-to-rfpkg-minimal.patch | 68 +++++++++++++++++++++++-----------
rfpkg-minimal.spec | 12 ++++--
2 files changed, 54 insertions(+), 26 deletions(-)
---
diff --git a/add-fedpkg-base-to-rfpkg-minimal.patch b/add-fedpkg-base-to-rfpkg-minimal.patch
index 7bf7628..24753d2 100644
--- a/add-fedpkg-base-to-rfpkg-minimal.patch
+++ b/add-fedpkg-base-to-rfpkg-minimal.patch
@@ -1,26 +1,39 @@
-From 5de09953819053aee8879b29223da82836557a12 Mon Sep 17 00:00:00 2001
+From 39c5ac88f3eadfdd044d1f5a023d7ac0601658c6 Mon Sep 17 00:00:00 2001
From: Leigh Scott <leigh123linux(a)googlemail.com>
-Date: Sat, 24 Aug 2019 01:08:16 +0100
-Subject: [PATCH] add fedpkg-base to rfpkg-minimal
+Date: Sat, 24 Aug 2019 01:57:49 +0100
+Subject: [PATCH] Add un-released fedpkg-base
---
- bin/rfpkg-minimal | 31 ++++++++++++++++++++++++++++---
- 1 file changed, 28 insertions(+), 3 deletions(-)
+ bin/rfpkg-base | 46 ++++++++++++++++++++++++++++++++++++++++++++++
+ bin/rfpkg-minimal | 4 +---
+ 2 files changed, 47 insertions(+), 3 deletions(-)
+ create mode 100644 bin/rfpkg-base
-diff --git a/bin/rfpkg-minimal b/bin/rfpkg-minimal
-index 4697a71..a8083c1 100755
---- a/bin/rfpkg-minimal
-+++ b/bin/rfpkg-minimal
-@@ -20,8 +20,33 @@
- # Abort on errors
- set -e
-
--#url=$(git remote get-url origin)
--#url=$(git remote -v |grep origin | head -1 | awk '{print $2}')
- url=$(cat .git/config |awk '/url/ {print $3}')
- namespace=$(echo ${url} | awk -F '/' '{print $(NF-1)}')
--baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace} fedpkg-base $@
-+baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace}
+diff --git a/bin/rfpkg-base b/bin/rfpkg-base
+new file mode 100644
+index 0000000..87d90e8
+--- /dev/null
++++ b/bin/rfpkg-base
+@@ -0,0 +1,46 @@
++#!/bin/bash
++# Copyright (C) 2013 Red Hat, Inc.
++# Copyright (C) 2015 Till Maas
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++# Abort on errors
++set -e
+
+pkgname=$(basename "$PWD")
+if [[ -s sources ]]; then
@@ -48,6 +61,17 @@ index 4697a71..a8083c1 100755
+ md5sum -c sources
+ fi
+fi
---
-2.21.0
-
+diff --git a/bin/rfpkg-minimal b/bin/rfpkg-minimal
+index 4697a71..102906b 100755
+--- a/bin/rfpkg-minimal
++++ b/bin/rfpkg-minimal
+@@ -20,8 +20,6 @@
+ # Abort on errors
+ set -e
+
+-#url=$(git remote get-url origin)
+-#url=$(git remote -v |grep origin | head -1 | awk '{print $2}')
+ url=$(cat .git/config |awk '/url/ {print $3}')
+ namespace=$(echo ${url} | awk -F '/' '{print $(NF-1)}')
+-baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace} fedpkg-base $@
++baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace} rfpkg-base $@
diff --git a/rfpkg-minimal.spec b/rfpkg-minimal.spec
index c7bbb9f..75fe049 100644
--- a/rfpkg-minimal.spec
+++ b/rfpkg-minimal.spec
@@ -1,6 +1,6 @@
Name: rfpkg-minimal
Version: 0.4.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Fork of fedpkg-minimal for RPM Fusion
# Licensing is unclear; LICENSE is the GPLv2 but bin/fedpkg (upstream)
@@ -9,14 +9,13 @@ Summary: Fork of fedpkg-minimal for RPM Fusion
License: GPLv2
URL: https://github.com/rpmfusion-infra/rfpkg-minimal
-Source0: %{url}/archive/%{version}.tar.gz#/rfpkg-minimal-%{version}.tar.gz
-Patch0: add-fedpkg-base-to-rfpkg-minimal.patch
+Source0: %{url}/archive/%{version}/rfpkg-minimal-%{version}.tar.gz
+Patch0: %{url}/pull/2.patch#/add-fedpkg-base-to-rfpkg-minimal.patch
BuildArch: noarch
# The script needs curl, just like fedpkg-minimal.
# It also needs coreutils (cut) and sed. Not sure if this must be listed.
-Requires: fedpkg-minimal > 1.1
Requires: coreutils
Requires: curl
Requires: sed
@@ -34,14 +33,19 @@ fedpkg-minimal.
%install
mkdir -p %{buildroot}%{_bindir}
+install -pm 755 bin/rfpkg-base %{buildroot}%{_bindir}/rfpkg-base
install -pm 755 bin/rfpkg-minimal %{buildroot}%{_bindir}/rfpkg-minimal
%files
+%{_bindir}/rfpkg-base
%{_bindir}/rfpkg-minimal
%doc README.md AUTHORS.md
%license LICENSE
%changelog
+* Sat Aug 24 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 0.4.1-3
+- Use pull request instead
+
* Sat Aug 24 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 0.4.1-2
- Combine fedpkg-base to match fedpkg-minimal
5 years, 3 months
[rfpkg-minimal] Combine fedpkg-base to match fedpkg-minimal
by Leigh Scott
commit f9298f219fd88904c7cc6e884c2270a9cf474ad6
Author: Leigh Scott <leigh123linux(a)googlemail.com>
Date: Sat Aug 24 01:18:49 2019 +0100
Combine fedpkg-base to match fedpkg-minimal
add-fedpkg-base-to-rfpkg-minimal.patch | 53 ++++++++++++++++++++++++++++++++++
rfpkg-minimal.spec | 8 +++--
2 files changed, 59 insertions(+), 2 deletions(-)
---
diff --git a/add-fedpkg-base-to-rfpkg-minimal.patch b/add-fedpkg-base-to-rfpkg-minimal.patch
new file mode 100644
index 0000000..7bf7628
--- /dev/null
+++ b/add-fedpkg-base-to-rfpkg-minimal.patch
@@ -0,0 +1,53 @@
+From 5de09953819053aee8879b29223da82836557a12 Mon Sep 17 00:00:00 2001
+From: Leigh Scott <leigh123linux(a)googlemail.com>
+Date: Sat, 24 Aug 2019 01:08:16 +0100
+Subject: [PATCH] add fedpkg-base to rfpkg-minimal
+
+---
+ bin/rfpkg-minimal | 31 ++++++++++++++++++++++++++++---
+ 1 file changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/bin/rfpkg-minimal b/bin/rfpkg-minimal
+index 4697a71..a8083c1 100755
+--- a/bin/rfpkg-minimal
++++ b/bin/rfpkg-minimal
+@@ -20,8 +20,33 @@
+ # Abort on errors
+ set -e
+
+-#url=$(git remote get-url origin)
+-#url=$(git remote -v |grep origin | head -1 | awk '{print $2}')
+ url=$(cat .git/config |awk '/url/ {print $3}')
+ namespace=$(echo ${url} | awk -F '/' '{print $(NF-1)}')
+-baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace} fedpkg-base $@
++baseurl=https://pkgs.rpmfusion.org/repo/pkgs/${namespace}
++
++pkgname=$(basename "$PWD")
++if [[ -s sources ]]; then
++ # Read first word of first line. For old MD5 format it's the 32 character
++ # hash. Otherwise let's assume the sources have the BSD format where lines
++ # start with hash type.
++ hashtype="$(head -n1 sources | cut -d' ' -f1 | tr '[:upper:]' '[:lower:]')"
++ if [ "${#hashtype}" -ne 32 ]; then
++ # The format is
++ # SHA512 (filename) = ABCDEF
++ # We don't care about the equals sign. We also assume all hashes are
++ # the same type, so we don't need to read it again for each line.
++ while read -r _ filename _ hash; do
++ # Remove parenthesis around tarball name
++ filename=${filename#(}
++ tarball=${filename%)}
++ curl -L -H Pragma: -o "./$tarball" -R -S --fail --retry 5 --max-time 15 "$baseurl/$pkgname/$tarball/$hashtype/$hash/$tarball"
++ done < sources
++ "${hashtype}sum" -c sources
++ else
++ # Ok, we're working with MD5.
++ while read -r md5sum tarball; do
++ curl -L -H Pragma: -o "./$tarball" -R -S --fail --retry 5 --max-time 15 "$baseurl/$pkgname/$tarball/$md5sum/$tarball"
++ done < sources
++ md5sum -c sources
++ fi
++fi
+--
+2.21.0
+
diff --git a/rfpkg-minimal.spec b/rfpkg-minimal.spec
index 8109f77..c7bbb9f 100644
--- a/rfpkg-minimal.spec
+++ b/rfpkg-minimal.spec
@@ -1,6 +1,6 @@
Name: rfpkg-minimal
Version: 0.4.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Fork of fedpkg-minimal for RPM Fusion
# Licensing is unclear; LICENSE is the GPLv2 but bin/fedpkg (upstream)
@@ -10,6 +10,7 @@ License: GPLv2
URL: https://github.com/rpmfusion-infra/rfpkg-minimal
Source0: %{url}/archive/%{version}.tar.gz#/rfpkg-minimal-%{version}.tar.gz
+Patch0: add-fedpkg-base-to-rfpkg-minimal.patch
BuildArch: noarch
@@ -26,7 +27,7 @@ to download the sources of a package. It is based on (and is a fork of)
fedpkg-minimal.
%prep
-%autosetup
+%autosetup -p1
%build
# Nothing to build!
@@ -41,6 +42,9 @@ install -pm 755 bin/rfpkg-minimal %{buildroot}%{_bindir}/rfpkg-minimal
%license LICENSE
%changelog
+* Sat Aug 24 2019 Leigh Scott <leigh123linux(a)googlemail.com> - 0.4.1-2
+- Combine fedpkg-base to match fedpkg-minimal
+
* Fri Aug 23 2019 Nicolas Chauvet <kwizart(a)gmail.com> - 0.4.1-1
- Update to 0.4.1
5 years, 3 months
[rfpkg-minimal] Update sources
by Nicolas Chauvet
commit 3ad9798de88ab92b9242c7e94c2ee474c6989f58
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Sat Aug 24 00:03:22 2019 +0200
Update sources
.gitignore | 8 +-------
sources | 2 +-
2 files changed, 2 insertions(+), 8 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 7fe0b6c..c41b815 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,2 @@
*.rpm
-/rfpkg-minimal-0.1.1.tar.gz
-/rfpkg-minimal-0.2.0.tar.gz
-/rfpkg-minimal-0.2.1.tar.gz
-/rfpkg-minimal-0.2.2.tar.gz
-/rfpkg-minimal-0.3.0.tar.gz
-/rfpkg-minimal-0.3.1.tar.gz
-/rfpkg-minimal-0.4.0.tar.gz
+rfpkg-minimal-*.tar.gz
diff --git a/sources b/sources
index f34a4ba..1881ccd 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-2c08ec0857f46d67c9673cd9a2232251 rfpkg-minimal-0.4.0.tar.gz
+7525b36e04e94103bac88c07de923f6b rfpkg-minimal-0.4.1.tar.gz
5 years, 3 months
[rfpkg-minimal] Update to 0.4.1
by Nicolas Chauvet
commit 6307e54c5482936a7a92cd1517bc4e3591064169
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Sat Aug 24 00:02:24 2019 +0200
Update to 0.4.1
rfpkg-minimal.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/rfpkg-minimal.spec b/rfpkg-minimal.spec
index 6e18f72..8109f77 100644
--- a/rfpkg-minimal.spec
+++ b/rfpkg-minimal.spec
@@ -1,5 +1,5 @@
Name: rfpkg-minimal
-Version: 0.4.0
+Version: 0.4.1
Release: 1%{?dist}
Summary: Fork of fedpkg-minimal for RPM Fusion
@@ -41,6 +41,9 @@ install -pm 755 bin/rfpkg-minimal %{buildroot}%{_bindir}/rfpkg-minimal
%license LICENSE
%changelog
+* Fri Aug 23 2019 Nicolas Chauvet <kwizart(a)gmail.com> - 0.4.1-1
+- Update to 0.4.1
+
* Fri Aug 23 2019 Nicolas Chauvet <kwizart(a)gmail.com> - 0.4.0-1
- Update to 0.4.0
5 years, 3 months
[rfpkg-minimal] Update to 0.4.0
by Nicolas Chauvet
commit 7b4022220103673ae387184c792040f1ca544e3c
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Fri Aug 23 23:30:43 2019 +0200
Update to 0.4.0
.gitignore | 1 +
rfpkg-minimal.spec | 6 +++++-
sources | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 622a469..7fe0b6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/rfpkg-minimal-0.2.2.tar.gz
/rfpkg-minimal-0.3.0.tar.gz
/rfpkg-minimal-0.3.1.tar.gz
+/rfpkg-minimal-0.4.0.tar.gz
diff --git a/rfpkg-minimal.spec b/rfpkg-minimal.spec
index d145d52..6e18f72 100644
--- a/rfpkg-minimal.spec
+++ b/rfpkg-minimal.spec
@@ -1,5 +1,5 @@
Name: rfpkg-minimal
-Version: 0.3.1
+Version: 0.4.0
Release: 1%{?dist}
Summary: Fork of fedpkg-minimal for RPM Fusion
@@ -15,6 +15,7 @@ BuildArch: noarch
# The script needs curl, just like fedpkg-minimal.
# It also needs coreutils (cut) and sed. Not sure if this must be listed.
+Requires: fedpkg-minimal > 1.1
Requires: coreutils
Requires: curl
Requires: sed
@@ -40,6 +41,9 @@ install -pm 755 bin/rfpkg-minimal %{buildroot}%{_bindir}/rfpkg-minimal
%license LICENSE
%changelog
+* Fri Aug 23 2019 Nicolas Chauvet <kwizart(a)gmail.com> - 0.4.0-1
+- Update to 0.4.0
+
* Fri Nov 16 2018 Ben Rosser <rosser.bjr(a)gmail.com> - 0.3.1-1
- Fix some packages not downloading due to over-broad 'sed' command.
diff --git a/sources b/sources
index 9ddc663..f34a4ba 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-3117c81ef3e230cee674049cde8423bd rfpkg-minimal-0.3.1.tar.gz
+2c08ec0857f46d67c9673cd9a2232251 rfpkg-minimal-0.4.0.tar.gz
5 years, 3 months
[chromium-libs-media-freeworld] Restore build from chromium-libs-media-freeworld
by Nicolas Chauvet
commit ec9b3b1bab3e35cc604c8a3a0ccf79f2a2b09fcc
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Fri Aug 23 18:12:10 2019 +0200
Restore build from chromium-libs-media-freeworld
merge of fedora/chromium-76.0.3809.100-1
.gitignore | 89 +
GardinerModBug.ttf | Bin 0 -> 2864 bytes
GardinerModCat.ttf | Bin 0 -> 2296 bytes
chrome-remote-desktop@.service | 14 +
chromium-45.0.2454.101-linux-path-max.patch | 44 +
...7.0.2526.80-nacl-ignore-broken-fd-counter.patch | 27 +
chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch | 11 +
chromium-53.0.2785.92-boringssl-time-fix.patch | 11 +
chromium-54.0.2840.59-jpeg-include-dir.patch | 11 +
chromium-55.0.2883.75-addrfix.patch | 11 +
...-b794998819088f76b4cf44c8db6940240c563cf4.patch | 19 +
chromium-59.0.3071.86-i686-ld-memory-tricks.patch | 12 +
...3112.113-libavutil-timer-include-path-fix.patch | 21 +
chromium-60.0.3112.78-jpeg-nomangle.patch | 14 +
chromium-60.0.3112.78-no-libpng-prefix.patch | 17 +
chromium-61.0.3163.79-gcc-no-opt-safe-math.patch | 13 +
chromium-62.0.3202.62-kmaxskip-constexpr.patch | 12 +
chromium-63.0.3289.84-nullfix.patch | 43 +
chromium-64.0.3282.119-ffmpeg-stdatomic.patch | 17 +
chromium-65.0.3325.146-gcc-round-fix.patch | 12 +
chromium-65.0.3325.146-memcpy-fix.patch | 12 +
...fully-declare-ConfigurationPolicyProvider.patch | 18 +
chromium-66.0.3359.117-system-clang.patch | 12 +
chromium-67.0.3396.62-gcc5.patch | 12 +
chromium-67.0.3396.62-gn-system.patch | 208 ++
chromium-68.0.3440.106-boolfix.patch | 36 +
...8.0.3440.106-fix-default-on-redeclaration.patch | 30 +
chromium-68.0.3440.106-master-prefs-path.patch | 15 +
chromium-69.0.3497.81-build-sanely-please.patch | 33 +
....0.3538.67-disable-fontconfig-cache-magic.patch | 13 +
chromium-70.0.3538.67-sandbox-pie.patch | 20 +
...m-70.0.3538.77-aarch64-arch-want-new-stat.patch | 12 +
chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch | 12 +
chromium-71.0.3578.98-py2-bootstrap.patch | 33 +
chromium-71.0.3578.98-skia-aarch64-buildfix.patch | 21 +
chromium-71.0.3578.98-widevine-r3.patch | 22 +
chromium-72.0.3626.121-fedora-user-agent.patch | 12 +
chromium-72.0.3626.121-gcc5-r3.patch | 36 +
chromium-72.0.3626.121-notest.patch | 11 +
...75-disable-fno-delete-null-pointer-checks.patch | 48 +
chromium-73.0.3683.75-norar.patch | 81 +
chromium-75.0.3770.100-el7-fix-noexcept.patch | 54 +
chromium-75.0.3770.100-epel7-stdc++.patch | 11 +
chromium-75.0.3770.100-fix-v8-gcc.patch | 14 +
chromium-75.0.3770.100-git00281713.patch | 34 +
chromium-75.0.3770.80-SIOCGSTAMP.patch | 15 +
...ium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch | 14 +
chromium-75.0.3770.80-gcc-no-assume.patch | 21 +
chromium-75.0.3770.80-grpc-gettid-fix.patch | 22 +
chromium-75.0.3770.80-no-zlib-mangle.patch | 14 +
chromium-75.0.3770.80-pure-virtual-crash-fix.patch | 24 +
chromium-75.0.3770.80-revert-daff6b.patch | 13 +
chromium-75.0.3770.80-vaapi-i686-fpermissive.patch | 23 +
...m-75.0.3770.80-vaapi-libva1-compatibility.patch | 14 +
....0.3809.100-gcc-accountinfo-move-noexcept.patch | 53 +
...-76.0.3809.100-gcc-ambigous-instantiation.patch | 39 +
chromium-76.0.3809.100-gcc-cc-no-except.patch | 105 +
...m-76.0.3809.100-gcc-feature-policy-parser.patch | 76 +
...m-76.0.3809.100-gcc-hasfraction-constexpr.patch | 32 +
...m-76.0.3809.100-gcc-history-move-noexcept.patch | 42 +
...um-76.0.3809.100-gcc-initialization-order.patch | 33 +
...3809.100-gcc-move-explicit-initialization.patch | 97 +
chromium-76.0.3809.100-gcc-net-fetcher.patch | 63 +
...m-76.0.3809.100-gcc-no-alignas-and-export.patch | 14 +
...mium-76.0.3809.100-gcc-remoting-constexpr.patch | 27 +
...m-76.0.3809.100-gcc-themeservice-includes.patch | 36 +
chromium-76.0.3809.100-gcc-vulkan.patch | 115 +
...0.3809.100-libusb_interrupt_event_handler.patch | 15 +
chromium-76.0.3809.100-pulse-api-change.patch | 47 +
chromium-76.0.3809.100-quiche-compile-fix.patch | 225 ++
chromium-76.0.3809.100-throttling-dead-beef.patch | 30 +
...ium-76.0.3809.100-vtable-symbol-undefined.patch | 11 +
chromium-76.0.3809.100-weak-ptr-no-except.patch | 66 +
chromium-browser.desktop | 356 +++
chromium-browser.sh | 58 +
chromium-browser.xml | 18 +
chromium-latest.py | 344 +++
chromium-libs-media-freeworld.spec | 2761 ++++++++++++++++++++
chromium-widevine-other-locations.patch | 23 +
clean_ffmpeg.sh | 345 +++
dead.package | 1 -
enable-vaapi.patch | 96 +
get_free_ffmpeg_source_files.py | 82 +
get_linux_tests_names.py | 121 +
master_preferences | 17 +
sources | 20 +
86 files changed, 6735 insertions(+), 1 deletion(-)
---
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aaf434b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,89 @@
+/chromium-52.0.2743.75-clean.tar.xz
+/depot_tools.git-master.tar.gz
+/policy_templates.zip
+/chromium-52.0.2743.82-clean.tar.xz
+/chromium-52.0.2743.116-clean.tar.xz
+/chromium-53.0.2785.92-clean.tar.xz
+/chromium-53.0.2785.101-clean.tar.xz
+/chromium-53.0.2785.113-clean.tar.xz
+/chromium-53.0.2785.116-clean.tar.xz
+/chromium-53.0.2785.143-clean.tar.xz
+/chromium-54.0.2840.59-clean.tar.xz
+/chromium-54.0.2840.71-clean.tar.xz
+/chromium-54.0.2840.90-clean.tar.xz
+/chromium-54.0.2840.100.tar.xz
+/chromium-54.0.2840.100-clean.tar.xz
+/chromium-55.0.2883.75-clean.tar.xz
+/chromium-55.0.2883.87-clean.tar.xz
+/chromium-56.0.2924.87-clean.tar.xz
+/chromium-57.0.2987.110-clean.tar.xz
+/chromium-57.0.2987.133-clean.tar.xz
+/chromium-58.0.3029.81-clean.tar.xz
+/chromium-58.0.3029.110-clean.tar.xz
+/chromium-58.0.3029.110.tar.xz
+/chromium-59.0.3071.86-clean.tar.xz
+/chromium-59.0.3071.86.tar.xz
+/chromium-59.0.3071.104-clean.tar.xz
+/chromium-59.0.3071.104.tar.xz
+/chromium-59.0.3071.109-clean.tar.xz
+/chromium-59.0.3071.109.tar.xz
+/chromium-59.0.3071.115-clean.tar.xz
+/chromium-59.0.3071.109-freetype.tar.bz2
+/chromium-59.0.3071.115.tar.xz
+/chromium-60.0.3112.90-clean.tar.xz
+/chromium-60.0.3112.101-clean.tar.xz
+/chromium-60.0.3112.113-clean.tar.xz
+/chromium-60.0.3112.113.tar.xz
+/chromium-61.0.3163.79-clean.tar.xz
+/chromium-61.0.3163.100-clean.tar.xz
+/chromium-62.0.3202.75-clean.tar.xz
+/chromium-62.0.3202.89-clean.tar.xz
+/chromium-63.0.3239.84-clean.tar.xz
+/chromium-63.0.3239.108-clean.tar.xz
+/chromium-64.0.3282.119-clean.tar.xz
+/chromium-64.0.3282.140-clean.tar.xz
+/chromium-64.0.3282.167-clean.tar.xz
+/chromium-64.0.3282.186-clean.tar.xz
+/chromium-65.0.3325.146-clean.tar.xz
+/chromium-65.0.3325.162-clean.tar.xz
+/chromium-65.0.3325.181-clean.tar.xz
+/chromium-66.0.3359.139-clean.tar.xz
+/chromium-66.0.3359.170-clean.tar.xz
+/chromium-66.0.3359.181-clean.tar.xz
+/chromium-67.0.3396.62-clean.tar.xz
+/gelasio.zip
+/MuktiNarrow-0.94.tar.bz2
+/NotoSansCJKjp-hinted.zip
+/lohit-gurmukhi-ttf-2.91.2.tar.gz
+/Arimo-BoldItalic.ttf
+/Arimo-Bold.ttf
+/Arimo-Italic.ttf
+/Arimo-Regular.ttf
+/Cousine-BoldItalic.ttf
+/Cousine-Bold.ttf
+/Cousine-Italic.ttf
+/Cousine-Regular.ttf
+/Tinos-BoldItalic.ttf
+/Tinos-Bold.ttf
+/Tinos-Italic.ttf
+/Tinos-Regular.ttf
+/chromium-67.0.3396.79-clean.tar.xz
+/chromium-67.0.3396.87-clean.tar.xz
+/chromium-67.0.3396.99-clean.tar.xz
+/chromium-68.0.3440.106-clean.tar.xz
+/Ahem.ttf
+/chromium-69.0.3497.92-clean.tar.xz
+/chromium-69.0.3497.100-clean.tar.xz
+/chromium-70.0.3538.77-clean.tar.xz
+/chromium-70.0.3538.110-clean.tar.xz
+/chromium-71.0.3578.98-clean.tar.xz
+/node-v8.9.1-linux-x64.tar.gz
+/chromium-72.0.3626.121-clean.tar.xz
+/chromium-73.0.3683.75-clean.tar.xz
+/chromium-73.0.3683.86-clean.tar.xz
+/chromium-73.0.3683.103-clean.tar.xz
+/chromium-74.0.3729.169-clean.tar.xz
+/chromium-75.0.3770.80-clean.tar.xz
+/chromium-75.0.3770.90-clean.tar.xz
+/chromium-75.0.3770.100-clean.tar.xz
+/chromium-76.0.3809.100-clean.tar.xz
diff --git a/GardinerModBug.ttf b/GardinerModBug.ttf
new file mode 100644
index 0000000..09f4c3e
Binary files /dev/null and b/GardinerModBug.ttf differ
diff --git a/GardinerModCat.ttf b/GardinerModCat.ttf
new file mode 100644
index 0000000..6f6e560
Binary files /dev/null and b/GardinerModCat.ttf differ
diff --git a/chrome-remote-desktop@.service b/chrome-remote-desktop@.service
new file mode 100644
index 0000000..4b5b1fc
--- /dev/null
+++ b/chrome-remote-desktop@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description="Chrome Remote Desktop host daemon"
+
+[Service]
+User=%i
+Environment=HOME=%h
+ExecStart=@@CRD_PATH@@/chrome-remote-desktop --start --foreground
+ExecStop=@@CRD_PATH@@/chrome-remote-desktop --stop
+ExecReload=@@CRD_PATH@@/chrome-remote-desktop --reload
+Restart=always
+TimeoutStopSec=10
+
+[Install]
+WantedBy=multi-user.target
diff --git a/chromium-45.0.2454.101-linux-path-max.patch b/chromium-45.0.2454.101-linux-path-max.patch
new file mode 100644
index 0000000..3146349
--- /dev/null
+++ b/chromium-45.0.2454.101-linux-path-max.patch
@@ -0,0 +1,44 @@
+diff -up chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h.pathmax chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h
+--- chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h.pathmax 2015-10-07 11:26:11.813477839 -0400
++++ chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h 2015-10-07 11:26:40.845845054 -0400
+@@ -12,6 +12,11 @@
+
+ #include "sdk_util/macros.h"
+
++/* Needed for PATH_MAX */
++#ifndef PATH_MAX
++#define PATH_MAX 4096
++#endif
++
+ namespace nacl_io {
+
+ class Path {
+diff -up chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c.pathmax chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c
+--- chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c.pathmax 2015-08-22 15:02:08.000000000 -0400
++++ chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c 2015-10-07 10:58:56.172018783 -0400
+@@ -11,6 +11,10 @@
+
+ #include <errno.h>
+ #include <limits.h>
++/* Needed for PATH_MAX */
++#ifndef PATH_MAX
++#define PATH_MAX 4096
++#endif
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+diff -up chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c.pathmax chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c
+--- chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c.pathmax 2015-10-09 10:57:38.424348662 -0400
++++ chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c 2015-10-09 10:57:51.541059938 -0400
+@@ -13,6 +13,11 @@
+
+ #include "sdk_util/macros.h"
+
++/* Needed for PATH_MAX */
++#ifndef PATH_MAX
++#define PATH_MAX 4096
++#endif
++
+ EXTERN_C_BEGIN
+
+ #if defined(__native_client__)
diff --git a/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch b/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
new file mode 100644
index 0000000..c422957
--- /dev/null
+++ b/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
@@ -0,0 +1,27 @@
+diff -up chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc.ignore-fd-count chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
+--- chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc.ignore-fd-count 2015-12-15 14:48:07.119011866 -0500
++++ chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc 2015-12-15 14:48:14.151850055 -0500
+@@ -153,6 +153,14 @@ void NaClSandbox::InitializeLayerOneSand
+ }
+
+ void NaClSandbox::CheckForExpectedNumberOfOpenFds() {
++ // Whatever logic this code is using is wrong more often than it is right.
++ // If you set expected_num_fds to 6, it finds 7.
++ // If you set expected_num_fds to 7, it finds 6.
++ // Code like this makes a packager drink. And not the good stuff either.
++ // Instead, we're just going to smile and tell it to never care about the
++ // number of FDs open. Stupid code. We hates it.
++
++#if 0
+ // We expect to have the following FDs open:
+ // 1-3) stdin, stdout, stderr.
+ // 4) The /dev/urandom FD used by base::GetUrandomFD().
+@@ -171,6 +179,8 @@ void NaClSandbox::CheckForExpectedNumber
+ }
+
+ CHECK_EQ(expected_num_fds, sandbox::ProcUtil::CountOpenFds(proc_fd_.get()));
++#endif
++
+ }
+
+ void NaClSandbox::InitializeLayerTwoSandbox(bool uses_nonsfi_mode) {
diff --git a/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch b/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
new file mode 100644
index 0000000..bfe0422
--- /dev/null
+++ b/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
@@ -0,0 +1,11 @@
+diff -up chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme chromium-47.0.2526.80/native_client/build/untrusted.gypi
+--- chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme 2015-12-09 11:54:27.584962337 -0500
++++ chromium-47.0.2526.80/native_client/build/untrusted.gypi 2015-12-09 11:54:45.033571750 -0500
+@@ -1564,6 +1564,7 @@
+ '-Wno-char-subscripts',
+ '-Wno-unused-function',
+ '-std=gnu++11',
++ '-fgnu-inline-asm',
+ ],
+ 'native_irt_compile_flags': [
+ # IRT compile/link flags to make the binary smaller.
diff --git a/chromium-53.0.2785.92-boringssl-time-fix.patch b/chromium-53.0.2785.92-boringssl-time-fix.patch
new file mode 100644
index 0000000..8d67957
--- /dev/null
+++ b/chromium-53.0.2785.92-boringssl-time-fix.patch
@@ -0,0 +1,11 @@
+diff -up chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c
+--- chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix 2016-09-06 15:20:06.094396255 -0400
++++ chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c 2016-09-06 15:20:16.893187930 -0400
+@@ -56,6 +56,7 @@
+ * [including the GNU Public Licence.] */
+
+ #include <string.h>
++#include <time.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+
diff --git a/chromium-54.0.2840.59-jpeg-include-dir.patch b/chromium-54.0.2840.59-jpeg-include-dir.patch
new file mode 100644
index 0000000..f96a56c
--- /dev/null
+++ b/chromium-54.0.2840.59-jpeg-include-dir.patch
@@ -0,0 +1,11 @@
+diff -up chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix chromium-54.0.2840.59/third_party/BUILD.gn
+--- chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix 2016-10-17 11:45:44.995340495 -0400
++++ chromium-54.0.2840.59/third_party/BUILD.gn 2016-10-17 11:46:35.254289872 -0400
+@@ -20,6 +20,7 @@ declare_args() {
+ config("system_libjpeg_config") {
+ libs = [ "jpeg" ]
+ defines = [ "USE_SYSTEM_LIBJPEG" ]
++ include_dirs = [ "/usr/include/" ]
+ }
+
+ config("libjpeg_turbo_config") {
diff --git a/chromium-55.0.2883.75-addrfix.patch b/chromium-55.0.2883.75-addrfix.patch
new file mode 100644
index 0000000..00c214c
--- /dev/null
+++ b/chromium-55.0.2883.75-addrfix.patch
@@ -0,0 +1,11 @@
+diff -up chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix chromium-55.0.2883.75/third_party/boringssl/BUILD.gn
+--- chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix 2016-12-12 15:30:27.727834891 -0500
++++ chromium-55.0.2883.75/third_party/boringssl/BUILD.gn 2016-12-12 15:30:53.095709352 -0500
+@@ -24,6 +24,7 @@ config("internal_config") {
+ "BORINGSSL_IMPLEMENTATION",
+ "BORINGSSL_NO_STATIC_INITIALIZER",
+ "OPENSSL_SMALL",
++ "_POSIX_C_SOURCE=200112L",
+ ]
+ configs = [
+ # TODO(davidben): Fix size_t truncations in BoringSSL.
diff --git a/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
new file mode 100644
index 0000000..ddb94a0
--- /dev/null
+++ b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
@@ -0,0 +1,19 @@
+diff -up chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc
+--- chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert 2017-05-08 14:58:11.767482431 -0400
++++ chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc 2017-05-08 14:58:37.722960109 -0400
+@@ -790,15 +790,6 @@ void DeviceDataManagerX11::UpdateScrollC
+ DCHECK(deviceid >= 0 && deviceid < kMaxDeviceNum);
+ ScrollInfo& info = scroll_data_[deviceid];
+
+- bool legacy_scroll_available =
+- (scroll_class_info->flags & XIScrollFlagNoEmulation) == 0;
+- // If the device's highest resolution is lower than the resolution of xinput1
+- // then use xinput1's events instead (ie. don't configure smooth scrolling).
+- if (legacy_scroll_available &&
+- std::abs(scroll_class_info->increment) <= 1.0) {
+- return;
+- }
+-
+ switch (scroll_class_info->scroll_type) {
+ case XIScrollTypeVertical:
+ info.vertical.number = scroll_class_info->number;
diff --git a/chromium-59.0.3071.86-i686-ld-memory-tricks.patch b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
new file mode 100644
index 0000000..9dde4c5
--- /dev/null
+++ b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
@@ -0,0 +1,12 @@
+diff -up chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn
+--- chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory 2017-06-07 15:37:09.436616113 -0400
++++ chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn 2017-06-07 15:38:04.508519102 -0400
+@@ -93,7 +93,7 @@ gcc_toolchain("x86") {
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+- extra_cppflags = "-fno-delete-null-pointer-checks"
++ extra_cppflags = "-fno-delete-null-pointer-checks -g1"
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
diff --git a/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
new file mode 100644
index 0000000..7248825
--- /dev/null
+++ b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
@@ -0,0 +1,21 @@
+diff -up chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h
+--- chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix 2017-08-25 15:29:12.143242471 -0400
++++ chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h 2017-08-25 15:29:36.941835865 -0400
+@@ -39,13 +39,13 @@
+ #include "log.h"
+
+ #if ARCH_AARCH64
+-# include "aarch64/timer.h"
++# include "libavutil/aarch64/timer.h"
+ #elif ARCH_ARM
+-# include "arm/timer.h"
++# include "libavutil/arm/timer.h"
+ #elif ARCH_PPC
+-# include "ppc/timer.h"
++# include "libavutil/ppc/timer.h"
+ #elif ARCH_X86
+-# include "x86/timer.h"
++# include "libavutil/x86/timer.h"
+ #endif
+
+ #if !defined(AV_READ_TIME)
diff --git a/chromium-60.0.3112.78-jpeg-nomangle.patch b/chromium-60.0.3112.78-jpeg-nomangle.patch
new file mode 100644
index 0000000..0b758a4
--- /dev/null
+++ b/chromium-60.0.3112.78-jpeg-nomangle.patch
@@ -0,0 +1,14 @@
+diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h
+--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01 15:29:00.870759406 -0400
++++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h 2017-08-01 15:29:09.326593414 -0400
+@@ -18,10 +18,6 @@
+ #ifndef JPEGLIB_H
+ #define JPEGLIB_H
+
+-/* Begin chromium edits */
+-#include "jpeglibmangler.h"
+-/* End chromium edits */
+-
+ /*
+ * First we include the configuration files that record how this
+ * installation of the JPEG library is set up. jconfig.h can be
diff --git a/chromium-60.0.3112.78-no-libpng-prefix.patch b/chromium-60.0.3112.78-no-libpng-prefix.patch
new file mode 100644
index 0000000..0dbdcf9
--- /dev/null
+++ b/chromium-60.0.3112.78-no-libpng-prefix.patch
@@ -0,0 +1,17 @@
+diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h
+--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01 14:42:54.321986758 -0400
++++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832 -0400
+@@ -225,13 +225,4 @@
+ #define PNG_USER_CHUNK_MALLOC_MAX 4000000L
+ /* end of chromium settings */
+
+-/* chromium prefixing */
+-/*
+- * This is necessary to build multiple copies of libpng. We need this while pdfium builds
+- * its own copy of libpng.
+- */
+-#define PNG_PREFIX
+-#include "pngprefix.h"
+-/* end of chromium prefixing */
+-
+ #endif /* PNGLCONF_H */
diff --git a/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
new file mode 100644
index 0000000..183b5ab
--- /dev/null
+++ b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
@@ -0,0 +1,13 @@
+diff -up chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h
+--- chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 2017-09-06 16:30:15.898454585 -0400
++++ chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h 2017-09-06 16:30:27.570229539 -0400
+@@ -21,8 +21,7 @@
+ #if !defined(__native_client__) && \
+ ((defined(__clang__) && \
+ ((__clang_major__ > 3) || \
+- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
+- (defined(__GNUC__) && __GNUC__ >= 5))
++ (__clang_major__ == 3 && __clang_minor__ >= 4))))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
+ #else
diff --git a/chromium-62.0.3202.62-kmaxskip-constexpr.patch b/chromium-62.0.3202.62-kmaxskip-constexpr.patch
new file mode 100644
index 0000000..d4f8250
--- /dev/null
+++ b/chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc
+--- chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip 2017-10-18 10:00:28.503714392 -0400
++++ chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc 2017-10-18 10:00:43.153430212 -0400
+@@ -336,7 +336,7 @@ TYPES(M);
+ #undef TYPES
+
+ const SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0};
+-const size_t PaintOp::kMaxSkip;
++constexpr size_t PaintOp::kMaxSkip;
+
+ std::string PaintOpTypeToString(PaintOpType type) {
+ switch (type) {
diff --git a/chromium-63.0.3289.84-nullfix.patch b/chromium-63.0.3289.84-nullfix.patch
new file mode 100644
index 0000000..c66aff1
--- /dev/null
+++ b/chromium-63.0.3289.84-nullfix.patch
@@ -0,0 +1,43 @@
+diff -up chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn
+--- chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix 2017-12-06 15:05:21.000000000 -0500
++++ chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn 2017-12-07 10:44:34.507207080 -0500
+@@ -31,6 +31,7 @@ gcc_toolchain("arm64") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
++ extra_cppflags = "-fno-delete-null-pointer-checks"
+
+ toolchain_args = {
+ current_cpu = "arm64"
+@@ -49,6 +50,7 @@ gcc_toolchain("arm") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
++ extra_cppflags = "-fno-delete-null-pointer-checks"
+
+ toolchain_args = {
+ current_cpu = "arm"
+@@ -99,6 +101,7 @@ gcc_toolchain("x86") {
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
++ extra_cppflags = "-fno-delete-null-pointer-checks"
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+@@ -152,6 +155,7 @@ gcc_toolchain("x64") {
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
++ extra_cppflags = "-fno-delete-null-pointer-checks"
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+@@ -186,6 +190,7 @@ gcc_toolchain("mipsel") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
++ extra_cppflags = "-fno-delete-null-pointer-checks"
+
+ toolchain_args = {
+ cc_wrapper = ""
diff --git a/chromium-64.0.3282.119-ffmpeg-stdatomic.patch b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
new file mode 100644
index 0000000..64c5f26
--- /dev/null
+++ b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
@@ -0,0 +1,17 @@
+diff -up chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c
+--- chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic 2018-01-25 11:55:57.880936815 -0500
++++ chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c 2018-01-25 11:57:18.456787888 -0500
+@@ -18,7 +18,13 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++// GCC 4.8 didn't have stdatomic, but was advertising it.
++// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016
++#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ == 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ == 8)))
++#include <compat/atomics/gcc/stdatomic.h>
++#else
+ #include <stdatomic.h>
++#endif
+
+ #include "attributes.h"
+ #include "cpu.h"
diff --git a/chromium-65.0.3325.146-gcc-round-fix.patch b/chromium-65.0.3325.146-gcc-round-fix.patch
new file mode 100644
index 0000000..a29779d
--- /dev/null
+++ b/chromium-65.0.3325.146-gcc-round-fix.patch
@@ -0,0 +1,12 @@
+diff -up chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc
+--- chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix 2018-03-07 10:57:11.284376048 -0500
++++ chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc 2018-03-07 10:58:16.590742636 -0500
+@@ -10,7 +10,7 @@
+
+ #include "p2p/base/port.h"
+
+-#include <math.h>
++#include <cmath>
+
+ #include <algorithm>
+ #include <utility>
diff --git a/chromium-65.0.3325.146-memcpy-fix.patch b/chromium-65.0.3325.146-memcpy-fix.patch
new file mode 100644
index 0000000..b2b2cd4
--- /dev/null
+++ b/chromium-65.0.3325.146-memcpy-fix.patch
@@ -0,0 +1,12 @@
+diff -up chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc
+--- chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix 2018-03-07 11:04:14.690379817 -0500
++++ chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc 2018-03-07 11:06:04.339878069 -0500
+@@ -3,7 +3,7 @@
+ // found in the LICENSE file.
+
+ #include "cc/paint/raw_memory_transfer_cache_entry.h"
+-
++#include <memory.h>
+ #include <string.h>
+
+ namespace cc {
diff --git a/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
new file mode 100644
index 0000000..d5b19cf
--- /dev/null
+++ b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
@@ -0,0 +1,18 @@
+diff -up chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h
+--- chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider 2018-04-25 16:33:40.872222779 -0400
++++ chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h 2018-04-25 16:37:23.175883637 -0400
+@@ -11,13 +11,13 @@
+ #include "base/callback_forward.h"
+ #include "base/macros.h"
+ #include "components/policy/core/browser/configuration_policy_handler_list.h"
++#include "components/policy/core/common/configuration_policy_provider.h"
+ #include "components/policy/core/common/schema.h"
+ #include "components/policy/core/common/schema_registry.h"
+ #include "components/policy/policy_export.h"
+
+ namespace policy {
+
+-class ConfigurationPolicyProvider;
+ class PolicyService;
+ class PolicyServiceImpl;
+
diff --git a/chromium-66.0.3359.117-system-clang.patch b/chromium-66.0.3359.117-system-clang.patch
new file mode 100644
index 0000000..e90dc58
--- /dev/null
+++ b/chromium-66.0.3359.117-system-clang.patch
@@ -0,0 +1,12 @@
+diff -up chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang chromium-66.0.3359.117/build/config/clang/clang.gni
+--- chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang 2018-04-18 12:08:45.658190297 -0400
++++ chromium-66.0.3359.117/build/config/clang/clang.gni 2018-04-18 12:09:37.612032982 -0400
+@@ -4,7 +4,7 @@
+
+ import("//build/toolchain/toolchain.gni")
+
+-default_clang_base_path = "//third_party/llvm-build/Release+Asserts"
++default_clang_base_path = "/usr"
+
+ declare_args() {
+ # Indicates if the build should use the Chrome-specific plugins for enforcing
diff --git a/chromium-67.0.3396.62-gcc5.patch b/chromium-67.0.3396.62-gcc5.patch
new file mode 100644
index 0000000..ceef85d
--- /dev/null
+++ b/chromium-67.0.3396.62-gcc5.patch
@@ -0,0 +1,12 @@
+diff -up chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl
+--- chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 2018-05-30 04:44:33.000000000 -0400
++++ chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl 2018-05-30 11:59:26.218625660 -0400
+@@ -262,7 +262,7 @@ interface mixin WebGL2RenderingContextBa
+ const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
+ const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
+ const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
+- const GLenum INVALID_INDEX = 0xFFFFFFFF;
++ const GLenum INVALID_INDEX = 256;
+ const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
+ const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
+ const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111;
diff --git a/chromium-67.0.3396.62-gn-system.patch b/chromium-67.0.3396.62-gn-system.patch
new file mode 100644
index 0000000..4a08e94
--- /dev/null
+++ b/chromium-67.0.3396.62-gn-system.patch
@@ -0,0 +1,208 @@
+diff -up chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn
+diff -up chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libusb.gn
+--- chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem 2018-05-30 12:18:36.949488683 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/libusb.gn 2018-05-30 12:18:36.949488683 -0400
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
+diff -up chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/opus.gn
+--- chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem 2018-05-30 04:43:03.000000000 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/opus.gn 2018-05-30 12:18:36.950488661 -0400
+@@ -1,3 +1,164 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++import("//testing/test.gni")
++
++pkg_config("system_opus") {
++ packages = [ "opus" ]
++}
++
++shim_headers("opus_shim") {
++ root_path = "src/include"
++ headers = [
++ "opus_custom.h",
++ "opus_defines.h",
++ "opus_multistream.h",
++ "opus_types.h",
++ "opus.h",
++ ]
++}
++
++source_set("opus") {
++ deps = [
++ ":opus_shim",
++ ]
++ public_configs = [ ":system_opus" ]
++}
++
++config("opus_test_config") {
++ include_dirs = [
++ "src/celt",
++ "src/silk",
++ ]
++
++ if (is_win) {
++ defines = [ "inline=__inline" ]
++ }
++ if (is_android) {
++ libs = [ "log" ]
++ }
++ if (is_clang) {
++ cflags = [ "-Wno-absolute-value" ]
++ }
++}
++
++executable("opus_compare") {
++ sources = [
++ "src/src/opus_compare.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ "//build/config/sanitizers:deps",
++ "//build/win:default_exe_manifest",
++ ]
++}
++
++executable("opus_demo") {
++ sources = [
++ "src/src/opus_demo.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ "//build/config/sanitizers:deps",
++ "//build/win:default_exe_manifest",
++ ]
++}
++
++test("test_opus_api") {
++ sources = [
++ "src/tests/test_opus_api.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++test("test_opus_encode") {
++ sources = [
++ "src/tests/test_opus_encode.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++# GN orders flags on a target before flags from configs. The default config
++# adds -Wall, and this flag have to be after -Wall -- so they need to
++# come from a config and can't be on the target directly.
++config("test_opus_decode_config") {
++ # test_opus_decode passes a null pointer to opus_decode() for an argument
++ # marked as requiring a non-null value by the nonnull function attribute,
++ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid
++ # a compilation error if -Werror is specified.
++ if (is_posix) {
++ cflags = [ "-Wno-nonnull" ]
++ }
++}
++
++test("test_opus_decode") {
++ sources = [
++ "src/tests/test_opus_decode.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ":test_opus_decode_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
++test("test_opus_padding") {
++ sources = [
++ "src/tests/test_opus_padding.c",
++ ]
++
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
++ ":opus_test_config",
++ ]
++
++ deps = [
++ ":opus",
++ ]
++}
++
+ # Copyright 2017 The Chromium Authors. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+diff -up chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py
+--- chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem 2018-05-30 12:18:36.951488638 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py 2018-05-30 12:20:02.542534270 -0400
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/chromium-68.0.3440.106-boolfix.patch b/chromium-68.0.3440.106-boolfix.patch
new file mode 100644
index 0000000..ed22aa9
--- /dev/null
+++ b/chromium-68.0.3440.106-boolfix.patch
@@ -0,0 +1,36 @@
+diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h
+--- chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix 2018-08-09 03:21:23.066802340 -0400
++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h 2018-08-09 03:25:10.638595925 -0400
+@@ -45,7 +45,7 @@ class AssociatedInterfacePtrInfo {
+
+ bool is_valid() const { return handle_.is_valid(); }
+
+- explicit operator bool() const { return handle_.is_valid(); }
++ explicit operator bool() const { return (bool) handle_.is_valid(); }
+
+ ScopedInterfaceEndpointHandle PassHandle() {
+ return std::move(handle_);
+diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h
+--- chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix 2018-08-09 03:21:23.067802318 -0400
++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h 2018-08-09 03:24:44.935229067 -0400
+@@ -50,7 +50,7 @@ class AssociatedInterfaceRequest {
+ // handle.
+ bool is_pending() const { return handle_.is_valid(); }
+
+- explicit operator bool() const { return handle_.is_valid(); }
++ explicit operator bool() const { return (bool) handle_.is_valid(); }
+
+ ScopedInterfaceEndpointHandle PassHandle() { return std::move(handle_); }
+
+diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h
+--- chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix 2018-08-08 15:11:05.000000000 -0400
++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h 2018-08-09 03:21:23.067802318 -0400
+@@ -54,7 +54,7 @@ class InterfaceRequest {
+ // Indicates whether the request currently contains a valid message pipe.
+ bool is_pending() const { return handle_.is_valid(); }
+
+- explicit operator bool() const { return handle_.is_valid(); }
++ explicit operator bool() const { return (bool) handle_.is_valid(); }
+
+ // Removes the message pipe from the request and returns it.
+ ScopedMessagePipeHandle PassMessagePipe() { return std::move(handle_); }
diff --git a/chromium-68.0.3440.106-fix-default-on-redeclaration.patch b/chromium-68.0.3440.106-fix-default-on-redeclaration.patch
new file mode 100644
index 0000000..4a92fba
--- /dev/null
+++ b/chromium-68.0.3440.106-fix-default-on-redeclaration.patch
@@ -0,0 +1,30 @@
+diff -up chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc
+--- chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c 2018-08-17 14:54:30.587338865 -0400
++++ chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc 2018-08-17 14:55:20.461184298 -0400
+@@ -14,22 +14,22 @@ LogoMetadata::LogoMetadata() = default;
+ LogoMetadata::LogoMetadata(const LogoMetadata&) = default;
+ LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default;
+ LogoMetadata& LogoMetadata::operator=(const LogoMetadata&) = default;
+-LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) noexcept = default;
++LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) = default;
+ LogoMetadata::~LogoMetadata() = default;
+
+ EncodedLogo::EncodedLogo() = default;
+ EncodedLogo::EncodedLogo(const EncodedLogo&) = default;
+ EncodedLogo::EncodedLogo(EncodedLogo&&) noexcept = default;
+ EncodedLogo& EncodedLogo::operator=(const EncodedLogo&) = default;
+-EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) noexcept = default;
++EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) = default;
+ EncodedLogo::~EncodedLogo() = default;
+
+ Logo::Logo() = default;
+ Logo::~Logo() = default;
+
+ LogoCallbacks::LogoCallbacks() = default;
+-LogoCallbacks::LogoCallbacks(LogoCallbacks&&) noexcept = default;
+-LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) noexcept = default;
++LogoCallbacks::LogoCallbacks(LogoCallbacks&&) = default;
++LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) = default;
+ LogoCallbacks::~LogoCallbacks() = default;
+
+ } // namespace search_provider_logos
diff --git a/chromium-68.0.3440.106-master-prefs-path.patch b/chromium-68.0.3440.106-master-prefs-path.patch
new file mode 100644
index 0000000..9304adf
--- /dev/null
+++ b/chromium-68.0.3440.106-master-prefs-path.patch
@@ -0,0 +1,15 @@
+diff -up chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc
+--- chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc 2018-08-09 03:12:33.444705798 -0400
++++ chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc 2018-08-09 03:14:46.275754910 -0400
+@@ -19,9 +19,9 @@ bool IsOrganicFirstRun() {
+
+ base::FilePath MasterPrefsPath() {
+ // The standard location of the master prefs is next to the chrome binary.
++ // ...but we patch it to use /etc/chromium
+ base::FilePath master_prefs;
+- if (!base::PathService::Get(base::DIR_EXE, &master_prefs))
+- return base::FilePath();
++ master_prefs = base::FilePath("/etc/chromium");
+ return master_prefs.AppendASCII(installer::kDefaultMasterPrefs);
+ }
+
diff --git a/chromium-69.0.3497.81-build-sanely-please.patch b/chromium-69.0.3497.81-build-sanely-please.patch
new file mode 100644
index 0000000..6241a97
--- /dev/null
+++ b/chromium-69.0.3497.81-build-sanely-please.patch
@@ -0,0 +1,33 @@
+diff -up chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot chromium-69.0.3497.81/build/config/BUILD.gn
+--- chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot 2018-09-06 13:43:44.863375238 -0400
++++ chromium-69.0.3497.81/build/config/BUILD.gn 2018-09-06 13:43:58.377083290 -0400
+@@ -284,9 +284,9 @@ group("executable_and_loadable_module_an
+ public_deps += [ "//build/config/sanitizers:deps" ]
+ }
+
+- if (use_custom_libcxx) {
+- public_deps += [ "//buildtools/third_party/libc++" ]
+- }
++ # if (use_custom_libcxx) {
++ # public_deps += [ "//buildtools/third_party/libc++" ]
++ # }
+
+ if (use_afl) {
+ public_deps += [ "//third_party/afl" ]
+diff -up chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot chromium-69.0.3497.81/build/config/sysroot.gni
+--- chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot 2018-09-06 13:40:46.212232232 -0400
++++ chromium-69.0.3497.81/build/config/sysroot.gni 2018-09-06 13:41:02.421882529 -0400
+@@ -15,9 +15,10 @@ declare_args() {
+ # The absolute path to directory containing linux sysroot images
+ target_sysroot_dir = "//build/linux"
+
+- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
+- current_cpu == "arm" || current_cpu == "arm64" ||
+- current_cpu == "mipsel" || current_cpu == "mips64el"
++ use_sysroot = false
++ # use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++ # current_cpu == "arm" || current_cpu == "arm64" ||
++ # current_cpu == "mipsel" || current_cpu == "mips64el"
+ }
+
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
new file mode 100644
index 0000000..0c60643
--- /dev/null
+++ b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
@@ -0,0 +1,13 @@
+diff -up chromium-70.0.3538.67/base/test/BUILD.gn.nofc chromium-70.0.3538.67/base/test/BUILD.gn
+--- chromium-70.0.3538.67/base/test/BUILD.gn.nofc 2018-10-29 11:29:01.356812567 -0400
++++ chromium-70.0.3538.67/base/test/BUILD.gn 2018-10-29 11:29:12.631584916 -0400
+@@ -209,9 +209,6 @@ static_library("test_support") {
+ data_deps = [
+ "//third_party/test_fonts",
+ ]
+- if (current_toolchain == host_toolchain) {
+- data_deps += [ ":do_generate_fontconfig_caches" ]
+- }
+ }
+
+ if (is_ios) {
diff --git a/chromium-70.0.3538.67-sandbox-pie.patch b/chromium-70.0.3538.67-sandbox-pie.patch
new file mode 100644
index 0000000..0f104e9
--- /dev/null
+++ b/chromium-70.0.3538.67-sandbox-pie.patch
@@ -0,0 +1,20 @@
+diff -up chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie chromium-70.0.3538.67/sandbox/linux/BUILD.gn
+--- chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie 2018-10-18 12:14:05.766939769 -0400
++++ chromium-70.0.3538.67/sandbox/linux/BUILD.gn 2018-10-18 12:16:37.820027182 -0400
+@@ -315,10 +315,16 @@ if (is_linux) {
+ # For ULLONG_MAX
+ "-std=gnu99",
+
++ "-fPIE",
++
+ # These files have a suspicious comparison.
+ # TODO fix this and re-enable this warning.
+ "-Wno-sign-compare",
+ ]
++
++ ldflags = [
++ "-pie",
++ ]
+ }
+ }
+
diff --git a/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch b/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
new file mode 100644
index 0000000..ccecfcb
--- /dev/null
+++ b/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
@@ -0,0 +1,12 @@
+diff -up chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h
+--- chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat 2018-11-06 13:27:05.118766581 -0500
++++ chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h 2018-11-06 13:27:34.575204504 -0500
+@@ -5,6 +5,8 @@
+ #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
+ #define SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
+
++#define __ARCH_WANT_NEW_STAT
++
+ #include <asm-generic/unistd.h>
+
+ #if !defined(__NR_io_setup)
diff --git a/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch b/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
new file mode 100644
index 0000000..d071e81
--- /dev/null
+++ b/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
@@ -0,0 +1,12 @@
+diff -up chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9 chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h
+--- chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9 2019-01-08 13:27:25.193614727 -0500
++++ chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h 2019-01-08 13:27:35.161392234 -0500
+@@ -1231,7 +1231,7 @@ typedef unsigned long int ulong;
+ "d"(LSS_SYSCALL_ARG(parent_tidptr)),
+ "r"(LSS_SYSCALL_ARG(newtls)),
+ "r"(LSS_SYSCALL_ARG(child_tidptr))
+- : "rsp", "memory", "r8", "r10", "r11", "rcx");
++ : "memory", "r8", "r10", "r11", "rcx");
+ }
+ LSS_RETURN(int, __res);
+ }
diff --git a/chromium-71.0.3578.98-py2-bootstrap.patch b/chromium-71.0.3578.98-py2-bootstrap.patch
new file mode 100644
index 0000000..d575dff
--- /dev/null
+++ b/chromium-71.0.3578.98-py2-bootstrap.patch
@@ -0,0 +1,33 @@
+diff -up chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py
+--- chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 2018-12-12 17:02:58.000000000 -0500
++++ chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py 2018-12-14 11:48:22.150229631 -0500
+@@ -58,7 +58,7 @@ def _MinifyJS(input_js):
+
+ with tempfile.NamedTemporaryFile() as _:
+ args = [
+- 'python',
++ 'python2',
+ rjsmin_path
+ ]
+ p = subprocess.Popen(args,
+@@ -177,7 +177,7 @@ def _MinifyCSS(css_text):
+ os.path.join(py_vulcanize_path, 'third_party', 'rcssmin', 'rcssmin.py'))
+
+ with tempfile.NamedTemporaryFile() as _:
+- rcssmin_args = ['python', rcssmin_path]
++ rcssmin_args = ['python2', rcssmin_path]
+ p = subprocess.Popen(rcssmin_args,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+diff -up chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py.py2 chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py
+--- chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py.py2 2018-12-14 11:48:22.155229522 -0500
++++ chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py 2018-12-14 11:49:31.043728244 -0500
+@@ -93,7 +93,7 @@ def main(argv):
+ if not options.debug:
+ gn_gen_args += ' is_debug=false'
+ subprocess.check_call([
+- gn_path, 'gen', out_dir,
++ gn_path, 'gen', out_dir, ' --script-executable=/usr/bin/python2',
+ '--args=%s' % gn_gen_args, "--root=" + SRC_ROOT
+ ])
+
diff --git a/chromium-71.0.3578.98-skia-aarch64-buildfix.patch b/chromium-71.0.3578.98-skia-aarch64-buildfix.patch
new file mode 100644
index 0000000..5da1674
--- /dev/null
+++ b/chromium-71.0.3578.98-skia-aarch64-buildfix.patch
@@ -0,0 +1,21 @@
+diff -up chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h
+--- chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix 2018-12-14 11:17:43.249121756 -0500
++++ chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h 2018-12-14 11:20:07.770030234 -0500
+@@ -658,7 +658,7 @@ SI F approx_powf(F x, F y) {
+ }
+
+ SI F from_half(U16 h) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f32_f16(h);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -678,7 +678,7 @@ SI F from_half(U16 h) {
+ }
+
+ SI U16 to_half(F f) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f16_f32(f);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/chromium-71.0.3578.98-widevine-r3.patch b/chromium-71.0.3578.98-widevine-r3.patch
new file mode 100644
index 0000000..75392a7
--- /dev/null
+++ b/chromium-71.0.3578.98-widevine-r3.patch
@@ -0,0 +1,22 @@
+diff -upr chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc chromium-71.0.3578.80/chrome/common/chrome_content_client.cc
+--- chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc 2018-12-21 20:16:43.000000000 +0000
++++ chromium-71.0.3578.80/chrome/common/chrome_content_client.cc 2018-12-21 21:34:28.658206942 +0000
+@@ -99,7 +99,7 @@
+ // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is
+ // bundled and not a component. When the Widevine CDM is a component, it is
+ // registered in widevine_cdm_component_installer.cc.
+-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
++#if !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
+ #define REGISTER_BUNDLED_WIDEVINE_CDM
+ #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck
+ // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support
+diff -upr chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h
+--- chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-21 20:18:01.000000000 +0000
++++ chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-21 21:37:45.635374949 +0000
+@@ -12,4 +12,6 @@
+ // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available
+ // as a string, e.g., "1.0.123.456").
+
++#define WIDEVINE_CDM_VERSION_STRING "undefined"
++
+ #endif // WIDEVINE_CDM_VERSION_H_
diff --git a/chromium-72.0.3626.121-fedora-user-agent.patch b/chromium-72.0.3626.121-fedora-user-agent.patch
new file mode 100644
index 0000000..5cef6f0
--- /dev/null
+++ b/chromium-72.0.3626.121-fedora-user-agent.patch
@@ -0,0 +1,12 @@
+diff -up chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent chromium-72.0.3626.121/content/common/user_agent.cc
+--- chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent 2019-03-10 14:21:02.877454982 -0400
++++ chromium-72.0.3626.121/content/common/user_agent.cc 2019-03-10 14:22:05.728812272 -0400
+@@ -36,7 +36,7 @@ std::string GetUserAgentPlatform() {
+ #elif defined(OS_MACOSX)
+ "Macintosh; ";
+ #elif defined(USE_X11) || defined(USE_OZONE)
+- "X11; "; // strange, but that's what Firefox uses
++ "X11; Fedora; "; // strange, but that's what Firefox uses
+ #elif defined(OS_ANDROID)
+ "Linux; ";
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
diff --git a/chromium-72.0.3626.121-gcc5-r3.patch b/chromium-72.0.3626.121-gcc5-r3.patch
new file mode 100644
index 0000000..f4cf40b
--- /dev/null
+++ b/chromium-72.0.3626.121-gcc5-r3.patch
@@ -0,0 +1,36 @@
+diff -up chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h
+--- chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 2019-03-01 23:10:21.000000000 -0500
++++ chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h 2019-03-10 14:07:48.300244125 -0400
+@@ -15,7 +15,7 @@ namespace mojo {
+ template <>
+ struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
+ static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
+- return mailbox.name;
++ return base::make_span(mailbox.name);
+ }
+ static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
+ };
+diff -up chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h
+--- chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 2019-03-01 23:10:31.000000000 -0500
++++ chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h 2019-03-10 14:07:48.303244046 -0400
+@@ -340,7 +340,7 @@ struct StructTraits<viz::mojom::TextureQ
+ static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
+ const viz::TextureDrawQuad* quad =
+ viz::TextureDrawQuad::MaterialCast(&input);
+- return quad->vertex_opacity;
++ return base::make_span(quad->vertex_opacity);
+ }
+
+ static bool y_flipped(const viz::DrawQuad& input) {
+diff -up chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc
+--- chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 2019-03-10 14:07:48.307243941 -0400
++++ chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2019-03-10 14:09:16.565920044 -0400
+@@ -10,7 +10,7 @@
+
+ #include "modules/audio_processing/aec3/aec_state.h"
+
+-#include <math.h>
++#include <cmath>
+ #include <algorithm>
+ #include <numeric>
+ #include <vector>
diff --git a/chromium-72.0.3626.121-notest.patch b/chromium-72.0.3626.121-notest.patch
new file mode 100644
index 0000000..e8b7bf4
--- /dev/null
+++ b/chromium-72.0.3626.121-notest.patch
@@ -0,0 +1,11 @@
+diff -up chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd
+--- chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest 2019-03-10 13:54:17.843583876 -0400
++++ chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd 2019-03-10 14:03:29.302063637 -0400
+@@ -8,7 +8,6 @@
+ </outputs>
+ <release seq="1">
+ <includes>
+- <include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST" file="webui/i18n_process_css_test.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+ <include name="IDR_WEB_UI_TEST_MOJO_JS" file="${root_gen_dir}/chrome/test/data/webui/web_ui_test.mojom.js" use_base_dir="false" type="BINDATA"/>
+ <include name="IDR_WEB_UI_TEST_MOJO_LITE_JS" file="${root_gen_dir}/chrome/test/data/webui/web_ui_test.mojom-lite.js" use_base_dir="false" type="BINDATA"/>
+ </includes>
diff --git a/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch b/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
new file mode 100644
index 0000000..f8abb52
--- /dev/null
+++ b/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
@@ -0,0 +1,48 @@
+diff -up chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn
+--- chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc 2019-03-13 10:29:00.331009643 -0400
++++ chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn 2019-03-13 10:29:28.344458746 -0400
+@@ -31,7 +31,7 @@ gcc_toolchain("arm64") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+- extra_cppflags = "-fno-delete-null-pointer-checks"
++ extra_cppflags = ""
+
+ toolchain_args = {
+ current_cpu = "arm64"
+@@ -50,7 +50,7 @@ gcc_toolchain("arm") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+- extra_cppflags = "-fno-delete-null-pointer-checks"
++ extra_cppflags = ""
+
+ toolchain_args = {
+ current_cpu = "arm"
+@@ -101,7 +101,7 @@ gcc_toolchain("x86") {
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+- extra_cppflags = "-fno-delete-null-pointer-checks -g1"
++ extra_cppflags = "-g1"
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+@@ -155,7 +155,7 @@ gcc_toolchain("x64") {
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+- extra_cppflags = "-fno-delete-null-pointer-checks"
++ extra_cppflags = ""
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+@@ -190,7 +190,7 @@ gcc_toolchain("mipsel") {
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+- extra_cppflags = "-fno-delete-null-pointer-checks"
++ extra_cppflags = ""
+
+ toolchain_args = {
+ cc_wrapper = ""
diff --git a/chromium-73.0.3683.75-norar.patch b/chromium-73.0.3683.75-norar.patch
new file mode 100644
index 0000000..d61fd9c
--- /dev/null
+++ b/chromium-73.0.3683.75-norar.patch
@@ -0,0 +1,81 @@
+diff -up chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn
+--- chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn.nounrar 2019-03-13 08:59:45.988801102 -0400
++++ chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn 2019-03-13 09:00:20.244977448 -0400
+@@ -64,41 +64,6 @@ if (safe_browsing_mode == 1) {
+ ]
+ }
+
+- source_set("rar_analyzer") {
+- sources = [
+- "rar_analyzer.cc",
+- "rar_analyzer.h",
+- ]
+-
+- deps = [
+- ":archive_analyzer_results",
+- ":download_type_util",
+- ":file_type_policies",
+- "//base",
+- "//base:i18n",
+- "//components/safe_browsing:features",
+- "//third_party/unrar:unrar",
+- ]
+-
+- defines = [
+- "_FILE_OFFSET_BITS=64",
+- "LARGEFILE_SOURCE",
+- "RAR_SMP",
+- "SILENT",
+-
+- # The following is set to disable certain macro definitions in the unrar
+- # source code.
+- "CHROMIUM_UNRAR",
+-
+- # Disables exceptions in unrar, replaces them with process termination.
+- "UNRAR_NO_EXCEPTIONS",
+- ]
+-
+- public_deps = [
+- "//components/safe_browsing:csd_proto",
+- ]
+- }
+-
+ source_set("disk_image_type_sniffer_mac") {
+ sources = [
+ "disk_image_type_sniffer_mac.cc",
+@@ -167,7 +132,6 @@ source_set("safe_browsing") {
+ ":archive_analyzer_results",
+ ":binary_feature_extractor",
+ ":download_type_util",
+- ":rar_analyzer",
+ "//components/safe_browsing:features",
+ ]
+
+diff -up chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS.nounrar chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS
+--- chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS.nounrar 2019-03-11 18:00:54.000000000 -0400
++++ chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS 2019-03-13 08:59:26.513282690 -0400
+@@ -1,6 +1,5 @@
+ include_rules = [
+ "+components/safe_browsing",
+ "+third_party/protobuf",
+- "+third_party/unrar",
+ "+third_party/zlib",
+ ]
+diff -up chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc
+--- chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc.nounrar 2019-03-13 08:59:26.518282566 -0400
++++ chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc 2019-03-13 09:01:03.885935483 -0400
+@@ -48,10 +48,14 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile
+ void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
+ base::File temporary_file,
+ AnalyzeRarFileCallback callback) {
++#if 0
+ DCHECK(rar_file.IsValid());
+
+ safe_browsing::ArchiveAnalyzerResults results;
+ safe_browsing::rar_analyzer::AnalyzeRarFile(
+ std::move(rar_file), std::move(temporary_file), &results);
+ std::move(callback).Run(results);
++#else
++ NOTREACHED();
++#endif
+ }
diff --git a/chromium-75.0.3770.100-el7-fix-noexcept.patch b/chromium-75.0.3770.100-el7-fix-noexcept.patch
new file mode 100644
index 0000000..eaba072
--- /dev/null
+++ b/chromium-75.0.3770.100-el7-fix-noexcept.patch
@@ -0,0 +1,54 @@
+diff -up chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc.el7-noexcept chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc
+--- chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-06-18 11:47:55.000000000 -0400
++++ chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc 2019-06-20 10:17:27.440446569 -0400
+@@ -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-75.0.3770.100/components/policy/core/common/policy_map.cc.el7-noexcept chromium-75.0.3770.100/components/policy/core/common/policy_map.cc
+--- chromium-75.0.3770.100/components/policy/core/common/policy_map.cc.el7-noexcept 2019-06-18 11:48:01.000000000 -0400
++++ chromium-75.0.3770.100/components/policy/core/common/policy_map.cc 2019-06-20 10:17:27.444446463 -0400
+@@ -31,7 +31,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-75.0.3770.100/components/signin/core/browser/account_info.cc.el7-noexcept chromium-75.0.3770.100/components/signin/core/browser/account_info.cc
+--- chromium-75.0.3770.100/components/signin/core/browser/account_info.cc.el7-noexcept 2019-06-20 10:17:27.444446463 -0400
++++ chromium-75.0.3770.100/components/signin/core/browser/account_info.cc 2019-06-20 10:19:17.959532865 -0400
+@@ -51,7 +51,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 {
+diff -up chromium-75.0.3770.100/gpu/config/gpu_info.cc.el7-noexcept chromium-75.0.3770.100/gpu/config/gpu_info.cc
+--- chromium-75.0.3770.100/gpu/config/gpu_info.cc.el7-noexcept 2019-06-18 11:48:10.000000000 -0400
++++ chromium-75.0.3770.100/gpu/config/gpu_info.cc 2019-06-20 10:17:27.445446437 -0400
+@@ -181,7 +181,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 --git a/chromium-75.0.3770.100-epel7-stdc++.patch b/chromium-75.0.3770.100-epel7-stdc++.patch
new file mode 100644
index 0000000..e4d62a0
--- /dev/null
+++ b/chromium-75.0.3770.100-epel7-stdc++.patch
@@ -0,0 +1,11 @@
+diff -up chromium-75.0.3770.100/build/config/BUILD.gn.epel7 chromium-75.0.3770.100/build/config/BUILD.gn
+--- chromium-75.0.3770.100/build/config/BUILD.gn.epel7 2019-06-20 10:10:03.099549006 -0400
++++ chromium-75.0.3770.100/build/config/BUILD.gn 2019-06-20 10:10:21.483158162 -0400
+@@ -267,6 +267,7 @@ config("default_libs") {
+ "dl",
+ "pthread",
+ "rt",
++ "stdc++",
+ ]
+ }
+ }
diff --git a/chromium-75.0.3770.100-fix-v8-gcc.patch b/chromium-75.0.3770.100-fix-v8-gcc.patch
new file mode 100644
index 0000000..4a1a4b0
--- /dev/null
+++ b/chromium-75.0.3770.100-fix-v8-gcc.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc chromium-75.0.3770.100/v8/src/objects/js-objects.cc
+--- chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc 2019-06-25 10:55:08.132254304 -0400
++++ chromium-75.0.3770.100/v8/src/objects/js-objects.cc 2019-06-25 10:55:23.147933648 -0400
+@@ -3792,6 +3792,10 @@ void JSObject::ApplyAttributesToDictiona
+ }
+ }
+
++template void JSObject::ApplyAttributesToDictionary(
++ Isolate* isolate, ReadOnlyRoots roots, Handle<NumberDictionary> dictionary,
++ const PropertyAttributes attributes);
++
+ template <PropertyAttributes attrs>
+ Maybe<bool> JSObject::PreventExtensionsWithTransition(
+ Handle<JSObject> object, ShouldThrow should_throw) {
diff --git a/chromium-75.0.3770.100-git00281713.patch b/chromium-75.0.3770.100-git00281713.patch
new file mode 100644
index 0000000..4356435
--- /dev/null
+++ b/chromium-75.0.3770.100-git00281713.patch
@@ -0,0 +1,34 @@
+diff -up chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc
+--- chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 2019-07-02 09:10:38.951369854 -0400
++++ chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc 2019-07-02 09:11:59.864642942 -0400
+@@ -12,13 +12,19 @@
+ #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+ #include "chrome/browser/performance_manager/performance_manager.h"
+ #include "chrome/browser/performance_manager/render_process_user_data.h"
++#include "content/public/browser/render_process_host.h"
+ #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
+
+ namespace {
+
+ void BindProcessNode(
+- content::RenderProcessHost* render_process_host,
++ int render_process_host_id,
+ resource_coordinator::mojom::ProcessCoordinationUnitRequest request) {
++ content::RenderProcessHost* render_process_host =
++ content::RenderProcessHost::FromID(render_process_host_id);
++ if (!render_process_host)
++ return;
++
+ performance_manager::RenderProcessUserData* user_data =
+ performance_manager::RenderProcessUserData::GetForRenderProcessHost(
+ render_process_host);
+@@ -47,8 +53,7 @@ void ChromeContentBrowserClientPerforman
+ blink::AssociatedInterfaceRegistry* associated_registry,
+ content::RenderProcessHost* render_process_host) {
+ registry->AddInterface(
+- base::BindRepeating(&BindProcessNode,
+- base::Unretained(render_process_host)),
++ base::BindRepeating(&BindProcessNode, render_process_host->GetID()),
+ base::SequencedTaskRunnerHandle::Get());
+
+ // Ideally this would strictly be a "CreateForRenderProcess", but when a
diff --git a/chromium-75.0.3770.80-SIOCGSTAMP.patch b/chromium-75.0.3770.80-SIOCGSTAMP.patch
new file mode 100644
index 0000000..0ef1e7f
--- /dev/null
+++ b/chromium-75.0.3770.80-SIOCGSTAMP.patch
@@ -0,0 +1,15 @@
+diff -up chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h
+--- chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP 2019-06-06 10:04:57.050403639 -0400
++++ chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h 2019-06-06 10:06:03.975121688 -0400
+@@ -16,6 +16,11 @@
+ #define WEBRTC_USE_EPOLL 1
+ #endif
+
++// for SIOCGSTAMP in Linux 5.2
++#if defined(WEBRTC_LINUX)
++#include <linux/sockios.h>
++#endif
++
+ #include <memory>
+ #include <set>
+ #include <vector>
diff --git a/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
new file mode 100644
index 0000000..2a8ac2f
--- /dev/null
+++ b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc
+--- chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix 2019-06-06 12:42:27.431575032 -0400
++++ chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc 2019-06-06 12:43:05.692848409 -0400
+@@ -31,8 +31,8 @@ void CompositorFrameReportingController:
+
+ void CompositorFrameReportingController::WillBeginMainFrame() {
+ DCHECK(reporters_[PipelineStage::kBeginImplFrame]);
+- DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame],
+- reporters_[PipelineStage::kBeginImplFrame]);
++ DCHECK(reporters_[PipelineStage::kBeginMainFrame] !=
++ reporters_[PipelineStage::kBeginImplFrame]);
+ reporters_[PipelineStage::kBeginImplFrame]->StartStage(
+ "SendBeginMainFrameToCommit");
+ AdvanceReporterStage(PipelineStage::kBeginImplFrame,
diff --git a/chromium-75.0.3770.80-gcc-no-assume.patch b/chromium-75.0.3770.80-gcc-no-assume.patch
new file mode 100644
index 0000000..0bbb08f
--- /dev/null
+++ b/chromium-75.0.3770.80-gcc-no-assume.patch
@@ -0,0 +1,21 @@
+diff -up chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume chromium-75.0.3770.80/third_party/angle/src/common/debug.h
+--- chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume 2019-06-06 17:38:01.876631704 -0400
++++ chromium-75.0.3770.80/third_party/angle/src/common/debug.h 2019-06-07 09:30:06.205446547 -0400
+@@ -248,7 +248,7 @@ std::ostream &FmtHex(std::ostream &os, T
+ # define EVENT(message, ...) (void(0))
+ #endif
+
+-#if defined(COMPILER_GCC) || defined(__clang__)
++#if defined(__GNUC__)
+ # define ANGLE_CRASH() __builtin_trap()
+ #else
+ # define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
+@@ -336,7 +336,7 @@ std::ostream &FmtHex(std::ostream &os, T
+ # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
+ _Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"")
+ # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop")
+-#elif defined(COMPILER_GCC)
++#elif defined(__GNUC__)
+ # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
+ _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"")
+ # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop")
diff --git a/chromium-75.0.3770.80-grpc-gettid-fix.patch b/chromium-75.0.3770.80-grpc-gettid-fix.patch
new file mode 100644
index 0000000..c526f4a
--- /dev/null
+++ b/chromium-75.0.3770.80-grpc-gettid-fix.patch
@@ -0,0 +1,22 @@
+diff -up chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc.gettid-fix chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc
+--- chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc.gettid-fix 2019-06-12 17:05:01.720907204 -0400
++++ chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc 2019-06-12 17:06:01.000671370 -0400
+@@ -40,7 +40,8 @@
+ #include <time.h>
+ #include <unistd.h>
+
+-static long gettid(void) { return syscall(__NR_gettid); }
++/* renamed to avoid conflict with glibc 'gettid()' */
++static long gettid_gpr(void) { return syscall(__NR_gettid); }
+
+ void gpr_log(const char* file, int line, gpr_log_severity severity,
+ const char* format, ...) {
+@@ -70,7 +71,7 @@ void gpr_default_log(gpr_log_func_args*
+ gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
+ struct tm tm;
+ static __thread long tid = 0;
+- if (tid == 0) tid = gettid();
++ if (tid == 0) tid = gettid_gpr();
+
+ timer = static_cast<time_t>(now.tv_sec);
+ final_slash = strrchr(args->file, '/');
diff --git a/chromium-75.0.3770.80-no-zlib-mangle.patch b/chromium-75.0.3770.80-no-zlib-mangle.patch
new file mode 100644
index 0000000..998be67
--- /dev/null
+++ b/chromium-75.0.3770.80-no-zlib-mangle.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle chromium-75.0.3770.80/third_party/zlib/zconf.h
+--- chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle 2019-06-05 11:12:30.420412467 -0400
++++ chromium-75.0.3770.80/third_party/zlib/zconf.h 2019-06-05 11:17:43.512683058 -0400
+@@ -8,10 +8,6 @@
+ #ifndef ZCONF_H
+ #define ZCONF_H
+
+-/* This include does prefixing as below, but with an updated set of names. Also
+- * sets up export macros in component builds. */
+-#include "chromeconf.h"
+-
+ /*
+ * 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.
diff --git a/chromium-75.0.3770.80-pure-virtual-crash-fix.patch b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
new file mode 100644
index 0000000..06c909f
--- /dev/null
+++ b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
@@ -0,0 +1,24 @@
+diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc
+--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix 2019-06-07 15:03:43.302202979 -0400
++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc 2019-06-07 15:04:25.140393048 -0400
+@@ -116,4 +116,9 @@ void RenderProcessUserData::RenderProces
+ base::Unretained(process_node_.get()), info.exit_code));
+ }
+
++void RenderProcessUserData::RenderProcessHostDestroyed(
++ content::RenderProcessHost* host) {
++ host->RemoveUserData(kRenderProcessUserDataKey);
++}
++
+ } // namespace performance_manager
+diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h
+--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix 2019-06-07 15:04:43.530039597 -0400
++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h 2019-06-07 15:05:13.770458374 -0400
+@@ -47,6 +47,7 @@ class RenderProcessUserData : public bas
+ void RenderProcessExited(
+ content::RenderProcessHost* host,
+ const content::ChildProcessTerminationInfo& info) override;
++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
+
+ // All instances are linked together in a doubly linked list to allow orderly
+ // destruction at browser shutdown time.
diff --git a/chromium-75.0.3770.80-revert-daff6b.patch b/chromium-75.0.3770.80-revert-daff6b.patch
new file mode 100644
index 0000000..f996898
--- /dev/null
+++ b/chromium-75.0.3770.80-revert-daff6b.patch
@@ -0,0 +1,13 @@
+diff -up chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc
+--- chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b 2019-06-06 14:54:13.819190586 -0400
++++ chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc 2019-06-06 14:54:31.892839991 -0400
+@@ -154,8 +154,7 @@ AutocompleteMatch::AutocompleteMatch(con
+ additional_info(match.additional_info),
+ duplicate_matches(match.duplicate_matches) {}
+
+-AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) noexcept =
+- default;
++AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) = default;
+
+ AutocompleteMatch::~AutocompleteMatch() {
+ }
diff --git a/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch b/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch
new file mode 100644
index 0000000..c44473d
--- /dev/null
+++ b/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch
@@ -0,0 +1,23 @@
+diff -up chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn.i686permissive chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn
+--- chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn.i686permissive 2019-06-10 14:47:37.315515026 -0400
++++ chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn 2019-06-10 14:48:25.250604888 -0400
+@@ -11,6 +11,10 @@ import("//ui/ozone/ozone.gni")
+
+ assert(use_vaapi)
+
++config("vaapi_permissive") {
++ cflags = [ "-fpermissive" ]
++}
++
+ generate_stubs("libva_stubs") {
+ extra_header = "va_stub_header.fragment"
+ sigs = [ "va.sigs" ]
+@@ -89,6 +93,8 @@ source_set("vaapi") {
+ deps += [ "//media/gpu/linux" ]
+ }
+
++ configs += [ ":vaapi_permissive" ]
++
+ if (use_x11) {
+ configs += [ "//build/config/linux:x11" ]
+ deps += [ "//ui/gfx/x" ]
diff --git a/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
new file mode 100644
index 0000000..dc0bfcb
--- /dev/null
+++ b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
@@ -0,0 +1,14 @@
+diff -up chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+--- chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat 2019-06-05 11:35:57.274466969 -0400
++++ chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc 2019-06-05 11:36:17.201067326 -0400
+@@ -39,6 +39,10 @@ enum VAJDADecoderFailure {
+ VAJDA_DECODER_FAILURES_MAX,
+ };
+
++#ifndef VA_FOURCC_I420
++#define VA_FOURCC_I420 VA_FOURCC('I', '4', '2', '0')
++#endif
++
+ static void ReportToVAJDADecoderFailureUMA(VAJDADecoderFailure failure) {
+ UMA_HISTOGRAM_ENUMERATION("Media.VAJDA.DecoderFailure", failure,
+ VAJDA_DECODER_FAILURES_MAX + 1);
diff --git a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
new file mode 100644
index 0000000..5f45a8f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
@@ -0,0 +1,53 @@
+From 719df31ffd4d52b473509cf77acd9c02ec112acb Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 18:38:12 +0200
+Subject: [PATCH] GCC: fix noexcept from move constructor and assign operators of AccountInfo
+
+AccountInfo declares them as noexcept and uses default implementation,
+so all its members (including AccountId) should be noexcept. But AccountId
+is not noexcept. To fix it we just need to make CoreAccountId move
+operator/assign operator noexcept.
+
+Bug: 819294
+Change-Id: Ice38654ab7cf3b9eaa6f54aa36e1fec329264f98
+---
+
+diff --git a/google_apis/gaia/core_account_id.cc b/google_apis/gaia/core_account_id.cc
+index d808082..12eefe3 100644
+--- a/google_apis/gaia/core_account_id.cc
++++ b/google_apis/gaia/core_account_id.cc
+@@ -6,8 +6,16 @@
+
+ CoreAccountId::CoreAccountId() = default;
+
++CoreAccountId::CoreAccountId(const CoreAccountId&) = default;
++
++CoreAccountId::CoreAccountId(CoreAccountId&&) noexcept = default;
++
+ CoreAccountId::~CoreAccountId() = default;
+
++CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
++
++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept = default;
++
+ CoreAccountId::CoreAccountId(const char* id) : id(id) {}
+
+ CoreAccountId::CoreAccountId(std::string&& id) : id(std::move(id)) {}
+diff --git a/google_apis/gaia/core_account_id.h b/google_apis/gaia/core_account_id.h
+index 5ea602a..c2d1911 100644
+--- a/google_apis/gaia/core_account_id.h
++++ b/google_apis/gaia/core_account_id.h
+@@ -14,8 +14,13 @@
+ // for design and tracking).
+ struct CoreAccountId {
+ CoreAccountId();
++ CoreAccountId(const CoreAccountId&);
++ CoreAccountId(CoreAccountId&&) noexcept;
+ ~CoreAccountId();
+
++ CoreAccountId& operator=(const CoreAccountId&);
++ CoreAccountId& operator=(CoreAccountId&&) noexcept;
++
+ // Those implicit constructor and conversion operator allow to
+ // progressively migrate the code to use this struct. Removing
+ // them is tracked by https://crbug.com/959161
diff --git a/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch b/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
new file mode 100644
index 0000000..587abf3
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
@@ -0,0 +1,39 @@
+From 52b5ceac95b67491b1c71f0ef9a32b778bbbaa2e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 19:46:55 +0000
+Subject: [PATCH] GCC: avoid ambiguous NoDestructor creation in GetNeverSniffedMimeTypes.
+
+Use brace-list notation to wrap the already existing brace-list for
+initializing the flat-set. This resolves an ambiguous instantiation
+in GCC.
+
+Bug: 819294
+Change-Id: I89ddf12522d62a5140a8c2c41dc98e30ec7a0e78
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645774
+Reviewed-by: Matt Menke <mmenke(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666401}
+---
+
+diff --git a/services/network/cross_origin_read_blocking.cc b/services/network/cross_origin_read_blocking.cc
+index 30999c0..60a03f6 100644
+--- a/services/network/cross_origin_read_blocking.cc
++++ b/services/network/cross_origin_read_blocking.cc
+@@ -211,7 +211,7 @@
+ // confirmation sniffing because images, scripts, etc. are frequently
+ // mislabelled by http servers as HTML/JSON/XML).
+ base::flat_set<std::string>& GetNeverSniffedMimeTypes() {
+- static base::NoDestructor<base::flat_set<std::string>> s_types({
++ static base::NoDestructor<base::flat_set<std::string>> s_types{{
+ // The list below has been populated based on most commonly used content
+ // types according to HTTP Archive - see:
+ // https://github.com/whatwg/fetch/issues/860#issuecomment-457330454
+@@ -224,7 +224,7 @@
+ "application/x-www-form-urlencoded",
+ "application/zip",
+ "text/event-stream",
+- });
++ }};
+
+ // All items need to be lower-case, to support case-insensitive comparisons
+ // later.
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-feature-policy-parser.patch b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
new file mode 100644
index 0000000..0dbffd5
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
@@ -0,0 +1,76 @@
+From 0aca7b8dea0f52ba7bd58dfce4ac236ee60670a8 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 19:44:58 +0200
+Subject: [PATCH] GCC: FeaturePolicyParser ParseValueForFuzzer is not in anonymous namespace
+
+Compilation fails because we are declaring ParseValueForFuzzer as friend method,
+but we are declaring it is in anonymous namespace. Moving to global namespace
+still fails (in this case in Clang).
+
+So final solution is making it a public static method of FeaturePolicyParser.
+
+Bug: 819294
+Change-Id: Iea307cb6faef675b748d6eb5da2175dcbb17fdc7
+---
+
+diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
+index 3b7f4a9..eaee409 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
+@@ -317,6 +317,13 @@
+ return value;
+ }
+
++void FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType feature_type,
++ const WTF::String& value_string) {
++ bool ok;
++ ParseValueForType(feature_type, value_string, &ok);
++}
++
+ bool IsFeatureDeclared(mojom::FeaturePolicyFeature feature,
+ const ParsedFeaturePolicy& policy) {
+ return std::any_of(policy.begin(), policy.end(),
+diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
+index fd25d90..36af405 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
+@@ -16,9 +16,6 @@
+ #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
+ #include "third_party/blink/renderer/platform/wtf/vector.h"
+
+-// Forward declare for friendship.
+-void ParseValueForFuzzer(blink::mojom::PolicyValueType, const WTF::String&);
+-
+ namespace blink {
+
+ class Document;
+@@ -79,8 +76,9 @@
+ const FeatureNameMap& feature_names,
+ ExecutionContext* execution_context = nullptr);
+
++ static void ParseValueForFuzzer(mojom::PolicyValueType, const String&);
++
+ private:
+- friend void ::ParseValueForFuzzer(mojom::PolicyValueType, const String&);
+ static PolicyValue GetFallbackValueForFeature(
+ mojom::FeaturePolicyFeature feature);
+ static PolicyValue ParseValueForType(mojom::PolicyValueType feature_type,
+diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
+index 7f8e6aa..53350e43 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
+@@ -23,9 +23,9 @@
+ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ static blink::BlinkFuzzerTestSupport test_support =
+ blink::BlinkFuzzerTestSupport();
+- ParseValueForFuzzer(blink::mojom::PolicyValueType::kBool,
+- WTF::String(data, size));
+- ParseValueForFuzzer(blink::mojom::PolicyValueType::kDecDouble,
+- WTF::String(data, size));
++ blink::FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType::kBool, WTF::String(data, size));
++ blink::FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType::kDecDouble, WTF::String(data, size));
+ return 0;
+ }
diff --git a/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
new file mode 100644
index 0000000..26bba05
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
@@ -0,0 +1,32 @@
+From cf6d6b40d711fce93a24a2cf517fa3becdbae8bb Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 17:18:40 +0000
+Subject: [PATCH] Make blink::LayoutUnit::HasFraction constexpr
+
+Other HasFraction methods as in PhysicalUnit are declared already
+constexpr and using it. It breaks GCC build.
+
+Bug: 819294.
+Change-Id: I0c4bd9bd206d45cf31f7fa815ce8533718a425cb
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645222
+Reviewed-by: vmpstr <vmpstr(a)chromium.org>
+Reviewed-by: Xianzhu Wang <wangxianzhu(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666336}
+---
+
+diff --git a/third_party/blink/renderer/platform/geometry/layout_unit.h b/third_party/blink/renderer/platform/geometry/layout_unit.h
+index f073986..b6dbc76 100644
+--- a/third_party/blink/renderer/platform/geometry/layout_unit.h
++++ b/third_party/blink/renderer/platform/geometry/layout_unit.h
+@@ -202,7 +202,9 @@
+ return value_ > 0 ? LayoutUnit() : *this;
+ }
+
+- bool HasFraction() const { return RawValue() % kFixedPointDenominator; }
++ constexpr bool HasFraction() const {
++ return RawValue() % kFixedPointDenominator;
++ }
+
+ LayoutUnit Fraction() const {
+ // Compute fraction using the mod operator to preserve the sign of the value
diff --git a/chromium-76.0.3809.100-gcc-history-move-noexcept.patch b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
new file mode 100644
index 0000000..2876de4
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
@@ -0,0 +1,42 @@
+From abe74a7f0c53a43a9706a42d71b7ff4a5da53380 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 10:27:19 +0200
+Subject: [PATCH] GCC: add noexcept move assignment in history::URLRow
+
+In GCC, build is failing because history::QueryURLResult declares its move
+assignment operator as noexcept using default implementation. That requires
+its members to provide a move assignment operator that is noexcept too.
+
+But URLRow was missing noexcept declaration in move assignment operator (even
+though it was providing noexcept to its move constructor).
+
+Bug: 819294
+Change-Id: I726e3cf7a4a50c9206a5d0fba8a561d363483d4f
+---
+
+diff --git a/components/history/core/browser/url_row.cc b/components/history/core/browser/url_row.cc
+index 44c22fd..aec0101 100644
+--- a/components/history/core/browser/url_row.cc
++++ b/components/history/core/browser/url_row.cc
+@@ -26,7 +26,7 @@
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) = default;
++URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
+diff --git a/components/history/core/browser/url_row.h b/components/history/core/browser/url_row.h
+index 8f6f9cf..31a1ef8 100644
+--- a/components/history/core/browser/url_row.h
++++ b/components/history/core/browser/url_row.h
+@@ -35,7 +35,7 @@
+
+ virtual ~URLRow();
+ URLRow& operator=(const URLRow& other);
+- URLRow& operator=(URLRow&& other);
++ URLRow& operator=(URLRow&& other) noexcept;
+
+ URLID id() const { return id_; }
+
diff --git a/chromium-76.0.3809.100-gcc-initialization-order.patch b/chromium-76.0.3809.100-gcc-initialization-order.patch
new file mode 100644
index 0000000..3bf394f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-initialization-order.patch
@@ -0,0 +1,33 @@
+From 7dc76c8d9f4cfbce7cf11424120aa6f6094916dc Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 21:09:01 +0000
+Subject: [PATCH] GCC: XSetWindowAttributes struct initialization should keep order of declaration
+
+XSetWindowAttributes initialization of attributes in GLSurfaceGLX is not in the
+same order of the declaration. GCC fails because of that.
+
+Bug: 819294
+Change-Id: I8a97da980d5961a35a47ae4d0d8d558b85291f1f
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1646253
+Reviewed-by: Zhenyao Mo <zmo(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666436}
+---
+
+diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc
+index f649dd4..0aa6892 100644
+--- a/ui/gl/gl_surface_glx.cc
++++ b/ui/gl/gl_surface_glx.cc
+@@ -583,10 +583,10 @@
+
+ XSetWindowAttributes swa = {
+ .background_pixmap = 0,
+- .bit_gravity = NorthWestGravity,
+- .colormap = g_colormap,
+ .background_pixel = 0, // ARGB(0,0,0,0) for compositing WM
+ .border_pixel = 0,
++ .bit_gravity = NorthWestGravity,
++ .colormap = g_colormap,
+ };
+ auto value_mask = CWBackPixmap | CWBitGravity | CWColormap | CWBorderPixel;
+ if (ui::IsCompositingManagerPresent() &&
diff --git a/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
new file mode 100644
index 0000000..1d4b90f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
@@ -0,0 +1,97 @@
+From dcb55fb8f18abe5f43d260aa67b14b2dc996f992 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 08:00:13 +0000
+Subject: [PATCH] GCC: move explicit specialization out of RunInfo
+
+Explicit specialization in non-namespace scope is not allowed in C++, and GCC breaks
+build because of that. Move the template specializations out of RunInfo declaration
+in shape_result_inline_headeres.h to fix the GCC build issue.
+
+Bug: 819294
+Change-Id: Id083852bcf8e9efbdc911fdad28fd8767d2905d0
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651728
+Reviewed-by: Kinuko Yasuda <kinuko(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#667901}
+---
+
+diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
+index 76ee6091..c14d3a0 100644
+--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
+@@ -251,37 +251,6 @@
+ template <bool has_non_zero_glyph_offsets>
+ struct iterator final {};
+
+- // For non-zero glyph offset array
+- template <>
+- struct iterator<true> final {
+- // The constructor for ShapeResult
+- explicit iterator(const GlyphOffsetArray& array)
+- : pointer(array.storage_.get()) {
+- DCHECK(pointer);
+- }
+-
+- // The constructor for ShapeResultView
+- explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
+- DCHECK(pointer);
+- }
+-
+- GlyphOffset operator*() const { return *pointer; }
+- void operator++() { ++pointer; }
+-
+- const GlyphOffset* pointer;
+- };
+-
+- // For zero glyph offset array
+- template <>
+- struct iterator<false> final {
+- explicit iterator(const GlyphOffsetArray& array) {
+- DCHECK(!array.HasStorage());
+- }
+- explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
+- GlyphOffset operator*() const { return GlyphOffset(); }
+- void operator++() {}
+- };
+-
+ template <bool has_non_zero_glyph_offsets>
+ iterator<has_non_zero_glyph_offsets> GetIterator() const {
+ return iterator<has_non_zero_glyph_offsets>(*this);
+@@ -495,6 +464,37 @@
+ float width_;
+ };
+
++// For non-zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<true> final {
++ // The constructor for ShapeResult
++ explicit iterator(const GlyphOffsetArray& array)
++ : pointer(array.storage_.get()) {
++ DCHECK(pointer);
++ }
++
++ // The constructor for ShapeResultView
++ explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
++ DCHECK(pointer);
++ }
++
++ GlyphOffset operator*() const { return *pointer; }
++ void operator++() { ++pointer; }
++
++ const GlyphOffset* pointer;
++};
++
++// For zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<false> final {
++ explicit iterator(const GlyphOffsetArray& array) {
++ DCHECK(!array.HasStorage());
++ }
++ explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
++ GlyphOffset operator*() const { return GlyphOffset(); }
++ void operator++() {}
++};
++
+ // Find the range of HarfBuzzRunGlyphData for the specified character index
+ // range. This function uses binary search twice, hence O(2 log n).
+ inline ShapeResult::RunInfo::GlyphDataRange
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-no-alignas-and-export.patch b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
new file mode 100644
index 0000000..cc91d1e
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
@@ -0,0 +1,14 @@
+diff -up chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h
+--- chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas 2019-08-09 16:48:13.000000000 +0200
++++ chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h 2019-08-15 21:04:30.231532746 +0200
+@@ -176,8 +176,8 @@ class CSSLazyPropertyParser
+ DISALLOW_COPY_AND_ASSIGN(CSSLazyPropertyParser);
+ };
+
+-class CORE_EXPORT alignas(Member<const CSSValue>) alignas(
+- CSSPropertyValueMetadata) ImmutableCSSPropertyValueSet
++class CORE_EXPORT ALIGNAS(alignof(Member<const CSSValue>))
++ ALIGNAS(alignof(CSSPropertyValueMetadata)) ImmutableCSSPropertyValueSet
+ : public CSSPropertyValueSet {
+ public:
+ ImmutableCSSPropertyValueSet(const CSSPropertyValue*,
diff --git a/chromium-76.0.3809.100-gcc-remoting-constexpr.patch b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
new file mode 100644
index 0000000..aec3107
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
@@ -0,0 +1,27 @@
+diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker.cc
+--- chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr 2019-08-09 16:48:08.000000000 +0200
++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.cc 2019-08-20 21:29:14.545465656 +0200
+@@ -9,8 +9,7 @@
+ namespace remoting {
+
+ // static
+-const base::TimeDelta MessageTracker::kCleanupInterval =
+- base::TimeDelta::FromMinutes(2);
++constexpr base::TimeDelta MessageTracker::kCleanupInterval;
+
+ MessageTracker::MessageTracker() = default;
+
+diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker.h
+--- chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr 2019-08-20 22:02:25.625970954 +0200
++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.h 2019-08-20 21:28:23.371952434 +0200
+@@ -36,7 +36,8 @@ class MessageTracker final {
+
+ // All IDs older than now - kCleanupInterval will be eventually removed, but
+ // they are not guaranteed to be immediately removed after the interval.
+- static const base::TimeDelta kCleanupInterval;
++ static constexpr base::TimeDelta kCleanupInterval =
++ base::TimeDelta::FromMinutes(2);
+
+ void RemoveExpiredIds();
+
+diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc
diff --git a/chromium-76.0.3809.100-gcc-themeservice-includes.patch b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
new file mode 100644
index 0000000..ad40bb9
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
@@ -0,0 +1,36 @@
+From d08ea83acc2f5ff395c1fe54f52687e92fe51c3b Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 22:01:03 +0200
+Subject: [PATCH] IWYU: ThemeService requires NativeTheme
+
+As ThemeService referes to NativeTheme through a ScopedObserver,
+the full declaration is required.
+
+Bug: 819294
+Change-Id: I9d5bd2e87cfaa76e87f9b5509daea24848906a63
+---
+
+diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc
+index d65388e2..23dc86d 100644
+--- a/chrome/browser/themes/theme_service.cc
++++ b/chrome/browser/themes/theme_service.cc
+@@ -54,7 +54,6 @@
+ #include "ui/gfx/color_palette.h"
+ #include "ui/gfx/image/image_skia.h"
+ #include "ui/native_theme/common_theme.h"
+-#include "ui/native_theme/native_theme.h"
+
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
+ #include "base/scoped_observer.h"
+diff --git a/chrome/browser/themes/theme_service.h b/chrome/browser/themes/theme_service.h
+index 6c79c72..f93dc0d 100644
+--- a/chrome/browser/themes/theme_service.h
++++ b/chrome/browser/themes/theme_service.h
+@@ -25,6 +25,7 @@
+ #include "extensions/buildflags/buildflags.h"
+ #include "extensions/common/extension_id.h"
+ #include "ui/base/theme_provider.h"
++#include "ui/native_theme/native_theme.h"
+ #include "ui/native_theme/native_theme_observer.h"
+
+ class BrowserThemePack;
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-76.0.3809.100-libusb_interrupt_event_handler.patch b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
new file mode 100644
index 0000000..690f0f9
--- /dev/null
+++ b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
@@ -0,0 +1,15 @@
+diff -up chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx chromium-76.0.3809.100/services/device/usb/usb_context.cc
+--- chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx 2019-08-12 15:40:49.034170484 +0200
++++ chromium-76.0.3809.100/services/device/usb/usb_context.cc 2019-08-12 15:41:23.775558867 +0200
+@@ -58,7 +58,11 @@ void UsbContext::UsbEventHandler::Run()
+
+ void UsbContext::UsbEventHandler::Stop() {
+ base::subtle::Release_Store(&running_, 0);
++#ifdef LIBUSB_API_VERSION >= 0x01000105
++ libusb_interrupt_event_handler(context_);
++#else
+ libusb_interrupt_handle_event(context_);
++#endif
+ }
+
+ UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {
diff --git a/chromium-76.0.3809.100-pulse-api-change.patch b/chromium-76.0.3809.100-pulse-api-change.patch
new file mode 100644
index 0000000..d4e2b46
--- /dev/null
+++ b/chromium-76.0.3809.100-pulse-api-change.patch
@@ -0,0 +1,47 @@
+diff -up chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change chromium-76.0.3809.100/media/audio/pulse/pulse.sigs
+--- chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change 2019-08-14 23:18:59.624627870 +0200
++++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 23:19:41.258104998 +0200
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context* c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream*
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/chromium-76.0.3809.100-quiche-compile-fix.patch b/chromium-76.0.3809.100-quiche-compile-fix.patch
new file mode 100644
index 0000000..98789d9
--- /dev/null
+++ b/chromium-76.0.3809.100-quiche-compile-fix.patch
@@ -0,0 +1,225 @@
+diff -up chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc
+--- chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix 2019-08-14 09:58:07.721193200 +0200
++++ chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc 2019-08-14 09:59:33.131041525 +0200
+@@ -62,37 +62,37 @@ const size_t kStatelessResetTokenLength
+ std::string TransportParameterIdToString(
+ TransportParameters::TransportParameterId param_id) {
+ switch (param_id) {
+- case kOriginalConnectionId:
++ case TransportParameters::kOriginalConnectionId:
+ return "original_connection_id";
+- case kIdleTimeout:
++ case TransportParameters::kIdleTimeout:
+ return "idle_timeout";
+- case kStatelessResetToken:
++ case TransportParameters::kStatelessResetToken:
+ return "stateless_reset_token";
+- case kMaxPacketSize:
++ case TransportParameters::kMaxPacketSize:
+ return "max_packet_size";
+- case kInitialMaxData:
++ case TransportParameters::kInitialMaxData:
+ return "initial_max_data";
+- case kInitialMaxStreamDataBidiLocal:
++ case TransportParameters::kInitialMaxStreamDataBidiLocal:
+ return "initial_max_stream_data_bidi_local";
+- case kInitialMaxStreamDataBidiRemote:
++ case TransportParameters::kInitialMaxStreamDataBidiRemote:
+ return "initial_max_stream_data_bidi_remote";
+- case kInitialMaxStreamDataUni:
++ case TransportParameters::kInitialMaxStreamDataUni:
+ return "initial_max_stream_data_uni";
+- case kInitialMaxStreamsBidi:
++ case TransportParameters::kInitialMaxStreamsBidi:
+ return "initial_max_streams_bidi";
+- case kInitialMaxStreamsUni:
++ case TransportParameters::kInitialMaxStreamsUni:
+ return "initial_max_streams_uni";
+- case kAckDelayExponent:
++ case TransportParameters::kAckDelayExponent:
+ return "ack_delay_exponent";
+- case kMaxAckDelay:
++ case TransportParameters::kMaxAckDelay:
+ return "max_ack_delay";
+- case kDisableMigration:
++ case TransportParameters::kDisableMigration:
+ return "disable_migration";
+- case kPreferredAddress:
++ case TransportParameters::kPreferredAddress:
+ return "preferred_address";
+- case kGoogleQuicParam:
++ case TransportParameters::kGoogleQuicParam:
+ return "google";
+- case kGoogleQuicVersion:
++ case TransportParameters::kGoogleQuicVersion:
+ return "google-version";
+ }
+ return "Unknown(" + QuicTextUtils::Uint64ToString(param_id) + ")";
+@@ -390,7 +390,7 @@ bool SerializeTransportParameters(const
+ CBB original_connection_id_param;
+ if (!in.original_connection_id.IsEmpty()) {
+ DCHECK_EQ(Perspective::IS_SERVER, in.perspective);
+- if (!CBB_add_u16(¶ms, kOriginalConnectionId) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kOriginalConnectionId) ||
+ !CBB_add_u16_length_prefixed(¶ms, &original_connection_id_param) ||
+ !CBB_add_bytes(
+ &original_connection_id_param,
+@@ -412,7 +412,7 @@ bool SerializeTransportParameters(const
+ if (!in.stateless_reset_token.empty()) {
+ DCHECK_EQ(kStatelessResetTokenLength, in.stateless_reset_token.size());
+ DCHECK_EQ(Perspective::IS_SERVER, in.perspective);
+- if (!CBB_add_u16(¶ms, kStatelessResetToken) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kStatelessResetToken) ||
+ !CBB_add_u16_length_prefixed(¶ms, &stateless_reset_token_param) ||
+ !CBB_add_bytes(&stateless_reset_token_param,
+ in.stateless_reset_token.data(),
+@@ -438,7 +438,7 @@ bool SerializeTransportParameters(const
+
+ // disable_migration
+ if (in.disable_migration) {
+- if (!CBB_add_u16(¶ms, kDisableMigration) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kDisableMigration) ||
+ !CBB_add_u16(¶ms, 0u)) { // 0 is the length of this parameter.
+ QUIC_BUG << "Failed to write disable_migration for " << in;
+ return false;
+@@ -458,7 +458,7 @@ bool SerializeTransportParameters(const
+ QUIC_BUG << "Bad lengths " << *in.preferred_address;
+ return false;
+ }
+- if (!CBB_add_u16(¶ms, kPreferredAddress) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kPreferredAddress) ||
+ !CBB_add_u16_length_prefixed(¶ms, &preferred_address_params) ||
+ !CBB_add_bytes(
+ &preferred_address_params,
+@@ -491,7 +491,7 @@ bool SerializeTransportParameters(const
+ if (in.google_quic_params) {
+ const QuicData& serialized_google_quic_params =
+ in.google_quic_params->GetSerialized();
+- if (!CBB_add_u16(¶ms, kGoogleQuicParam) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicParam) ||
+ !CBB_add_u16_length_prefixed(¶ms, &google_quic_params) ||
+ !CBB_add_bytes(&google_quic_params,
+ reinterpret_cast<const uint8_t*>(
+@@ -505,7 +505,7 @@ bool SerializeTransportParameters(const
+
+ // Google-specific version extension.
+ CBB google_version_params;
+- if (!CBB_add_u16(¶ms, kGoogleQuicVersion) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicVersion) ||
+ !CBB_add_u16_length_prefixed(¶ms, &google_version_params) ||
+ !CBB_add_u32(&google_version_params, in.version)) {
+ QUIC_BUG << "Failed to write Google version extension for " << in;
+@@ -565,7 +565,7 @@ bool ParseTransportParameters(const uint
+ }
+ bool parse_success = true;
+ switch (param_id) {
+- case kOriginalConnectionId:
++ case TransportParameters::kOriginalConnectionId:
+ if (!out->original_connection_id.IsEmpty()) {
+ QUIC_DLOG(ERROR) << "Received a second original connection ID";
+ return false;
+@@ -581,10 +581,10 @@ bool ParseTransportParameters(const uint
+ CBS_len(&value));
+ }
+ break;
+- case kIdleTimeout:
++ case TransportParameters::kIdleTimeout:
+ parse_success = out->idle_timeout_milliseconds.ReadFromCbs(&value);
+ break;
+- case kStatelessResetToken:
++ case TransportParameters::kStatelessResetToken:
+ if (!out->stateless_reset_token.empty()) {
+ QUIC_DLOG(ERROR) << "Received a second stateless reset token";
+ return false;
+@@ -597,36 +597,36 @@ bool ParseTransportParameters(const uint
+ out->stateless_reset_token.assign(CBS_data(&value),
+ CBS_data(&value) + CBS_len(&value));
+ break;
+- case kMaxPacketSize:
++ case TransportParameters::kMaxPacketSize:
+ parse_success = out->max_packet_size.ReadFromCbs(&value);
+ break;
+- case kInitialMaxData:
++ case TransportParameters::kInitialMaxData:
+ parse_success = out->initial_max_data.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataBidiLocal:
++ case TransportParameters::kInitialMaxStreamDataBidiLocal:
+ parse_success =
+ out->initial_max_stream_data_bidi_local.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataBidiRemote:
++ case TransportParameters::kInitialMaxStreamDataBidiRemote:
+ parse_success =
+ out->initial_max_stream_data_bidi_remote.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataUni:
++ case TransportParameters::kInitialMaxStreamDataUni:
+ parse_success = out->initial_max_stream_data_uni.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamsBidi:
++ case TransportParameters::kInitialMaxStreamsBidi:
+ parse_success = out->initial_max_streams_bidi.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamsUni:
++ case TransportParameters::kInitialMaxStreamsUni:
+ parse_success = out->initial_max_streams_uni.ReadFromCbs(&value);
+ break;
+- case kAckDelayExponent:
++ case TransportParameters::kAckDelayExponent:
+ parse_success = out->ack_delay_exponent.ReadFromCbs(&value);
+ break;
+- case kMaxAckDelay:
++ case TransportParameters::kMaxAckDelay:
+ parse_success = out->max_ack_delay.ReadFromCbs(&value);
+ break;
+- case kDisableMigration:
++ case TransportParameters::kDisableMigration:
+ if (out->disable_migration) {
+ QUIC_DLOG(ERROR) << "Received a second disable migration";
+ return false;
+@@ -638,7 +638,7 @@ bool ParseTransportParameters(const uint
+ }
+ out->disable_migration = true;
+ break;
+- case kPreferredAddress: {
++ case TransportParameters::kPreferredAddress: {
+ uint16_t ipv4_port, ipv6_port;
+ in_addr ipv4_address;
+ in6_addr ipv6_address;
+@@ -692,7 +692,7 @@ bool ParseTransportParameters(const uint
+ QuicMakeUnique<TransportParameters::PreferredAddress>(
+ preferred_address);
+ } break;
+- case kGoogleQuicParam: {
++ case TransportParameters::kGoogleQuicParam: {
+ if (out->google_quic_params) {
+ QUIC_DLOG(ERROR) << "Received a second Google parameter";
+ return false;
+@@ -701,7 +701,7 @@ bool ParseTransportParameters(const uint
+ reinterpret_cast<const char*>(CBS_data(&value)), CBS_len(&value));
+ out->google_quic_params = CryptoFramer::ParseMessage(serialized_params);
+ } break;
+- case kGoogleQuicVersion: {
++ case TransportParameters::kGoogleQuicVersion: {
+ if (!CBS_get_u32(&value, &out->version)) {
+ QUIC_DLOG(ERROR) << "Failed to parse Google version extension";
+ return false;
+diff -up chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc
+--- chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix 2019-08-14 09:59:19.139902052 +0200
++++ chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc 2019-08-14 09:59:33.132041535 +0200
+@@ -2,10 +2,12 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <string>
+-
+ #include "net/third_party/quiche/src/quic/core/quic_socket_address_coder.h"
+
++#include <cstring>
++#include <string>
++#include <vector>
++
+ namespace quic {
+
+ namespace {
diff --git a/chromium-76.0.3809.100-throttling-dead-beef.patch b/chromium-76.0.3809.100-throttling-dead-beef.patch
new file mode 100644
index 0000000..5e392e6
--- /dev/null
+++ b/chromium-76.0.3809.100-throttling-dead-beef.patch
@@ -0,0 +1,30 @@
+From 53bb5a463ee956c70230eaa5450022185d0ddc3c Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Thu, 06 Jun 2019 07:54:05 +0000
+Subject: [PATCH] ThrottlingController::Liveness needs to be uint32_t
+
+We are setting kAlive and kDead values assigning values that
+are bigger than the maximum signed int32. It is better to use
+uint32_t in this case.
+
+Bug: 819294
+Change-Id: If72b48291a66a3a9db24b4c8e2d11d31936a66ee
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645772
+Reviewed-by: Kinuko Yasuda <kinuko(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666619}
+---
+
+diff --git a/services/network/throttling/throttling_controller.h b/services/network/throttling/throttling_controller.h
+index 43751c4..3c6f87b 100644
+--- a/services/network/throttling/throttling_controller.h
++++ b/services/network/throttling/throttling_controller.h
+@@ -38,7 +38,7 @@
+
+ // TODO(https://crbug.com/960874): Debugging code to try and shed some light
+ // on why the owned maps are invalid.
+- enum class Liveness : int32_t {
++ enum class Liveness : uint32_t {
+ kAlive = 0xCA11AB13,
+ kDead = 0xDEADBEEF,
+ };
diff --git a/chromium-76.0.3809.100-vtable-symbol-undefined.patch b/chromium-76.0.3809.100-vtable-symbol-undefined.patch
new file mode 100644
index 0000000..64532df
--- /dev/null
+++ b/chromium-76.0.3809.100-vtable-symbol-undefined.patch
@@ -0,0 +1,11 @@
+diff -up chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc
+--- chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined 2019-08-20 21:21:24.901899270 +0200
++++ chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc 2019-08-20 21:19:30.361746211 +0200
+@@ -18,6 +18,7 @@
+ #include "net/quic/crypto/proof_verifier_chromium.h"
+ #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
+ #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h"
++#include "net/quic/platform/impl/quic_flags_impl.cc"
+
+ DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
+ certificate_file,
diff --git a/chromium-76.0.3809.100-weak-ptr-no-except.patch b/chromium-76.0.3809.100-weak-ptr-no-except.patch
new file mode 100644
index 0000000..a392971
--- /dev/null
+++ b/chromium-76.0.3809.100-weak-ptr-no-except.patch
@@ -0,0 +1,66 @@
+From 0370838723e786b51e7ec8ab55014811ec3e3aa3 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Thu, 18 Jul 2019 14:26:11 +0200
+Subject: [PATCH] Make base::WeakPtr move constructor/operator noexcept to fix GCC build regression
+
+A GCC build regression has happened on DisjointRangeLockManager, as its move
+operator and constructor were declared noexcept. This was failing because the
+default implementation depended on base::WeakPtr, that did not provide
+noexcept declaration for them.
+
+So make base::WeakPtr noexcept.
+
+Bug: 819294
+Change-Id: I936784b881c7c1afea136ceedbe9341e76464f95
+---
+
+diff --git a/base/memory/weak_ptr.cc b/base/memory/weak_ptr.cc
+index 64fd499..0efcc44 100644
+--- a/base/memory/weak_ptr.cc
++++ b/base/memory/weak_ptr.cc
+@@ -46,7 +46,7 @@
+
+ WeakReference::~WeakReference() = default;
+
+-WeakReference::WeakReference(WeakReference&& other) = default;
++WeakReference::WeakReference(WeakReference&& other) noexcept = default;
+
+ WeakReference::WeakReference(const WeakReference& other) = default;
+
+diff --git a/base/memory/weak_ptr.h b/base/memory/weak_ptr.h
+index 72b5f1f..ccd22fd13 100644
+--- a/base/memory/weak_ptr.h
++++ b/base/memory/weak_ptr.h
+@@ -116,9 +116,9 @@
+ explicit WeakReference(const scoped_refptr<Flag>& flag);
+ ~WeakReference();
+
+- WeakReference(WeakReference&& other);
++ WeakReference(WeakReference&& other) noexcept;
+ WeakReference(const WeakReference& other);
+- WeakReference& operator=(WeakReference&& other) = default;
++ WeakReference& operator=(WeakReference&& other) noexcept = default;
+ WeakReference& operator=(const WeakReference& other) = default;
+
+ bool IsValid() const;
+@@ -153,9 +153,9 @@
+ ~WeakPtrBase();
+
+ WeakPtrBase(const WeakPtrBase& other) = default;
+- WeakPtrBase(WeakPtrBase&& other) = default;
++ WeakPtrBase(WeakPtrBase&& other) noexcept = default;
+ WeakPtrBase& operator=(const WeakPtrBase& other) = default;
+- WeakPtrBase& operator=(WeakPtrBase&& other) = default;
++ WeakPtrBase& operator=(WeakPtrBase&& other) noexcept = default;
+
+ void reset() {
+ ref_ = internal::WeakReference();
+@@ -236,7 +236,7 @@
+ ptr_ = reinterpret_cast<uintptr_t>(t);
+ }
+ template <typename U>
+- WeakPtr(WeakPtr<U>&& other) : WeakPtrBase(std::move(other)) {
++ WeakPtr(WeakPtr<U>&& other) noexcept : WeakPtrBase(std::move(other)) {
+ // Need to cast from U* to T* to do pointer adjustment in case of multiple
+ // inheritance. This also enforces the "U is a T" rule.
+ T* t = reinterpret_cast<U*>(other.ptr_);
diff --git a/chromium-browser.desktop b/chromium-browser.desktop
new file mode 100644
index 0000000..962decb
--- /dev/null
+++ b/chromium-browser.desktop
@@ -0,0 +1,356 @@
+[Desktop Entry]
+Version=1.0
+Name=Chromium Web Browser
+Name[ast]=Restolador web Chromium
+Name[ca]=Navegador web Chromium
+Name[de]=Chromium-Webbrowser
+Name[es]=Navegador web Chromium
+Name[fr]=Navigateur Web Chromium
+Name[gl]=Navegador web Chromium
+Name[he]=דפדפן האינטרנט Chromium
+Name[hr]=Chromium web preglednik
+Name[hu]=Chromium webböngésző
+Name[id]=Peramban Web Chromium
+Name[it]=Browser web Chromium
+Name[ja]=Chromium ウェブ・ブラウザ
+Name[ko]=Chromium 웹 브라우저
+Name[pt_BR]=Chromium Navegador da Internet
+Name[ru]=Веб-браузер Chromium
+Name[sl]=Chromium spletni brskalnik
+Name[sv]=Webbläsaren Chromium
+Name[ug]=Chromium توركۆرگۈ
+Name[zh_CN]=Chromium 网页浏览器
+Name[zh_HK]=Chromium 網頁瀏覽器
+Name[zh_TW]=Chromium 網頁瀏覽器
+Comment=Access the Internet
+Comment[ar]=الدخول إلى الإنترنت
+Comment[ast]=Accesu a Internet
+Comment[bg]=Достъп до интернет
+Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
+Comment[ca]=Accediu a Internet
+Comment[cs]=Přístup k internetu
+Comment[da]=Få adgang til internettet
+Comment[de]=Internetzugriff
+Comment[el]=Πρόσβαση στο Διαδίκτυο
+Comment[en_GB]=Access the Internet
+Comment[es]=Acceda a Internet
+Comment[et]=Pääs Internetti
+Comment[fi]=Käytä internetiä
+Comment[fil]=I-access ang Internet
+Comment[fr]=Explorer le Web
+Comment[gl]=Acceda a Internet
+Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
+Comment[he]=גישה לאינטרנט
+Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
+Comment[hr]=Pristupite Internetu
+Comment[hu]=Az internet elérése
+Comment[id]=Akses Internet
+Comment[it]=Accesso a Internet
+Comment[ja]=インターネットにアクセス
+Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿs
+Comment[ko]=인터넷에 연결합니다
+Comment[lt]=Interneto prieiga
+Comment[lv]=Piekļūt internetam
+Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
+Comment[mr]=इंटरनेटमध्ये प्रवेश करा
+Comment[nb]=Gå til Internett
+Comment[nl]=Verbinding maken met internet
+Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
+Comment[pl]=Skorzystaj z internetu
+Comment[pt]=Aceder à Internet
+Comment[pt_BR]=Acessar a internet
+Comment[ro]=Accesaţi Internetul
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prístup do siete Internet
+Comment[sl]=Dostop do interneta
+Comment[sr]=Приступите Интернету
+Comment[sv]=Surfa på Internet
+Comment[ta]=இணையத்தை அணுகுதல்
+Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
+Comment[th]=เข้าถึงอินเทอร์เน็ต
+Comment[tr]=İnternet'e erişin
+Comment[ug]=ئىنتېرنېتنى زىيارەت قىلىش
+Comment[uk]=Доступ до Інтернету
+Comment[vi]=Truy cập Internet
+Comment[zh_CN]=访问互联网
+Comment[zh_HK]=連線到網際網路
+Comment[zh_TW]=連線到網際網路
+GenericName=Web Browser
+GenericName[ar]=متصفح الشبكة
+GenericName[ast]=Restolador web
+GenericName[bg]=Уеб браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=WWW prohlížeč
+GenericName[da]=Browser
+GenericName[de]=Web-Browser
+GenericName[el]=Περιηγητής ιστού
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fi]=WWW-selain
+GenericName[fil]=Web Browser
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador web
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Peramban Web
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
+GenericName[ko]=웹 브라우저
+GenericName[lt]=Žiniatinklio naršyklė
+GenericName[lv]=Tīmekļa pārlūks
+GenericName[ml]=വെബ് ബ്രൌസര്
+GenericName[mr]=वेब ब्राऊजर
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador da Internet
+GenericName[ro]=Navigator de Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sr]=Интернет прегледник
+GenericName[sv]=Webbläsare
+GenericName[ta]=இணைய உலாவி
+GenericName[te]=మహాతల అన్వేషి
+GenericName[th]=เว็บเบราว์เซอร์
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Навігатор Тенет
+GenericName[vi]=Bộ duyệt Web
+GenericName[zh_CN]=网页浏览器
+GenericName[zh_HK]=網頁瀏覽器
+GenericName[zh_TW]=網頁瀏覽器
+Exec=/usr/bin/chromium-browser %U
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=chromium-browser
+Categories=Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
+StartupWMClass=Chromium-browser
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=Open a New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn-BD]=নতুন উইন্ডো (N)
+Name[bn-IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en-GB]=New Window
+Name[en-US]=New Window
+Name[en-ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es-AR]=Nueva ventana
+Name[es-CL]=Nueva ventana
+Name[es-ES]=Nueva ventana
+Name[es-MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy-NL]=Nij finster
+Name[ga-IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu-IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi-IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy-AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja-JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួចថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb-NO]=Nytt vindu
+Name[ne-NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn-NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa-IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt-BR]=Nova janela
+Name[pt-PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv-SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh-CN]=新建窗口
+Name[zh-TW]=開新視窗
+Exec=chromium-browser %U
+
+[Desktop Action new-private-window]
+Name=Open a New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en-GB]=New Private Window
+Name[en-US]=New Private Window
+Name[en-ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es-AR]=Nueva ventana privada
+Name[es-CL]=Nueva ventana privada
+Name[es-ES]=Nueva ventana privada
+Name[es-MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy-NL]=Nij priveefinster
+Name[ga-IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu-IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi-IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy-AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja-JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួចឯកជនថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو&
+Name[lij]=Neuvo barcon privou
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb-NO]=Nytt privat vindu
+Name[ne-NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn-NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt-BR]=Nova janela privativa
+Name[pt-PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv-SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh-CN]=新建隐私浏览窗口
+Name[zh-TW]=新增隱私視窗
+Exec=chromium-browser --incognito %U
diff --git a/chromium-browser.sh b/chromium-browser.sh
new file mode 100755
index 0000000..97607b9
--- /dev/null
+++ b/chromium-browser.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Let the wrapped binary know that it has been run through the wrapper.
+export CHROME_WRAPPER="`readlink -f "$0"`"
+
+HERE="`dirname "$CHROME_WRAPPER"`"
+
+# We include some xdg utilities next to the binary, and we want to prefer them
+# over the system versions when we know the system versions are very old. We
+# detect whether the system xdg utilities are sufficiently new to be likely to
+# work for us by looking for xdg-settings. If we find it, we leave $PATH alone,
+# so that the system xdg utilities (including any distro patches) will be used.
+if ! which xdg-settings &> /dev/null; then
+ # Old xdg utilities. Prepend $HERE to $PATH to use ours instead.
+ export PATH="$HERE:$PATH"
+else
+ # Use system xdg utilities. But first create mimeapps.list if it doesn't
+ # exist; some systems have bugs in xdg-mime that make it fail without it.
+ xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}"
+ mkdir -p "$xdg_app_dir"
+ [ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list"
+fi
+
+# Always use our versions of ffmpeg libs.
+# This also makes RPMs find the compatibly-named library symlinks.
+if [[ -n "$LD_LIBRARY_PATH" ]]; then
+ LD_LIBRARY_PATH="$HERE:$HERE/lib:$LD_LIBRARY_PATH"
+else
+ LD_LIBRARY_PATH="$HERE:$HERE/lib"
+fi
+export LD_LIBRARY_PATH
+
+export CHROME_VERSION_EXTRA="Built from source for @@BUILD_TARGET@@"
+
+# We don't want bug-buddy intercepting our crashes. http://crbug.com/24120
+export GNOME_DISABLE_CRASH_DIALOG=SET_BY_GOOGLE_CHROME
+
+CHROMIUM_DISTRO_FLAGS=" --enable-plugins \
+ --enable-extensions \
+ --enable-user-scripts \
+ --enable-printing \
+ --enable-gpu-rasterization \
+ --enable-sync \
+ --auto-ssl-client-auth @@EXTRA_FLAGS@@"
+
+if [ -f "$HERE/PepperFlash/libpepflashplayer.so" ] && [ -f "$HERE/PepperFlash/manifest.json" ] ; then
+ CHROMIUM_FLASH_VERSION=$(grep '"version":' "$HERE/PepperFlash/manifest.json" | awk -F\" '{ print $4 }')
+ CHROMIUM_FLASH_FLAGS=" --ppapi-flash-path=$HERE/PepperFlash/libpepflashplayer.so \
+ --ppapi-flash-version=$CHROMIUM_FLASH_VERSION"
+else
+ CHROMIUM_FLASH_FLAGS=""
+fi
+
+exec -a "$0" "$HERE/@@CHROMIUM_BROWSER_CHANNEL@@" $CHROMIUM_DISTRO_FLAGS $CHROMIUM_FLASH_FLAGS "$@"
diff --git a/chromium-browser.xml b/chromium-browser.xml
new file mode 100644
index 0000000..159e05c
--- /dev/null
+++ b/chromium-browser.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE default-apps SYSTEM "gnome-da-list.dtd">
+<default-apps>
+ <web-browsers>
+ <web-browser>
+ <name>Chromium</name>
+ <executable>chromium-browser</executable>
+ <command>/usr/bin/chromium-browser %s</command>
+ <icon-name>chromium-browser</icon-name>
+ <run-in-terminal>false</run-in-terminal>
+ <netscape-remote>false</netscape-remote>
+ <!--
+ <tab-command>false</tab-command>
+ <win-command>false</win-command>
+ -->
+ </web-browser>
+ </web-browsers>
+</default-apps>
diff --git a/chromium-latest.py b/chromium-latest.py
new file mode 100755
index 0000000..87889ad
--- /dev/null
+++ b/chromium-latest.py
@@ -0,0 +1,344 @@
+#!/usr/bin/python
+# Copyright 2010,2015-2016 Tom Callaway <tcallawa(a)redhat.com>
+# Copyright 2013-2016 Tomas Popela <tpopela(a)redhat.com>
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+try:
+ import argparse
+ optparse = False
+except ImportError:
+ from optparse import OptionParser
+ optparse = True
+import csv
+import glob
+import hashlib
+import locale
+import os
+import shutil
+import StringIO
+import sys
+import urllib
+
+chromium_url = "http://commondatastorage.googleapis.com/chromium-browser-official/"
+
+chromium_root_dir = "."
+version_string = "stable"
+
+name = 'Chromium Latest'
+script_version = 0.9
+my_description = '{0} {1}'.format(name, script_version)
+
+
+def dlProgress(count, blockSize, totalSize):
+
+ if (totalSize <= blockSize):
+ percent = int(count * 100)
+ else:
+ percent = int(count * blockSize * 100 / totalSize)
+ sys.stdout.write("\r" + "Downloading ... %d%%" % percent)
+ sys.stdout.flush()
+
+
+def delete_chromium_dir(ch_dir):
+
+ full_dir = "%s/%s" % (latest_dir, ch_dir)
+ print 'Deleting %s ' % full_dir
+ if os.path.isdir(full_dir):
+ shutil.rmtree(full_dir)
+ print '[DONE]'
+ else:
+ print '[NOT FOUND]'
+
+
+def delete_chromium_files(files):
+
+ full_path = "%s/%s" % (latest_dir, files)
+ print 'Deleting ' + full_path + ' ',
+ for filename in glob.glob(full_path):
+ print 'Deleting ' + filename + ' ',
+ os.remove(filename)
+ print '[DONE]'
+
+
+def check_omahaproxy(channel="stable"):
+
+ version = 0
+ status_url = "http://omahaproxy.appspot.com/all?os=linux&channel=" + channel
+
+ usock = urllib.urlopen(status_url)
+ status_dump = usock.read()
+ usock.close()
+ status_list = StringIO.StringIO(status_dump)
+ status_reader = list(csv.reader(status_list, delimiter=','))
+ linux_channels = [s for s in status_reader if "linux" in s]
+ linux_channel = [s for s in linux_channels if channel in s]
+ version = linux_channel[0][2]
+
+ if version == 0:
+ print 'I could not find the latest %s build. Bailing out.' % channel
+ sys.exit(1)
+ else:
+ print 'Latest Chromium Version on %s at %s is %s' % (channel, status_url, version)
+ return version
+
+
+def remove_file_if_exists(filename):
+
+ if os.path.isfile("./%s" % filename):
+ try:
+ os.remove(filename)
+ except Exception:
+ pass
+
+
+def download_file_and_compare_hashes(file_to_download):
+
+ hashes_file = '%s.hashes' % file_to_download
+
+ if (args.clean):
+ remove_file_if_exists(file_to_download)
+ remove_file_if_exists(hashes_file)
+
+ # Let's make sure we haven't already downloaded it.
+ tarball_local_file = "./%s" % file_to_download
+ if os.path.isfile(tarball_local_file):
+ print "%s already exists!" % file_to_download
+ else:
+ path = '%s%s' % (chromium_url, file_to_download)
+ print "Downloading %s" % path
+ # Perhaps look at using python-progressbar at some point?
+ info=urllib.urlretrieve(path, file_to_download, reporthook=dlProgress)[1]
+ urllib.urlcleanup()
+ print ""
+ if (info["Content-Type"] != "application/x-tar"):
+ print 'Chromium tarballs for %s are not on servers.' % file_to_download
+ remove_file_if_exists (file_to_download)
+ sys.exit(1)
+
+ hashes_local_file = "./%s" % hashes_file
+ if not os.path.isfile(hashes_local_file):
+ path = '%s%s' % (chromium_url, hashes_file)
+ print "Downloading %s" % path
+ # Perhaps look at using python-progressbar at some point?
+ info=urllib.urlretrieve(path, hashes_file, reporthook=dlProgress)[1]
+ urllib.urlcleanup()
+ print ""
+
+ if os.path.isfile(hashes_local_file):
+ with open(hashes_local_file, "r") as input_file:
+ md5sum = input_file.readline().split()[1]
+ md5 = hashlib.md5()
+ with open(tarball_local_file, "rb") as f:
+ for block in iter(lambda: f.read(65536), b""):
+ md5.update(block)
+ if (md5sum == md5.hexdigest()):
+ print "MD5 matches for %s!" % file_to_download
+ else:
+ print "MD5 mismatch for %s!" % file_to_download
+ sys.exit(1)
+ else:
+ print "Cannot compare hashes for %s!" % file_to_download
+
+
+def download_version(version):
+
+ download_file_and_compare_hashes ('chromium-%s.tar.xz' % version)
+
+ if (args.tests):
+ download_file_and_compare_hashes ('chromium-%s-testdata.tar.xz' % version)
+
+def nacl_versions(version):
+
+ if sys.version_info[0] == 2 and sys.version_info[1] == 6:
+ return
+
+ myvars = {}
+ chrome_dir = './chromium-%s' % version
+ with open(chrome_dir + "/native_client/tools/REVISIONS") as myfile:
+ for line in myfile:
+ name, var = line.partition("=")[::2]
+ myvars[name] = var
+ print "nacl-binutils commit: %s" % myvars["NACL_BINUTILS_COMMIT"]
+ print "nacl-gcc commit: %s" % myvars["NACL_GCC_COMMIT"]
+ print "nacl-newlib commit: %s" % myvars["NACL_NEWLIB_COMMIT"]
+
+ # Parse GIT_REVISIONS dict from toolchain_build.py
+
+ sys.path.append(os.path.abspath(chrome_dir + "/native_client/toolchain_build"))
+ from toolchain_build import GIT_REVISIONS
+ print "nacl-arm-binutils commit: %s" % GIT_REVISIONS['binutils']['rev']
+ print "nacl-arm-gcc commit: %s" % GIT_REVISIONS['gcc']['rev']
+
+
+def download_chrome_latest_rpm(arch):
+
+ chrome_rpm = 'google-chrome-%s_current_%s.rpm' % (version_string, arch)
+ path = 'https://dl.google.com/linux/direct/%s' % chrome_rpm
+
+ if (args.clean):
+ remove_file_if_exists(chrome_rpm)
+
+ # Let's make sure we haven't already downloaded it.
+ if os.path.isfile("./%s" % chrome_rpm):
+ print "%s already exists!" % chrome_rpm
+ else:
+ print "Downloading %s" % path
+ # Perhaps look at using python-progressbar at some point?
+ info=urllib.urlretrieve(path, chrome_rpm, reporthook=dlProgress)[1]
+ urllib.urlcleanup()
+ print ""
+ if (info["Content-Type"] != "binary/octet-stream" and info["Content-Type"] != "application/x-redhat-package-manager"):
+ print 'Chrome %s rpms are not on servers.' % version_string
+ remove_file_if_exists (chrome_rpm)
+ sys.exit(1)
+
+# This is where the magic happens
+if __name__ == '__main__':
+
+ # Locale magic
+ locale.setlocale(locale.LC_ALL, '')
+
+ # Create the parser object
+ if optparse:
+ parser = OptionParser(description=my_description)
+ parser_add_argument = parser.add_option
+ else:
+ parser = argparse.ArgumentParser(description=my_description)
+ parser_add_argument = parser.add_argument
+
+ parser_add_argument(
+ '--ffmpegarm', action='store_true',
+ help='Leave arm sources when cleaning ffmpeg')
+ parser_add_argument(
+ '--beta', action='store_true',
+ help='Get the latest beta Chromium source')
+ parser_add_argument(
+ '--clean', action='store_true',
+ help='Re-download all previously downloaded sources')
+ parser_add_argument(
+ '--cleansources', action='store_true',
+ help='Get the latest Chromium release from given channel and clean various directories to from unnecessary or unwanted stuff')
+ parser_add_argument(
+ '--dev', action='store_true',
+ help='Get the latest dev Chromium source')
+ parser_add_argument(
+ '--ffmpegclean', action='store_true',
+ help='Get the latest Chromium release from given channel and cleans ffmpeg sources from proprietary stuff')
+ parser_add_argument(
+ '--chrome', action='store_true',
+ help='Get the latest Chrome rpms for the given channel')
+ parser_add_argument(
+ '--prep', action='store_true',
+ help='Prepare everything, but don\'t compress the result')
+ parser_add_argument(
+ '--stable', action='store_true',
+ help='Get the latest stable Chromium source')
+ parser_add_argument(
+ '--tests', action='store_true',
+ help='Get the additional data for running tests')
+ parser_add_argument(
+ '--version',
+ help='Download a specific version of Chromium')
+ parser_add_argument(
+ '--naclvers',
+ help='Display the commit versions of nacl toolchain components')
+
+ # Parse the args
+ if optparse:
+ args, options = parser.parse_args()
+ else:
+ args = parser.parse_args()
+
+ if args.stable:
+ version_string = "stable"
+ elif args.beta:
+ version_string = "beta"
+ elif args.dev:
+ version_string = "dev"
+ elif (not (args.stable or args.beta or args.dev)):
+ if (not args.version):
+ print 'No version specified, downloading STABLE'
+ args.stable = True
+
+ chromium_version = args.version if args.version else check_omahaproxy(version_string)
+
+ if args.dev:
+ version_string = "unstable"
+
+ if args.chrome:
+ if args.version:
+ print 'You cannot specify a Chrome RPM version!'
+ sys.exit(1)
+ latest = 'google-chrome-%s_current_i386' % version_string
+ download_chrome_latest_rpm("i386")
+ latest = 'google-chrome-%s_current_x86_64' % version_string
+ download_chrome_latest_rpm("x86_64")
+ if (not (args.ffmpegclean or args.tests)):
+ sys.exit(0)
+
+ latest = 'chromium-%s.tar.xz' % chromium_version
+
+ download_version(chromium_version)
+
+ # Lets make sure we haven't unpacked it already
+ latest_dir = "%s/chromium-%s" % (chromium_root_dir, chromium_version)
+ if (args.clean and os.path.isdir(latest_dir)):
+ shutil.rmtree(latest_dir)
+
+ if os.path.isdir(latest_dir):
+ print "%s already exists, perhaps %s has already been unpacked?" % (latest_dir, latest)
+ else:
+ print "Unpacking %s into %s, please wait." % (latest, latest_dir)
+ if (os.system("tar -xJf %s" % latest) != 0):
+ print "%s is possibly corrupted, exiting." % (latest)
+ sys.exit(1)
+
+ if (args.naclvers):
+ nacl_versions(chromium_version)
+
+ if (args.cleansources):
+ junk_dirs = ['third_party/WebKit/Tools/Scripts/webkitpy/layout_tests',
+ 'webkit/data/layout_tests', 'third_party/hunspell/dictionaries',
+ 'chrome/test/data', 'native_client/tests',
+ 'third_party/WebKit/LayoutTests']
+
+ # First, the dirs:
+ for directory in junk_dirs:
+ delete_chromium_dir(directory)
+
+ # There has got to be a better, more portable way to do this.
+ os.system("find %s -depth -name reference_build -type d -exec rm -rf {} \;" % latest_dir)
+
+ # I could not find good bindings for xz/lzma support, so we system call here too.
+ chromium_clean_xz_file = "chromium-" + chromium_version + "-clean.tar.xz"
+
+ remove_file_if_exists(chromium_clean_xz_file)
+
+ if (args.ffmpegclean):
+ print("Cleaning ffmpeg from proprietary things...")
+ os.system("./clean_ffmpeg.sh %s %d" % (latest_dir, 0 if args.ffmpegarm else 1))
+ print "Done!"
+
+ if (not args.prep):
+ print "Compressing cleaned tree, please wait..."
+ os.chdir(chromium_root_dir)
+ os.system("tar --exclude=\.svn -cf - chromium-%s | xz -9 -T 0 -f > %s" % (chromium_version, chromium_clean_xz_file))
+
+ print "Finished!"
diff --git a/chromium-libs-media-freeworld.spec b/chromium-libs-media-freeworld.spec
new file mode 100644
index 0000000..7b100ab
--- /dev/null
+++ b/chromium-libs-media-freeworld.spec
@@ -0,0 +1,2761 @@
+# This package depends on automagic byte compilation
+# https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompi...
+%global _python_bytecompile_extra 1
+
+# This is faster when it works, but it doesn't always.
+%ifarch aarch64
+%global use_jumbo 0
+%else
+%global use_jumbo 1
+%endif
+
+# We usually want this.
+%global build_headless 1
+
+# We'd like to always have this on.
+%global use_vaapi 0
+
+# NEVER EVER EVER turn this on in official builds
+%global freeworld 1
+%if %{freeworld}
+%global lsuffix freeworld
+%else
+%global lsuffix fedora
+%endif
+
+# Some people wish not to use the Fedora Google API keys. Mmkay.
+# Expect stuff to break in weird ways if you disable.
+%global useapikeys 1
+
+# Leave this alone, please.
+%global target out/Release
+%global headlesstarget out/Headless
+%global remotingtarget 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)
+%global debug_package %{nil}
+
+# %%{nil} for Stable; -beta for Beta; -dev for Devel
+# dash in -beta and -dev is intentional !
+%global chromium_channel %{nil}
+%global chromium_menu_name Chromium
+%global chromium_browser_channel chromium-browser%{chromium_channel}
+%global chromium_path %{_libdir}/chromium-browser%{chromium_channel}
+%global crd_path %{_libdir}/chrome-remote-desktop
+
+# We don't want any libs in these directories to generate Provides
+# 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
+# for RHEL7, append libfontconfig to the end
+# make sure there is not a trailing | at the end of the list
+
+%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
+%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
+%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
+%global asan 0
+
+# nacl/pnacl are soon to be dead. We're just killing them off early.
+%global killnacl 1
+
+%if 0%{?killnacl}
+ %global nacl 0
+ %global nonacl 1
+%else
+# TODO: Try arm (nacl disabled)
+%if 0%{?fedora}
+ %ifarch i686
+ %global nacl 0
+ %global nonacl 1
+ %else
+ %global nacl 1
+ %global nonacl 0
+ %endif
+%endif
+%endif
+
+%if 0
+# Chromium's fork of ICU is now something we can't unbundle.
+# This is left here to ease the change if that ever switches.
+BuildRequires: libicu-devel >= 5.4
+%global bundleicu 0
+%else
+%global bundleicu 1
+%endif
+
+%global bundlere2 1
+
+# The libxml_utils code depends on the specific bundled libxml checkout
+# which is not compatible with the current code in the Fedora package as of
+# 2017-06-08.
+%global bundlelibxml 1
+
+# Chromium used to break on wayland, hidpi, and colors with gtk3 enabled.
+# Hopefully it does not anymore.
+%global gtk3 1
+
+%if 0%{?rhel} == 7
+%global dts_version 8
+
+%global bundleopus 1
+%global bundlelibusbx 1
+%global bundleharfbuzz 1
+%global bundlelibwebp 1
+%global bundlelibpng 1
+%global bundlelibjpeg 1
+%global bundlefreetype 1
+%global bundlelibdrm 1
+%global bundlefontconfig 1
+%else
+%global bundleharfbuzz 0
+%global bundleopus 1
+%global bundlelibusbx 0
+%global bundlelibwebp 0
+%global bundlelibpng 0
+%global bundlelibjpeg 0
+%global bundlefreetype 0
+%global bundlelibdrm 0
+%global bundlefontconfig 0
+%endif
+
+# Needs at least harfbuzz 2.3.0 now.
+# 2019-03-13
+%if 0%{?fedora} < 30
+%global bundleharfbuzz 1
+%else
+%global bundleharfbuzz 0
+%endif
+
+# Pulseaudio changed the API a little in 12.99.1
+%if 0%{?fedora} > 30
+%global pulseaudioapichange 1
+%else
+%global pulseaudioapichange 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.
+### http://lists.debian.org/debian-legal/2013/11/msg00006.html
+%if %{useapikeys}
+%global api_key AIzaSyDUIXvzVrt5OkVsgXhQ6NFfvWlA44by-aw
+%global default_client_id 449907151817.apps.googleusercontent.com
+%global default_client_secret miEreAep8nuvTdvLums6qyLK
+%global chromoting_client_id 449907151817-8vnlfih032ni8c4jjps9int9t86k546t.apps.googleusercontent.com
+%else
+%global api_key %nil
+%global default_client_id %nil
+%global default_client_secret %nil
+%global chromoting_client_id %nil
+%endif
+
+%global majorversion 76
+
+%if %{freeworld}
+Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
+%else
+Name: chromium%{chromium_channel}
+%endif
+Version: %{majorversion}.0.3809.100
+Release: 1%{?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
+# Use /etc/chromium for master_prefs
+Patch7: 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
+# 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
+# Do not prefix libpng functions
+Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
+# Do not mangle libjpeg
+Patch17: 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
+# 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
+# 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
+# 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
+# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
+Patch36: 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
+# 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.100-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
+# 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
+# Needs to be submitted..
+Patch62: 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
+
+# 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-75.0.3770.100-el7-fix-noexcept.patch
+
+# In file included from ../linux/directory.c:21:
+# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
+# ../../../../native_client/src/nonsfi/linux/linux_syscall_structs.h:44:13: error: GNU-style inline assembly is disabled
+# __asm__ __volatile__("mov %%gs, %0" : "=r"(gs));
+# ^
+# 1 error generated.
+Patch200: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+# Ignore broken nacl open fd counter
+Patch201: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+
+# Enable VAAPI support on Linux
+# NOTE: This patch will never land upstream
+Patch202: enable-vaapi.patch
+Patch203: chromium-75.0.3770.80-vaapi-i686-fpermissive.patch
+# Fix compatibility with VA-API library (libva) version 1
+Patch204: chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
+# Pulseaudio changed the API a little in 12.99.1
+Patch205: chromium-76.0.3809.100-pulse-api-change.patch
+
+# Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
+# http://build.chromium.org/buildbot/official/
+# For Chromium Fedora use chromium-latest.py --stable --ffmpegclean --ffmpegarm
+# If you want to include the ffmpeg arm sources append the --ffmpegarm switch
+# https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+%if %{freeworld}
+Source0: https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+%else
+Source0: chromium-%{version}-clean.tar.xz
+%endif
+# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive...
+Source2: depot_tools.git-master.tar.gz
+Source3: chromium-browser.sh
+Source4: %{chromium_browser_channel}.desktop
+# Also, only used if you want to reproduce the clean tarball.
+Source5: clean_ffmpeg.sh
+Source6: chromium-latest.py
+Source7: get_free_ffmpeg_source_files.py
+# Get the names of all tests (gtests) for Linux
+# Usage: get_linux_tests_name.py chromium-%%{version} --spec
+Source8: get_linux_tests_names.py
+# GNOME stuff
+Source9: chromium-browser.xml
+Source11: chrome-remote-desktop@.service
+Source13: master_preferences
+# Unpackaged fonts
+Source14: https://fontlibrary.org/assets/downloads/gelasio/4d610887ff4d445cbc639aae...
+Source15: http://download.savannah.nongnu.org/releases/freebangfont/MuktiNarrow-0.9...
+Source16: https://github.com/web-platform-tests/wpt/raw/master/fonts/Ahem.ttf
+Source17: GardinerModBug.ttf
+Source18: GardinerModCat.ttf
+# RHEL needs newer nodejs
+%if 0%{?rhel}
+Source19: node-v8.9.1-linux-x64.tar.gz
+%endif
+
+# We can assume gcc and binutils.
+BuildRequires: gcc-c++
+
+BuildRequires: alsa-lib-devel
+BuildRequires: atk-devel
+BuildRequires: bison
+BuildRequires: cups-devel
+BuildRequires: dbus-devel
+BuildRequires: desktop-file-utils
+BuildRequires: expat-devel
+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
+%endif
+BuildRequires: libatomic
+BuildRequires: libcap-devel
+%if 0%{?bundlelibdrm}
+#nothing
+%else
+BuildRequires: libdrm-devel
+%endif
+BuildRequires: libgcrypt-devel
+BuildRequires: libudev-devel
+BuildRequires: libuuid-devel
+BuildRequires: libusb-devel
+BuildRequires: libXdamage-devel
+BuildRequires: libXScrnSaver-devel
+BuildRequires: libXtst-devel
+%if 0%{?fedora} >= 30
+BuildRequires: minizip-compat-devel
+%else
+BuildRequires: minizip-devel
+%endif
+# RHEL 7's nodejs is too old
+%if 0%{?fedora}
+BuildRequires: nodejs
+%endif
+BuildRequires: nss-devel >= 3.26
+BuildRequires: pciutils-devel
+BuildRequires: pulseaudio-libs-devel
+
+# For screen sharing on Wayland, currently Fedora only thing - no epel
+%if 0%{?fedora}
+BuildRequires: pkgconfig(libpipewire-0.2)
+%endif
+
+# for /usr/bin/appstream-util
+BuildRequires: libappstream-glib
+
+# gn needs these
+BuildRequires: libstdc++-static
+BuildRequires: libstdc++-devel, openssl-devel
+%if 0%{?nacl}
+BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
+BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
+# pNaCl needs this monster
+# It's possible that someday this dep will stabilize, but
+# right now, it needs to be updated everytime chromium bumps
+# a major version.
+BuildRequires: chromium-native_client >= 52.0.2743.82
+BuildRequires: clang
+BuildRequires: llvm
+%ifarch x86_64
+# Really, this is what we want:
+# BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
+# But, koji only offers glibc32. Maybe that's enough.
+# This BR will pull in either glibc.i686 or glibc32.
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so
+%endif
+%endif
+# Fedora tries to use system libs whenever it can.
+BuildRequires: bzip2-devel
+BuildRequires: dbus-glib-devel
+BuildRequires: elfutils-libelf-devel
+BuildRequires: flac-devel
+%if 0%{?bundlefreetype}
+# nothing
+%else
+BuildRequires: freetype-devel
+%endif
+BuildRequires: hwdata
+BuildRequires: kernel-headers
+BuildRequires: libevent-devel
+BuildRequires: libffi-devel
+%if 0%{?bundleicu}
+# If this is true, we're using the bundled icu.
+# We'd like to use the system icu every time, but we cannot always do that.
+%else
+# Not newer than 54 (at least not right now)
+BuildRequires: libicu-devel = 54.1
+%endif
+%if 0%{?bundlelibjpeg}
+# If this is true, we're using the bundled libjpeg
+# which we need to do because the RHEL 7 libjpeg doesn't work for chromium anymore
+%else
+BuildRequires: libjpeg-devel
+%endif
+%if 0%{?bundlelibpng}
+# If this is true, we're using the bundled libpng
+# which we need to do because the RHEL 7 libpng doesn't work right anymore
+%else
+BuildRequires: libpng-devel
+%endif
+%if 0
+# see https://code.google.com/p/chromium/issues/detail?id=501318
+BuildRequires: libsrtp-devel >= 1.4.4
+%endif
+BuildRequires: libudev-devel
+%if %{bundlelibusbx}
+# Do nothing
+%else
+Requires: libusbx >= 1.0.21-0.1.git448584a
+BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a
+%endif
+BuildRequires: libva-devel
+# We don't use libvpx anymore because Chromium loves to
+# use bleeding edge revisions here that break other things
+# ... so we just use the bundled libvpx.
+%if %{bundlelibwebp}
+# Do nothing
+%else
+BuildRequires: libwebp-devel
+%endif
+BuildRequires: libxslt-devel
+# Same here, it seems.
+# BuildRequires: libyuv-devel
+BuildRequires: mesa-libGL-devel
+%if %{bundleopus}
+# Do nothing
+%else
+BuildRequires: opus-devel
+%endif
+BuildRequires: perl(Switch)
+%if 0%{gtk3}
+BuildRequires: pkgconfig(gtk+-3.0)
+%else
+BuildRequires: pkgconfig(gtk+-2.0)
+%endif
+BuildRequires: python2-devel
+%if 0%{?fedora} > 27
+BuildRequires: python2-beautifulsoup4
+BuildRequires: python2-beautifulsoup
+BuildRequires: python2-html5lib
+BuildRequires: python2-markupsafe
+BuildRequires: python2-ply
+%else
+BuildRequires: python-beautifulsoup4
+BuildRequires: python-BeautifulSoup
+BuildRequires: python-html5lib
+BuildRequires: python-markupsafe
+BuildRequires: python-ply
+%endif
+BuildRequires: python2-simplejson
+%if 0%{?bundlere2}
+# Using bundled bits, do nothing.
+%else
+Requires: re2 >= 20160401
+BuildRequires: re2-devel >= 20160401
+%endif
+BuildRequires: speech-dispatcher-devel
+BuildRequires: yasm
+BuildRequires: zlib-devel
+BuildRequires: pkgconfig(gnome-keyring-1)
+# remote desktop needs this
+BuildRequires: pam-devel
+BuildRequires: systemd
+# for third_party/test_fonts
+%if %{freeworld}
+# dont need fonts for this
+%else
+%if 0%{?rhel} == 7
+Source100: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Bold.ttf
+Source101: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-BoldItalic...
+Source102: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Italic.ttf
+Source103: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Regular.ttf
+Source104: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Bold.ttf
+Source105: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-BoldIt...
+Source106: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Italic...
+Source107: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Regula...
+Source108: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Bold.ttf
+Source109: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldItalic...
+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
+Source112: https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
+Source113: https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
+%else
+BuildRequires: google-croscore-arimo-fonts
+BuildRequires: google-croscore-cousine-fonts
+BuildRequires: google-croscore-tinos-fonts
+BuildRequires: google-noto-sans-cjk-jp-fonts
+BuildRequires: lohit-gurmukhi-fonts
+%endif
+BuildRequires: dejavu-sans-fonts
+BuildRequires: thai-scalable-garuda-fonts
+BuildRequires: lohit-devanagari-fonts
+BuildRequires: lohit-tamil-fonts
+BuildRequires: google-noto-sans-khmer-fonts
+%endif
+# using the built from source version on aarch64
+BuildRequires: ninja-build
+# Yes, java is needed as well..
+BuildRequires: java-1.8.0-openjdk-headless
+
+%if 0%{?rhel} == 7
+BuildRequires: devtoolset-%{dts_version}-toolchain, devtoolset-%{dts_version}-libatomic-devel
+%endif
+
+# There is a hardcoded check for nss 3.26 in the chromium code (crypto/nss_util.cc)
+Requires: nss%{_isa} >= 3.26
+Requires: nss-mdns%{_isa}
+
+# GTK modules it expects to find for some reason.
+%if 0%{gtk3}
+Requires: libcanberra-gtk3%{_isa}
+%else
+Requires: libcanberra-gtk2%{_isa}
+%endif
+
+%if 0%{?fedora}
+# This enables support for u2f tokens
+Requires: u2f-hidraw-policy
+%endif
+
+# Once upon a time, we tried to split these out... but that's not worth the effort anymore.
+Provides: chromium-ffmpegsumo = %{version}-%{release}
+Obsoletes: chromium-ffmpegsumo <= 35.0.1916.114
+# This is a lie. v8 has its own version... but I'm being lazy and not using it here.
+# Barring Google getting much faster on the v8 side (or much slower on the Chromium side)
+# the true v8 version will be much smaller than the Chromium version that it came from.
+Provides: chromium-v8 = %{version}-%{release}
+Obsoletes: chromium-v8 <= 3.25.28.18
+# This is a lie. webrtc never had any real version. 0.2 is greater than 0.1
+Provides: webrtc = 0.2
+Obsoletes: webrtc <= 0.1
+%if 0%{?shared}
+Requires: chromium-libs%{_isa} = %{version}-%{release}
+# This is broken out so it can be replaced.
+Requires: chromium-libs-media%{_isa} = %{version}-%{release}
+# Nothing to do here. chromium-libs is real.
+%else
+Provides: chromium-libs = %{version}-%{release}
+Obsoletes: chromium-libs <= %{version}-%{release}
+%endif
+
+%if 0%{?rhel}
+ExclusiveArch: x86_64 i686
+%else
+ExclusiveArch: x86_64 i686 aarch64
+%endif
+
+# Bundled bits (I'm sure I've missed some)
+Provides: bundled(angle) = 2422
+Provides: bundled(bintrees) = 1.0.1
+# This is a fork of openssl.
+Provides: bundled(boringssl)
+Provides: bundled(brotli) = 222564a95d9ab58865a096b8d9f7324ea5f2e03e
+Provides: bundled(bspatch)
+Provides: bundled(cacheinvalidation) = 20150720
+Provides: bundled(colorama) = 799604a104
+Provides: bundled(crashpad)
+Provides: bundled(dmg_fp)
+Provides: bundled(expat) = 2.2.0
+Provides: bundled(fdmlibm) = 5.3
+# Don't get too excited. MPEG and other legally problematic stuff is stripped out.
+Provides: bundled(ffmpeg) = 3.2git
+Provides: bundled(fips181) = 2.2.3
+%if 0%{?bundlefontconfig}
+Provides: bundled(fontconfig) = 2.12.6
+%endif
+%if 0%{?bundlefreetype}
+Provides: bundled(freetype) = 2.9.3
+%endif
+Provides: bundled(gperftools) = svn144
+%if 0%{?bundleharfbuzz}
+Provides: bundled(harfbuzz) = 2.3.0
+%endif
+Provides: bundled(hunspell) = 1.6.0
+Provides: bundled(iccjpeg)
+%if 0%{?bundleicu}
+Provides: bundled(icu) = 58.1
+%endif
+Provides: bundled(kitchensink) = 1
+Provides: bundled(leveldb) = 1.20
+Provides: bundled(libaddressinput) = 0
+%if 0%{?bundlelibdrm}
+Provides: bundled(libdrm) = 2.4.85
+%endif
+Provides: bundled(libevent) = 1.4.15
+Provides: bundled(libjingle) = 9564
+%if 0%{?bundlelibjpeg}
+Provides: bundled(libjpeg-turbo) = 1.4.90
+%endif
+Provides: bundled(libphonenumber) = a4da30df63a097d67e3c429ead6790ad91d36cf4
+%if 0%{?bundlelibpng}
+Provides: bundled(libpng) = 1.6.22
+%endif
+Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d
+%if %{bundlelibusbx}
+Provides: bundled(libusbx) = 1.0.17
+%endif
+Provides: bundled(libvpx) = 1.6.0
+%if %{bundlelibwebp}
+Provides: bundled(libwebp) = 0.6.0
+%endif
+%if %{bundlelibxml}
+# Well, it's actually newer than 2.9.4 and has code in it that has been reverted upstream... but eh.
+Provides: bundled(libxml) = 2.9.4
+%endif
+Provides: bundled(libXNVCtrl) = 302.17
+Provides: bundled(libyuv) = 1651
+Provides: bundled(lzma) = 15.14
+Provides: bundled(libudis86) = 1.7.1
+Provides: bundled(mesa) = 9.0.3
+Provides: bundled(NSBezierPath) = 1.0
+Provides: bundled(mozc)
+%if %{bundleopus}
+Provides: bundled(opus) = 1.1.3
+%endif
+Provides: bundled(ots) = 8d70cffebbfa58f67a5c3ed0e9bc84dccdbc5bc0
+Provides: bundled(protobuf) = 3.0.0.beta.3
+Provides: bundled(qcms) = 4
+%if 0%{?bundlere2}
+Provides: bundled(re2)
+%endif
+Provides: bundled(sfntly) = 04740d2600193b14aa3ef24cd9fbb3d5996b9f77
+Provides: bundled(skia)
+Provides: bundled(SMHasher) = 0
+Provides: bundled(snappy) = 1.1.4-head
+Provides: bundled(speech-dispatcher) = 0.7.1
+Provides: bundled(sqlite) = 3.17patched
+Provides: bundled(superfasthash) = 0
+Provides: bundled(talloc) = 2.0.1
+Provides: bundled(usrsctp) = 0
+Provides: bundled(v8) = 5.9.211.31
+Provides: bundled(webrtc) = 90usrsctp
+Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d
+Provides: bundled(xdg-mime)
+Provides: bundled(xdg-user-dirs)
+# Provides: bundled(zlib) = 1.2.11
+
+# For selinux scriptlet
+Requires(post): /usr/sbin/semanage
+Requires(post): /usr/sbin/restorecon
+
+%description
+Chromium is an open-source web browser, powered by WebKit (Blink).
+
+%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 0%{?fedora} >= 30
+Requires: minizip-compat%{_isa}
+%else
+Requires: minizip%{_isa}
+%endif
+
+%description common
+%{summary}.
+
+%if 0%{?shared}
+%package libs
+Summary: Shared libraries used by chromium (and chrome-remote-desktop)
+Requires: chromium-common%{_isa} = %{version}-%{release}
+Requires: chromium-libs-media%{_isa} >= %{majorversion}
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+%description libs
+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
+Requires: chromium-libs%{_isa} = %{version}
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+%description libs-media
+Shared libraries used by the chromium media subsystem.
+%endif
+%endif
+
+%package -n chrome-remote-desktop
+Requires(pre): shadow-utils
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+Requires: xorg-x11-server-Xvfb
+Requires: python2-psutil
+%if 0%{?shared}
+Requires: chromium-libs%{_isa} = %{version}-%{release}
+%endif
+Summary: Remote desktop support for google-chrome & chromium
+
+%description -n chrome-remote-desktop
+Remote desktop support for google-chrome & chromium.
+
+%package -n chromedriver
+Summary: WebDriver for Google Chrome/Chromium
+%if 0%{?shared}
+Requires: chromium-libs%{_isa} = %{version}-%{release}
+%endif
+# From Russian Fedora (minus the epoch)
+Provides: chromedriver-stable = %{version}-%{release}
+Conflicts: chromedriver-testing
+Conflicts: chromedriver-unstable
+
+%description -n chromedriver
+WebDriver is an open source tool for automated testing of webapps across many
+browsers. It provides capabilities for navigating to web pages, user input,
+JavaScript execution, and more. ChromeDriver is a standalone server which
+implements WebDriver's wire protocol for Chromium. It is being developed by
+members of the Chromium and WebDriver teams.
+
+%package headless
+Summary: A minimal headless shell built from Chromium
+Requires: chromium-common%{_isa} = %{version}-%{release}
+
+%description headless
+A minimal headless client built from Chromium. headless_shell is built
+without support for alsa, cups, dbus, gconf, gio, kerberos, pulseaudio, or
+udev.
+
+%prep
+%setup -q -T -c -n depot_tools -a 2
+%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
+%patch18 -p1 -b .nozmangle
+%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
+
+# EPEL specific patches
+%if 0%{?rhel} == 7
+%patch100 -p1 -b .kmaxskip
+%patch101 -p1 -b .epel7
+%patch102 -p1 -b .el7-noexcept
+%endif
+
+# Feature specific patches
+%if ! 0%{?killnacl}
+%patch200 -p1 -b .gnu-inline
+%patch201 -p1 -b .ignore-fd-count
+%endif
+
+%if %{use_vaapi}
+%patch202 -p1 -b .vaapi
+%ifarch i686
+%patch203 -p1 -b .i686permissive
+%patch204 -p1 -b .va1compat
+%endif
+%endif
+
+%if 0%{?pulseaudioapichange}
+%patch205 -p1 -b .pulseaudioapichange
+%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}=' {} +
+
+%if 0%{?asan}
+export CC="clang"
+export CXX="clang++"
+%else
+export CC="gcc"
+export CXX="g++"
+%endif
+export AR="ar"
+export RANLIB="ranlib"
+
+rm -rf buildtools/third_party/libc++/BUILD.gn
+
+%if 0%{?nacl}
+# prep the nacl tree
+mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib
+cp -a --no-preserve=context /usr/%{_arch}-nacl/* out/Release/gen/sdk/linux_x86/nacl_x86_newlib
+
+mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib
+cp -a --no-preserve=context /usr/arm-nacl/* out/Release/gen/sdk/linux_x86/nacl_arm_newlib
+
+# Not sure if we need this or not, but better safe than sorry.
+pushd out/Release/gen/sdk/linux_x86
+ln -s nacl_x86_newlib nacl_x86_newlib_raw
+ln -s nacl_arm_newlib nacl_arm_newlib_raw
+popd
+
+mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
+pushd out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
+ln -s /usr/bin/x86_64-nacl-gcc gcc
+ln -s /usr/bin/x86_64-nacl-gcc x86_64-nacl-gcc
+ln -s /usr/bin/x86_64-nacl-g++ g++
+ln -s /usr/bin/x86_64-nacl-g++ x86_64-nacl-g++
+# ln -s /usr/bin/x86_64-nacl-ar ar
+ln -s /usr/bin/x86_64-nacl-ar x86_64-nacl-ar
+# ln -s /usr/bin/x86_64-nacl-as as
+ln -s /usr/bin/x86_64-nacl-as x86_64-nacl-as
+# ln -s /usr/bin/x86_64-nacl-ranlib ranlib
+ln -s /usr/bin/x86_64-nacl-ranlib x86_64-nacl-ranlib
+# Cleanups
+rm addr2line
+ln -s /usr/bin/x86_64-nacl-addr2line addr2line
+rm c++filt
+ln -s /usr/bin/x86_64-nacl-c++filt c++filt
+rm gprof
+ln -s /usr/bin/x86_64-nacl-gprof gprof
+rm readelf
+ln -s /usr/bin/x86_64-nacl-readelf readelf
+rm size
+ln -s /usr/bin/x86_64-nacl-size size
+rm strings
+ln -s /usr/bin/x86_64-nacl-strings strings
+popd
+
+mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
+pushd out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
+ln -s /usr/bin/arm-nacl-gcc gcc
+ln -s /usr/bin/arm-nacl-gcc arm-nacl-gcc
+ln -s /usr/bin/arm-nacl-g++ g++
+ln -s /usr/bin/arm-nacl-g++ arm-nacl-g++
+ln -s /usr/bin/arm-nacl-ar arm-nacl-ar
+ln -s /usr/bin/arm-nacl-as arm-nacl-as
+ln -s /usr/bin/arm-nacl-ranlib arm-nacl-ranlib
+popd
+
+touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.prep
+touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/nacl_x86_newlib.json
+touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.prep
+touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/nacl_arm_newlib.json
+
+pushd out/Release/gen/sdk/linux_x86/
+mkdir -p pnacl_newlib pnacl_translator
+# Might be able to do symlinks here, but eh.
+cp -a --no-preserve=context /usr/pnacl_newlib/* pnacl_newlib/
+cp -a --no-preserve=context /usr/pnacl_translator/* pnacl_translator/
+for i in lib/libc.a lib/libc++.a lib/libg.a lib/libm.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/x86_64_bc-nacl/$i
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/i686_bc-nacl/$i
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
+done
+
+for i in lib/libpthread.a lib/libnacl.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
+done
+
+for i in lib/clang/3.7.0/lib/x86_64_bc-nacl/libpnaclmm.a lib/clang/3.7.0/lib/i686_bc-nacl/libpnaclmm.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
+done
+
+for i in lib/clang/3.7.0/lib/le32-nacl/libpnaclmm.a lib/clang/3.7.0/lib/le32-nacl/libgcc.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
+done
+
+popd
+
+mkdir -p native_client/toolchain/.tars/linux_x86
+touch native_client/toolchain/.tars/linux_x86/pnacl_translator.json
+
+pushd native_client/toolchain
+ln -s ../../out/Release/gen/sdk/linux_x86 linux_x86
+popd
+
+mkdir -p third_party/llvm-build/Release+Asserts/bin
+pushd third_party/llvm-build/Release+Asserts/bin
+ln -s /usr/bin/clang clang
+popd
+%endif
+
+# Unpack fonts
+%if %{freeworld}
+# no font fun needed.
+%else
+pushd third_party/test_fonts
+mkdir test_fonts
+cd test_fonts
+unzip %{SOURCE14}
+tar xf %{SOURCE15}
+mv MuktiNarrow0.94/MuktiNarrow.ttf .
+rm -rf MuktiNarrow0.94
+cp %{SOURCE16} .
+cp %{SOURCE17} .
+cp %{SOURCE18} .
+%if 0%{?rhel} == 7
+cp %{SOURCE100} .
+cp %{SOURCE101} .
+cp %{SOURCE102} .
+cp %{SOURCE103} .
+cp %{SOURCE104} .
+cp %{SOURCE105} .
+cp %{SOURCE106} .
+cp %{SOURCE107} .
+cp %{SOURCE108} .
+cp %{SOURCE109} .
+cp %{SOURCE110} .
+cp %{SOURCE111} .
+tar xf %{SOURCE112}
+mv lohit-gurmukhi-ttf-2.91.2/Lohit-Gurmukhi.ttf .
+rm -rf lohit-gurmukhi-ttf-2.91.2
+unzip %{SOURCE113}
+%else
+cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf .
+cp -a /usr/share/fonts/lohit-gurmukhi/Lohit-Gurmukhi.ttf .
+cp -a /usr/share/fonts/google-noto-cjk/NotoSansCJKjp-Regular.otf .
+%endif
+cp -a /usr/share/fonts/dejavu/DejaVuSans.ttf /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf .
+cp -a /usr/share/fonts/thai-scalable/Garuda.ttf .
+cp -a /usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf /usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf .
+cp -a /usr/share/fonts/google-noto/NotoSansKhmer-Regular.ttf .
+popd
+%endif
+
+# Core defines are flags that are true for both the browser and headless.
+CHROMIUM_CORE_GN_DEFINES=""
+CHROMIUM_CORE_GN_DEFINES+=' is_debug=false'
+%ifarch x86_64 aarch64
+CHROMIUM_CORE_GN_DEFINES+=' system_libdir="lib64"'
+%endif
+CHROMIUM_CORE_GN_DEFINES+=' google_api_key="%{api_key}" google_default_client_id="%{default_client_id}" google_default_client_secret="%{default_client_secret}"'
+CHROMIUM_CORE_GN_DEFINES+=' is_clang=false use_sysroot=false use_gold=false fieldtrial_testing_like_official_build=true use_lld=false'
+%if %{freeworld}
+CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="ChromeOS" proprietary_codecs=true'
+%else
+CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="Chromium" proprietary_codecs=false'
+%endif
+CHROMIUM_CORE_GN_DEFINES+=' treat_warnings_as_errors=false linux_use_bundled_binutils=false'
+CHROMIUM_CORE_GN_DEFINES+=' use_custom_libcxx=false'
+%ifarch aarch64
+CHROMIUM_CORE_GN_DEFINES+=' target_cpu="arm64"'
+%endif
+%if %{?use_jumbo}
+CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=8'
+%endif
+export CHROMIUM_CORE_GN_DEFINES
+
+CHROMIUM_BROWSER_GN_DEFINES=""
+CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true icu_use_data_file=true'
+%if 0%{?nonacl}
+CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
+%endif
+%if 0%{?shared}
+CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
+%else
+CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=false'
+%endif
+CHROMIUM_BROWSER_GN_DEFINES+=' blink_symbol_level=0 enable_hangout_services_extension=true'
+CHROMIUM_BROWSER_GN_DEFINES+=' use_aura=true'
+CHROMIUM_BROWSER_GN_DEFINES+=' enable_widevine=true'
+%if %{use_vaapi}
+%if 0%{?fedora} >= 28
+CHROMIUM_BROWSER_GN_DEFINES+=' use_vaapi=true'
+%endif
+%endif
+%if 0%{?fedora}
+CHROMIUM_BROWSER_GN_DEFINES+=' rtc_use_pipewire=true rtc_link_pipewire=true'
+%endif
+export CHROMIUM_BROWSER_GN_DEFINES
+
+CHROMIUM_HEADLESS_GN_DEFINES=""
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_ozone=true ozone_auto_platforms=false ozone_platform="headless" ozone_platform_headless=true'
+CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true icu_use_data_file=false v8_use_external_startup_data=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false enable_remoting=false use_alsa=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gio=false use_kerberos=false use_libpci=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
+export CHROMIUM_HEADLESS_GN_DEFINES
+
+%if 0%{?rhel}
+pushd third_party/node/linux
+tar xf %{SOURCE19}
+mv node-v8.9.1-linux-x64 node-linux-x64
+popd
+%else
+mkdir -p third_party/node/linux/node-linux-x64/bin
+ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
+%endif
+
+# 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' \
+ 'base/third_party/libevent' \
+ 'base/third_party/nspr' \
+ 'base/third_party/superfasthash' \
+ 'base/third_party/symbolize' \
+ 'base/third_party/valgrind' \
+ 'base/third_party/xdg_mime' \
+ 'base/third_party/xdg_user_dirs' \
+ 'buildtools/third_party/libc++' \
+ 'buildtools/third_party/libc++abi' \
+ 'chrome/third_party/mozilla_security_manager' \
+ 'courgette/third_party' \
+ 'net/third_party/mozilla_security_manager' \
+ 'net/third_party/nss' \
+ 'net/third_party/quic' \
+ 'net/third_party/uri_template' \
+ 'third_party/abseil-cpp' \
+ 'third_party/adobe' \
+ 'third_party/angle' \
+ 'third_party/angle/src/common/third_party/base' \
+ 'third_party/angle/src/common/third_party/smhasher' \
+ 'third_party/angle/src/common/third_party/xxhash' \
+ 'third_party/angle/src/third_party/compiler' \
+ 'third_party/angle/src/third_party/libXNVCtrl' \
+ 'third_party/angle/src/third_party/trace_event' \
+ 'third_party/angle/third_party/glslang' \
+ 'third_party/angle/third_party/spirv-headers' \
+ 'third_party/angle/third_party/spirv-tools' \
+ 'third_party/angle/third_party/vulkan-headers' \
+ 'third_party/angle/third_party/vulkan-loader' \
+ 'third_party/angle/third_party/vulkan-tools' \
+ 'third_party/angle/third_party/vulkan-validation-layers' \
+ 'third_party/apple_apsl' \
+ 'third_party/axe-core' \
+ 'third_party/blanketjs' \
+ '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/boringssl/linux-aarch64/crypto/third_party/sike' \
+ 'third_party/breakpad' \
+ 'third_party/breakpad/breakpad/src/third_party/curl' \
+ 'third_party/brotli' \
+ 'third_party/cacheinvalidation' \
+ 'third_party/catapult' \
+ 'third_party/catapult/common/py_vulcanize/third_party/rcssmin' \
+ 'third_party/catapult/common/py_vulcanize/third_party/rjsmin' \
+ 'third_party/catapult/third_party/beautifulsoup4' \
+ 'third_party/catapult/third_party/html5lib-python' \
+ 'third_party/catapult/third_party/polymer' \
+ 'third_party/catapult/third_party/six' \
+ 'third_party/catapult/tracing/third_party/d3' \
+ 'third_party/catapult/tracing/third_party/gl-matrix' \
+ 'third_party/catapult/tracing/third_party/jszip' \
+ 'third_party/catapult/tracing/third_party/mannwhitneyu' \
+ 'third_party/catapult/tracing/third_party/oboe' \
+ 'third_party/catapult/tracing/third_party/pako' \
+ 'third_party/ced' \
+ 'third_party/cld_3' \
+ 'third_party/closure_compiler' \
+ 'third_party/crashpad' \
+ 'third_party/crashpad/crashpad/third_party/lss' \
+ 'third_party/crashpad/crashpad/third_party/zlib/' \
+ 'third_party/crc32c' \
+ 'third_party/cros_system_api' \
+ 'third_party/dav1d' \
+ 'third_party/dawn' \
+ 'third_party/devscripts' \
+ 'third_party/dom_distiller_js' \
+ 'third_party/emoji-segmenter' \
+ 'third_party/expat' \
+ 'third_party/ffmpeg' \
+ 'third_party/flac' \
+ 'third_party/flatbuffers' \
+ 'third_party/flot' \
+ 'third_party/fontconfig' \
+ 'third_party/freetype' \
+ 'third_party/google_input_tools' \
+ 'third_party/google_input_tools/third_party/closure_library' \
+ 'third_party/google_input_tools/third_party/closure_library/third_party/closure' \
+ 'third_party/google_trust_services' \
+ 'third_party/googletest' \
+ 'third_party/glslang' \
+ 'third_party/grpc' \
+ 'third_party/grpc/src/third_party/nanopb' \
+ 'third_party/harfbuzz-ng' \
+ 'third_party/hunspell' \
+ 'third_party/iccjpeg' \
+ 'third_party/icu' \
+ 'third_party/inspector_protocol' \
+ 'third_party/jinja2' \
+ 'third_party/jsoncpp' \
+ 'third_party/jstemplate' \
+ 'third_party/khronos' \
+ 'third_party/leveldatabase' \
+ 'third_party/libXNVCtrl' \
+ 'third_party/libaddressinput' \
+ 'third_party/libaom' \
+ 'third_party/libaom/source/libaom/third_party/vector' \
+ 'third_party/libaom/source/libaom/third_party/x86inc' \
+ 'third_party/libdrm' \
+ 'third_party/libjingle' \
+ 'third_party/libjpeg_turbo' \
+ 'third_party/libphonenumber' \
+ 'third_party/libpng' \
+ 'third_party/libsecret' \
+ 'third_party/libsrtp' \
+ 'third_party/libsync' \
+ 'third_party/libudev' \
+ 'third_party/libusb' \
+ 'third_party/libvpx' \
+ 'third_party/libvpx/source/libvpx/third_party/x86inc' \
+ 'third_party/libxml' \
+ 'third_party/libxml/chromium' \
+ 'third_party/libxslt' \
+ 'third_party/libwebm' \
+ 'third_party/libwebp' \
+ 'third_party/libyuv' \
+%if 0%{?nacl}
+ 'third_party/llvm-build' \
+%endif
+ 'third_party/lss' \
+ 'third_party/lzma_sdk' \
+%if 0
+ 'third_party/markupsafe' \
+%endif
+ 'third_party/mesa' \
+ 'third_party/metrics_proto' \
+ 'third_party/modp_b64' \
+ 'third_party/nasm' \
+ 'third_party/node' \
+ 'third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2' \
+%if %{freeworld}
+ 'third_party/openh264' \
+%endif
+ 'third_party/openscreen' \
+ 'third_party/opus' \
+ 'third_party/ots' \
+ 'third_party/pdfium' \
+ 'third_party/pdfium/third_party/agg23' \
+ 'third_party/pdfium/third_party/base' \
+ 'third_party/pdfium/third_party/bigint' \
+ 'third_party/pdfium/third_party/freetype' \
+ 'third_party/pdfium/third_party/lcms' \
+ 'third_party/pdfium/third_party/libopenjpeg20' \
+ 'third_party/pdfium/third_party/libpng16' \
+ 'third_party/pdfium/third_party/libtiff' \
+ 'third_party/pdfium/third_party/skia_shared' \
+ 'third_party/perfetto' \
+ 'third_party/pffft' \
+ 'third_party/ply' \
+ 'third_party/polymer' \
+ 'third_party/protobuf' \
+ 'third_party/protobuf/third_party/six' \
+ 'third_party/pyjson5' \
+ 'third_party/qcms' \
+ 'third_party/qunit' \
+%if 0%{?bundlere2}
+ 'third_party/re2' \
+%endif
+ 'third_party/rnnoise' \
+ 'third_party/s2cellid' \
+ 'third_party/sfntly' \
+ 'third_party/simplejson' \
+ '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' \
+ 'third_party/smhasher' \
+ 'third_party/snappy' \
+ 'third_party/speech-dispatcher' \
+ 'third_party/spirv-headers' \
+ 'third_party/SPIRV-Tools' \
+ 'third_party/sqlite' \
+ 'third_party/swiftshader' \
+ 'third_party/swiftshader/third_party/subzero' \
+ 'third_party/swiftshader/third_party/llvm-subzero' \
+ 'third_party/swiftshader/third_party/llvm-7.0' \
+ 'third_party/tcmalloc' \
+ 'third_party/test_fonts' \
+ 'third_party/usb_ids' \
+ 'third_party/usrsctp' \
+ 'third_party/vulkan' \
+ 'third_party/web-animations-js' \
+ 'third_party/webdriver' \
+ 'third_party/webrtc' \
+ 'third_party/webrtc/common_audio/third_party/fft4g' \
+ 'third_party/webrtc/common_audio/third_party/spl_sqrt_floor' \
+ 'third_party/webrtc/modules/third_party/fft' \
+ 'third_party/webrtc/modules/third_party/g711' \
+ 'third_party/webrtc/modules/third_party/g722' \
+ 'third_party/webrtc/rtc_base/third_party/base64' \
+ 'third_party/webrtc/rtc_base/third_party/sigslot' \
+ 'third_party/widevine' \
+ 'third_party/woff2' \
+ 'third_party/xdg-utils' \
+ 'third_party/yasm' \
+ 'third_party/zlib' \
+ 'third_party/zlib/google' \
+ 'tools/gn/base/third_party/icu' \
+ 'url/third_party/mozilla' \
+ 'v8/src/third_party/siphash' \
+ 'v8/src/third_party/utf8-decoder' \
+ 'v8/src/third_party/valgrind' \
+ 'v8/third_party/v8' \
+ 'v8/third_party/inspector_protocol' \
+ --do-remove
+
+# Look, I don't know. This package is spit and chewing gum. Sorry.
+rm -rf third_party/markupsafe
+ln -s %{python2_sitearch}/markupsafe third_party/markupsafe
+# We should look on removing other python2 packages as well i.e. ply
+
+# Fix hardcoded path in remoting code
+sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' remoting/host/setup/daemon_controller_delegate_linux.cc
+
+export PATH=$PATH:%{_builddir}/depot_tools
+
+build/linux/unbundle/replace_gn_files.py --system-libraries \
+ flac \
+%if 0%{?bundlefontconfig}
+%else
+ fontconfig \
+%endif
+%if 0%{?bundlefreetype}
+%else
+ freetype \
+%endif
+%if 0%{?bundleharfbuzz}
+%else
+ harfbuzz-ng \
+%endif
+%if 0%{?bundleicu}
+%else
+ icu \
+%endif
+%if %{bundlelibdrm}
+%else
+ libdrm \
+%endif
+%if %{bundlelibjpeg}
+%else
+ libjpeg \
+%endif
+%if %{bundlelibpng}
+%else
+ libpng \
+%endif
+%if %{bundlelibusbx}
+%else
+ libusb \
+%endif
+%if %{bundlelibwebp}
+%else
+ libwebp \
+%endif
+%if %{bundlelibxml}
+%else
+ libxml \
+%endif
+ libxslt \
+%if %{bundleopus}
+%else
+ opus \
+%endif
+%if 0%{?bundlere2}
+%else
+ re2 \
+%endif
+ yasm \
+ zlib
+
+# fix arm gcc
+sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn
+
+%ifarch aarch64
+# We don't need to cross compile while building on an aarch64 system.
+sed -i 's|aarch64-linux-gnu-||g' build/toolchain/linux/BUILD.gn
+
+# Correct the ninja file to check for aarch64, not just x86.
+sed -i '/${LONG_BIT}/ a \ aarch64)\' ../depot_tools/ninja
+sed -i '/aarch64)/ a \ exec "/usr/bin/ninja-build" "$@";;\' ../depot_tools/ninja
+%endif
+sed -i 's|exec "${THIS_DIR}/ninja-linux${LONG_BIT}"|exec "/usr/bin/ninja-build"|g' ../depot_tools/ninja
+
+%if 0%{?rhel} == 7
+. /opt/rh/devtoolset-%{dts_version}/enable
+%endif
+
+# Check that there is no system 'google' module, shadowing bundled ones:
+if python2 -c 'import google ; print google.__path__' 2> /dev/null ; then \
+ echo "Python 2 'google' module is defined, this will shadow modules of this build"; \
+ 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}
+
+%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}
+%endif
+%endif
+
+%{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{remotingtarget}
+
+%if %{bundlelibusbx}
+# no hackity hack hack
+%else
+# hackity hack hack
+rm -rf third_party/libusb/src/libusb/libusb.h
+# we _shouldn't need to do this, but it looks like we do.
+cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
+%endif
+
+# Hard code extra version
+FILE=chrome/common/channel_info_posix.cc
+sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
+
+%build
+%if 0%{?rhel} == 7
+. /opt/rh/devtoolset-%{dts_version}/enable
+%endif
+
+# Now do the full browser
+%if 0%{freeworld}
+../depot_tools/ninja -C %{target} -vvv media
+%else
+%if %{build_headless}
+# Do headless first.
+../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+%endif
+
+../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver clear_key_cdm 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}
+%if 0%{?nacl}
+GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja -vv -C ../out/Release/ remoting_webapp
+%endif
+%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}
+
+%if 0%{freeworld}
+mkdir -p %{buildroot}%{chromium_path}
+
+pushd %{target}
+cp -a libffmpeg.so* %{buildroot}%{chromium_path}
+cp -a libmedia.so* %{buildroot}%{chromium_path}
+mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}}
+mv %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}}
+popd
+%else
+mkdir -p %{buildroot}%{_bindir}
+mkdir -p %{buildroot}%{chromium_path}
+cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+export BUILD_TARGET=`cat /etc/redhat-release`
+export CHROMIUM_PATH=%{chromium_path}
+export CHROMIUM_BROWSER_CHANNEL=%{chromium_browser_channel}
+sed -i "s|@@BUILD_TARGET@@|$BUILD_TARGET|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+sed -i "s|@@CHROMIUM_PATH@@|$CHROMIUM_PATH|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+sed -i "s|@@CHROMIUM_BROWSER_CHANNEL@@|$CHROMIUM_BROWSER_CHANNEL|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+%if "%{chromium_channel}" == "%%{nil}"
+sed -i "s|@@EXTRA_FLAGS@@||g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+%else
+# Enable debug outputs for beta and dev channels
+export EXTRA_FLAGS="--enable-logging=stderr --v=2"
+sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+%endif
+
+ln -s %{chromium_path}/%{chromium_browser_channel}.sh %{buildroot}%{_bindir}/%{chromium_browser_channel}
+mkdir -p %{buildroot}%{_mandir}/man1/
+
+pushd %{target}
+cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
+%if 0%{?nacl}
+cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
+chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe
+%endif
+# 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
+cp -a chrome %{buildroot}%{chromium_path}/%{chromium_browser_channel}
+cp -a chrome_sandbox %{buildroot}%{chromium_path}/chrome-sandbox
+cp -a ../../chrome/app/resources/manpage.1.in %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1
+sed -i "s|@@PACKAGE@@|%{chromium_browser_channel}|g" %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1
+sed -i "s|@@MENUNAME@@|%{chromium_menu_name}|g" %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1
+# V8 initial snapshots
+# https://code.google.com/p/chromium/issues/detail?id=421063
+cp -a natives_blob.bin %{buildroot}%{chromium_path}
+cp -a snapshot_blob.bin %{buildroot}%{chromium_path}
+cp -a v8_context_snapshot.bin %{buildroot}%{chromium_path}
+cp -a xdg-mime xdg-settings %{buildroot}%{chromium_path}
+cp -a MEIPreload %{buildroot}%{chromium_path}
+%if 0%{?shared}
+cp -a lib*.so* %{buildroot}%{chromium_path}
+# cp -p %%{buildroot}%{chromium_path}/libwidevinecdm.so{,.fedora}
+cp -p %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
+cp -p %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}}
+cp -p %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}}
+cp -p %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}}
+%endif
+
+# chromedriver
+cp -a chromedriver %{buildroot}%{chromium_path}/chromedriver
+ln -s %{chromium_path}/chromedriver %{buildroot}%{_bindir}/chromedriver
+
+# Remote desktop bits
+mkdir -p %{buildroot}%{crd_path}
+
+%if 0%{?shared}
+pushd %{buildroot}%{crd_path}
+for i in ../chromium-browser%{?chromium_channel}/lib*.so; do
+ libname=`basename $i`
+ ln -s $i $libname
+done
+popd
+%endif
+popd
+
+pushd %{remotingtarget}
+
+# See remoting/host/installer/linux/Makefile for logic
+cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host
+cp -a remote_assistance_host %{buildroot}%{crd_path}/remote-assistance-host
+cp -a remoting_locales %{buildroot}%{crd_path}/
+cp -a remoting_me2me_host %{buildroot}%{crd_path}/chrome-remote-desktop-host
+cp -a remoting_start_host %{buildroot}%{crd_path}/start-host
+cp -a remoting_user_session %{buildroot}%{crd_path}/user-session
+chmod +s %{buildroot}%{crd_path}/user-session
+
+# chromium
+mkdir -p %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts
+# google-chrome
+mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/
+cp -a remoting/* %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/
+for i in %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/*.json; do
+ sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' $i
+done
+mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts
+pushd %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts
+for i in ../../../chromium/native-messaging-hosts/*; do
+# rpm gets unhappy when we symlink here
+ cp -a $i .
+done
+popd
+popd
+
+mkdir -p %{buildroot}/var/lib/chrome-remote-desktop
+touch %{buildroot}/var/lib/chrome-remote-desktop/hashes
+
+mkdir -p %{buildroot}%{_sysconfdir}/pam.d/
+pushd %{buildroot}%{_sysconfdir}/pam.d/
+ln -s system-auth chrome-remote-desktop
+popd
+
+%if 0%{?build_remoting_app}
+%if 0%{?nacl}
+cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
+%endif
+%endif
+
+%if %{build_headless}
+pushd %{headlesstarget}
+cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
+popd
+%endif
+
+cp -a remoting/host/linux/linux_me2me_host.py %{buildroot}%{crd_path}/chrome-remote-desktop
+cp -a remoting/host/installer/linux/is-remoting-session %{buildroot}%{crd_path}/
+
+mkdir -p %{buildroot}%{_unitdir}
+cp -a %{SOURCE11} %{buildroot}%{_unitdir}/
+sed -i 's|@@CRD_PATH@@|%{crd_path}|g' %{buildroot}%{_unitdir}/chrome-remote-desktop@.service
+
+# Add directories for policy management
+mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/managed
+mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/recommended
+
+cp -a out/Release/gen/chrome/app/policy/common/html/en-US/*.html .
+cp -a out/Release/gen/chrome/app/policy/linux/examples/chrome.json .
+
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps
+cp -a chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps
+cp -a chrome/app/theme/chromium/product_logo_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{chromium_browser_channel}.png
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
+cp -a chrome/app/theme/chromium/product_logo_64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{chromium_browser_channel}.png
+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}
+install -m 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/%{name}/
+
+mkdir -p %{buildroot}%{_datadir}/applications/
+desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4}
+
+install -D -m0644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml ${RPM_BUILD_ROOT}%{_datadir}/metainfo/%{chromium_browser_channel}.appdata.xml
+appstream-util validate-relax --nonet ${RPM_BUILD_ROOT}%{_datadir}/metainfo/%{chromium_browser_channel}.appdata.xml
+
+mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+
+mkdir -p %{buildroot}%{chromium_path}/PepperFlash
+
+# freeworld conditional
+%endif
+
+%post
+# Set SELinux labels - semanage itself will adjust the lib directory naming
+# But only do it when selinux is enabled, otherwise, it gets noisy.
+if selinuxenabled; then
+ semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}
+ semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}/%{chromium_browser_channel}.sh
+ semanage fcontext -a -t chrome_sandbox_exec_t /usr/lib/chrome-sandbox
+ restorecon -R -v %{chromium_path}/%{chromium_browser_channel}
+fi
+
+%pretrans -n chrome-remote-desktop -p <lua>
+path = "/etc/opt/chrome/native-messaging-hosts"
+st = posix.stat(path)
+if st and st.type == "link" then
+ os.remove(path)
+end
+
+%if %{freeworld}
+%posttrans -n chromium-libs-media-freeworld
+%{_sbindir}/update-alternatives --install \
+ %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
+ --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \
+ %{_libdir}/chromium-browser/libffmpeg.so.TOC.freeworld \
+ --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \
+ %{_libdir}/chromium-browser/libmedia.so.freeworld \
+ --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
+ %{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
+
+%preun -n chromium-libs-media-freeworld
+if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.freeworld
+fi
+%else
+%posttrans libs-media
+%{_sbindir}/update-alternatives --install \
+ %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.fedora 10 \
+ --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \
+ %{_libdir}/chromium-browser/libffmpeg.so.TOC.fedora \
+ --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \
+ %{_libdir}/chromium-browser/libmedia.so.fedora \
+ --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
+ %{_libdir}/chromium-browser/libmedia.so.TOC.fedora
+
+%preun libs-media
+if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.fedora
+fi
+%endif
+
+%pre -n chrome-remote-desktop
+getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-desktop
+
+%post -n chrome-remote-desktop
+%systemd_post chrome-remote-desktop@.service
+
+%preun -n chrome-remote-desktop
+%systemd_preun chrome-remote-desktop@.service
+
+%postun -n chrome-remote-desktop
+%systemd_postun_with_restart chrome-remote-desktop@.service
+
+%if 0%{freeworld}
+# We only build libs-media-freeworld.
+%else
+
+%files
+%doc AUTHORS
+%doc chrome_policy_list.html *.json
+%license LICENSE
+%config %{_sysconfdir}/%{name}/
+# %%dir %%{_sysconfdir}/%%{name}/native-messaging-hosts
+# This is chrome-remote-desktop stuff
+%exclude %{_sysconfdir}/%{name}/native-messaging-hosts/*
+%{_bindir}/%{chromium_browser_channel}
+%dir %{chromium_path}
+%{chromium_path}/*.bin
+%{chromium_path}/chrome_*.pak
+%{chromium_path}/resources.pak
+%{chromium_path}/icudtl.dat
+%{chromium_path}/%{chromium_browser_channel}
+%{chromium_path}/%{chromium_browser_channel}.sh
+%{chromium_path}/MEIPreload/
+%ifarch x86_64 i686 aarch64
+%{chromium_path}/swiftshader/
+%endif
+%if 0%{?nacl}
+%{chromium_path}/nacl_helper*
+%{chromium_path}/*.nexe
+%{chromium_path}/pnacl/
+%{chromium_path}/tls_edit
+%endif
+%dir %{chromium_path}/PepperFlash/
+%if 0
+%{chromium_path}/protoc
+%endif
+# %%{chromium_path}/remoting_locales/
+# %%{chromium_path}/pseudo_locales/
+# %%{chromium_path}/plugins/
+%attr(4755, root, root) %{chromium_path}/chrome-sandbox
+%{chromium_path}/xdg-mime
+%{chromium_path}/xdg-settings
+%{_mandir}/man1/%{chromium_browser_channel}.*
+%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png
+%{_datadir}/applications/*.desktop
+%{_datadir}/metainfo/*.appdata.xml
+%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
+
+%files common
+%if %{build_headless}
+%{chromium_path}/headless_lib.pak
+%endif
+# %%{chromium_path}/mus_app_resources_*.pak
+%if 0
+%{chromium_path}/pyproto/
+%endif
+%{chromium_path}/resources/
+%dir %{chromium_path}/locales/
+%lang(am) %{chromium_path}/locales/am.pak*
+%lang(ar) %{chromium_path}/locales/ar.pak*
+%lang(bg) %{chromium_path}/locales/bg.pak*
+%lang(bn) %{chromium_path}/locales/bn.pak*
+%lang(ca) %{chromium_path}/locales/ca.pak*
+%lang(cs) %{chromium_path}/locales/cs.pak*
+%lang(da) %{chromium_path}/locales/da.pak*
+%lang(de) %{chromium_path}/locales/de.pak*
+%lang(el) %{chromium_path}/locales/el.pak*
+%lang(en_GB) %{chromium_path}/locales/en-GB.pak*
+# Chromium _ALWAYS_ needs en-US.pak as a fallback
+# This means we cannot apply the lang code here.
+# Otherwise, it is filtered out on install.
+%{chromium_path}/locales/en-US.pak*
+%lang(es) %{chromium_path}/locales/es.pak*
+%lang(es) %{chromium_path}/locales/es-419.pak*
+%lang(et) %{chromium_path}/locales/et.pak*
+%lang(fa) %{chromium_path}/locales/fa.pak*
+%lang(fi) %{chromium_path}/locales/fi.pak*
+%lang(fil) %{chromium_path}/locales/fil.pak*
+%lang(fr) %{chromium_path}/locales/fr.pak*
+%lang(gu) %{chromium_path}/locales/gu.pak*
+%lang(he) %{chromium_path}/locales/he.pak*
+%lang(hi) %{chromium_path}/locales/hi.pak*
+%lang(hr) %{chromium_path}/locales/hr.pak*
+%lang(hu) %{chromium_path}/locales/hu.pak*
+%lang(id) %{chromium_path}/locales/id.pak*
+%lang(it) %{chromium_path}/locales/it.pak*
+%lang(ja) %{chromium_path}/locales/ja.pak*
+%lang(kn) %{chromium_path}/locales/kn.pak*
+%lang(ko) %{chromium_path}/locales/ko.pak*
+%lang(lt) %{chromium_path}/locales/lt.pak*
+%lang(lv) %{chromium_path}/locales/lv.pak*
+%lang(ml) %{chromium_path}/locales/ml.pak*
+%lang(mr) %{chromium_path}/locales/mr.pak*
+%lang(ms) %{chromium_path}/locales/ms.pak*
+%lang(nb) %{chromium_path}/locales/nb.pak*
+%lang(nl) %{chromium_path}/locales/nl.pak*
+%lang(pl) %{chromium_path}/locales/pl.pak*
+%lang(pt_BR) %{chromium_path}/locales/pt-BR.pak*
+%lang(pt_PT) %{chromium_path}/locales/pt-PT.pak*
+%lang(ro) %{chromium_path}/locales/ro.pak*
+%lang(ru) %{chromium_path}/locales/ru.pak*
+%lang(sk) %{chromium_path}/locales/sk.pak*
+%lang(sl) %{chromium_path}/locales/sl.pak*
+%lang(sr) %{chromium_path}/locales/sr.pak*
+%lang(sv) %{chromium_path}/locales/sv.pak*
+%lang(sw) %{chromium_path}/locales/sw.pak*
+%lang(ta) %{chromium_path}/locales/ta.pak*
+%lang(te) %{chromium_path}/locales/te.pak*
+%lang(th) %{chromium_path}/locales/th.pak*
+%lang(tr) %{chromium_path}/locales/tr.pak*
+%lang(uk) %{chromium_path}/locales/uk.pak*
+%lang(vi) %{chromium_path}/locales/vi.pak*
+%lang(zh_CN) %{chromium_path}/locales/zh-CN.pak*
+%lang(zh_TW) %{chromium_path}/locales/zh-TW.pak*
+
+%if %{build_headless}
+%files headless
+%{chromium_path}/headless_shell
+%endif
+
+%if 0%{?shared}
+%files libs
+%exclude %{chromium_path}/libffmpeg.so*
+%exclude %{chromium_path}/libmedia.so*
+# %%exclude %%{chromium_path}/libwidevinecdm.so
+%{chromium_path}/lib*.so*
+%endif
+
+%files -n chrome-remote-desktop
+%{crd_path}/chrome-remote-desktop
+%{crd_path}/chrome-remote-desktop-host
+%{crd_path}/is-remoting-session
+%if 0%{?shared}
+%{crd_path}/lib*.so
+%endif
+%{crd_path}/native-messaging-host
+%{crd_path}/remote-assistance-host
+%{_sysconfdir}/pam.d/chrome-remote-desktop
+%{_sysconfdir}/chromium/native-messaging-hosts/*
+%{_sysconfdir}/opt/chrome/
+%{crd_path}/remoting_locales/
+%{crd_path}/start-host
+%{crd_path}/user-session
+%{_unitdir}/chrome-remote-desktop@.service
+/var/lib/chrome-remote-desktop/
+%if 0%{?build_remoting_app}
+%if 0%{?nacl}
+%{chromium_path}/remoting_client_plugin_newlib.*
+%endif
+%endif
+
+%files -n chromedriver
+%doc AUTHORS
+%license LICENSE
+%{_bindir}/chromedriver
+%{chromium_path}/chromedriver
+
+%endif
+
+%if 0%{?shared}
+%if %{freeworld}
+%files -n chromium-libs-media-freeworld
+%else
+%files libs-media
+%endif
+%{chromium_path}/libffmpeg.so.%{lsuffix}*
+%{chromium_path}/libffmpeg.so.TOC.%{lsuffix}*
+%{chromium_path}/libmedia.so.%{lsuffix}*
+%{chromium_path}/libmedia.so.TOC.%{lsuffix}*
+%endif
+
+
+%changelog
+* Tue Aug 13 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.100-1
+- Update to 76.0.3809.100
+
+* Wed Jul 24 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 75.0.3770.100-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Tue Jul 2 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.100-3
+- apply upstream fix to resolve issue where it is dangerous to post a
+ task with a RenderProcessHost pointer because the RenderProcessHost
+ can go away before the task is run (causing a segfault).
+
+* Tue Jun 25 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.100-2
+- fix v8 compile with gcc
+
+* Thu Jun 20 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.100-1
+- update to 75.0.3770.100
+
+* Fri Jun 14 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.90-1
+- update to 75.0.3770.90
+
+* Wed Jun 5 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.80-1
+- update to 75.0.3770.80
+- disable vaapi (via conditional), too broken
+
+* Fri May 31 2019 Tom Callaway <spot(a)fedoraproject.org> - 74.0.3729.169-1
+- update to 74.0.3729.169
+
+* Thu Apr 11 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.103-1
+- update to 73.0.3683.103
+- add CLONE_VFORK logic to seccomp filter for linux to handle glibc 2.29 change
+
+* Wed Mar 27 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-2
+- remove lang macro from en-US.pak* because Chromium crashes if it is not present
+ (bz1692660)
+
+* Fri Mar 22 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.86-1
+- update to 73.0.3683.86
+
+* Tue Mar 19 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.75-2
+- do not include pyproto/protoc files in package
+
+* Tue Mar 12 2019 Tom Callaway <spot(a)fedoraproject.org> - 73.0.3683.75-1
+- update to 73.0.3683.75
+
+* Sat Mar 9 2019 Tom Callaway <spot(a)fedoraproject.org> - 72.0.3626.121-1
+- update to 72.0.3626.121
+
+* Tue Feb 26 2019 Tom Callaway <spot(a)fedoraproject.org> - 71.0.3578.98-5
+- rebuild for libva api change
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 71.0.3578.98-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Jan 21 2019 Tom Callaway <spot(a)fedoraproject.org> - 71.0.3578.98-3
+- rebuild with widevine fix
+
+* Tue Jan 8 2019 Tom Callaway <spot(a)fedoraproject.org> - 71.0.3578.98-2
+- drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
+
+* Fri Dec 14 2018 Tom Callaway <spot(a)fedoraproject.org> - 71.0.3578.98-1
+- update to 71.0.3578.98
+
+* Tue Nov 27 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.110-2
+- enable vaapi support (thanks to Akarshan Biswas for doing the hard work here)
+
+* Mon Nov 26 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.110-1
+- update to .110
+
+* Wed Nov 7 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.77-4
+- fix library requires filtering
+
+* Tue Nov 6 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.77-3
+- fix build with harfbuzz2 in rawhide
+
+* Mon Nov 5 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.77-2
+- drop jumbo_file_merge_limit to 8 to (hopefully) avoid OOMs on aarch64
+
+* Fri Nov 2 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.77-1
+- .77 came out while I was working on this. :/
+
+* Fri Nov 2 2018 Tom Callaway <spot(a)fedoraproject.org> - 70.0.3538.67-1
+- update to 70
+
+* Tue Oct 16 2018 Tom Callaway <spot(a)fedoraproject.org> - 69.0.3497.100-2
+- do not play with fonts on freeworld builds
+
+* Thu Oct 4 2018 Tom Callaway <spot(a)fedoraproject.org> - 69.0.3497.100-1
+- update to 69.0.3497.100
+
+* Wed Sep 12 2018 Tom Callaway <spot(a)fedoraproject.org> - 69.0.3497.92-1
+- update to 69.0.3497.92
+
+* Wed Sep 5 2018 Tom Callaway <spot(a)fedoraproject.org> - 69.0.3497.81-1
+- update to 69.0.3497.81
+
+* Tue Aug 28 2018 Patrik Novotný <panovotn(a)redhat.com> - 68.0.3440.106-4
+- change requires to minizip-compat(-devel), rhbz#1609830, rhbz#1615381
+
+* Sun Aug 19 2018 Tom Callaway <spot(a)fedoraproject.org> - 68.0.3440.106-3
+- fix library filters
+
+* Fri Aug 17 2018 Tom Callaway <spot(a)fedoraproject.org> - 68.0.3440.106-2
+- fix error with defaulting on redeclaration
+
+* Thu Aug 9 2018 Tom Callaway <spot(a)fedoraproject.org> - 68.0.3440.106-1
+- update to 68.0.3440.106
+
+* Wed Aug 8 2018 Tom Callaway <spot(a)fedoraproject.org> - 68.0.3440.84-1
+- update to 68.0.3440.84
+
+* Mon Jul 30 2018 Tom Callaway <spot(a)fedoraproject.org> - 68.0.3440.75-1
+- update to 68.0.3440.75
+
+* Thu Jul 12 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 67.0.3396.99-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Mon Jul 9 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.99-1
+- update to 67.0.3396.99
+
+* Mon Jun 25 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.87-2
+- add "Fedora" to the user agent string
+
+* Tue Jun 19 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.87-1
+- update to 67.0.3396.87
+
+* Thu Jun 7 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.79-1
+- update to 67.0.3396.79
+
+* Wed Jun 6 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.62-2
+- work around bug in RHEL7 python exec
+
+* Wed May 30 2018 Tom Callaway <spot(a)fedoraproject.org> 67.0.3396.62-1
+- 67 releases of chromium on the wall...
+
+* Tue May 29 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.181-3
+- also filter out fontconfig on epel7
+
+* Wed May 23 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.181-2
+- fix missing files
+
+* Mon May 21 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.181-1
+- update to 66.0.3359.181
+
+* Tue May 15 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.170-2
+- only x86_64 i686 have swiftshader
+- fix gcc8 alignof issue on i686
+
+* Mon May 14 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.170-1
+- update to 66.0.3359.170
+- include swiftshader files
+
+* Tue May 1 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.139-1
+- update to 66.0.3359.139
+
+* Wed Apr 18 2018 Tom Callaway <spot(a)fedoraproject.org> 66.0.3359.117-1
+- update to 66.0.3359.117
+
+* Tue Apr 17 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.181-3
+- use system fontconfig (except on epel7)
+
+* Wed Apr 4 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.181-2
+- add explicit dependency on minizip (bz 1534282)
+
+* Wed Mar 28 2018 Tom Callaway <spot(a)fedoraproject.org>
+- check that there is no system 'google' module, shadowing bundled ones
+- conditionalize api keys (on by default)
+
+* Wed Mar 21 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.181-1
+- update to 65.0.3325.181
+
+* Mon Mar 19 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.162-3
+- use bundled libdrm on epel7
+
+* Fri Mar 16 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.162-2
+- disable StartupNotify in chromium-browser.desktop (not in google-chrome desktop file)
+ (bz1545241)
+- use bundled freetype on epel7
+
+* Wed Mar 14 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.162-1
+- update to 65.0.3325.162
+
+* Wed Mar 7 2018 Tom Callaway <spot(a)fedoraproject.org> 65.0.3325.146-1
+- update to 65.0.3325.146
+
+* Mon Mar 5 2018 Tom Callaway <spot(a)fedoraproject.org> 64.0.3282.186-1
+- update to 64.0.3282.186
+
+* Fri Feb 16 2018 Tom Callaway <spot(a)fedoraproject.org> 64.0.3282.167-1
+- update to 64.0.3282.167
+- include workaround for gcc8 bug in gn
+- disable unnecessary aarch64 glibc symbol change
+
+* Fri Feb 2 2018 Tom Callaway <spot(a)fedoraproject.org> 64.0.3282.140-1
+- update to 64.0.3282.140
+
+* Thu Feb 1 2018 Tom Callaway <spot(a)fedoraproject.org> 64.0.3282.119-2
+- include user-session binary in chrome-remote-desktop subpackage
+
+* Thu Jan 25 2018 Tom Callaway <spot(a)fedoraproject.org> 64.0.3282.119-1
+- update to 64.0.3282.119
+
+* Fri Dec 15 2017 Tomas Popela <tpopela(a)redhat.com> 63.0.3239.108-1
+- Update to 63.0.3239.108
+
+* Thu Dec 7 2017 Tom Callaway <spot(a)fedoraproject.org> 63.0.3239.84-1
+- update to 63.0.3239.84
+
+* Wed Nov 8 2017 Tom Callaway <spot(a)fedoraproject.org> 62.0.3202.89-1
+- update to 62.0.3202.89
+
+* Fri Oct 27 2017 Tom Callaway <spot(a)fedoraproject.org> 62.0.3202.75-1
+- update to 62.0.3202.75
+- use devtoolset-7-toolchain to build on epel7
+
+* Tue Oct 24 2017 Tom Callaway <spot(a)fedoraproject.org> 62.0.3202.62-1.1
+- do not attempt std=c++14 on epel7
+
+* Wed Oct 18 2017 Tom Callaway <spot(a)fedoraproject.org> 62.0.3202.62-1
+- update to 62.0.3202.62
+
+* Fri Sep 22 2017 Tom Callaway <spot(a)fedoraproject.org> 61.0.3163.100-1
+- update to 61.0.3163.100
+- lots of epel7 specific fixes
+- use bundled libpng on epel7
+
+* Wed Sep 6 2017 Tom Callaway <spot(a)fedoraproject.org> 61.0.3163.79-1
+- update to 61.0.3163.79
+
+* Mon Aug 28 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.113-2
+- disable aarch64 on rhel7, missing libatomic.so for some reason
+
+* Wed Aug 23 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.113-1
+- fix ffmpeg clean script to not delete aarch64 file
+- update to 60.0.3112.113
+
+* Wed Aug 23 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.101-3
+- apply aarch64 fixes from Ryan Blakely <rblakely(a)redhat.com>
+
+* Thu Aug 17 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.101-2
+- fix dep issue with chrome-remote-desktop on el7
+
+* Wed Aug 16 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.101-1
+- update to 60.0.3112.101
+- apply upstream fix for cameras which report zero resolution formats
+ (bz1465357)
+
+* Mon Aug 14 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-3
+- apply more workarounds to coax code to build with epel7 gcc
+
+* Wed Aug 9 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-2
+- apply post 60 code commit to get code building on epel7
+
+* Fri Aug 4 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-1
+- update to 60.0.3112.90
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 59.0.3071.115-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Mon Jul 31 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.78-1
+- update to 60.0.3112.78
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 59.0.3071.115-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-4
+- put common files in -common subpackage
+- build headless_shell for -headless subpackage
+
+* Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-3
+- use posttrans to ensure that old libs are gone before trying to make alternative symlinks
+
+* Thu Jul 13 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-2
+- fix scriptlets
+
+* Wed Jul 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-1
+- 59.0.3071.115
+- conditionalize spec so it can be easily used to make -libs-media-freeworld
+
+* Wed Jun 28 2017 Dominik Mierzejewski <dominik(a)greysector.net> 59.0.3071.109-6
+- use alternatives for widevine stub and media libs to allow third-party
+ packages to replace them without conflicts
+
+* Mon Jun 26 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-5
+- fix path in pretrans scriptlet
+
+* Fri Jun 23 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-4
+- copy files into /etc/opt/chrome/native-messaging-hosts instead of making symlinks
+ this results in duplicate copies of the same files, but eh. making rpm happy.
+
+* Fri Jun 23 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-3
+- use pretrans scriptlet to remove symlink on /etc/opt/chrome/native-messaging-hosts
+ (it is now a directory)
+
+* Thu Jun 22 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-2
+- fix duplication between chrome-remote-desktop and chromium
+
+* Thu Jun 22 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-1
+- update to .109
+- fix native-messaging-hosts dir to be a true dir instead of a symlink
+
+* Fri Jun 16 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.104-1
+- update to .104
+
+* Fri Jun 16 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-4
+- actually fix mp3 playback support
+
+* Tue Jun 13 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-3
+- fix filtering
+
+* Mon Jun 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-2
+- pnacl/nacl now needs llvm to build the bootstrap lib
+
+* Mon Jun 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-1
+- update to 59.0.3071.86
+- include smaller logo files
+
+* Tue May 16 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.110-2
+- strip provides/requires on libsensors
+
+* Mon May 15 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.110-1
+- update to 58.0.3029.110
+
+* Mon May 8 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.96-1
+- update to 58.0.3029.96
+
+* Fri Apr 21 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.81-1
+- update to 58.0.3029.81
+
+* Thu Mar 30 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.133-1
+- update to 57.0.2987.133
+
+* Sun Mar 26 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-4
+- copy compat stdatomic.h in for RHEL. Re-enable mp3 enablement.
+- fix issue in gtk_ui.cc revealed by RHEL build
+
+* Sun Mar 26 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-3
+- fix mp3 enablement
+- disable mp3 enablement on RHEL (compiler too old)
+
+* Tue Mar 21 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-2
+- fix privlibs
+
+* Mon Mar 20 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-1
+- update to 57.0.2987.110
+
+* Tue Mar 14 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.98-1
+- update to 57.0.2987.98
+
+* Sun Mar 5 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-8
+- enable mp3 support
+
+* Sat Mar 4 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-7
+- fix desktop file to have "new window" and "new private window" actions
+
+* Tue Feb 28 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-6
+- fix issue with gcc7 compile in v8 (thanks to Ben Noordhuis)
+
+* Fri Feb 24 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-5
+- versioning sync build on rawhide
+
+* Fri Feb 24 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-4.1
+- fix issue with unique_ptr move on return with old gcc
+
+* Tue Feb 21 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-4
+- disable debuginfo
+
+* Mon Feb 13 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-3
+- fix compilation issue
+- build third_party/WebKit with -fpermissive
+- use bundled jinja everywhere
+
+* Fri Feb 10 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-2
+- add BR: gtk3-devel
+
+* Fri Feb 10 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-1
+- update to 56.0.2924.87
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 55.0.2883.87-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Tue Dec 13 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.87-1.1
+- use bundled jinja2 on RHEL (or Fedora older than 23)
+- fix rvalue issue in remoting code
+
+* Tue Dec 13 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.87-1
+- update to 55.0.2883.87
+
+* Mon Dec 12 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.75-1
+- update to 55.0.2883.75
+
+* Fri Dec 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.100-1
+- update to 54.0.2840.100
+
+* Fri Nov 4 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-3
+- when use_aura is on, chrome/browser needs to link to ui/snapshot
+
+* Wed Nov 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-2
+- export setOpaque in cc_blink
+
+* Wed Nov 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-1
+- update to 54.0.2840.90
+- undo ld manipulation for i686, just use -g1 there
+
+* Tue Nov 1 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.71-2
+- disable debugging
+
+* Wed Oct 26 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.71-1
+- update to 54.0.2840.71
+
+* Wed Oct 26 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.59-2
+- fix deps
+
+* Thu Oct 13 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.59-1
+- 54.0.2840.59
+- use bundled opus, libevent
+
+* Fri Sep 30 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.143-1
+- 53.0.2785.143
+
+* Tue Sep 20 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.116-1
+- 53.0.2785.116
+
+* Wed Sep 14 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.113-1
+- 53.0.2785.113
+
+* Thu Sep 8 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.101-1
+- 53.0.2785.101
+- happy star trek day. live long and prosper.
+
+* Wed Sep 7 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.92-1
+- add basic framework for gn tooling (disabled because it doesn't work yet)
+- update to 53.0.2785.92
+- fix HOME environment issue in chrome-remote-desktop service file
+
+* Mon Aug 29 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-11
+- conditionalize Requires: u2f-hidraw-policy so that it is only used on Fedora
+- use bundled harfbuzz on EL7
+
+* Thu Aug 18 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-10
+- disable gtk3 because it breaks lots of things
+- re-enable hidpi setting
+
+* Tue Aug 16 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-9
+- filter out Requires/Provides for chromium-only libs and plugins
+
+* Tue Aug 16 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-8
+- fix path on Requires(post) line for semanage
+
+* Mon Aug 15 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-7
+- add Requires(post) items for selinux scriptlets
+
+* Mon Aug 15 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-6
+- disable the "hidpi" setting
+- unset MADV_FREE if set (should get F25+ working again)
+
+* Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-5
+- do not package libwidevinecdm*.so, they are just empty shells
+ instead, to enable widevine, get these files from Google Chrome
+
+* Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-4
+- add "freeworld" conditional for testing netflix/widevine
+
+* Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-3
+- move PepperFlash directory out of the nacl conditional (thanks to churchyard)
+- fix widevine (thanks to David Vásquez and UnitedRPMS)
+
+* Wed Aug 10 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-2
+- include clearkeycdm and widevinecdm files in libs-media
+
+* Mon Aug 8 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-1
+- update to 52.0.2743.116
+
+* Thu Aug 4 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-13
+- change libs split to "libs-media", as that actually works.
+- add PepperFlash directory (nothing in it though, sorry)
+
+* Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-12
+- split out libs package beyond ffmpeg, into libs and libs-content
+- fix libusbx conditional for el7 to not nuke libusb headers
+- disable speech-dispatcher header prefix setting if not fedora (el7)
+
+* Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-11
+- split out chromium-libs-ffmpeg so it can be easily replaced
+- conditionalize opus and libusbx for el7
+
+* Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-10
+- Add ICU Text Codec aliases (from openSUSE via Russian Fedora)
+- Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
+- Enable ARM CPU detection for webrtc (from archlinux via Russian Fedora)
+- Do not force -m32 in icu compile on ARM (from archlinux via Russian Fedora)
+- Enable gtk3 support (via conditional)
+- Enable fpic on linux
+- Enable hidpi
+- Force aura on
+- Enable touch_ui
+- Add chromedriver subpackage (from Russian Fedora)
+- Set default master_preferences location to /etc/chromium
+- Add master_preferences file as config file
+- Improve chromium-browser.desktop (from Russian Fedora)
+
+* Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-9
+- fix conditional to disable verbose logging output unless beta/dev
+
+* Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-8
+- disable nacl/pnacl for Fedora 23 (and older)
+
+* Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-7
+- fix post scriptlet so that selinux stuff only happens when selinux is enabled
+
+* Thu Jul 28 2016 Richard Hughes <richard(a)hughsie.com> 52.0.2743.82-6
+- Add an AppData file so that Chromium appears in the software center
+
+* Wed Jul 27 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-5
+- enable nacl/pnacl (chromium-native_client has landed in Fedora)
+- fix chromium-browser.sh to report Fedora build target properly
+
+* Wed Jul 27 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-4
+- compile with -fno-delete-null-pointer-checks (fixes v8 crashes, nacl/pnacl)
+- turn nacl/pnacl off until chromium-native_client lands in Fedora
+
+* Tue Jul 26 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-3
+- turn nacl back on for x86_64
+
+* Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-2
+- fix cups 2.2 support
+- try to enable widevine compatibility (you still need to get the binary .so files from chrome)
+
+* Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-1
+- update to 52.0.2743.82
+- handle locales properly
+- cleanup spec
+
+* Tue Jul 19 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.75-1
+- update to 52.0.2743.75
+
+* Wed Jul 6 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.60-1
+- bump to 52.0.2743.60, disable nacl for now
+
+* Mon May 9 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2723.2-1
+- force to dev to see if it works better on F24+
+
+* Wed May 4 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-6
+- apply upstream fix for https://bugs.chromium.org/p/chromium/issues/detail?id=604534
+
+* Tue May 3 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-5
+- use bundled re2 (conditionalize it)
+
+* Tue May 3 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-4
+- disable asan (it never quite built)
+- do not preserve re2 bundled tree, causes header/library mismatch
+
+* Mon May 2 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-3
+- enable AddressSanize (ASan) for debugging
+
+* Sat Apr 30 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-2
+- use bundled icu always. *sigh*
+
+* Fri Apr 29 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-1
+- update to 50.0.2661.94
+
+* Wed Apr 27 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.86-1
+- update to 50.0.2661.86
+
+* Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-4
+- protect third_party/woff2
+
+* Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-3
+- add BuildRequires: libffi-devel
+
+* Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-2
+- explicitly disable sysroot
+
+* Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-1
+- update to 49.0.2623.87
+
+* Mon Feb 29 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-3
+- Happy Leap Day!
+- add Requires: u2f-hidraw-policy for u2f token support
+- add Requires: xorg-x11-server-Xvfb for chrome-remote-desktop
+
+* Fri Feb 26 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-2
+- fix icu BR
+
+* Wed Feb 24 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-1
+- Update to 48.0.2564.116
+- conditionalize icu properly
+- fix libusbx handling (bz1270324)
+
+* Wed Feb 17 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.103-2
+- fixes for gcc6
+
+* Mon Feb 8 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.103-1
+- update to 48.0.2564.103
+- use bundled libsrtp (because upstream has coded themselves into an ugly corner)
+
+* Fri Jan 22 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.82-1
+- update to 48.0.2564.82
+
+* Fri Jan 15 2016 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.111-1
+- update to 47.0.2526.111
+
+* Thu Jan 07 2016 Tomas Popela <tpopela(a)redhat.com> 47.0.2526.106-2
+- compare hashes when downloading the tarballs
+- Google started to include the Debian sysroots in tarballs - remove them while
+ processing the tarball
+- add a way to not use the system display server for tests instead of Xvfb
+- update the depot_tools checkout to get some GN fixes
+- use the remove_bundled_libraries script
+- update the clean_ffmpeg script to print errors when some files that we are
+ processing are missing
+- update the clean_ffmpeg script to operate on tarball's toplevel folder
+- don't show comments as removed tests in get_linux_tests_names script
+- rework the process_ffmpeg_gyp script (also rename it to
+ get_free_ffmpeg_source_files) to use the GN files insted of GYP (but we still
+ didn't switched to GN build)
+
+* Wed Dec 16 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.106-1
+- update to 47.0.2526.106
+
+* Tue Dec 15 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-4
+- entirely patch out the broken fd counter from the nacl loader code
+ killing it with fire would be better, but then chromium is on fire
+ and that somehow makes it worse.
+
+* Mon Dec 14 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-3
+- revert nacl fd patch (now we see 6 fds! 6 LIGHTS!)
+
+* Fri Dec 11 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-2
+- build everything shared, but when we do shared builds, make -libs subpackage
+- make chrome-remote-desktop dep on -libs subpackage in shared builds
+
+* Wed Dec 9 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-1
+- update to 47.0.2526.80
+- only build ffmpeg shared, not any other libs
+ this is because if we build the other libs shared, then our
+ chrome-remote-desktop build deps on those libs and we do not want that
+
+* Tue Dec 8 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.73-2
+- The nacl loader claims it sees 7 fds open ALL THE TIME, and fails
+ So, we tell it that it is supposed to see 7.
+ I suspect building with shared objects is causing this disconnect.
+
+* Wed Dec 2 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.73-1
+- update to 47.0.2526.73
+- rework chrome-remote-desktop subpackage to work for google-chrome and chromium
+
+* Wed Dec 2 2015 Tomas Popela <tpopela(a)redhat.com> 47.0.2526.69-1
+- Update to 47.0.2526.69
+
+* Tue Dec 1 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-4
+- still more remote desktop changes
+
+* Mon Nov 30 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-3
+- lots of remote desktop cleanups
+
+* Thu Nov 12 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-2
+- re-enable Requires/BuildRequires for libusbx
+- add remote-desktop subpackage
+
+* Wed Nov 11 2015 Tomas Popela <tpopela(a)redhat.com> 46.0.2490.86-1
+- update to 46.0.2490.86
+- clean the SPEC file
+- add support for policies: https://www.chromium.org/administrators/linux-quick-start
+- replace exec_mem_t SELinux label with bin_t - see rhbz#1281437
+- refresh scripts that are used for processing the original tarball
+
+* Fri Oct 30 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-5
+- tls_edit is a nacl thing. who knew?
+
+* Thu Oct 29 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-4
+- more nacl fixups for i686 case
+
+* Thu Oct 29 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-3
+- conditionalize nacl/nonacl, disable nacl on i686, build for i686
+
+* Mon Oct 26 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-2
+- conditionalize shared bits (enable by default)
+
+* Fri Oct 23 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-1
+- update to 46.0.2490.80
+
+* Thu Oct 15 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.71-1
+- update to 46.0.2490.71
+
+* Thu Oct 15 2015 Tom Callaway <spot(a)fedoraproject.org> 45.0.2454.101-2
+- fix icu handling for f21 and older
+
+* Mon Oct 5 2015 Tom Callaway <spot(a)fedoraproject.org> 45.0.2454.101-1
+- update to 45.0.2454.101
+
+* Thu Jun 11 2015 Tom Callaway <spot(a)fedoraproject.org> 43.0.2357.124-1
+- update to 43.0.2357.124
+
+* Tue Jun 2 2015 Tom Callaway <spot(a)fedoraproject.org> 43.0.2357.81-1
+- update to 43.0.2357.81
+
+* Thu Feb 26 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.115-1
+- update to 40.0.2214.115
+
+* Thu Feb 19 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.111-1
+- update to 40.0.2214.111
+
+* Mon Feb 2 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.94-1
+- update to 40.0.2214.94
+
+* Tue Jan 27 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.93-1
+- update to 40.0.2214.93
+
+* Sat Jan 24 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.91-1
+- update to 40.0.2214.91
+
+* Wed Jan 21 2015 Tom Callaway <spot(a)fedoraproject.org> 39.0.2171.95-3
+- use bundled icu on Fedora < 21, we need 5.2
+
+* Tue Jan 6 2015 Tom Callaway <spot(a)fedoraproject.org> 39.0.2171.95-2
+- rebase off Tomas's spec file for Fedora
+
+* Fri Dec 12 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.95-1
+- Update to 39.0.2171.95
+- Resolves: rhbz#1173448
+
+* Wed Nov 26 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.71-1
+- Update to 39.0.2171.71
+- Resolves: rhbz#1168128
+
+* Wed Nov 19 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.65-2
+- Revert the chrome-sandbox rename to chrome_sandbox
+- Resolves: rhbz#1165653
+
+* Wed Nov 19 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.65-1
+- Update to 39.0.2171.65
+- Use Red Hat Developer Toolset for compilation
+- Set additional SELinux labels
+- Add more unit tests
+- Resolves: rhbz#1165653
+
+* Fri Nov 14 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.122-1
+- Update to 38.0.2125.122
+- Resolves: rhbz#1164116
+
+* Wed Oct 29 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.111-1
+- Update to 38.0.2125.111
+- Resolves: rhbz#1158347
+
+* Fri Oct 24 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.104-2
+- Fix the situation when the return key (and keys from numpad) does not work
+ in HTML elements with input
+- Resolves: rhbz#1153988
+- Dynamically determine the presence of the PepperFlash plugin
+- Resolves: rhbz#1154118
+
+* Thu Oct 16 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.104-1
+- Update to 38.0.2125.104
+- Resolves: rhbz#1153012
+
+* Thu Oct 09 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.101-2
+- The boringssl is used for tests, without the possibility of using
+ the system openssl instead. Remove the openssl and boringssl sources
+ when not building the tests.
+- Resolves: rhbz#1004948
+
+* Wed Oct 08 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.101-1
+- Update to 38.0.2125.101
+- System openssl is used for tests, otherwise the bundled boringssl is used
+- Don't build with clang
+- Resolves: rhbz#1004948
+
+* Wed Sep 10 2014 Tomas Popela <tpopela(a)redhat.com> 37.0.2062.120-1
+- Update to 37.0.2062.120
+- Resolves: rhbz#1004948
+
+* Wed Aug 27 2014 Tomas Popela <tpopela(a)redhat.com> 37.0.2062.94-1
+- Update to 37.0.2062.94
+- Include the pdf viewer library
+
+* Wed Aug 13 2014 Tomas Popela <tpopela(a)redhat.com> 36.0.1985.143-1
+- Update to 36.0.1985.143
+- Use system openssl instead of bundled one
+- Resolves: rhbz#1004948
+
+* Thu Jul 17 2014 Tomas Popela <tpopela(a)redhat.com> 36.0.1985.125-1
+- Update to 36.0.1985.125
+- Add libexif as BR
+- Resolves: rhbz#1004948
+
+* Wed Jun 11 2014 Tomas Popela <tpopela(a)redhat.com> 35.0.1916.153-1
+- Update to 35.0.1916.153
+- Resolves: rhbz#1004948
+
+* Wed May 21 2014 Tomas Popela <tpopela(a)redhat.com> 35.0.1916.114-1
+- Update to 35.0.1916.114
+- Bundle python-argparse
+- Resolves: rhbz#1004948
+
+* Wed May 14 2014 Tomas Popela <tpopela(a)redhat.com> 34.0.1847.137-1
+- Update to 34.0.1847.137
+- Resolves: rhbz#1004948
+
+* Mon May 5 2014 Tomas Popela <tpopela(a)redhat.com> 34.0.1847.132-1
+- Update to 34.0.1847.132
+- Bundle depot_tools and switch from make to ninja
+- Remove PepperFlash
+- Resolves: rhbz#1004948
+
+* Mon Feb 3 2014 Tomas Popela <tpopela(a)redhat.com> 32.0.1700.102-1
+- Update to 32.0.1700.102
+
+* Thu Jan 16 2014 Tomas Popela <tpopela(a)redhat.com> 32.0.1700.77-1
+- Update to 32.0.1700.77
+- Properly kill Xvfb when tests fails
+- Add libdrm as BR
+- Add libcap as BR
+
+* Tue Jan 7 2014 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.67-2
+- Minor changes in spec files and scripts
+- Add Xvfb as BR for tests
+- Add policycoreutils-python as Requires
+- Compile unittests and run them in chech phase, but turn them off by default
+ as many of them are failing in Brew
+
+* Thu Dec 5 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.67-1
+- Update to 31.0.1650.63
+
+* Thu Nov 21 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.57-1
+- Update to 31.0.1650.57
+
+* Wed Nov 13 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.48-1
+- Update to 31.0.1650.48
+- Minimal supported RHEL6 version is now RHEL 6.5 due to GTK+
+
+* Fri Oct 25 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.114-1
+- Update to 30.0.1599.114
+- Hide the infobar with warning that this version of OS is not supported
+- Polished the chromium-latest.py
+
+* Thu Oct 17 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.101-1
+- Update to 30.0.1599.101
+- Minor changes in scripts
+
+* Wed Oct 2 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.66-1
+- Update to 30.0.1599.66
+- Automated the script for cleaning the proprietary sources from ffmpeg.
+
+* Thu Sep 19 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.76-1
+- Update to 29.0.1547.76
+- Added script for removing the proprietary sources from ffmpeg. This script is called during cleaning phase of ./chromium-latest --rhel
+
+* Mon Sep 16 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.65-2
+- Compile with Dproprietary_codecs=0 and Dffmpeg_branding=Chromium to disable proprietary codecs (i.e. MP3)
+
+* Mon Sep 9 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.65-1
+- Initial version based on Tom Callaway's <spot(a)fedoraproject.org> work
+
diff --git a/chromium-widevine-other-locations.patch b/chromium-widevine-other-locations.patch
new file mode 100644
index 0000000..0460180
--- /dev/null
+++ b/chromium-widevine-other-locations.patch
@@ -0,0 +1,23 @@
+Description: try alternative locations for libwidevinecdm.so:
+ - $HOME/.local/lib/ (snap-friendly, see https://launchpad.net/bugs/1738149)
+ - /opt/google/chrome/ (installed by official google chrome package)
+Author: Olivier Tilloy <olivier.tilloy(a)canonical.com>
+
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -377,6 +377,15 @@ bool PathProvider(int key, base::FilePat
+ // TODO(crbug.com/663554): Remove this after component updated CDM is
+ // supported on Linux and ChromeOS.
+ case chrome::FILE_WIDEVINE_CDM:
++ base::PathService::Get(base::DIR_HOME, &cur);
++ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so"));
++ if (base::PathExists(cur)) {
++ break;
++ }
++ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so")))) {
++ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so"));
++ break;
++ }
+ if (!GetComponentDirectory(&cur))
+ return false;
+ cur =
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
new file mode 100755
index 0000000..2f27435
--- /dev/null
+++ b/clean_ffmpeg.sh
@@ -0,0 +1,345 @@
+#!/bin/bash
+# Copyright 2013-2015 Tomas Popela <tpopela(a)redhat.com>
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# $1 files
+# $2 verbose
+function copy_files() {
+ for file in $1
+ do
+ dir_name=$(echo "$file" | sed 's%/[^/]*$%/%')
+ if [[ $dir_name == */* ]]; then
+ tmp_dir_name="tmp_"$dir_name
+ mkdir -p "../tmp_ffmpeg/$tmp_dir_name"
+ else
+ tmp_dir_name=$file
+ fi
+
+ if [ "$2" -eq 1 ]; then
+ cp "$file" "../tmp_ffmpeg/$tmp_dir_name"
+ else
+ cp "$file" "../tmp_ffmpeg/$tmp_dir_name" > /dev/null 2>&1
+ fi
+ done
+}
+
+where=$(pwd)
+
+if ! generated_files=$(./get_free_ffmpeg_source_files.py "$1" "$2"); then
+ exit 1
+fi
+# As the build system files does not contain the header files, cheat here
+# and generate the header files names from source files. These that does not
+# exist will be later skipped while copying.
+generated_files_headers="${generated_files//.c/.h}"
+generated_files_headers="$generated_files_headers ${generated_files//.c/_internal.h}"
+if [ "$2" -ne "1" ]; then
+ generated_files_headers="$generated_files_headers ${generated_files//.S/.h}"
+fi
+generated_files_headers="$generated_files_headers ${generated_files//.asm/.h}"
+
+header_files=" libavcodec/x86/inline_asm.h \
+ libavcodec/x86/mathops.h \
+ libavcodec/x86/vp56_arith.h \
+ libavcodec/aarch64/vp8dsp.h \
+ libavcodec/arm/vp8dsp.h \
+ libavcodec/aac.h \
+ libavcodec/aacps.h \
+ libavcodec/aacpsdsp.h \
+ libavcodec/aacsbrdata.h \
+ libavcodec/aac_ac3_parser.h \
+ libavcodec/aac_defines.h \
+ libavcodec/ac3.h \
+ libavcodec/ac3tab.h \
+ libavcodec/adts_header.h \
+ libavcodec/avcodec.h \
+ libavcodec/blockdsp.h \
+ libavcodec/bytestream.h \
+ libavcodec/cbrt_data.h \
+ libavcodec/cbrt_tablegen.h \
+ libavcodec/dct.h \
+ libavcodec/dct32.h \
+ libavcodec/error_resilience.h \
+ libavcodec/fdctdsp.h \
+ libavcodec/fft.h \
+ libavcodec/fft-internal.h \
+ libavcodec/fft_table.h \
+ libavcodec/flac.h \
+ libavcodec/flacdsp.h \
+ libavcodec/frame_thread_encoder.h \
+ libavcodec/get_bits.h \
+ libavcodec/h263dsp.h \
+ libavcodec/h264chroma.h \
+ libavcodec/hpeldsp.h \
+ libavcodec/hwaccel.h \
+ libavcodec/hwaccels.h \
+ libavcodec/idctdsp.h \
+ libavcodec/internal.h \
+ libavcodec/kbdwin.h \
+ libavcodec/mathops.h \
+ libavcodec/mdct15.c \
+ libavcodec/mdct15.h \
+ libavcodec/me_cmp.h \
+ libavcodec/motion_est.h \
+ libavcodec/mpeg12.h \
+ libavcodec/mpeg12data.h \
+ libavcodec/mpeg12vlc.h \
+ libavcodec/mpegaudio.h \
+ libavcodec/mpegaudiodecheader.h \
+ libavcodec/mpegaudiodectab.h \
+ libavcodec/mpegaudiodsp.h \
+ libavcodec/mpegaudio_tablegen.h \
+ libavcodec/mpegpicture.h \
+ libavcodec/mpegutils.h \
+ libavcodec/mpegvideo.h \
+ libavcodec/mpegvideodata.h \
+ libavcodec/mpegvideodsp.h \
+ libavcodec/mpegvideoencdsp.h \
+ libavcodec/options_table.h \
+ libavcodec/opusdsp.h \
+ libavcodec/opus_celt.h \
+ libavcodec/opus_pvq.h \
+ libavcodec/opus_rc.h \
+ libavcodec/pcm_tablegen.h \
+ libavcodec/pixblockdsp.h \
+ libavcodec/pixels.h \
+ libavcodec/png.h \
+ libavcodec/put_bits.h \
+ libavcodec/qpeldsp.h \
+ libavcodec/ratecontrol.h \
+ libavcodec/rectangle.h \
+ libavcodec/rl.h \
+ libavcodec/rnd_avg.h \
+ libavcodec/sbr.h \
+ libavcodec/sbrdsp.h \
+ libavcodec/sinewin.h \
+ libavcodec/sinewin_tablegen.h \
+ libavcodec/thread.h \
+ libavcodec/unary.h \
+ libavcodec/version.h \
+ libavcodec/videodsp.h \
+ libavcodec/vlc.h \
+ libavcodec/vorbisdsp.h \
+ libavcodec/vp3data.h \
+ libavcodec/vp3dsp.h \
+ libavcodec/vp56.h \
+ libavcodec/vp56dsp.h \
+ libavcodec/vp8data.h \
+ libavcodec/vp8dsp.h \
+ libavformat/apetag.h \
+ libavformat/audiointerleave.h \
+ libavformat/avformat.h \
+ libavformat/dv.h \
+ libavformat/img2.h \
+ libavformat/internal.h \
+ libavformat/mov_chan.h \
+ libavformat/pcm.h \
+ libavformat/rdt.h \
+ libavformat/rtp.h \
+ libavformat/rtpdec.h \
+ libavformat/spdif.h \
+ libavformat/srtp.h \
+ libavformat/options_table.h \
+ libavformat/version.h \
+ libavformat/w64.h \
+ libavutil/x86/asm.h \
+ libavutil/x86/bswap.h \
+ libavutil/x86/cpu.h \
+ libavutil/x86/emms.h
+ libavutil/x86/intreadwrite.h \
+ libavutil/x86/intmath.h
+ libavutil/x86/timer.h \
+ libavutil/attributes.h \
+ libavutil/audio_fifo.h \
+ libavutil/avassert.h \
+ libavutil/avutil.h \
+ libavutil/bswap.h \
+ libavutil/common.h \
+ libavutil/colorspace.h \
+ libavutil/cpu.h \
+ libavutil/cpu_internal.h \
+ libavutil/dynarray.h \
+ libavutil/ffmath.h \
+ libavutil/fixed_dsp.h \
+ libavutil/float_dsp.h \
+ libavutil/imgutils.h \
+ libavutil/imgutils_internal.h \
+ libavutil/internal.h \
+ libavutil/intfloat.h \
+ libavutil/intreadwrite.h \
+ libavutil/libm.h \
+ libavutil/lls.h \
+ libavutil/macros.h \
+ libavutil/pixfmt.h \
+ libavutil/qsort.h \
+ libavutil/replaygain.h \
+ libavutil/softfloat.h \
+ libavutil/softfloat_tables.h \
+ libavutil/thread.h \
+ libavutil/timer.h \
+ libavutil/timestamp.h \
+ libavutil/version.h \
+ libswresample/swresample.h \
+ libswresample/version.h \
+ compat/va_copy.h \
+ compat/atomics/gcc/stdatomic.h "
+
+manual_files=" libavcodec/aarch64/fft_neon.S \
+ libavcodec/aarch64/h264pred_neon.S \
+ libavcodec/aarch64/hpeldsp_neon.S \
+ libavcodec/aarch64/mdct_neon.S \
+ libavcodec/aarch64/neon.S \
+ libavcodec/aarch64/vorbisdsp_neon.S \
+ libavcodec/aarch64/vp8dsp_neon.S \
+ libavcodec/x86/hpeldsp_rnd_template.c \
+ libavcodec/x86/mdct15.asm \
+ libavcodec/x86/mdct15_init.c \
+ libavcodec/x86/rnd_template.c \
+ libavcodec/x86/videodsp.asm \
+ libavcodec/x86/videodsp_init.c \
+ libavcodec/x86/vorbisdsp_init.c \
+ libavcodec/autorename_libavcodec_mdct15.c \
+ libavcodec/bit_depth_template.c \
+ libavcodec/fft_template.c \
+ libavcodec/flacdec.c \
+ libavcodec/flacdsp.c \
+ libavcodec/flacdsp_template.c \
+ libavcodec/flacdsp_lpc_template.c \
+ libavcodec/h264pred_template.c \
+ libavcodec/hpel_template.c \
+ libavcodec/hpeldsp.c \
+ libavcodec/mdct15.c \
+ libavcodec/mdct_template.c \
+ libavcodec/pel_template.c \
+ libavcodec/utils.c \
+ libavcodec/videodsp.c \
+ libavcodec/videodsp_template.c \
+ libavcodec/vorbisdsp.c \
+ libavcodec/vp3dsp.c \
+ libavcodec/vp8dsp.c \
+ libavformat/options.c \
+ libavformat/pcm.c \
+ libavformat/utils.c \
+ libavutil/aarch64/asm.S \
+ libavutil/aarch64/bswap.h \
+ libavutil/aarch64/float_dsp_neon.S \
+ libavutil/aarch64/timer.h \
+ libavutil/cpu.c \
+ libavutil/fixed_dsp.c \
+ libavutil/float_dsp.c \
+ libavutil/imgutils.c \
+ libavutil/x86/cpu.c \
+ libavutil/x86/float_dsp_init.c \
+ libavutil/x86/x86inc.asm \
+ libavutil/x86/x86util.asm "
+
+mp3_files=" libavcodec/aarch64/aacpsdsp_init_aarch64.c \
+ libavcodec/aarch64/aacpsdsp_neon.S \
+ libavcodec/aarch64/autorename_libavcodec_aarch64_aacpsdsp_neon.S \
+ libavcodec/aarch64/autorename_libavcodec_aarch64_sbrdsp_neon.S \
+ libavcodec/aarch64/mpegaudiodsp_init.c \
+ libavcodec/aarch64/mpegaudiodsp_neon.S \
+ libavcodec/aarch64/sbrdsp_init_aarch64.c \
+ libavcodec/aarch64/sbrdsp_neon.S \
+ libavcodec/aac_ac3_parser.c \
+ libavcodec/aac_parser.c \
+ libavcodec/aacps_float.c \
+ libavcodec/aacpsdsp_float.c \
+ libavcodec/aacsbr.c \
+ libavcodec/aactab.c \
+ libavcodec/ac3tab.c \
+ libavcodec/autorename_libavcodec_aacdec.c \
+ libavcodec/autorename_libavcodec_mpegaudiodsp.c \
+ libavcodec/autorename_libavcodec_sbrdsp.c \
+ libavcodec/cbrt_data.c \
+ libavcodec/dct.c \
+ libavcodec/dct32_fixed.c \
+ libavcodec/dct32_float.c \
+ libavcodec/dct32_template.c \
+ libavcodec/kbdwin.c \
+ libavcodec/mpegaudio.c \
+ libavcodec/mpegaudio_parser.c \
+ libavcodec/mpegaudiodec_fixed.c \
+ libavcodec/mpegaudiodec_template.c \
+ libavcodec/mpegaudiodecheader.c \
+ libavcodec/mpegaudiodsp.c \
+ libavcodec/mpegaudiodsp_data.c \
+ libavcodec/mpegaudiodsp_fixed.c \
+ libavcodec/mpegaudiodsp_float.c \
+ libavcodec/mpegaudiodsp_template.c \
+ libavcodec/sbrdsp.c \
+ libavcodec/sbrdsp_template.c \
+ libavcodec/sinewin.c \
+ libavcodec/sinewin_fixed.c \
+ libavcodec/x86/dct_init.c \
+ libavcodec/x86/dct32.asm \
+ libavcodec/x86/imdct36.asm \
+ libavcodec/x86/mpegaudiodsp.c \
+ libavcodec/x86/sbrdsp_init.c \
+ libavcodec/x86/sbrdsp.asm \
+ libavformat/aacdec.c \
+ libavformat/apetag.c \
+ libavformat/img2.c \
+ libavformat/mov.c \
+ libavformat/mov_chan.c \
+ libavformat/mp3dec.c "
+
+other_files=" BUILD.gn \
+ Changelog \
+ COPYING.GPLv2 \
+ COPYING.GPLv3 \
+ COPYING.LGPLv2.1 \
+ COPYING.LGPLv3 \
+ CREDITS \
+ CREDITS.chromium \
+ ffmpeg_generated.gni \
+ ffmpeg_options.gni \
+ INSTALL.md \
+ LICENSE.md \
+ MAINTAINERS \
+ OWNERS \
+ README.chromium \
+ README.md \
+ RELEASE "
+
+cd "$1/third_party/ffmpeg" || exit 1
+
+copy_files "$generated_files" 0
+copy_files "$generated_files_headers" 0
+copy_files "$manual_files" 1
+copy_files "$other_files" 1
+copy_files "$header_files" 1
+copy_files "$mp3_files" 1
+
+mkdir -p ../tmp_ffmpeg/tmp_chromium/config
+cp -r chromium/config ../tmp_ffmpeg/tmp_chromium
+
+cd ../tmp_ffmpeg || exit 1
+
+while IFS= read -r -d '' tmp_directory
+do
+ new_name=${tmp_directory//tmp_/}
+ mv "$tmp_directory" "$new_name"
+done < <(find . -type d -name 'tmp_*' -print0)
+
+cd "$where" || exit 1
+
+rm -rf "$1/third_party/ffmpeg"
+mv "$1/third_party/tmp_ffmpeg" "$1/third_party/ffmpeg"
diff --git a/enable-vaapi.patch b/enable-vaapi.patch
new file mode 100644
index 0000000..3286af7
--- /dev/null
+++ b/enable-vaapi.patch
@@ -0,0 +1,96 @@
+diff -up chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi chromium-75.0.3770.80/chrome/browser/about_flags.cc
+--- chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi 2019-06-04 14:55:16.000000000 -0400
++++ chromium-75.0.3770.80/chrome/browser/about_flags.cc 2019-06-05 11:26:46.472753047 -0400
+@@ -1390,7 +1390,7 @@ const FeatureEntry kFeatureEntries[] = {
+ "disable-accelerated-video-decode",
+ flag_descriptions::kAcceleratedVideoDecodeName,
+ flag_descriptions::kAcceleratedVideoDecodeDescription,
+- kOsMac | kOsWin | kOsCrOS | kOsAndroid,
++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
+ },
+ #if defined(OS_WIN)
+@@ -1882,12 +1882,12 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
+ #endif // ENABLE_ISOLATED_XR_SERVICE
+ #endif // ENABLE_VR
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX)
+ {"disable-accelerated-mjpeg-decode",
+ flag_descriptions::kAcceleratedMjpegDecodeName,
+- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
+-#endif // OS_CHROMEOS
++#endif // OS_CHROMEOS // OS_LINUX
+ {"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
+ flag_descriptions::kV8CacheOptionsDescription, kOsAll,
+ MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
+diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc
+--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi 2019-06-05 11:26:46.473753026 -0400
++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc 2019-06-05 11:29:28.039397479 -0400
+@@ -2941,15 +2941,20 @@ const char kMacSystemMediaPermissionsInf
+
+ #endif
+
+-// Chrome OS -------------------------------------------------------------------
++// Chrome OS & Linux------------------------------------------------------------
+
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ const char kAcceleratedMjpegDecodeName[] =
+ "Hardware-accelerated mjpeg decode for captured frame";
+ const char kAcceleratedMjpegDecodeDescription[] =
+ "Enable hardware-accelerated mjpeg decode for captured frame where "
+ "available.";
++#endif
++
++// Chrome OS -------------------------------------------------------------------
++
++#if defined(OS_CHROMEOS)
+
+ const char kAppServiceAshName[] = "App Service Ash";
+ const char kAppServiceAshDescription[] =
+diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.h
+--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi 2019-06-05 11:26:46.475752984 -0400
++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.h 2019-06-05 11:30:39.503928986 -0400
+@@ -1765,13 +1765,19 @@ extern const char kPermissionPromptPersi
+
+ #endif // defined(OS_MACOSX)
+
+-// Chrome OS ------------------------------------------------------------------
++// Chrome OS & Linux ----------------------------------------------------------
+
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ extern const char kAcceleratedMjpegDecodeName[];
+ extern const char kAcceleratedMjpegDecodeDescription[];
+
++#endif
++
++// Chrome OS ------------------------------------------------------------------
++
++#if defined(OS_CHROMEOS)
++
+ extern const char kAppServiceAshName[];
+ extern const char kAppServiceAshDescription[];
+
+diff -up chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi chromium-75.0.3770.80/gpu/config/software_rendering_list.json
+--- chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi 2019-06-04 14:55:24.000000000 -0400
++++ chromium-75.0.3770.80/gpu/config/software_rendering_list.json 2019-06-05 11:26:46.482752839 -0400
+@@ -371,11 +371,12 @@
+ },
+ {
+ "id": 48,
+- "description": "Accelerated video decode is unavailable on Linux",
++ "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms",
+ "cr_bugs": [137247],
+ "os": {
+ "type": "linux"
+ },
++ "vendor_id": "0x10de",
+ "features": [
+ "accelerated_video_decode"
+ ]
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
new file mode 100755
index 0000000..f2225ea
--- /dev/null
+++ b/get_free_ffmpeg_source_files.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+# Copyright 2015 Tomas Popela <tpopela(a)redhat.com>
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import sys
+import re
+
+def append_sources (input_sources, output_sources):
+
+ # Get the source files.
+ source_files = re.findall(r"\"(.*?)\"", input_sources)
+ output_sources += source_files
+
+
+def parse_sources(input_sources, output_sources, arch_not_arm):
+
+ # Get the type of sources in one group and sources itself in the other one.
+ blocks = re.findall(r"(ffmpeg[^\s]*).*?\[(.*?)]", input_sources, re.DOTALL)
+ for block in blocks:
+ if (arch_not_arm):
+ if not 'ffmpeg_gas_sources' in block[0]:
+ append_sources (block[1], output_sources)
+ else:
+ append_sources (block[1], output_sources)
+
+
+def parse_ffmpeg_gni_file(gni_path, arch_not_arm):
+
+ with open(gni_path, "r") as input_file:
+ content = input_file.read().replace('\n', '')
+
+ output_sources = []
+ # Get all the sections.
+ sections = re.findall(r"if (.*?})", content, re.DOTALL)
+ for section in sections:
+ # Get all the conditions (first group) and sources (second group) for the
+ # current section.
+ blocks = re.findall(r"(\(.*?\))\s\{(.*?)\}", section, re.DOTALL)
+ for block in blocks:
+ conditions = re.findall(r"\(?\((.*?)\)", block[0])
+ inserted = False
+ for condition in conditions:
+ if inserted:
+ break
+ 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) or ('use_linux_config' in condition):
+ parse_sources (block[1], output_sources, arch_not_arm)
+ inserted = True
+ else:
+ parse_sources (block[1], output_sources, arch_not_arm)
+ inserted = True
+
+ if len(output_sources) == 0:
+ sys.stderr.write("Something went wrong, no sources parsed!\n")
+ sys.exit(1)
+
+ print ' '.join(output_sources)
+
+
+if __name__ == "__main__":
+
+ path = "%s/third_party/ffmpeg/ffmpeg_generated.gni" % sys.argv[1]
+ parse_ffmpeg_gni_file (path, False if sys.argv[2] == "0" else True)
diff --git a/get_linux_tests_names.py b/get_linux_tests_names.py
new file mode 100755
index 0000000..08a913a
--- /dev/null
+++ b/get_linux_tests_names.py
@@ -0,0 +1,121 @@
+#!/usr/bin/python
+# Copyright 2015 Tomas Popela <tpopela(a)redhat.com>
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+try:
+ import argparse
+ optparse = False
+except ImportError:
+ from optparse import OptionParser
+ optparse = True
+import locale
+import simplejson as json
+import sys
+import os
+
+if __name__ == "__main__":
+
+ added = []
+
+ # Create the parser object
+ if optparse:
+ parser = OptionParser()
+ parser_add_argument = parser.add_option
+ else:
+ parser = argparse.ArgumentParser()
+ parser_add_argument = parser.add_argument
+
+ parser_add_argument(
+ '--check',
+ help='Check the tests against given SPEC file')
+ parser_add_argument(
+ '--spec', action='store_true',
+ help='Prints the test targets in format suitable for SPEC file')
+ parser_add_argument(
+ 'path', nargs='?', default=os.getcwd(),
+ help='Path to Chromium sources')
+
+ # Parse the args
+ if optparse:
+ args, options = parser.parse_args()
+ else:
+ args = parser.parse_args()
+
+ tests_path = "%s/testing/buildbot/chromium.linux.json" % args.path
+
+ try:
+ with open(tests_path, "r") as input_file:
+ json_file = json.load(input_file)
+ except IOError:
+ print "Cannot find JSON file with tests in path '%s'!" % args.path
+ sys.exit(1)
+
+
+ for test in json_file['Linux Tests']['gtest_tests']:
+ if isinstance(test, dict):
+ added.append(test['test'])
+ else:
+ added.append(test)
+
+ if args.check:
+ removed = []
+ disabled = []
+ in_tests = False
+ spec_file = None
+
+ with open(args.check) as f:
+ for line in f:
+ if "CHROMIUM_BROWSER_UNIT_TESTS=" in line:
+ in_tests = True
+ continue
+
+ if in_tests and line.endswith('"\n'):
+ break
+
+ if in_tests:
+ found = False
+ for test in added:
+ if test in line:
+ if "#" in line:
+ disabled.append(test)
+ added.remove(test)
+ found = True
+ break
+ if not found:
+ if not "%" in line:
+ removed.append(line)
+
+ for test in removed:
+ print "REMOVED"
+ print "\t" + test;
+ for test in added:
+ print "ADDED"
+ print "\t" + test;
+ for test in disabled:
+ print "DISABLED"
+ print "\t" + test;
+
+ sys.exit(0)
+
+ for name in added:
+ if args.spec:
+ print "\t" + name + " \\"
+ else:
+ print name
diff --git a/master_preferences b/master_preferences
new file mode 100644
index 0000000..fbc2ff0
--- /dev/null
+++ b/master_preferences
@@ -0,0 +1,17 @@
+{
+ "homepage": "https://start.fedoraproject.org",
+ "homepage_is_newtabpage": false,
+ "distribution": {
+ "alternate_shortcut_text": false,
+ "oem_bubble": true,
+ "chrome_shortcut_icon_index": 0,
+ "create_all_shortcuts": true,
+ "show_welcome_page": true,
+ "system_level": false,
+ "verbose_logging": false
+ },
+ "first_run_tabs": [
+ "https://start.fedoraproject.org",
+ "http://tools.google.com/chrome/intl/en/welcome.html"
+ ]
+}
diff --git a/sources b/sources
new file mode 100644
index 0000000..bb43f05
--- /dev/null
+++ b/sources
@@ -0,0 +1,20 @@
+SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03
+SHA512 (gelasio.zip) = 0a22def3eca8848161ee72453dc5f97cc52ed09ffe21834152f2535d3a71f404cdf1f6e1809564bacb86aae75278cbcb96cae52b537d3ccdc299b60d6d0bc53e
+SHA512 (MuktiNarrow-0.94.tar.bz2) = f7abd429e2591eaa047d1ac982d97fa67dc1480c42e55b2a97861abd90918704dce90b6bb27dec7b6d696f188017a74de54a7b7f45281f0515923b90300959d1
+SHA512 (NotoSansCJKjp-hinted.zip) = e7bcbc53a10b8ec3679dcade5a8a94cea7e1f60875ab38f2193b4fa8e33968e1f0abc8184a3df1e5210f6f5c731f96c727c6aa8f519423a29707d2dee5ada193
+SHA512 (lohit-gurmukhi-ttf-2.91.2.tar.gz) = 714ed72d201e7f8956d24e9d9f1526207beb91a604e88c02a8b0d145f19d9bfe1408ca290d1665ebef462ab3854365dcd9850529803277738e2585addf3e280a
+SHA512 (Arimo-BoldItalic.ttf) = cb1f411f2630f2754dfb0244b3c56fde43650d603512d47c143bc0f24028da4d7ca2b35a633226ef9c502b97c63cfbd5a6d696934b3e60b2a98ad879b113a4c4
+SHA512 (Arimo-Bold.ttf) = 2853e5f41e6899baf226db2578aba09f2f88085eaea02da024621492d21e1af8bdefdefd354ea23dc4d5de5cb0d554085040a0108820f213e86dd532986fdb41
+SHA512 (Arimo-Italic.ttf) = 56ef918e5811dcd375e6cd8d79dc69f4db75d544639c0f6ac3a0343b3b4ef94b7dee5a6066f1558d8747a32bbee074256be68b943ff31cfbd2f5f32acfa7c1c5
+SHA512 (Arimo-Regular.ttf) = 05e6aa6b785b0038a8e0e0a8a618a1b8e907a700be302148eaebc91cfac3c9e2d9acf90b9d077ff3b9ff54bd5f8a9c522a039cff6103cdeee54be29b6a0b355f
+SHA512 (Cousine-BoldItalic.ttf) = 2125aa9f5db4ae4a3725d308b6afbfbce5957f3c96a3c5fcba8ebf5cd167017d9c7023391e947ed68d12fa97e2cba3f156a3acca276d9f5ed50df7d78c07f918
+SHA512 (Cousine-Bold.ttf) = 1759fd23419ae0e1bfc9be92abb9cb0c74084ce85e7f53c055d86ec3d62da83169d0d67ed96fd4e496b28acf382933d63448459108b109d8202db7f18f05caab
+SHA512 (Cousine-Italic.ttf) = ec3fc9d940b748dbbc64aa66184413a78ae2b085181eed563449df044b891e951e8feebd865be5be42f0cd001acf5bdce9084a006f9b5be32f096f7df0dc7700
+SHA512 (Cousine-Regular.ttf) = a665a6a4a5583079eb87509e2da7d6bd06965e6a7655217302b088caef942ae9ad63e6cffda18d0001fc9ab2284836766843e46bfdacd188b54f39d7855f36a0
+SHA512 (Tinos-BoldItalic.ttf) = 2574de2add94ef976b731fac688951fab49574c9b0ccd259ba647ea3598ca026bcfb88e2ea3f19effb3af71fdc0eb5fa9973f0b6e996c22185c5f2aab5a23fdd
+SHA512 (Tinos-Bold.ttf) = 54aeca804c06a4d5c57ade596e73df91a6a1c4401c4aadba55d987b3fb73045d35f3df02678b59abb77c4914ec741755536c0adf808c931e4b77848c52c229c4
+SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0e22a16414278217f37497b904a18540273c0e2d79d4f1faabde3b0eb5446283b318c73bafb38
+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.tar.xz) = 63cfb45dc6bb0b1662ba4ffebc6313c24d65dae10a61752575e34a24d8d3d6f80e0422a984b560b259c299d6e493dfa177907201a1c1f785a7e294c9a03bd8a1
5 years, 3 months