[chromium-libs-media-freeworld: 11/85] disable nacl/pnacl for Fedora 23 (and older)
by Miro Hrončok
commit 98f362e5e4444332838e6b2c9a9adc5a1d6cfc84
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Jul 28 10:05:58 2016 -0400
disable nacl/pnacl for Fedora 23 (and older)
chromium.spec | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
---
diff --git a/chromium.spec b/chromium.spec
index c58a672..bb8ec2c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -18,7 +18,9 @@
%global asan 0
# Only flip this on if stuff is really broken re: nacl.
-%if 0
+# chromium-native_client doesn't build on Fedora 23 because
+# clang is too old and buggy.
+%if 0%{?fedora} <= 23
%global killnacl 1
%else
%global killnacl 0
@@ -1415,6 +1417,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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
7 years, 5 months
[chromium-libs-media-freeworld: 10/85] fix post scriptlet so that selinux stuff only happens when selinux is enabled
by Miro Hrončok
commit fc6709f09bd146b3916e92ba63271a12d05b47b9
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Jul 28 09:48:15 2016 -0400
fix post scriptlet so that selinux stuff only happens when selinux is enabled
chromium.spec | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
---
diff --git a/chromium.spec b/chromium.spec
index e2138f2..c58a672 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -62,7 +62,7 @@ BuildRequires: libicu-devel >= 5.4
Name: chromium%{chromium_channel}
Version: 52.0.2743.82
-Release: 6%{?dist}
+Release: 7%{?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)
@@ -1269,10 +1269,13 @@ cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
%post
# Set SELinux labels - semanage itself will adjust the lib directory naming
-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}
+# 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
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
update-desktop-database &> /dev/null || :
@@ -1412,6 +1415,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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
7 years, 5 months
[chromium-libs-media-freeworld: 9/85] Add an AppData file so that Chromium appears in the software center
by Miro Hrončok
commit a7e232457a0c4fce4f4a243a88c73fb5866e093e
Author: Richard Hughes <richard(a)hughsie.com>
Date: Thu Jul 28 10:38:12 2016 +0100
Add an AppData file so that Chromium appears in the software center
chromium-browser.appdata.xml | 38 ++++++++++++++++++++++++++++++++++++++
chromium.spec | 13 ++++++++++++-
2 files changed, 50 insertions(+), 1 deletion(-)
---
diff --git a/chromium-browser.appdata.xml b/chromium-browser.appdata.xml
new file mode 100644
index 0000000..a02cfc7
--- /dev/null
+++ b/chromium-browser.appdata.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2016 Richard Hughes <richard(a)hughsie.com> -->
+<component type="desktop">
+ <id>chromium-browser.desktop</id>
+ <update_contact>richard(a)hughsie.com</update_contact>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>BSD-3-Clause and LGPL-2.1+ and Apache-2.0 and IJG and MIT and GPL-2.0+ and ISC and OpenSSL and (MPL-1.1 or GPL-2.0 or LGPL-2.0)</project_license>
+ <name>Chromium</name>
+ <summary>Web Browser</summary>
+ <description>
+ <p>
+ Chromium is an open-source browser that aims to build a safer, faster, and
+ more stable way to experience the web.
+ We invite you to join us in our effort to build a powerful platform for
+ developing a new generation of web applications.
+ </p>
+ <p>
+ Chromium does not include the non-free AAC, H.264, MP3 or Adobe Flash code
+ that is found in Chrome, although it does support Vorbis, Theora, WebM and
+ HTML5 audio and video standards.
+ </p>
+ </description>
+ <url type="homepage">https://www.chromium.org/Home</url>
+ <screenshots>
+ <screenshot type="default">
+ <image>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screens...</image>
+ <caption/>
+ </screenshot>
+ <screenshot>
+ <image>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screens...</image>
+ <caption/>
+ </screenshot>
+ </screenshots>
+ <translation/>
+ <developer_name>Google</developer_name>
+ <url type="bugtracker">https://www.chromium.org/for-testers/bug-reporting-guidelines</url>
+ <url type="help">https://chromium.googlesource.com/chromium/src/+/master/docs/linux_debugg...</url>
+</component>
diff --git a/chromium.spec b/chromium.spec
index 4295b56..e2138f2 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -62,7 +62,7 @@ BuildRequires: libicu-devel >= 5.4
Name: chromium%{chromium_channel}
Version: 52.0.2743.82
-Release: 5%{?dist}
+Release: 6%{?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)
@@ -127,6 +127,7 @@ Source8: get_linux_tests_names.py
Source9: chromium-browser.xml
Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
Source11: chrome-remote-desktop.service
+Source12: chromium-browser.appdata.xml
# We can assume gcc and binutils.
BuildRequires: gcc-c++
@@ -168,6 +169,9 @@ BuildRequires: liberation-sans-fonts
BuildRequires: sudo
%endif
+# for /usr/bin/appstream-util
+BuildRequires: libappstream-glib
+
# Fedora turns on NaCl
# NaCl needs these
BuildRequires: libstdc++-devel, openssl-devel
@@ -953,6 +957,9 @@ cp -a chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/ico
mkdir -p %{buildroot}%{_datadir}/applications/
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4}
+install -D -m0644 %{SOURCE12} ${RPM_BUILD_ROOT}%{_datadir}/appdata/%{chromium_browser_channel}.appdata.xml
+appstream-util validate-relax --nonet ${RPM_BUILD_ROOT}%{_datadir}/appdata/%{chromium_browser_channel}.appdata.xml
+
mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
@@ -1370,6 +1377,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%{_mandir}/man1/%{chromium_browser_channel}.*
%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png
%{_datadir}/applications/*.desktop
+%{_datadir}/appdata/*.appdata.xml
%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
%dir %{_sysconfdir}/chromium/policies/managed
@@ -1404,6 +1412,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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
7 years, 5 months
[chromium-libs-media-freeworld: 8/85] enable nacl/pnacl (chromium-native_client has landed in Fedora), fix chromium-browser.sh to report F
by Miro Hrončok
commit 87abbbdaa337887665ddf9067fdf717c652877aa
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Jul 27 20:49:34 2016 -0400
enable nacl/pnacl (chromium-native_client has landed in Fedora), fix chromium-browser.sh to report Fedora build target properly
chromium.spec | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/chromium.spec b/chromium.spec
index 3061c53..4295b56 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -18,7 +18,7 @@
%global asan 0
# Only flip this on if stuff is really broken re: nacl.
-%if 0%{?fedora} >= 24
+%if 0
%global killnacl 1
%else
%global killnacl 0
@@ -62,7 +62,7 @@ BuildRequires: libicu-devel >= 5.4
Name: chromium%{chromium_channel}
Version: 52.0.2743.82
-Release: 4%{?dist}
+Release: 5%{?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)
@@ -175,9 +175,16 @@ BuildRequires: libstdc++-devel, openssl-devel
BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
# pNaCl needs this monster
-BuildRequires: chromium-native_client >= 50.0.2661.86
+# 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
%ifarch x86_64
-BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
+# 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.
@@ -846,10 +853,10 @@ rm -rf %{buildroot}
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{chromium_path}
cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
-export BUILDTARGET=`cat /etc/redhat-release`
+export BUILD_TARGET=`cat /etc/redhat-release`
export CHROMIUM_PATH=%{chromium_path}
export CHROMIUM_BROWSER_CHANNEL=%{chromium_browser_channel}
-sed -i "s|@@BUILDTARGET@@|$BUILDTARGET|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+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}"
@@ -1397,6 +1404,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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
7 years, 5 months
[chromium-libs-media-freeworld: 7/85] compile with -fno-delete-null-pointer-checks (fixes v8 crashes, nacl/pnacl), prep for chromium-nativ
by Miro Hrončok
commit 7fe5f2bbe96092b6e658bbbe44ac1871488891c7
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Jul 27 11:25:22 2016 -0400
compile with -fno-delete-null-pointer-checks (fixes v8 crashes, nacl/pnacl), prep for chromium-native_client enablement
chromium.spec | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/chromium.spec b/chromium.spec
index 37467e1..3061c53 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -62,7 +62,7 @@ BuildRequires: libicu-devel >= 5.4
Name: chromium%{chromium_channel}
Version: 52.0.2743.82
-Release: 2%{?dist}
+Release: 4%{?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)
@@ -175,7 +175,7 @@ BuildRequires: libstdc++-devel, openssl-devel
BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
# pNaCl needs this monster
-BuildRequires: native_client >= 50.0.2661.86
+BuildRequires: chromium-native_client >= 50.0.2661.86
%ifarch x86_64
BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
%endif
@@ -597,6 +597,7 @@ export CHROMIUM_BROWSER_GYP_DEFINES="\
-Dcomponent=shared_library \
%endif
-Duse_sysroot=0 \
+ -Drelease_extra_cflags="-fno-delete-null-pointer-checks" \
-Dwerror= -Dsysroot="
# Remove most of the bundled libraries. Libraries specified below (taken from
@@ -1396,6 +1397,13 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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)
@@ -1405,7 +1413,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
- 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
7 years, 5 months
[chromium-libs-media-freeworld: 6/85] actually fix compile against cups 2.2, add widevine compatibility support
by Miro Hrončok
commit 4bca8d3763df185bcb21dd289d46759d6c9654cc
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Jul 22 14:24:09 2016 -0400
actually fix compile against cups 2.2, add widevine compatibility support
chromium-52.0.2743.82-cups22.patch | 11 +++++++++++
chromium-52.0.2743.82-widevinefix.patch | 25 +++++++++++++++++++++++++
chromium.spec | 9 ++++++++-
3 files changed, 44 insertions(+), 1 deletion(-)
---
diff --git a/chromium-52.0.2743.82-cups22.patch b/chromium-52.0.2743.82-cups22.patch
index 63d5116..ac0700a 100644
--- a/chromium-52.0.2743.82-cups22.patch
+++ b/chromium-52.0.2743.82-cups22.patch
@@ -1,3 +1,14 @@
+diff -up chromium-52.0.2743.82/printing/backend/print_backend_cups.cc.cups22 chromium-52.0.2743.82/printing/backend/print_backend_cups.cc
+--- chromium-52.0.2743.82/printing/backend/print_backend_cups.cc.cups22 2016-07-22 09:20:15.794340886 -0400
++++ chromium-52.0.2743.82/printing/backend/print_backend_cups.cc 2016-07-22 09:20:26.338261197 -0400
+@@ -16,6 +16,7 @@
+ #include "base/synchronization/lock.h"
+ #include "base/values.h"
+ #include "printing/backend/cups_helper.h"
++#include <cups/ppd.h>
+ #include "printing/backend/print_backend_consts.h"
+ #include "url/gurl.h"
+
diff -up chromium-52.0.2743.82/printing/BUILD.gn.cups22 chromium-52.0.2743.82/printing/BUILD.gn
--- chromium-52.0.2743.82/printing/BUILD.gn.cups22 2016-07-21 11:27:05.597507544 -0400
+++ chromium-52.0.2743.82/printing/BUILD.gn 2016-07-21 14:36:45.574137758 -0400
diff --git a/chromium-52.0.2743.82-widevinefix.patch b/chromium-52.0.2743.82-widevinefix.patch
new file mode 100644
index 0000000..86414a6
--- /dev/null
+++ b/chromium-52.0.2743.82-widevinefix.patch
@@ -0,0 +1,25 @@
+diff -up chromium-52.0.2743.82/chrome/common/chrome_content_client.cc.widevinefix chromium-52.0.2743.82/chrome/common/chrome_content_client.cc
+--- chromium-52.0.2743.82/chrome/common/chrome_content_client.cc.widevinefix 2016-07-22 12:18:49.505235856 -0400
++++ chromium-52.0.2743.82/chrome/common/chrome_content_client.cc 2016-07-22 12:20:04.200789682 -0400
+@@ -203,10 +203,7 @@ void ComputeBuiltInPlugins(std::vector<c
+ widevine_cdm.is_out_of_process = true;
+ widevine_cdm.path = adapter_path;
+ widevine_cdm.name = kWidevineCdmDisplayName;
+- widevine_cdm.description =
+- base::StringPrintf("%s (version: " WIDEVINE_CDM_VERSION_STRING ")",
+- kWidevineCdmDescription);
+- widevine_cdm.version = WIDEVINE_CDM_VERSION_STRING;
++ widevine_cdm.description = kWidevineCdmDescription;
+ content::WebPluginMimeType widevine_cdm_mime_type(
+ kWidevineCdmPluginMimeType, kWidevineCdmPluginExtension,
+ kWidevineCdmPluginMimeTypeDescription);
+@@ -555,8 +552,7 @@ void ChromeContentClient::AddContentDecr
+ // CdmInfo needs |path| to be the actual Widevine library,
+ // not the adapter, so adjust as necessary. It will be in the
+ // same directory as the installed adapter.
+- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
+- DCHECK(version.IsValid());
++ const base::Version version;
+ cdms->push_back(content::CdmInfo(kWidevineCdmType, version, cdm_path,
+ codecs_supported));
+ }
diff --git a/chromium.spec b/chromium.spec
index 90b76ed..37467e1 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -95,6 +95,8 @@ Patch11: chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch
# Ignore deprecations in cups 2.2
# https://bugs.chromium.org/p/chromium/issues/detail?id=622493
Patch12: chromium-52.0.2743.82-cups22.patch
+# Fix widevine compilation
+Patch13: chromium-52.0.2743.82-widevinefix.patch
### Chromium Tests Patches ###
Patch100: chromium-46.0.2490.86-use_system_opus.patch
@@ -385,6 +387,7 @@ Remote desktop support for google-chrome & chromium.
%patch10 -p1 -b .unbundle-fix
%patch11 -p1 -b .fixcast
%patch12 -p1 -b .cups22
+%patch13 -p1 -b .widevinefix
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@@ -583,6 +586,9 @@ export CHROMIUM_BROWSER_GYP_DEFINES="\
-Dremove_webcore_debug_symbols=1 \
-Dlogging_like_official_build=1 \
-Denable_hotwording=0 \
+ -Denable_pepper_cdms=1 \
+ -Denable_webrtc=1 \
+ -Denable_widevine=1 \
%if 0
-Dbuildtype=Official \
%endif
@@ -1391,7 +1397,8 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
* Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-2
-- try to fix cups 2.2 support again (hackishly)
+- 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
7 years, 5 months
[chromium-libs-media-freeworld: 5/85] try to fix cups22 again (hackishly)
by Miro Hrončok
commit 098c7ea5bda01d99a9ac92b1b2e135f7c0929669
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Jul 21 14:38:19 2016 -0400
try to fix cups22 again (hackishly)
chromium-52.0.2743.82-cups22.patch | 20 ++++++++++++++++----
chromium.spec | 6 +++++-
2 files changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/chromium-52.0.2743.82-cups22.patch b/chromium-52.0.2743.82-cups22.patch
index b3823db..63d5116 100644
--- a/chromium-52.0.2743.82-cups22.patch
+++ b/chromium-52.0.2743.82-cups22.patch
@@ -1,7 +1,7 @@
diff -up chromium-52.0.2743.82/printing/BUILD.gn.cups22 chromium-52.0.2743.82/printing/BUILD.gn
--- chromium-52.0.2743.82/printing/BUILD.gn.cups22 2016-07-21 11:27:05.597507544 -0400
-+++ chromium-52.0.2743.82/printing/BUILD.gn 2016-07-21 11:27:25.565390048 -0400
-@@ -147,7 +147,7 @@ component("printing") {
++++ chromium-52.0.2743.82/printing/BUILD.gn 2016-07-21 14:36:45.574137758 -0400
+@@ -147,12 +147,13 @@ component("printing") {
],
"trim string")
@@ -10,10 +10,16 @@ diff -up chromium-52.0.2743.82/printing/BUILD.gn.cups22 chromium-52.0.2743.82/pr
cflags += [
# CUPS 1.6 deprecated the PPD APIs, but we will stay with this
# API for now as supported Linux and Mac OS'es are still using
+ # older versions of CUPS. More info: crbug.com/226176
+ "-Wno-deprecated-declarations",
++ "-D_PPD_DEPRECATED=\"\"",
+ # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section
+ # below.
+ ]
diff -up chromium-52.0.2743.82/printing/printing.gyp.cups22 chromium-52.0.2743.82/printing/printing.gyp
--- chromium-52.0.2743.82/printing/printing.gyp.cups22 2016-07-21 11:26:26.622746918 -0400
-+++ chromium-52.0.2743.82/printing/printing.gyp 2016-07-21 11:26:44.517632794 -0400
-@@ -142,7 +142,7 @@
++++ chromium-52.0.2743.82/printing/printing.gyp 2016-07-21 14:36:07.390373060 -0400
+@@ -142,12 +142,13 @@
'cups_version': '<!(python cups_config_helper.py --api-version <(sysroot))',
},
'conditions': [
@@ -22,3 +28,9 @@ diff -up chromium-52.0.2743.82/printing/printing.gyp.cups22 chromium-52.0.2743.8
'cflags': [
# CUPS 1.6 deprecated the PPD APIs, but we will stay with this
# API for now as supported Linux and Mac OS'es are still using
+ # older versions of CUPS. More info: crbug.com/226176
+ '-Wno-deprecated-declarations',
++ '-D_PPD_DEPRECATED=""',
+ # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section
+ # below.
+ ],
diff --git a/chromium.spec b/chromium.spec
index 1982f9e..90b76ed 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -62,7 +62,7 @@ BuildRequires: libicu-devel >= 5.4
Name: chromium%{chromium_channel}
Version: 52.0.2743.82
-Release: 1%{?dist}
+Release: 2%{?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)
@@ -1390,11 +1390,15 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-2
+- try to fix cups 2.2 support again (hackishly)
+
* 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
7 years, 5 months
[chromium-libs-media-freeworld: 3/85] 52.0.2743.82
by Miro Hrončok
commit c30bb16136367bab9bc67a8b0c4567ccb7588fe2
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Jul 21 11:49:12 2016 -0400
52.0.2743.82
.gitignore | 1 +
chromium-52.0.2743.82-cups22.patch | 24 +++++++++++++
chromium.spec | 71 +++++++++++++++++++++++++++++++++-----
sources | 4 +--
4 files changed, 90 insertions(+), 10 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index ab677cd..271132b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/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
diff --git a/chromium-52.0.2743.82-cups22.patch b/chromium-52.0.2743.82-cups22.patch
new file mode 100644
index 0000000..b3823db
--- /dev/null
+++ b/chromium-52.0.2743.82-cups22.patch
@@ -0,0 +1,24 @@
+diff -up chromium-52.0.2743.82/printing/BUILD.gn.cups22 chromium-52.0.2743.82/printing/BUILD.gn
+--- chromium-52.0.2743.82/printing/BUILD.gn.cups22 2016-07-21 11:27:05.597507544 -0400
++++ chromium-52.0.2743.82/printing/BUILD.gn 2016-07-21 11:27:25.565390048 -0400
+@@ -147,7 +147,7 @@ component("printing") {
+ ],
+ "trim string")
+
+- if (cups_version == "1.6" || cups_version == "1.7") {
++ if (cups_version == "1.6" || cups_version == "1.7" || cups_version == "2.2") {
+ cflags += [
+ # CUPS 1.6 deprecated the PPD APIs, but we will stay with this
+ # API for now as supported Linux and Mac OS'es are still using
+diff -up chromium-52.0.2743.82/printing/printing.gyp.cups22 chromium-52.0.2743.82/printing/printing.gyp
+--- chromium-52.0.2743.82/printing/printing.gyp.cups22 2016-07-21 11:26:26.622746918 -0400
++++ chromium-52.0.2743.82/printing/printing.gyp 2016-07-21 11:26:44.517632794 -0400
+@@ -142,7 +142,7 @@
+ 'cups_version': '<!(python cups_config_helper.py --api-version <(sysroot))',
+ },
+ 'conditions': [
+- ['cups_version in ["1.6", "1.7"]', {
++ ['cups_version in ["1.6", "1.7", "2.2"]', {
+ 'cflags': [
+ # CUPS 1.6 deprecated the PPD APIs, but we will stay with this
+ # API for now as supported Linux and Mac OS'es are still using
diff --git a/chromium.spec b/chromium.spec
index 573fcbc..893e7a4 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -66,7 +66,6 @@ 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)
-Group: Applications/Internet
### Chromium Fedora Patches ###
Patch0: chromium-46.0.2490.71-gcc5.patch
@@ -93,6 +92,9 @@ Patch9: chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
Patch10: chromium-50.0.2661.94-unbundle-re2-fix.patch
# Fix PNGImageDecoder code
Patch11: chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch
+# Ignore deprecations in cups 2.2
+# https://bugs.chromium.org/p/chromium/issues/detail?id=622493
+Patch12: chromium-52.0.2743.82-cups22.patch
### Chromium Tests Patches ###
Patch100: chromium-46.0.2490.86-use_system_opus.patch
@@ -124,8 +126,6 @@ Source9: chromium-browser.xml
Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
Source11: chrome-remote-desktop.service
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
# We can assume gcc and binutils.
BuildRequires: gcc-c++
@@ -384,6 +384,7 @@ Remote desktop support for google-chrome & chromium.
%patch9 -p1 -b .modern-libusbx
%patch10 -p1 -b .unbundle-fix
%patch11 -p1 -b .fixcast
+%patch12 -p1 -b .cups22
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@@ -1245,9 +1246,6 @@ cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
fi
%endif
-%clean
-rm -rf %{buildroot}
-
%post
# Set SELinux labels - semanage itself will adjust the lib directory naming
semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}
@@ -1281,7 +1279,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%systemd_postun_with_restart chrome-remote-desktop.service
%files
-%defattr(-,root,root,-)
%{_bindir}/%{chromium_browser_channel}
%dir %{chromium_path}
%{chromium_path}/*.bin
@@ -1301,7 +1298,60 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
# %%{chromium_path}/plugins/
%{chromium_path}/pyproto/
%attr(4755, root, root) %{chromium_path}/chrome-sandbox
-%{chromium_path}/locales/
+%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
+%lang(en_US) %{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
%{chromium_path}/resources/
%{_mandir}/man1/%{chromium_browser_channel}.*
%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png
@@ -1340,6 +1390,11 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
+* 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
diff --git a/sources b/sources
index c0b5f56..316af98 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-ceaa558c5a94789d5a7a69837ce035ef chromium-52.0.2743.75-clean.tar.xz
49a7f897775cce21d2b69968b8af1cea depot_tools.git-master.tar.gz
-af24ec9bc5e86e10841f44397db5ffda policy_templates.zip
+1389b4f03dfb2e44697e138314bd13ed chromium-52.0.2743.82-clean.tar.xz
+8ce432ed9e6b1edca19f0057f5ad76bf policy_templates.zip
7 years, 5 months
[chromium-libs-media-freeworld: 2/85] HONK HONK! TRUCK FULL OF RADIOACTIVE WASTE AND ZOMBIE BITS COMING THROUGH
by Miro Hrončok
commit f66ad8517046c77404cdc236dc5fafc0e7ca00c0
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Jul 19 14:10:57 2016 -0400
HONK HONK! TRUCK FULL OF RADIOACTIVE WASTE AND ZOMBIE BITS COMING THROUGH
.gitignore | 3 +
chrome-remote-desktop.service | 12 +
chromium-45.0.2454.101-linux-path-max.patch | 44 +
chromium-46.0.2490.71-gcc5.patch | 354 +++++
chromium-46.0.2490.71-notest.patch | 11 +
chromium-46.0.2490.86-use_system_opus.patch | 12 +
...7.0.2526.80-nacl-ignore-broken-fd-counter.patch | 27 +
chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch | 11 +
chromium-48.0.2564.103-gcc6.patch | 204 +++
...0.2564.116-libusb_interrupt_event_handler.patch | 15 +
chromium-50.0.2661.86-addrfix.patch | 11 +
chromium-50.0.2661.94-unbundle-re2-fix.patch | 12 +
...mium-52.0.2723.2-PNGImageDecoder-fix-cast.patch | 12 +
chromium-52.0.2723.2-sync_link_zlib.patch | 11 +
...m-icu-54-does-not-have-detectHostTimeZone.patch | 12 +
chromium-52.0.2723.2-use_system_harfbuzz.patch | 12 +
chromium-browser.desktop | 140 ++
chromium-browser.sh | 57 +
chromium-browser.xml | 18 +
chromium-latest.py | 337 ++++
chromium.spec | 1663 ++++++++++++++++++++
clean_ffmpeg.sh | 212 +++
get_free_ffmpeg_source_files.py | 73 +
get_linux_tests_names.py | 121 ++
sources | 3 +
25 files changed, 3387 insertions(+)
---
diff --git a/.gitignore b/.gitignore
index e69de29..ab677cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/chromium-52.0.2743.75-clean.tar.xz
+/depot_tools.git-master.tar.gz
+/policy_templates.zip
diff --git a/chrome-remote-desktop.service b/chrome-remote-desktop.service
new file mode 100644
index 0000000..5889bc7
--- /dev/null
+++ b/chrome-remote-desktop.service
@@ -0,0 +1,12 @@
+[Unit]
+Description="Chrome Remote Desktop host daemon"
+
+[Service]
+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-46.0.2490.71-gcc5.patch b/chromium-46.0.2490.71-gcc5.patch
new file mode 100644
index 0000000..02ae2d6
--- /dev/null
+++ b/chromium-46.0.2490.71-gcc5.patch
@@ -0,0 +1,354 @@
+diff -up chromium-46.0.2490.71/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc.gcc5 chromium-46.0.2490.71/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc
+--- chromium-46.0.2490.71/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc.gcc5 2015-10-06 22:42:52.000000000 -0400
++++ chromium-46.0.2490.71/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc 2015-10-15 23:42:00.645518701 -0400
+@@ -165,8 +165,8 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ // state[16 + 2] 0x000000 Byte 2 of 3 (relative offsets)
+ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__,X__,X__,X__,X__,X__,X__,
+ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__,X__,X__,X__,X__,X__,X__,
+--14,-14,-14,-14,-14,-14,-14,-14, -14,-14,-14,-14,-14,-14,-14,-14,
+--14,-14,-14,-14,-14,-14,-14,-14, -14,-14,-14,-14,-14,-14,-14,-14,
++(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14, (uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,
++(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14, (uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,
+
+ // state[17 + 2] 0x0031c0 Byte 3 of 3 (property)
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+@@ -259,10 +259,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 229,229,229, 3,208, 0,229, 5, 233, 0,229,229,229,208,229,229,
+
+ // state[32 + 2] 0x002000 Byte 2 of 3 (relative offsets)
+--30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
+--30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
+--30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
+--30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
++(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
++(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
++(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
++(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
+
+ // state[33 + 2] 0x003780 Byte 3 of 3 (property)
+ 229,208,229,229,208,229,229,229, 208,208,208,208,208, 4, 6,208,
+@@ -355,10 +355,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 228,229,229,229,229,233,233, 6, 208,229, 3,229,233, 6, 6, 0,
+
+ // state[48 + 2] 0x001000 Byte 2 of 3 (relative offsets)
+--46,-46,-46,-46,-42,-41,-40,-39, -46,-46,-46,-46,-46,-46,-46,-46,
+--46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
+--46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
+--46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
++(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
++(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
++(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
++(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
+
+ // state[49 + 2] 0x003b40 Byte 3 of 3 (property)
+ 6,227,208,233,208, 3, 3,208, 208,229, 0,229,233,219, 0, 6,
+@@ -451,10 +451,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 229,208,208,208,217,208,229,229, 229,229,208,217,208,229,229,229,
+
+ // state[64 + 2] 0x003000 Byte 2 of 3 (relative offsets)
+--54,-53,-52,-51,-50,-58,-49,-47, -62,-62,-62,-62,-62,-62,-62,-62,
+--46,-45,-44,-43,-42,-41,-40,-39, -38,-37,-36,-35,-34,-33,-31,-30,
+--29,-28,-27,-26,-25,-24,-23,-22, -21,-20,-19,-18,-17,-15,-14,-13,
+--12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4,
++(uint8)-54,(uint8)-53,(uint8)-52,(uint8)-51,(uint8)-50,(uint8)-58,(uint8)-49,(uint8)-47, (uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,
++(uint8)-46,(uint8)-45,(uint8)-44,(uint8)-43,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39, (uint8)-38,(uint8)-37,(uint8)-36,(uint8)-35,(uint8)-34,(uint8)-33,(uint8)-31,(uint8)-30,
++(uint8)-29,(uint8)-28,(uint8)-27,(uint8)-26,(uint8)-25,(uint8)-24,(uint8)-23,(uint8)-22, (uint8)-21,(uint8)-20,(uint8)-19,(uint8)-18,(uint8)-17,(uint8)-15,(uint8)-14,(uint8)-13,
++(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4,
+
+ // state[65 + 2] 0x003f00 Byte 3 of 3 (property)
+ 217,217,208, 3,208,217,208,208, 6,229,208,228,229,229,208,229,
+@@ -547,10 +547,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 229,208,229,229,208,229,233, 0, 208,208,229,208,227,229,229,229,
+
+ // state[80 + 2] 0x004000 Byte 2 of 3 (relative offsets)
+--11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5,
++(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+- 38, 39, 40, 41, 42, 43, 44,-78, 45, 46, 47, 48, 49, 50, 51, 52,
++ 38, 39, 40, 41, 42, 43, 44,(uint8)-78, 45, 46, 47, 48, 49, 50, 51, 52,
+
+ // state[81 + 2] 0x0042c0 Byte 3 of 3 (property)
+ 229, 0,229,229,229, 3, 4, 4, 229,229,229,229,208,229, 0,208,
+@@ -931,7 +931,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 0,142, 98, 28,117,206,212,212, 220, 15, 0,231,199,231,111, 28,
+
+ // state[144 + 2] 0x005000 Byte 2 of 3 (relative offsets)
+--11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5,
++(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+@@ -1315,7 +1315,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 16, 15,211,118, 0,231, 68,231, 0, 99,161, 0,115,221,144,140,
+
+ // state[208 + 2] 0x006000 Byte 2 of 3 (relative offsets)
+--10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6,
++(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+@@ -1699,7 +1699,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 119, 16, 51, 0, 0, 68,136, 72, 144,118, 87,201,191,136, 78,233,
+
+ // state[272 + 2] 0x007000 Byte 2 of 3 (relative offsets)
+- -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7,
++ (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+@@ -2083,7 +2083,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 212,212, 0,126,140,220,220, 0, 0, 0,127,118,106, 0,199, 0,
+
+ // state[336 + 2] 0x008000 Byte 2 of 3 (relative offsets)
+- -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8,
++ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+@@ -2467,7 +2467,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 0,122, 0,231,100,232, 0, 0, 117, 0,206,231, 0, 0,231, 0,
+
+ // state[400 + 2] 0x009000 Byte 2 of 3 (relative offsets)
+- -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9,
++ (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+@@ -2851,10 +2851,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ // state[464 + 2] 0x00a000 Byte 2 of 3 (relative offsets)
+- -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
+- -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
+- -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
+- -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
++ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
++ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
++ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
++ (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5,
+
+ // state[465 + 2] 0x000080 Byte 2 of 2 (property)
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+@@ -2947,10 +2947,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208,208,208,208, 5, 6,208, 2, 0, 6, 6, 5,208,208,208, 6,
+
+ // state[480 + 2] 0x00b000 Byte 2 of 3 (relative offsets)
+--20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
+--20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
+--20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
+--20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
++(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
++(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
++(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
++(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
+
+ // state[481 + 2] 0x020100 Byte 4 of 4 (property)
+ 2, 6, 5, 6, 5,229, 5,208, 208,208,208,208,208,208,208,229,
+@@ -3043,10 +3043,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208,208, 5, 5, 5,208,208, 2, 229, 5, 5, 5, 5, 5, 6,208,
+
+ // state[496 + 2] 0x00d000 Byte 2 of 3 (relative offsets)
+--35,-35,-35,-35,-35,-35,-35,-35, -35,-35,-35,-35,-35,-35,-35,-35,
+--35,-35,-35,-35,-35,-35,-35,-35, -35,-35,-35,-35,-35,-35,-34,-33,
+--33,-33,-33,-33,-33,-33,-33,-33, -33,-33,-33,-33,-33,-33,-33,-33,
+--33,-33,-33,-33,-33,-33,-33,-33, -33,-33,-33,-33,-33,-33,-33,-33,
++(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35, (uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,
++(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35, (uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-34,(uint8)-33,
++(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33, (uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,
++(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33, (uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,
+
+ // state[497 + 2] 0x0204c0 Byte 4 of 4 (property)
+ 2, 2, 5, 5, 5, 2,208, 2, 5, 5, 6,208,208, 5, 5, 5,
+@@ -3139,10 +3139,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208,208, 5, 5, 5, 5, 6, 6, 208,208, 2,208,208,208,208,208,
+
+ // state[512 + 2] 0x00f000 Byte 2 of 3 (relative offsets)
+--47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-47,-47,-47,
+--47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-47,-47,-47,
+--47,-47,-47,-47,-46,-45,-44,-43, -42,-41,-44,-40,-47,-47,-47,-47,
+--47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-39,-38,-37,
++(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
++(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
++(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-46,(uint8)-45,(uint8)-44,(uint8)-43, (uint8)-42,(uint8)-41,(uint8)-44,(uint8)-40,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
++(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-39,(uint8)-38,(uint8)-37,
+
+ // state[513 + 2] 0x020880 Byte 4 of 4 (property)
+ 5, 5, 5, 6,208,208,208,208, 208,208, 5, 5, 6, 6,208,208,
+@@ -3235,10 +3235,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 5, 6,208,218,208,208,208,218, 208, 6,227,229, 6, 6, 6,208,
+
+ // state[528 + 2] 0x020000 Byte 3 of 4 (relative offsets)
+--52,-51,-50,-49,-47,-46,-45,-44, -43,-42,-41,-40,-39,-38,-37,-36,
+--35,-34,-33,-31,-30,-29,-28,-27, -26,-25,-24,-23,-22,-21,-20,-19,
+--18,-17,-15,-14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2,
+- -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
++(uint8)-52,(uint8)-51,(uint8)-50,(uint8)-49,(uint8)-47,(uint8)-46,(uint8)-45,(uint8)-44, (uint8)-43,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39,(uint8)-38,(uint8)-37,(uint8)-36,
++(uint8)-35,(uint8)-34,(uint8)-33,(uint8)-31,(uint8)-30,(uint8)-29,(uint8)-28,(uint8)-27, (uint8)-26,(uint8)-25,(uint8)-24,(uint8)-23,(uint8)-22,(uint8)-21,(uint8)-20,(uint8)-19,
++(uint8)-18,(uint8)-17,(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2,
++ (uint8)-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+
+ // state[529 + 2] 0x020c40 Byte 4 of 4 (property)
+ 227, 5, 5, 5, 2, 2, 2, 2, 213, 2, 2, 2, 2, 2,208, 6,
+@@ -3427,7 +3427,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208,208,208,208,208,208,208,208, 208, 6, 6, 6, 6, 2, 5, 5,
+
+ // state[560 + 2] 0x021000 Byte 3 of 4 (relative offsets)
+--16,-15,-14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1,
++(uint8)-16,(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+@@ -3811,7 +3811,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 5, 5, 5, 6, 6, 6, 5,208, 208,229,208,208, 5, 5, 5, 5,
+
+ // state[624 + 2] 0x022000 Byte 3 of 4 (relative offsets)
+--15,-14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1,
++(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+@@ -4195,7 +4195,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 6, 6, 4, 5,208,208,208,208, 208,208,229, 6, 5, 6, 6, 6,
+
+ // state[688 + 2] 0x023000 Byte 3 of 4 (relative offsets)
+--14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2,
++(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+@@ -4579,7 +4579,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 5, 5, 5, 5, 5, 5, 5, 6, 208,208,208,208,208,208, 6, 6,
+
+ // state[752 + 2] 0x024000 Byte 3 of 4 (relative offsets)
+--13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3,
++(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+@@ -4963,7 +4963,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 229, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 6,229,
+
+ // state[816 + 2] 0x025000 Byte 3 of 4 (relative offsets)
+--12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4,
++(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+@@ -5347,7 +5347,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 6, 6, 6, 5, 5, 5, 5, 6, 6, 6, 3, 6,229,208,208,229,
+
+ // state[880 + 2] 0x026000 Byte 3 of 4 (relative offsets)
+--11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5,
++(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+@@ -5731,7 +5731,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208, 6, 6,208,208,208,208,208, 6, 6, 6,216, 5, 5, 5, 5,
+
+ // state[944 + 2] 0x027000 Byte 3 of 4 (relative offsets)
+--10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6,
++(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+@@ -6115,7 +6115,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 5, 5, 5, 6,208,208, 6, 6, 208,229,208,208,208, 5, 5, 5,
+
+ // state[1008 + 2] 0x028000 Byte 3 of 4 (relative offsets)
+- -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7,
++ (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+@@ -6499,7 +6499,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 208,208, 5, 5, 6,208,208, 5, 208,208,208, 6,208, 6,208,208,
+
+ // state[1072 + 2] 0x029000 Byte 3 of 4 (relative offsets)
+- -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8,
++ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+@@ -6883,7 +6883,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 229,229,229,229,208,208,208,229, 208,208,208,229, 0,229,208,208,
+
+ // state[1136 + 2] 0x02a000 Byte 3 of 4 (relative offsets)
+- -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9,
++ (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+@@ -7075,10 +7075,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+
+ // state[1168 + 2] 0x02f000 Byte 3 of 4 (relative offsets)
+- -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+- -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+- -8, -7, -6, -5, -4, -3, -2, -1, 1, -9, -9, -9, -9, -9, -9, -9,
+- -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
++ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
++ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
++ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1, 1, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
++ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
+
+ // state[1169 + 2] 0x02fa00 Byte 4 of 4 (property)
+ 217, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,217, 5, 5,
+diff -up chromium-46.0.2490.71/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 chromium-46.0.2490.71/third_party/webgl/src/specs/latest/2.0/webgl2.idl
+--- chromium-46.0.2490.71/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 2015-10-13 15:04:44.000000000 -0400
++++ chromium-46.0.2490.71/third_party/webgl/src/specs/latest/2.0/webgl2.idl 2015-10-16 00:54:16.603896492 -0400
+@@ -261,7 +261,7 @@ interface WebGL2RenderingContextBase
+ 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 -up chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.h.gcc5 chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.h
+--- chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.h.gcc5 2015-10-06 22:42:25.000000000 -0400
++++ chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.h 2015-10-15 23:42:00.651518569 -0400
+@@ -52,7 +52,7 @@ public:
+ * to the value of NodeType for the equivalent node type.
+ */
+ enum {
+- SHOW_ALL = 0xFFFFFFFF,
++ SHOW_ALL = 256 /* 0xFFFFFFFF */,
+ SHOW_ELEMENT = 0x00000001,
+ SHOW_ATTRIBUTE = 0x00000002,
+ SHOW_TEXT = 0x00000004,
+diff -up chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.idl.gcc5 chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.idl
+--- chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.idl.gcc5 2015-10-06 22:42:25.000000000 -0400
++++ chromium-46.0.2490.71/third_party/WebKit/Source/core/dom/NodeFilter.idl 2015-10-15 23:42:00.653518525 -0400
+@@ -31,7 +31,7 @@
+ const unsigned short FILTER_SKIP = 3;
+
+ // Constants for whatToShow
+- const unsigned long SHOW_ALL = 0xFFFFFFFF;
++ const unsigned long SHOW_ALL = 256; // 0xFFFFFFFF
+ const unsigned long SHOW_ELEMENT = 0x1;
+ const unsigned long SHOW_ATTRIBUTE = 0x2; // historical
+ const unsigned long SHOW_TEXT = 0x4;
+diff -up chromium-46.0.2490.71/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl.gcc5 chromium-46.0.2490.71/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl
+--- chromium-46.0.2490.71/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl.gcc5 2015-10-13 15:04:34.000000000 -0400
++++ chromium-46.0.2490.71/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl 2015-10-16 00:54:52.061105191 -0400
+@@ -254,7 +254,7 @@ typedef long long GLint64;
+ 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;
+@@ -297,7 +297,7 @@ typedef long long GLint64;
+ const GLenum MAX_ELEMENT_INDEX = 0x8D6B;
+ const GLenum NUM_SAMPLE_COUNTS = 0x9380;
+ const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
+- const GLint TIMEOUT_IGNORED = -1;
++ const GLint TIMEOUT_IGNORED = 256;
+
+ /* WebGL-specific enums */
+ const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
diff --git a/chromium-46.0.2490.71-notest.patch b/chromium-46.0.2490.71-notest.patch
new file mode 100644
index 0000000..e4e3448
--- /dev/null
+++ b/chromium-46.0.2490.71-notest.patch
@@ -0,0 +1,11 @@
+diff -up chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd.notest chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd
+--- chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd.notest 2015-10-16 02:01:56.644149741 -0400
++++ chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd 2015-10-16 02:02:36.217285227 -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" />
+ </includes>
+ </release>
+ </grit>
diff --git a/chromium-46.0.2490.86-use_system_opus.patch b/chromium-46.0.2490.86-use_system_opus.patch
new file mode 100644
index 0000000..d54938b
--- /dev/null
+++ b/chromium-46.0.2490.86-use_system_opus.patch
@@ -0,0 +1,12 @@
+diff -up chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc.use_system_opus chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc
+--- chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc.use_system_opus 2015-10-07 04:42:12.000000000 +0200
++++ chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc 2015-11-11 16:11:13.535250609 +0100
+@@ -13,7 +13,7 @@
+ #include "media/cast/test/utility/audio_utility.h"
+ #include "media/cast/test/utility/standalone_cast_environment.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+-#include "third_party/opus/src/include/opus.h"
++#include <opus/opus.h>
+
+ namespace media {
+ namespace cast {
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-48.0.2564.103-gcc6.patch b/chromium-48.0.2564.103-gcc6.patch
new file mode 100644
index 0000000..5f1340f
--- /dev/null
+++ b/chromium-48.0.2564.103-gcc6.patch
@@ -0,0 +1,204 @@
+diff -up chromium-48.0.2564.103/third_party/skia/src/opts/SkXfermode_opts.h.gcc6 chromium-48.0.2564.103/third_party/skia/src/opts/SkXfermode_opts.h
+--- chromium-48.0.2564.103/third_party/skia/src/opts/SkXfermode_opts.h.gcc6 2016-02-16 15:01:13.200131996 -0500
++++ chromium-48.0.2564.103/third_party/skia/src/opts/SkXfermode_opts.h 2016-02-17 13:31:50.216198258 -0500
+@@ -109,76 +109,71 @@ XFERMODE(Lighten) {
+ }
+ #undef XFERMODE
+
+-// Some xfermodes use math like divide or sqrt that's best done in floats.
+-// We write it generically, then call it 1 or 2 pixels at a time (T == Sk4f or Sk8f).
+-#define XFERMODE(Name) struct Name { template <typename T> T operator()(const T&, const T&); }; \
+- template <typename T> T Name::operator()(const T& d, const T& s)
++// Some xfermodes use math like divide or sqrt that's best done in floats 1 pixel at a time.
++#define XFERMODE(Name) static Sk4f SK_VECTORCALL Name(Sk4f d, Sk4f s)
+
+-static_assert(SK_A32_SHIFT == 24, "");
+ static inline Sk4f a_rgb(const Sk4f& a, const Sk4f& rgb) {
++ static_assert(SK_A32_SHIFT == 24, "");
+ return a * Sk4f(0,0,0,1) + rgb * Sk4f(1,1,1,0);
+ }
+-static inline Sk8f a_rgb(const Sk8f& a, const Sk8f& rgb) {
+- // TODO: SkNx_blend<0,0,0,1,0,0,0,1>(a, rgb) to let us use _mm256_blend_ps?
+- return a * Sk8f(0,0,0,1,0,0,0,1) + rgb * Sk8f(1,1,1,0,1,1,1,0);
++static inline Sk4f alphas(const Sk4f& f) {
++ return SkNx_dup<SK_A32_SHIFT/8>(f);
+ }
+-static inline Sk4f alphas(const Sk4f& f) { return SkNx_shuffle<3,3,3,3> (f); }
+-static inline Sk8f alphas(const Sk8f& f) { return SkNx_shuffle<3,3,3,3,7,7,7,7>(f); }
+
+ XFERMODE(ColorDodge) {
+ auto sa = alphas(s),
+ da = alphas(d),
+- isa = T(1)-sa,
+- ida = T(1)-da;
++ isa = Sk4f(1)-sa,
++ ida = Sk4f(1)-da;
+
+ auto srcover = s + d*isa,
+ dstover = d + s*ida,
+- otherwise = sa * T::Min(da, (d*sa)*(sa-s).approxInvert()) + s*ida + d*isa;
++ otherwise = sa * Sk4f::Min(da, (d*sa)*(sa-s).approxInvert()) + s*ida + d*isa;
+
+ // Order matters here, preferring d==0 over s==sa.
+- auto colors = (d == 0).thenElse(dstover,
+- (s == sa).thenElse(srcover,
+- otherwise));
++ auto colors = (d == Sk4f(0)).thenElse(dstover,
++ (s == sa).thenElse(srcover,
++ otherwise));
+ return a_rgb(srcover, colors);
+ }
+ XFERMODE(ColorBurn) {
+ auto sa = alphas(s),
+ da = alphas(d),
+- isa = T(1)-sa,
+- ida = T(1)-da;
++ isa = Sk4f(1)-sa,
++ ida = Sk4f(1)-da;
+
+ auto srcover = s + d*isa,
+ dstover = d + s*ida,
+- otherwise = sa*(da-T::Min(da, (da-d)*sa*s.approxInvert())) + s*ida + d*isa;
++ otherwise = sa*(da-Sk4f::Min(da, (da-d)*sa*s.approxInvert())) + s*ida + d*isa;
+
+ // Order matters here, preferring d==da over s==0.
+- auto colors = (d == da).thenElse(dstover,
+- (s == 0).thenElse(srcover,
+- otherwise));
++ auto colors = (d == da).thenElse(dstover,
++ (s == Sk4f(0)).thenElse(srcover,
++ otherwise));
+ return a_rgb(srcover, colors);
+ }
+ XFERMODE(SoftLight) {
+ auto sa = alphas(s),
+ da = alphas(d),
+- isa = T(1)-sa,
+- ida = T(1)-da;
++ isa = Sk4f(1)-sa,
++ ida = Sk4f(1)-da;
+
+ // Some common terms.
+- auto m = (da > 0).thenElse(d / da, 0),
+- s2 = s*2,
+- m4 = m*4;
++ auto m = (da > Sk4f(0)).thenElse(d / da, Sk4f(0)),
++ s2 = Sk4f(2)*s,
++ m4 = Sk4f(4)*m;
+
+ // The logic forks three ways:
+ // 1. dark src?
+ // 2. light src, dark dst?
+ // 3. light src, light dst?
+- auto darkSrc = d*(sa + (s2 - sa)*(T(1) - m)), // Used in case 1.
+- darkDst = (m4*m4 + m4)*(m - 1) + m*7, // Used in case 2.
+- liteDst = m.sqrt() - m, // Used in case 3.
+- liteSrc = d*sa + da*(s2-sa)*(d*4 <= da).thenElse(darkDst, liteDst); // Case 2 or 3?
++ auto darkSrc = d*(sa + (s2 - sa)*(Sk4f(1) - m)), // Used in case 1.
++ darkDst = (m4*m4 + m4)*(m - Sk4f(1)) + Sk4f(7)*m, // Used in case 2.
++ liteDst = m.sqrt() - m, // Used in case 3.
++ liteSrc = d*sa + da*(s2-sa)*(Sk4f(4)*d <= da).thenElse(darkDst, liteDst); // Case 2 or 3?
+
+ auto alpha = s + d*isa;
+- auto colors = s*ida + d*isa + (s2 <= sa).thenElse(darkSrc, liteSrc); // Case 1 or 2/3?
++ auto colors = s*ida + d*isa + (s2 <= sa).thenElse(darkSrc, liteSrc); // Case 1 or 2/3?
+
+ return a_rgb(alpha, colors);
+ }
+@@ -245,52 +240,53 @@ private:
+ typedef SkProcCoeffXfermode INHERITED;
+ };
+
+-template <typename BlendFn>
+-class FloatXfermode : public SkProcCoeffXfermode {
++class Sk4fXfermode : public SkProcCoeffXfermode {
+ public:
+- FloatXfermode(const ProcCoeff& rec, SkXfermode::Mode mode)
+- : INHERITED(rec, mode) {}
++ typedef Sk4f (SK_VECTORCALL *ProcF)(Sk4f, Sk4f);
++ Sk4fXfermode(const ProcCoeff& rec, SkXfermode::Mode mode, ProcF procf)
++ : INHERITED(rec, mode)
++ , fProcF(procf) {}
+
+ void xfer32(SkPMColor dst[], const SkPMColor src[], int n, const SkAlpha aa[]) const override {
+- BlendFn blend;
+- while (n >= 2) {
+- auto d = Sk8f::FromBytes((const uint8_t*)dst) * (1.0f/255),
+- s = Sk8f::FromBytes((const uint8_t*)src) * (1.0f/255),
+- b = blend(d, s);
+- if (aa) {
+- auto a255 = Sk8f(aa[0],aa[0],aa[0],aa[0], aa[1],aa[1],aa[1],aa[1]);
+- (b*a255 + d*(Sk8f(255)-a255) + 0.5).toBytes((uint8_t*)dst);
+- aa += 2;
+- } else {
+- (b * 255 + 0.5).toBytes((uint8_t*)dst);
+- }
+- dst += 2;
+- src += 2;
+- n -= 2;
+- }
+- if (n) {
+- auto d = Sk4f::FromBytes((const uint8_t*)dst) * (1.0f/255),
+- s = Sk4f::FromBytes((const uint8_t*)src) * (1.0f/255),
+- b = blend(d, s);
+- if (aa) {
+- auto a255 = Sk4f(aa[0],aa[0],aa[0],aa[0]);
+- (b*a255 + d*(Sk4f(255)-a255) + 0.5).toBytes((uint8_t*)dst);
+- aa++;
+- } else {
+- (b * 255 + 0.5).toBytes((uint8_t*)dst);
+- }
++ for (int i = 0; i < n; i++) {
++ dst[i] = aa ? this->xfer32(dst[i], src[i], aa[i])
++ : this->xfer32(dst[i], src[i]);
+ }
+ }
+
+ void xfer16(uint16_t dst[], const SkPMColor src[], int n, const SkAlpha aa[]) const override {
+ for (int i = 0; i < n; i++) {
+- SkPMColor dst32 = SkPixel16ToPixel32(dst[i]); // Convert dst up to 8888.
+- this->xfer32(&dst32, src+i, 1, aa ? aa+i : nullptr); // Blend 1 pixel.
+- dst[i] = SkPixel32ToPixel16(dst32); // Repack dst to 565 and store.
++ SkPMColor dst32 = SkPixel16ToPixel32(dst[i]);
++ dst32 = aa ? this->xfer32(dst32, src[i], aa[i])
++ : this->xfer32(dst32, src[i]);
++ dst[i] = SkPixel32ToPixel16(dst32);
+ }
+ }
+
+ private:
++ static Sk4f Load(SkPMColor c) {
++ return Sk4f::FromBytes((uint8_t*)&c) * Sk4f(1.0f/255);
++ }
++ static SkPMColor Round(const Sk4f& f) {
++ SkPMColor c;
++ (f * Sk4f(255) + Sk4f(0.5f)).toBytes((uint8_t*)&c);
++ return c;
++ }
++ inline SkPMColor xfer32(SkPMColor dst, SkPMColor src) const {
++ return Round(fProcF(Load(dst), Load(src)));
++ }
++
++ inline SkPMColor xfer32(SkPMColor dst, SkPMColor src, SkAlpha aa) const {
++ Sk4f s(Load(src)),
++ d(Load(dst)),
++ b(fProcF(d,s));
++ // We do aa in full float precision before going back down to bytes, because we can!
++ Sk4f a = Sk4f(aa) * Sk4f(1.0f/255);
++ b = b*a + d*(Sk4f(1)-a);
++ return Round(b);
++ }
++
++ ProcF fProcF;
+ typedef SkProcCoeffXfermode INHERITED;
+ };
+
+@@ -327,7 +323,7 @@ static SkXfermode* create_xfermode(const
+ #undef CASE
+
+ #define CASE(Mode) \
+- case SkXfermode::k##Mode##_Mode: return new FloatXfermode<Mode>(rec, mode)
++ case SkXfermode::k##Mode##_Mode: return new Sk4fXfermode(rec, mode, &Mode)
+ CASE(ColorDodge);
+ CASE(ColorBurn);
+ CASE(SoftLight);
diff --git a/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch b/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
new file mode 100644
index 0000000..d0b2484
--- /dev/null
+++ b/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
@@ -0,0 +1,15 @@
+diff -up chromium-48.0.2564.116/device/usb/usb_context.cc.modern-libusbx chromium-48.0.2564.116/device/usb/usb_context.cc
+--- chromium-48.0.2564.116/device/usb/usb_context.cc.modern-libusbx 2016-02-24 10:21:10.534996028 -0500
++++ chromium-48.0.2564.116/device/usb/usb_context.cc 2016-02-24 10:22:28.270499864 -0500
+@@ -57,7 +57,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-50.0.2661.86-addrfix.patch b/chromium-50.0.2661.86-addrfix.patch
new file mode 100644
index 0000000..fd0023a
--- /dev/null
+++ b/chromium-50.0.2661.86-addrfix.patch
@@ -0,0 +1,11 @@
+diff -up chromium-50.0.2661.86/third_party/boringssl/boringssl.gyp.addrfix chromium-50.0.2661.86/third_party/boringssl/boringssl.gyp
+--- chromium-50.0.2661.86/third_party/boringssl/boringssl.gyp.addrfix 2016-04-27 13:26:38.483282586 -0400
++++ chromium-50.0.2661.86/third_party/boringssl/boringssl.gyp 2016-04-27 13:28:19.843065230 -0400
+@@ -18,6 +18,7 @@
+ 'BORINGSSL_IMPLEMENTATION',
+ 'BORINGSSL_NO_STATIC_INITIALIZER',
+ 'OPENSSL_SMALL',
++ '_POSIX_C_SOURCE=200112L',
+ ],
+ 'dependencies': [ 'boringssl_asm' ],
+ # TODO(davidben): Fix size_t truncations in BoringSSL.
diff --git a/chromium-50.0.2661.94-unbundle-re2-fix.patch b/chromium-50.0.2661.94-unbundle-re2-fix.patch
new file mode 100644
index 0000000..306de99
--- /dev/null
+++ b/chromium-50.0.2661.94-unbundle-re2-fix.patch
@@ -0,0 +1,12 @@
+diff -up chromium-50.0.2661.94/build/linux/unbundle/re2.gyp.unbundle-fix chromium-50.0.2661.94/build/linux/unbundle/re2.gyp
+--- chromium-50.0.2661.94/build/linux/unbundle/re2.gyp.unbundle-fix 2016-03-25 09:04:44.000000000 -0400
++++ chromium-50.0.2661.94/build/linux/unbundle/re2.gyp 2016-05-03 12:24:38.850296350 -0400
+@@ -8,7 +8,7 @@
+ 'target_name': 're2',
+ 'type': 'none',
+ 'variables': {
+- 'headers_root_path': '.',
++ 'headers_root_path': 'src/',
+ 'header_filenames': [
+ 're2/filtered_re2.h',
+ 're2/re2.h',
diff --git a/chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch b/chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch
new file mode 100644
index 0000000..9e94d0e
--- /dev/null
+++ b/chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch
@@ -0,0 +1,12 @@
+diff -up chromium-52.0.2723.2/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoder.cpp.fixcast chromium-52.0.2723.2/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoder.cpp
+--- chromium-52.0.2723.2/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoder.cpp.fixcast 2016-05-10 09:43:31.637003844 -0400
++++ chromium-52.0.2723.2/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoder.cpp 2016-05-10 09:43:43.523741296 -0400
+@@ -234,7 +234,7 @@ void PNGImageDecoder::headerAvailable()
+ #endif
+ png_uint_32 profileLength = 0;
+ if (png_get_iCCP(png, info, &profileName, &compressionType, &profile, &profileLength)) {
+- setColorProfileAndTransform(profile, profileLength, imageHasAlpha, false /* useSRGB */);
++ setColorProfileAndTransform((const char*)profile, profileLength, imageHasAlpha, false /* useSRGB */);
+ }
+ }
+ #endif // PNG_iCCP_SUPPORTED
diff --git a/chromium-52.0.2723.2-sync_link_zlib.patch b/chromium-52.0.2723.2-sync_link_zlib.patch
new file mode 100644
index 0000000..71d0f16
--- /dev/null
+++ b/chromium-52.0.2723.2-sync_link_zlib.patch
@@ -0,0 +1,11 @@
+diff -up chromium-52.0.2723.2/sync/sync_tests.gypi.sync_link_zlib chromium-52.0.2723.2/sync/sync_tests.gypi
+--- chromium-52.0.2723.2/sync/sync_tests.gypi.sync_link_zlib 2016-05-09 14:22:30.884719562 -0400
++++ chromium-52.0.2723.2/sync/sync_tests.gypi 2016-05-09 14:24:06.337517725 -0400
+@@ -264,6 +264,7 @@
+ '../testing/gtest.gyp:gtest',
+ '../third_party/leveldatabase/leveldatabase.gyp:leveldatabase',
+ '../third_party/protobuf/protobuf.gyp:protobuf_lite',
++ '../third_party/zlib/zlib.gyp:zlib',
+ 'sync',
+ 'test_support_sync_api',
+ 'test_support_sync_core',
diff --git a/chromium-52.0.2723.2-system-icu-54-does-not-have-detectHostTimeZone.patch b/chromium-52.0.2723.2-system-icu-54-does-not-have-detectHostTimeZone.patch
new file mode 100644
index 0000000..1af90ff
--- /dev/null
+++ b/chromium-52.0.2723.2-system-icu-54-does-not-have-detectHostTimeZone.patch
@@ -0,0 +1,12 @@
+diff -up chromium-52.0.2723.2/content/browser/time_zone_monitor.cc.system-icu chromium-52.0.2723.2/content/browser/time_zone_monitor.cc
+--- chromium-52.0.2723.2/content/browser/time_zone_monitor.cc.system-icu 2016-05-09 14:01:42.751588803 -0400
++++ chromium-52.0.2723.2/content/browser/time_zone_monitor.cc 2016-05-09 14:09:22.663951240 -0400
+@@ -23,7 +23,7 @@ TimeZoneMonitor::~TimeZoneMonitor() {
+
+ void TimeZoneMonitor::NotifyRenderers() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || U_ICU_VERSION_MAJOR_NUM < 55
+ // On CrOS, ICU's default tz is already set to a new zone. No
+ // need to redetect it with detectHostTimeZone().
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault());
diff --git a/chromium-52.0.2723.2-use_system_harfbuzz.patch b/chromium-52.0.2723.2-use_system_harfbuzz.patch
new file mode 100644
index 0000000..dcdc9aa
--- /dev/null
+++ b/chromium-52.0.2723.2-use_system_harfbuzz.patch
@@ -0,0 +1,12 @@
+diff -up chromium-52.0.2723.2/ui/gfx/render_text_harfbuzz.h.use_system_harfbuzz chromium-52.0.2723.2/ui/gfx/render_text_harfbuzz.h
+--- chromium-52.0.2723.2/ui/gfx/render_text_harfbuzz.h.use_system_harfbuzz 2016-05-09 14:17:34.867555791 -0400
++++ chromium-52.0.2723.2/ui/gfx/render_text_harfbuzz.h 2016-05-09 14:18:56.131677853 -0400
+@@ -13,7 +13,7 @@
+ #include "base/gtest_prod_util.h"
+ #include "base/macros.h"
+ #include "base/memory/scoped_vector.h"
+-#include "third_party/harfbuzz-ng/src/hb.h"
++#include <harfbuzz/hb.h>
+ #include "third_party/icu/source/common/unicode/ubidi.h"
+ #include "third_party/icu/source/common/unicode/uscript.h"
+ #include "ui/gfx/render_text.h"
diff --git a/chromium-browser.desktop b/chromium-browser.desktop
new file mode 100644
index 0000000..f532848
--- /dev/null
+++ b/chromium-browser.desktop
@@ -0,0 +1,140 @@
+[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
+StartupNotify=true
+
diff --git a/chromium-browser.sh b/chromium-browser.sh
new file mode 100755
index 0000000..887bd26
--- /dev/null
+++ b/chromium-browser.sh
@@ -0,0 +1,57 @@
+#!/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-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..88703db
--- /dev/null
+++ b/chromium-latest.py
@@ -0,0 +1,337 @@
+#!/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.8
+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):
+ 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')
+
+ # 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)
+
+ 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.spec b/chromium.spec
new file mode 100644
index 0000000..573fcbc
--- /dev/null
+++ b/chromium.spec
@@ -0,0 +1,1663 @@
+# %%{nil} for Stable; -beta for Beta; -dev for Devel
+# dash in -beta and -dev is intentional !
+%global chromium_channel %{nil}
+%global chromium_browser_channel chromium-browser%{chromium_channel}
+%global chromium_path %{_libdir}/chromium-browser%{chromium_channel}
+%global crd_path %{_libdir}/chrome-remote-desktop
+%global tests 0
+# Try to not use the Xvfb as it is slow..
+%global tests_force_display 0
+# 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
+
+# Only flip this on if stuff is really broken re: nacl.
+%if 0%{?fedora} >= 24
+%global killnacl 1
+%else
+%global killnacl 0
+%endif
+
+%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 0
+
+### 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
+%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
+
+Name: chromium%{chromium_channel}
+Version: 52.0.2743.75
+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)
+Group: Applications/Internet
+
+### Chromium Fedora Patches ###
+Patch0: chromium-46.0.2490.71-gcc5.patch
+Patch1: chromium-45.0.2454.101-linux-path-max.patch
+Patch2: chromium-50.0.2661.86-addrfix.patch
+# Google patched their bundled copy of icu 54 to include API functionality that wasn't added until 55.
+# :P
+Patch3: chromium-52.0.2723.2-system-icu-54-does-not-have-detectHostTimeZone.patch
+Patch4: chromium-46.0.2490.71-notest.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.
+Patch6: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+# Ignore broken nacl open fd counter
+Patch7: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+# Fixups for gcc6
+Patch8: chromium-48.0.2564.103-gcc6.patch
+# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
+Patch9: chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
+# Fix re2 unbundle gyp
+Patch10: chromium-50.0.2661.94-unbundle-re2-fix.patch
+# Fix PNGImageDecoder code
+Patch11: chromium-52.0.2723.2-PNGImageDecoder-fix-cast.patch
+
+### Chromium Tests Patches ###
+Patch100: chromium-46.0.2490.86-use_system_opus.patch
+Patch101: chromium-52.0.2723.2-use_system_harfbuzz.patch
+Patch102: chromium-52.0.2723.2-sync_link_zlib.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...
+Source0: chromium-%{version}-clean.tar.xz
+%if 0%{tests}
+Source1: https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+%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
+Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
+Source11: chrome-remote-desktop.service
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+# 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
+BuildRequires: gnome-keyring-devel
+BuildRequires: gtk2-devel
+BuildRequires: glibc-devel
+BuildRequires: gperf
+BuildRequires: libatomic
+BuildRequires: libcap-devel
+BuildRequires: libdrm-devel
+BuildRequires: libexif-devel
+BuildRequires: libgcrypt-devel
+BuildRequires: libudev-devel
+BuildRequires: libusb-devel
+BuildRequires: libXdamage-devel
+BuildRequires: libXScrnSaver-devel
+BuildRequires: libXtst-devel
+BuildRequires: nss-devel
+BuildRequires: pciutils-devel
+BuildRequires: pulseaudio-libs-devel
+%if 0%{?tests}
+BuildRequires: pam-devel
+# Tests needs X
+BuildRequires: Xvfb
+BuildRequires: liberation-sans-fonts
+# For sandbox initialization
+BuildRequires: sudo
+%endif
+
+# Fedora turns on NaCl
+# NaCl needs these
+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
+BuildRequires: native_client >= 50.0.2661.86
+%ifarch x86_64
+BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
+%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
+BuildRequires: hwdata
+BuildRequires: jsoncpp-devel
+BuildRequires: kernel-headers
+BuildRequires: libevent-devel
+BuildRequires: libexif-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
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+%if 0
+# see https://code.google.com/p/chromium/issues/detail?id=501318
+BuildRequires: libsrtp-devel >= 1.4.4
+%endif
+BuildRequires: libudev-devel
+Requires: libusbx >= 1.0.21-0.1.git448584a
+BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a
+# 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.
+# Same is true for libwebp.
+BuildRequires: libxslt-devel
+# Same here, it seems.
+# BuildRequires: libyuv-devel
+BuildRequires: minizip-devel
+BuildRequires: nspr-devel
+BuildRequires: opus-devel
+BuildRequires: perl(Switch)
+BuildRequires: pulseaudio-libs-devel
+BuildRequires: python-beautifulsoup4
+BuildRequires: python-BeautifulSoup
+BuildRequires: python-html5lib
+BuildRequires: python-jinja2
+BuildRequires: python-markupsafe
+BuildRequires: python-ply
+BuildRequires: python-simplejson
+%if 0%{?bundlere2}
+# Using bundled bits, do nothing.
+%else
+Requires: re2 >= 20160401
+BuildRequires: re2-devel >= 20160401
+%endif
+BuildRequires: speech-dispatcher-devel
+BuildRequires: speex-devel = 1.2
+BuildRequires: yasm
+BuildRequires: pkgconfig(gnome-keyring-1)
+# remote desktop needs this
+BuildRequires: pam-devel
+BuildRequires: systemd
+%if 0%{?asan}
+BuildRequires: clang, compiler-rt
+%endif
+
+# We pick up an automatic requires on the library, but we need the version check
+# because the nss shared library is unversioned.
+# This is to prevent someone from hitting http://code.google.com/p/chromium/issues/detail?id=26448
+Requires: nss%{_isa} >= 3.12.3
+Requires: nss-mdns%{_isa}
+
+# GTK modules it expects to find for some reason.
+Requires: libcanberra-gtk2%{_isa}
+
+# This enables support for u2f tokens
+Requires: u2f-hidraw-policy
+
+# 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}
+# Nothing to do here. chromium-libs is real.
+%else
+Provides: chromium-libs = %{version}-%{release}
+Obsoletes: chromium-libs <= %{version}-%{release}
+%endif
+
+ExclusiveArch: x86_64 i686
+
+# 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)
+Provides: bundled(bspatch)
+Provides: bundled(cacheinvalidation) = 20150720
+Provides: bundled(cardboard) = 0.5.4
+Provides: bundled(colorama) = 799604a104
+Provides: bundled(crashpad)
+Provides: bundled(dmg_fp)
+Provides: bundled(expat) = 2.1.0
+Provides: bundled(fdmlibm) = 5.3
+# Don't get too excited. MPEG and other legally problematic stuff is stripped out.
+Provides: bundled(ffmpeg) = 2.6
+Provides: bundled(fips181) = 2.2.3
+Provides: bundled(fontconfig) = 2.11.0
+Provides: bundled(gperftools) = svn144
+Provides: bundled(gtk3) = 3.1.4
+Provides: bundled(hunspell) = 1.3.2
+Provides: bundled(iccjpeg)
+%if 0%{?bundleicu}
+Provides: bundled(icu) = 54.1
+%endif
+Provides: bundled(kitchensink) = 1
+Provides: bundled(leveldb) = r80
+Provides: bundled(libaddressinput) = 0
+Provides: bundled(libjingle) = 9564
+Provides: bundled(libphonenumber) = svn584
+Provides: bundled(libsrtp) = 1.5.2
+Provides: bundled(libvpx) = 1.4.0
+Provides: bundled(libwebp) = 0.4.3
+Provides: bundled(libXNVCtrl) = 302.17
+Provides: bundled(libyuv) = 1444
+Provides: bundled(lzma) = 9.20
+Provides: bundled(libudis86) = 1.7.1
+Provides: bundled(mesa) = 9.0.3
+Provides: bundled(NSBezierPath) = 1.0
+Provides: bundled(mozc)
+Provides: bundled(mt19937ar) = 2002.1.26
+Provides: bundled(ots) = 767d6040439e6ebcdb867271fcb686bd3f8ac739
+Provides: bundled(protobuf) = r476
+Provides: bundled(qcms) = 4
+%if 0%{?bundlere2}
+Provides: bundled(re2)
+%endif
+Provides: bundled(sfntly) = svn111
+Provides: bundled(skia)
+Provides: bundled(SMHasher) = 0
+Provides: bundled(snappy) = r80
+Provides: bundled(speech-dispatcher) = 0.7.1
+Provides: bundled(sqlite) = 3.8.7.4
+Provides: bundled(superfasthash) = 0
+Provides: bundled(talloc) = 2.0.1
+Provides: bundled(usrsctp) = 0
+Provides: bundled(v8) = 4.5.103.35
+Provides: bundled(webrtc) = 90usrsctp
+Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d
+Provides: bundled(xdg-mime)
+Provides: bundled(xdg-user-dirs)
+Provides: bundled(x86inc) = 0
+Provides: bundled(zlib) = 1.2.5
+
+%description
+Chromium is an open-source web browser, powered by WebKit (Blink).
+
+%if 0%{?shared}
+%package libs
+Summary: Shared libraries used by chromium (and chrome-remote-desktop)
+
+%description libs
+Shared libraries used by chromium (and chrome-remote-desktop).
+%endif
+
+%package -n chrome-remote-desktop
+Requires(pre): shadow-utils
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+Requires: xorg-x11-server-Xvfb
+%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.
+
+%prep
+%setup -q -T -c -n %{name}-policies -a 10
+%setup -q -T -c -n depot_tools -a 2
+%if 0%{tests}
+%setup -q -n chromium-%{version} -b 1
+%else
+%setup -q -n chromium-%{version}
+%endif
+
+### Chromium Fedora Patches ###
+%patch0 -p1 -b .gcc5
+%patch1 -p1 -b .pathmax
+%patch2 -p1 -b .addrfix
+%patch3 -p1 -b .system-icu
+%patch4 -p1 -b .notest
+%patch6 -p1 -b .gnu-inline
+%patch7 -p1 -b .ignore-fd-count
+# %%patch8 -p1 -b .gcc6
+%patch9 -p1 -b .modern-libusbx
+%patch10 -p1 -b .unbundle-fix
+%patch11 -p1 -b .fixcast
+
+### Chromium Tests Patches ###
+%patch100 -p1 -b .use_system_opus
+%patch101 -p1 -b .use_system_harfbuzz
+%patch102 -p1 -b .sync_link_zlib
+
+%if 0%{?asan}
+export CC="clang"
+export CXX="clang++"
+%else
+export CC="gcc"
+export CXX="g++"
+%endif
+export AR="ar"
+export RANLIB="ranlib"
+
+%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/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
+%endif
+
+export CHROMIUM_BROWSER_GYP_DEFINES="\
+%ifarch x86_64
+ -Dtarget_arch=x64 \
+ -Dsystem_libdir=lib64 \
+%endif
+ -Dgoogle_api_key="%{api_key}" \
+ -Dgoogle_default_client_id="%{default_client_id}" \
+ -Dgoogle_default_client_secret="%{default_client_secret}" \
+%if 0%{?asan}
+ -Dasan=1 \
+ -Dclang=1 \
+ -Dhost_clang=1 \
+ -Dclang_dynlib_flags="" \
+ -Dclang_plugin_args="" \
+ -Dclang_chrome_plugins_flags="" \
+%else
+ -Dclang=0 \
+ -Dhost_clang=0 \
+%endif
+ -Ddisable_glibc=1 \
+ -Ddisable_sse2=1 \
+%if 0%{?nonacl}
+ -Ddisable_nacl=1 \
+%else
+ -Ddisable_newlib_untar=1 \
+ -Ddisable_pnacl_untar=1 \
+ -Dpnacl_newlib_toolchain=out/Release/gen/sdk/linux_x86/pnacl_newlib/ \
+ -Dpnacl_translator_dir=/usr/pnacl_translator \
+%endif
+ \
+ -Duse_gconf=0 \
+ -Duse_gio=1 \
+ -Duse_gnome_keyring=1 \
+ -Duse_pulseaudio=1 \
+ -Duse_system_bzip2=1 \
+ -Duse_system_flac=1 \
+ -Duse_system_harfbuzz=1 \
+%if 0%{?bundleicu}
+%else
+ -Duse_system_icu=1 \
+%endif
+ -Dicu_use_data_file_flag=1 \
+ -Duse_system_jsoncpp=1 \
+ -Duse_system_libevent=1 \
+ -Duse_system_libexif=1 \
+ -Duse_system_libjpeg=1 \
+ -Duse_system_libpng=1 \
+ -Duse_system_libusb=1 \
+ -Duse_system_libxml=1 \
+ -Duse_system_libxslt=1 \
+ -Duse_system_minizip=1 \
+ -Duse_system_nspr=1 \
+ -Duse_system_opus=1 \
+ -Duse_system_protobuf=0 \
+%if 0%{?bundlere2}
+%else
+ -Duse_system_re2=1 \
+%endif
+ -Duse_system_speex=1 \
+ -Duse_system_libsrtp=0 \
+ -Duse_system_xdg_utils=1 \
+ -Duse_system_yasm=1 \
+ -Duse_system_zlib=0 \
+ \
+ -Dlinux_link_libspeechd=1 \
+ -Dlinux_link_gnome_keyring=1 \
+ -Dlinux_link_gsettings=1 \
+ -Dlinux_link_libpci=1 \
+ -Dlinux_link_libgps=0 \
+ -Dlinux_sandbox_path=%{chromium_path}/chrome-sandbox \
+ -Dlinux_sandbox_chrome_path=%{chromium_path}/chromium-browser \
+ -Dlinux_strip_binary=1 \
+ -Dlinux_use_bundled_binutils=0 \
+ -Dlinux_use_bundled_gold=0 \
+ -Dlinux_use_gold_binary=0 \
+ -Dlinux_use_gold_flags=0 \
+ -Dlinux_use_libgps=0 \
+ \
+ -Dusb_ids_path=/usr/share/hwdata/usb.ids \
+ -Dlibspeechd_h_prefix=speech-dispatcher/ \
+ \
+ -Dffmpeg_branding=Chromium \
+ -Dproprietary_codecs=0 \
+%if 0%{?shared}
+ -Dbuild_ffmpegsumo=1 \
+ -Dffmpeg_component=shared_library \
+%else
+ -Dffmpeg_component=static_library \
+%endif
+ \
+ -Dno_strict_aliasing=1 \
+ -Dv8_no_strict_aliasing=1 \
+ \
+ -Dremove_webcore_debug_symbols=1 \
+ -Dlogging_like_official_build=1 \
+ -Denable_hotwording=0 \
+%if 0
+ -Dbuildtype=Official \
+%endif
+ \
+%if 0%{?shared}
+ -Dcomponent=shared_library \
+%endif
+ -Duse_sysroot=0 \
+ -Dwerror= -Dsysroot="
+
+# 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 \
+%if 0%{?asan}
+ 'buildtools/third_party/libc++' \
+ 'buildtools/third_party/libc++abi' \
+%endif
+ 'third_party/ffmpeg' \
+ 'third_party/adobe' \
+ 'third_party/flac' \
+ 'third_party/harfbuzz-ng' \
+ 'third_party/icu' \
+ 'base/third_party/libevent' \
+ 'third_party/libjpeg_turbo' \
+ 'third_party/libpng' \
+ 'third_party/libsrtp' \
+ 'third_party/libwebp' \
+ 'third_party/libxml' \
+ 'third_party/libxslt' \
+%if 0%{?bundlere2}
+ 'third_party/re2' \
+%endif
+ 'third_party/snappy' \
+ 'third_party/speech-dispatcher' \
+ 'third_party/usb_ids' \
+ 'third_party/woff2' \
+ 'third_party/xdg-utils' \
+ 'third_party/yasm' \
+ 'third_party/zlib' \
+ 'base/third_party/dmg_fp' \
+ 'base/third_party/dynamic_annotations' \
+ 'base/third_party/icu' \
+ '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' \
+ 'breakpad/src/third_party/curl' \
+ 'chrome/third_party/mozilla_security_manager' \
+ 'courgette/third_party' \
+ 'native_client/src/third_party/dlmalloc' \
+ 'net/third_party/mozilla_security_manager' \
+ 'net/third_party/nss' \
+ 'third_party/WebKit' \
+ 'third_party/analytics' \
+ 'third_party/angle' \
+ 'third_party/angle/src/third_party/compiler' \
+ 'third_party/angle/src/third_party/libXNVCtrl' \
+ 'third_party/angle/src/third_party/murmurhash' \
+ 'third_party/angle/src/third_party/trace_event' \
+ 'third_party/boringssl' \
+ 'third_party/brotli' \
+ 'third_party/cacheinvalidation' \
+ 'third_party/catapult' \
+ 'third_party/catapult/tracing/third_party/components/polymer' \
+ '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/third_party/py_vulcanize' \
+ 'third_party/catapult/third_party/py_vulcanize/third_party/rcssmin' \
+ 'third_party/catapult/third_party/py_vulcanize/third_party/rjsmin' \
+ 'third_party/cld_2' \
+ 'third_party/cros_system_api' \
+ 'third_party/cython/python_flags.py' \
+ 'third_party/devscripts' \
+ 'third_party/dom_distiller_js' \
+ 'third_party/dom_distiller_js/dist/proto_gen/third_party/dom_distiller_js' \
+ 'third_party/fips181' \
+ 'third_party/flot' \
+ '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/hunspell' \
+ 'third_party/iccjpeg' \
+ 'third_party/jstemplate' \
+ 'third_party/khronos' \
+ 'third_party/leveldatabase' \
+ 'third_party/libXNVCtrl' \
+ 'third_party/libaddressinput' \
+ 'third_party/libjingle' \
+ 'third_party/libphonenumber' \
+ 'third_party/libsecret' \
+ 'third_party/libudev' \
+ 'third_party/libusb' \
+ 'third_party/libvpx' \
+ 'third_party/libvpx/source/libvpx/third_party/x86inc' \
+ 'third_party/libxml/chromium' \
+ 'third_party/libwebm' \
+ 'third_party/libyuv' \
+ 'third_party/lss' \
+ 'third_party/lzma_sdk' \
+ 'third_party/mesa' \
+ 'third_party/modp_b64' \
+ 'third_party/mt19937ar' \
+ 'third_party/openmax_dl' \
+ '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/lcms2-2.6' \
+ 'third_party/pdfium/third_party/libjpeg' \
+ 'third_party/pdfium/third_party/libopenjpeg20' \
+ 'third_party/pdfium/third_party/zlib_v128' \
+ 'third_party/polymer' \
+ 'third_party/protobuf' \
+ 'third_party/protobuf/third_party/six' \
+ 'third_party/ply' \
+ 'third_party/qcms' \
+ 'third_party/sfntly' \
+ 'third_party/skia' \
+ 'third_party/smhasher' \
+ 'third_party/sqlite' \
+ 'third_party/tcmalloc' \
+ 'third_party/usrsctp' \
+ 'third_party/web-animations-js' \
+ 'third_party/webdriver' \
+ 'third_party/webrtc' \
+ 'third_party/widevine' \
+ 'third_party/x86inc' \
+ 'third_party/zlib/google' \
+ 'url/third_party/mozilla' \
+ 'v8/src/third_party/fdlibm' \
+ 'v8/src/third_party/valgrind' \
+ --do-remove
+
+# Look, I don't know. This package is spit and chewing gum. Sorry.
+rm -rf third_party/jinja2
+ln -s %{python_sitelib}/jinja2 third_party/jinja2
+rm -rf third_party/markupsafe
+ln -s %{python_sitearch}/markupsafe third_party/markupsafe
+# We should look on removing other python 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
+
+# Update gyp files according to our configuration
+# If you will change something in the configuration please update it
+# for build/gyp_chromium as well (and vice versa).
+build/linux/unbundle/replace_gyp_files.py $CHROMIUM_BROWSER_GYP_DEFINES
+
+build/gyp_chromium \
+ --depth . \
+%if 0%{?asan}
+ -Drelease_extra_cflags="-O1 -fno-inline-functions -fno-inline" \
+%endif
+ $CHROMIUM_BROWSER_GYP_DEFINES
+
+# hackity hack hack
+rm -rf third_party/libusb/src/libusb/libusb.h
+
+%build
+
+%if %{?tests}
+# Tests targets taken from testing/buildbot/chromium.linux.json and obtained with
+# get_linux_tests_name.py PATH_TO_UNPACKED_CHROMIUM_SOURCES --spec
+# You can also check if you have to update the tests in SPEC file by running
+# get_linux_tests_name.py PATH_TO_UNPACKED_CHROMIUM_SOURCES --check PATH_TO_SPEC_FILE
+export CHROMIUM_BROWSER_UNIT_TESTS="\
+ accessibility_unittests \
+ app_list_unittests \
+ app_shell_unittests \
+ aura_unittests \
+ base_unittests \
+ browser_tests \
+ cacheinvalidation_unittests \
+ cast_unittests \
+ cc_unittests \
+ chromedriver_unittests \
+ components_browsertests \
+ components_unittests \
+ compositor_unittests \
+ content_browsertests \
+ content_unittests \
+ crypto_unittests \
+ dbus_unittests \
+ device_unittests \
+ display_unittests \
+ events_unittests \
+ extensions_browsertests \
+ extensions_unittests \
+ gcm_unit_tests \
+ gfx_unittests \
+ gl_unittests \
+ gn_unittests \
+ google_apis_unittests \
+ gpu_unittests \
+ interactive_ui_tests \
+ ipc_mojo_unittests \
+ ipc_tests \
+ jingle_unittests \
+ media_unittests \
+ midi_unittests \
+ mojo_common_unittests \
+ mojo_public_bindings_unittests \
+ mojo_public_environment_unittests \
+ mojo_public_system_unittests \
+ mojo_public_utility_unittests \
+ mojo_system_unittests \
+%if 0%{?nacl}
+ nacl_loader_unittests \
+%endif
+ net_unittests \
+ ppapi_unittests \
+ printing_unittests \
+ remoting_unittests \
+ sandbox_linux_unittests \
+ skia_unittests \
+ sql_unittests \
+ sync_integration_tests \
+ sync_unit_tests \
+ ui_base_unittests \
+ ui_touch_selection_unittests \
+ unit_tests \
+ url_unittests \
+ views_unittests \
+ wm_unittests \
+ "
+%else
+export CHROMIUM_BROWSER_UNIT_TESTS=
+%endif
+
+
+%global target out/Release
+
+../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox policy_templates $CHROMIUM_BROWSER_UNIT_TESTS
+
+# 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
+%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
+
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}%{_bindir}
+mkdir -p %{buildroot}%{chromium_path}
+cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+export BUILDTARGET=`cat /etc/redhat-release`
+export CHROMIUM_PATH=%{chromium_path}
+export CHROMIUM_BROWSER_CHANNEL=%{chromium_browser_channel}
+sed -i "s|@@BUILDTARGET@@|$BUILDTARGET|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}"
+# 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
+%else
+sed -i "s|@@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
+cp -a protoc pseudo_locales pyproto %{buildroot}%{chromium_path}
+cp -a chrome %{buildroot}%{chromium_path}/%{chromium_browser_channel}
+cp -a chrome_sandbox %{buildroot}%{chromium_path}/chrome-sandbox
+cp -a chrome.1 %{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}
+%if 0%{?shared}
+cp -a lib %{buildroot}%{chromium_path}
+%endif
+
+# Remote desktop bits
+mkdir -p %{buildroot}%{crd_path}
+
+%if 0%{?shared}
+pushd %{buildroot}%{crd_path}
+ln -s %{chromium_path}/lib lib
+popd
+%endif
+
+# See remoting/host/installer/linux/Makefile for logic
+cp -a 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
+
+# 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
+pushd %{buildroot}%{_sysconfdir}/opt/chrome/
+ln -s ../../chromium/native-messaging-hosts native-messaging-hosts
+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
+popd
+
+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 ../%{name}-policies/common/html/en-US/*.html .
+
+# linux json files no longer in .zip file
+#cp -a ../%{name}-policies/linux/examples/*.json .
+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}/applications/
+desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4}
+
+mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+
+%check
+%if 0%{tests}
+%if 0%{?tests_force_display}
+ export DISPLAY=:0
+%else
+ Xvfb :9 -screen 0 1024x768x24 &
+
+ export XVFB_PID=$!
+ export DISPLAY=:9
+%endif
+ export LC_ALL="en_US.utf8"
+
+ sleep 5
+
+ # Run tests and disable the failed ones
+ pushd %{target}
+ (
+ cp -f chrome_sandbox chrome-sandbox
+ echo "Test sandbox needs to be owned by root and have the suid set"
+ if [ "$(id -u)" != "0" ]; then
+ sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox
+ else
+ chown root:root chrome-sandbox && chmod 4755 chrome-sandbox
+ fi
+
+ # Example of failed or timed-out test annotation
+ # ./browser_tests \
+ # --gtest_filter=-"\
+ # `#failed`\
+ # SandboxStatusUITest.testBPFSandboxEnabled:`#failed - not using BPF sandbox`\
+ # :\
+ # `#timed-out`\
+ # CalculatorBrowserTest.Model:\
+ # WebRtcBrowserTest.RunsAudioVideoWebRTCCallInTwoTabs\
+ # " \
+
+ ./accessibility_unittests && \
+ ./app_list_unittests && \
+ ./app_shell_unittests && \
+ ./aura_unittests && \
+ ./base_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ ICUStringConversionsTest.ConvertToUtf8AndNormalize\
+ " \
+ && \
+ ./browser_tests \
+ --gtest_filter=-"\
+ `#failed`\
+ DevToolsSanityTest.TestNetworkRawHeadersText:\
+ DevToolsSanityTest.TestNetworkSize:\
+ DevToolsSanityTest.TestNetworkSyncSize:\
+ ExtensionWebstoreGetWebGLStatusTest.Allowed:\
+ InlineLoginUISafeIframeBrowserTest.Basic:\
+ InlineLoginUISafeIframeBrowserTest.ConfirmationRequiredForNonsecureSignin:\
+ InlineLoginUISafeIframeBrowserTest.NoWebUIInIframe:\
+ InlineLoginUISafeIframeBrowserTest.TopFrameNavigationDisallowed:\
+ OutOfProcessPPAPITest.Graphics3D:\
+ PolicyTest.Disable3DAPIs:\
+ WebRtcWebcamBrowserTests/WebRtcWebcamBrowserTest.TestAcquiringAndReacquiringWebcam/0:\
+ :\
+ `#timed-out`\
+ CalculatorBrowserTest.Model:\
+ ImageFetcherImplBrowserTest.MultipleFetch:\
+ ProfileManagerBrowserTest.DeletePasswords:\
+ TabCaptureApiPixelTest.EndToEndThroughWebRTC:\
+ WebRtcBrowserTest.RunsAudioVideoWebRTCCallInTwoTabs:\
+ WebRtcSimulcastBrowserTest.TestVgaReturnsTwoSimulcastStreams\
+ " \
+ && \
+ ./cacheinvalidation_unittests && \
+ ./cast_unittests && \
+ ./cc_unittests && \
+ ./chromedriver_unittests && \
+ ./components_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ AutocompleteMatchTest.Duplicates:\
+ BookmarkIndexTest.GetBookmarksMatchingWithURLs:\
+ BookmarkIndexTest.MatchPositionsURLs:\
+ InMemoryURLIndexTypesTest.StaticFunctions:\
+ ScoredHistoryMatchTest.GetTopicalityScore:\
+ ScoredHistoryMatchTest.Inlining:\
+ ScoredHistoryMatchTest.ScoringTLD:\
+ UrlFormatterTest.FormatUrlWithOffsets:\
+ UrlFormatterTest.IDNToUnicodeFast:\
+ UrlFormatterTest.IDNToUnicodeSlow\
+ " \
+ && \
+ ./components_browsertests \
+ --gtest_filter=-"\
+ `#failed`\
+ AutofillRiskFingerprintTest.GetFingerprint\
+ " \
+ && \
+ ./compositor_unittests && \
+ ./content_browsertests \
+ --gtest_filter=-"\
+ `#failed`\
+ BrowserGpuChannelHostFactoryTest.:\
+ BrowserGpuChannelHostFactoryTest.AlreadyEstablished:\
+ BrowserGpuChannelHostFactoryTest.Basic:\
+ ImageTransportFactoryBrowserTest.TestLostContext:\
+ ImageTransportFactoryTearDownBrowserTest.LoseOnTearDown:\
+ RenderViewImplTest.GetCompositionCharacterBoundsTest:\
+ SignalTest.BasicSignalQueryTest:\
+ SignalTest.BasicSignalSyncPointTest:\
+ SignalTest.InvalidSignalQueryUnboundTest:\
+ SignalTest.InvalidSignalSyncPointTest:\
+ SignalTest.SignalQueryUnboundTest:\
+ WebRtcBrowserTest.*:\
+ :\
+ `#timed-out`\
+ WebRtcAecDumpBrowserTest.CallWithAecDump:\
+ WebRtcAecDumpBrowserTest.CallWithAecDumpEnabledThenDisabled\
+ " \
+ && \
+ ./content_unittests && \
+ ./crypto_unittests && \
+ ./dbus_unittests \
+ --gtest_filter=-"\
+ `#crashed`\
+ EndToEndAsyncTest.InvalidObjectPath:\
+ EndToEndAsyncTest.InvalidServiceName:\
+ EndToEndSyncTest.InvalidObjectPath:\
+ EndToEndSyncTest.InvalidServiceName:\
+ MessageTest.SetInvalidHeaders\
+ " \
+ && \
+ ./device_unittests && \
+ ./display_unittests && \
+ ./events_unittests && \
+ ./extensions_browsertests && \
+ ./extensions_unittests && \
+ ./gcm_unit_tests && \
+ ./gfx_unittests \
+ --gtest_filter=-"\
+ `#failed - missing Microsoft TrueType fonts`\
+ FontListTest.Fonts_GetHeight_GetBaseline:\
+ FontRenderParamsTest.Default:\
+ FontRenderParamsTest.MissingFamily:\
+ FontRenderParamsTest.Size:\
+ FontRenderParamsTest.Style:\
+ FontRenderParamsTest.SubstituteFamily:\
+ FontRenderParamsTest.UseBitmaps:\
+ FontTest.GetActualFontNameForTesting:\
+ FontTest.LoadArial:\
+ FontTest.LoadArialBold:\
+ PlatformFontLinuxTest.DefaultFont:\
+ RenderTextTest.HarfBuzz_FontListFallback:\
+ RenderTextTest.SetFontList:\
+ RenderTextTest.StringSizeRespectsFontListMetrics\
+ :\
+ `#crashed`\
+ FontRenderParamsTest.Default:\
+ FontRenderParamsTest.ForceFullHintingWhenAntialiasingIsDisabled:\
+ FontRenderParamsTest.MissingFamily:\
+ FontRenderParamsTest.NoFontconfigMatch:\
+ FontRenderParamsTest.OnlySetConfiguredValues:\
+ FontRenderParamsTest.Scalable:\
+ FontRenderParamsTest.Size:\
+ FontRenderParamsTest.Style:\
+ FontRenderParamsTest.SubstituteFamily:\
+ FontRenderParamsTest.UseBitmaps:\
+ PlatformFontLinuxTest.DefaultFont\
+ " \
+ && \
+ ./gl_unittests && \
+ ./gn_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ Format.004:\
+ Format.007:\
+ Format.012:\
+ Format.013:\
+ Format.014:\
+ Format.015:\
+ Format.017:\
+ Format.019:\
+ Format.020:\
+ Format.021:\
+ Format.023:\
+ Format.031:\
+ Format.033:\
+ Format.038:\
+ Format.043:\
+ Format.046:\
+ Format.048:\
+ Format.056:\
+ Format.057:\
+ Format.062:\
+ ParseTree.SortRangeExtraction:\
+ Parser.CommentsAtEndOfBlock:\
+ Parser.CommentsConnectedInList:\
+ Parser.CommentsEndOfBlockSingleLine:\
+ Parser.CommentsLineAttached:\
+ Parser.CommentsSuffix:\
+ Parser.CommentsSuffixDifferentLine:\
+ Parser.CommentsSuffixMultiple\
+ " \
+ && \
+ ./google_apis_unittests && \
+ ./gpu_unittests && \
+ ./interactive_ui_tests \
+ --gtest_filter=-"\
+ `#failed`\
+ AshNativeCursorManagerTest.CursorChangeOnEnterNotify:\
+ BookmarkBarViewTest5.DND:\
+ OmniboxViewViewsTest.DeactivateTouchEditingOnExecuteCommand:\
+ OmniboxViewViewsTest.SelectAllOnTap:\
+ StartupBrowserCreatorTest.LastUsedProfileActivated:\
+ X11TopmostWindowFinderTest.Basic:\
+ X11TopmostWindowFinderTest.Menu:\
+ :\
+ `#timed-out`\
+ BookmarkBarViewTest9.ScrollButtonScrolls:\
+ DockedPanelBrowserTest.CloseSqueezedPanels:\
+ DockedPanelBrowserTest.MinimizeSqueezedActive:\
+ GlobalCommandsApiTest.GlobalCommand\
+ " \
+ && \
+ ./ipc_mojo_unittests && \
+ ./ipc_tests && \
+ ./jingle_unittests && \
+ ./midi_unittests && \
+ ./media_unittests && \
+ ./mojo_common_unittests && \
+ ./mojo_public_bindings_unittests && \
+ ./mojo_public_environment_unittests && \
+ ./mojo_public_system_unittests && \
+ ./mojo_public_utility_unittests && \
+ ./mojo_system_unittests && \
+%if 0%{?nacl}
+ ./nacl_loader_unittests && \
+%endif
+ ./net_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ CertVerifyProcTest.TestKnownRoot\
+ " \
+ && \
+ ./ppapi_unittests && \
+ ./printing_unittests && \
+ ./remoting_unittests && \
+ ./sandbox_linux_unittests && \
+ ./skia_unittests && \
+ ./sql_unittests && \
+ ./ui_base_unittests && \
+ ./ui_touch_selection_unittests && \
+ ./sync_unit_tests && \
+ ./unit_tests \
+ --gtest_filter=-"\
+ `#failed - some need https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries/+/m...
+ BookmarkProviderTest.StripHttpAndAdjustOffsets:\
+ HQPOrderingTest.TEAMatch:\
+ HistoryQuickProviderTest.ContentsClass:\
+ LimitedInMemoryURLIndexTest.Initialization:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckParagraph:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckSuggestions:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckWord:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckWordEnglishSpanish:\
+ SpellCheckTest.CreateTextCheckingResultsKeepsMarkers:\
+ SpellCheckTest.DictionaryFiles:\
+ SpellCheckTest.EnglishWords:\
+ SpellCheckTest.GetAutoCorrectionWord_EN_US:\
+ SpellCheckTest.LogicalSuggestions:\
+ SpellCheckTest.MisspelledWords:\
+ SpellCheckTest.NoSuggest:\
+ SpellCheckTest.SpellCheckParagraphLongSentenceMultipleMisspellings:\
+ SpellCheckTest.SpellCheckParagraphMultipleMisspellings:\
+ SpellCheckTest.SpellCheckParagraphSingleMisspellings:\
+ SpellCheckTest.SpellCheckStrings_EN_US:\
+ SpellCheckTest.SpellCheckSuggestions_EN_US:\
+ SpellCheckTest.SpellingEngine_CheckSpelling:\
+ SpellcheckWordIteratorTest.FindSkippableWordsKhmer:\
+ :\
+ `#crashed`\
+ ListChangesTaskTest.UnderTrackedFolder:\
+ ListChangesTaskTest.UnrelatedChange:\
+ SpellCheckTest.RequestSpellCheckWithMisspellings:\
+ SpellCheckTest.RequestSpellCheckWithMultipleRequests:\
+ SpellCheckTest.RequestSpellCheckWithSingleMisspelling\
+ " \
+ && \
+ ./url_unittests && \
+ ./views_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ DesktopWindowTreeHostX11HighDPITest.LocatedEventDispatchWithCapture:\
+ LabelTest.FontPropertySymbol:\
+ WidgetTest.WindowMouseModalityTest\
+ " \
+ && \
+ ./wm_unittests \
+ )
+ popd
+
+ if [ -n "$XVFB_PID" ]; then
+ kill $XVFB_PID
+ unset XVFB_PID
+ unset DISPLAY
+ fi
+%endif
+
+%clean
+rm -rf %{buildroot}
+
+%post
+# Set SELinux labels - semanage itself will adjust the lib directory naming
+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}
+
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+update-desktop-database &> /dev/null || :
+
+%postun
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+update-desktop-database &> /dev/null || :
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%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
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/%{chromium_browser_channel}
+%dir %{chromium_path}
+%{chromium_path}/*.bin
+%{chromium_path}/*.pak
+%{chromium_path}/icudtl.dat
+%{chromium_path}/%{chromium_browser_channel}
+%{chromium_path}/%{chromium_browser_channel}.sh
+%if 0%{?nacl}
+%{chromium_path}/nacl_helper*
+%{chromium_path}/*.nexe
+%{chromium_path}/pnacl/
+%{chromium_path}/tls_edit
+%endif
+%{chromium_path}/protoc
+# %%{chromium_path}/remoting_locales/
+%{chromium_path}/pseudo_locales/
+# %%{chromium_path}/plugins/
+%{chromium_path}/pyproto/
+%attr(4755, root, root) %{chromium_path}/chrome-sandbox
+%{chromium_path}/locales/
+%{chromium_path}/resources/
+%{_mandir}/man1/%{chromium_browser_channel}.*
+%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png
+%{_datadir}/applications/*.desktop
+%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
+
+%dir %{_sysconfdir}/chromium/policies/managed
+%dir %{_sysconfdir}/chromium/policies/recommended
+%doc chrome_policy_list.html *.json
+
+%if 0%{?shared}
+%files libs
+%{chromium_path}/lib/
+%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
+%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
+%{_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
+
+%changelog
+* 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/clean_ffmpeg.sh b/clean_ffmpeg.sh
new file mode 100755
index 0000000..07eb0a3
--- /dev/null
+++ b/clean_ffmpeg.sh
@@ -0,0 +1,212 @@
+#!/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`
+
+generated_files=`./get_free_ffmpeg_source_files.py $1 $2`
+# 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/avcodec.h \
+ libavcodec/blockdsp.h \
+ libavcodec/bytestream.h \
+ libavcodec/dct.h \
+ libavcodec/error_resilience.h \
+ libavcodec/fdctdsp.h \
+ libavcodec/fft.h \
+ libavcodec/fft-internal.h \
+ libavcodec/fft_table.h \
+ libavcodec/flac.h \
+ libavcodec/frame_thread_encoder.h \
+ libavcodec/get_bits.h \
+ libavcodec/h263dsp.h \
+ libavcodec/h264chroma.h \
+ libavcodec/idctdsp.h \
+ libavcodec/internal.h \
+ libavcodec/mathops.h \
+ libavcodec/me_cmp.h \
+ libavcodec/motion_est.h \
+ libavcodec/mpegpicture.h \
+ libavcodec/mpegutils.h \
+ libavcodec/mpegvideo.h \
+ libavcodec/mpegvideodsp.h \
+ libavcodec/mpegvideoencdsp.h \
+ libavcodec/options_table.h \
+ libavcodec/pcm_tablegen.h \
+ libavcodec/pixblockdsp.h \
+ libavcodec/pixels.h \
+ libavcodec/put_bits.h \
+ libavcodec/qpeldsp.h \
+ libavcodec/ratecontrol.h \
+ libavcodec/rectangle.h \
+ libavcodec/rl.h \
+ libavcodec/rnd_avg.h \
+ libavcodec/thread.h \
+ libavcodec/version.h \
+ libavcodec/vp3data.h \
+ libavcodec/vp56.h \
+ libavcodec/vp56dsp.h \
+ libavcodec/vp8data.h \
+ libavformat/audiointerleave.h \
+ libavformat/avformat.h \
+ libavformat/dv.h \
+ libavformat/internal.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/atomic.h \
+ libavutil/atomic_gcc.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/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/thread.h \
+ libavutil/timer.h \
+ libavutil/timestamp.h \
+ libavutil/version.h \
+ libswresample/swresample.h \
+ libswresample/version.h \
+ compat/va_copy.h "
+
+manual_files=" libavcodec/x86/hpeldsp_rnd_template.c \
+ libavcodec/x86/rnd_template.c \
+ libavcodec/x86/videodsp_init.c \
+ libavcodec/x86/vorbisdsp_init.c \
+ libavcodec/bit_depth_template.c \
+ libavcodec/fft_template.c \
+ libavcodec/h264pred_template.c \
+ libavcodec/hpel_template.c \
+ libavcodec/mdct_template.c \
+ libavcodec/pel_template.c \
+ libavcodec/utils.c \
+ libavcodec/videodsp_template.c \
+ libavformat/options.c \
+ libavformat/pcm.c \
+ libavformat/utils.c \
+ libavutil/cpu.c \
+ libavutil/x86/cpu.c \
+ libavutil/x86/float_dsp_init.c \
+ libavutil/x86/x86inc.asm \
+ libavutil/x86/x86util.asm "
+
+other_files=" BUILD.gn \
+ Changelog \
+ COPYING.GPLv2 \
+ COPYING.GPLv3 \
+ COPYING.LGPLv2.1 \
+ COPYING.LGPLv3 \
+ CREDITS \
+ CREDITS.chromium \
+ ffmpeg.gyp \
+ ffmpeg_generated.gypi \
+ ffmpeg_generated.gni \
+ ffmpeg_options.gni \
+ ffmpegsumo.ver \
+ INSTALL.md \
+ LICENSE.md \
+ MAINTAINERS \
+ OWNERS \
+ README.chromium \
+ README.md \
+ RELEASE \
+ xcode_hack.c "
+
+cd $1/third_party/ffmpeg
+
+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
+
+mkdir -p ../tmp_ffmpeg/tmp_chromium/config
+cp -r chromium/config ../tmp_ffmpeg/tmp_chromium
+
+cd ../tmp_ffmpeg
+for tmp_directory in $(find . -type d -name 'tmp_*')
+ do
+ new_name=`echo $tmp_directory | sed 's/tmp_//'`
+ mv $tmp_directory $new_name
+ done
+
+cd $where
+
+rm -rf $1/third_party/ffmpeg
+mv $1/third_party/tmp_ffmpeg $1/third_party/ffmpeg
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
new file mode 100755
index 0000000..e659d63
--- /dev/null
+++ b/get_free_ffmpeg_source_files.py
@@ -0,0 +1,73 @@
+#!/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_gyni_file(gyni_path, arch_not_arm):
+
+ with open(gyni_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])
+ for condition in conditions:
+ limitations = ['is_linux', 'ffmpeg_branding == "Chromium"']
+ if all(limitation in condition for limitation in limitations):
+ if (arch_not_arm):
+ if ('x64' in condition) or ('x86' in condition):
+ parse_sources (block[1], output_sources, arch_not_arm)
+ else:
+ parse_sources (block[1], output_sources, arch_not_arm)
+
+ print ' '.join(output_sources)
+
+
+if __name__ == "__main__":
+
+ path = "%s/third_party/ffmpeg/ffmpeg_generated.gni" % sys.argv[1]
+ parse_ffmpeg_gyni_file (path, False if sys.argv[2] == "0" else True)
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/sources b/sources
index e69de29..c0b5f56 100644
--- a/sources
+++ b/sources
@@ -0,0 +1,3 @@
+ceaa558c5a94789d5a7a69837ce035ef chromium-52.0.2743.75-clean.tar.xz
+49a7f897775cce21d2b69968b8af1cea depot_tools.git-master.tar.gz
+af24ec9bc5e86e10841f44397db5ffda policy_templates.zip
7 years, 5 months