public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/chromium] epel9-next: HONK HONK! TRUCK FULL OF RADIOACTIVE WASTE AND ZOMBIE BITS COMING THROUGH
@ 2026-08-07 16:04 Tom Callaway
  0 siblings, 0 replies; only message in thread
From: Tom Callaway @ 2026-08-07 16:04 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/chromium
Branch : epel9-next
Commit : f66ad8517046c77404cdc236dc5fafc0e7ca00c0
Author : Tom Callaway <spot@fedoraproject.org>
Date   : 2016-07-19T14:10:57-04:00
Stats  : +3387/-0 in 25 file(s)
URL    : https://src.fedoraproject.org/rpms/chromium/c/f66ad8517046c77404cdc236dc5fafc0e7ca00c0?branch=epel9-next

Log:
HONK HONK! TRUCK FULL OF RADIOACTIVE WASTE AND ZOMBIE BITS COMING THROUGH

---
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@redhat.com>
+# Copyright 2013-2016 Tomas Popela <tpopela@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/chromium-%%{version}.tar.xz
+Source0:	chromium-%{version}-clean.tar.xz
+%if 0%{tests}
+Source1:	https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{version}-testdata.tar.xz
+%endif
+# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive/7e7a454f9afdddacf63e10be48f0eab603be654e.tar.gz
+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/+/master`\
+			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@fedoraproject.org> 52.0.2743.75-1
+- update to 52.0.2743.75
+
+* Wed Jul 6 2016 Tom Callaway <spot@fedoraproject.org> 52.0.2743.60-1
+- bump to 52.0.2743.60, disable nacl for now
+
+* Mon May 9 2016 Tom Callaway <spot@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@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@fedoraproject.org> 50.0.2661.94-5
+- use bundled re2 (conditionalize it)
+
+* Tue May 3 2016 Tom Callaway <spot@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@fedoraproject.org> 50.0.2661.94-3
+- enable AddressSanize (ASan) for debugging
+
+* Sat Apr 30 2016 Tom Callaway <spot@fedoraproject.org> 50.0.2661.94-2
+- use bundled icu always. *sigh*
+
+* Fri Apr 29 2016 Tom Callaway <spot@fedoraproject.org> 50.0.2661.94-1
+- update to 50.0.2661.94
+
+* Wed Apr 27 2016 Tom Callaway <spot@fedoraproject.org> 50.0.2661.86-1
+- update to 50.0.2661.86
+
+* Thu Mar 17 2016 Tom Callaway <spot@fedoraproject.org> 49.0.2623.87-4
+- protect third_party/woff2
+
+* Thu Mar 17 2016 Tom Callaway <spot@fedoraproject.org> 49.0.2623.87-3
+- add BuildRequires: libffi-devel
+
+* Thu Mar 17 2016 Tom Callaway <spot@fedoraproject.org> 49.0.2623.87-2
+- explicitly disable sysroot
+
+* Thu Mar 17 2016 Tom Callaway <spot@fedoraproject.org> 49.0.2623.87-1
+- update to 49.0.2623.87
+
+* Mon Feb 29 2016 Tom Callaway <spot@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@fedoraproject.org> 48.0.2564.116-2
+- fix icu BR
+
+* Wed Feb 24 2016 Tom Callaway <spot@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@fedoraproject.org> 48.0.2564.103-2
+- fixes for gcc6
+
+* Mon Feb  8 2016 Tom Callaway <spot@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@fedoraproject.org> 48.0.2564.82-1
+- update to 48.0.2564.82
+
+* Fri Jan 15 2016 Tom Callaway <spot@fedoraproject.org> 47.0.2526.111-1
+- update to 47.0.2526.111
+
+* Thu Jan 07 2016 Tomas Popela <tpopela@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@fedoraproject.org> 47.0.2526.106-1
+- update to 47.0.2526.106
+
+* Tue Dec 15 2015 Tom Callaway <spot@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@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@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@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@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@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@redhat.com> 47.0.2526.69-1
+- Update to 47.0.2526.69
+
+* Tue Dec  1 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.86-4
+- still more remote desktop changes
+
+* Mon Nov 30 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.86-3
+- lots of remote desktop cleanups
+
+* Thu Nov 12 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.86-2
+- re-enable Requires/BuildRequires for libusbx
+- add remote-desktop subpackage
+
+* Wed Nov 11 2015 Tomas Popela <tpopela@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@fedoraproject.org> 46.0.2490.80-5
+- tls_edit is a nacl thing. who knew?
+
+* Thu Oct 29 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.80-4
+- more nacl fixups for i686 case
+
+* Thu Oct 29 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.80-3
+- conditionalize nacl/nonacl, disable nacl on i686, build for i686
+
+* Mon Oct 26 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.80-2
+- conditionalize shared bits (enable by default)
+
+* Fri Oct 23 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.80-1
+- update to 46.0.2490.80
+
+* Thu Oct 15 2015 Tom Callaway <spot@fedoraproject.org> 46.0.2490.71-1
+- update to 46.0.2490.71
+
+* Thu Oct 15 2015 Tom Callaway <spot@fedoraproject.org> 45.0.2454.101-2
+- fix icu handling for f21 and older
+
+* Mon Oct  5 2015 Tom Callaway <spot@fedoraproject.org> 45.0.2454.101-1
+- update to 45.0.2454.101
+
+* Thu Jun 11 2015 Tom Callaway <spot@fedoraproject.org> 43.0.2357.124-1
+- update to 43.0.2357.124
+
+* Tue Jun  2 2015 Tom Callaway <spot@fedoraproject.org> 43.0.2357.81-1
+- update to 43.0.2357.81
+
+* Thu Feb 26 2015 Tom Callaway <spot@fedoraproject.org> 40.0.2214.115-1
+- update to 40.0.2214.115
+
+* Thu Feb 19 2015 Tom Callaway <spot@fedoraproject.org> 40.0.2214.111-1
+- update to 40.0.2214.111
+
+* Mon Feb  2 2015 Tom Callaway <spot@fedoraproject.org> 40.0.2214.94-1
+- update to 40.0.2214.94
+
+* Tue Jan 27 2015 Tom Callaway <spot@fedoraproject.org> 40.0.2214.93-1
+- update to 40.0.2214.93
+
+* Sat Jan 24 2015 Tom Callaway <spot@fedoraproject.org> 40.0.2214.91-1
+- update to 40.0.2214.91
+
+* Wed Jan 21 2015 Tom Callaway <spot@fedoraproject.org> 39.0.2171.95-3
+- use bundled icu on Fedora < 21, we need 5.2
+
+* Tue Jan  6 2015 Tom Callaway <spot@fedoraproject.org> 39.0.2171.95-2
+- rebase off Tomas's spec file for Fedora
+
+* Fri Dec 12 2014 Tomas Popela <tpopela@redhat.com> 39.0.2171.95-1
+- Update to 39.0.2171.95
+- Resolves: rhbz#1173448
+
+* Wed Nov 26 2014 Tomas Popela <tpopela@redhat.com> 39.0.2171.71-1
+- Update to 39.0.2171.71
+- Resolves: rhbz#1168128
+
+* Wed Nov 19 2014 Tomas Popela <tpopela@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@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@redhat.com> 38.0.2125.122-1
+- Update to 38.0.2125.122
+- Resolves: rhbz#1164116
+
+* Wed Oct 29 2014 Tomas Popela <tpopela@redhat.com> 38.0.2125.111-1
+- Update to 38.0.2125.111
+- Resolves: rhbz#1158347
+
+* Fri Oct 24 2014 Tomas Popela <tpopela@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@redhat.com> 38.0.2125.104-1
+- Update to 38.0.2125.104
+- Resolves: rhbz#1153012
+
+* Thu Oct 09 2014 Tomas Popela <tpopela@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@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@redhat.com> 37.0.2062.120-1
+- Update to 37.0.2062.120
+- Resolves: rhbz#1004948
+
+* Wed Aug 27 2014 Tomas Popela <tpopela@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@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@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@redhat.com> 35.0.1916.153-1
+- Update to 35.0.1916.153
+- Resolves: rhbz#1004948
+
+* Wed May 21 2014 Tomas Popela <tpopela@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@redhat.com> 34.0.1847.137-1
+- Update to 34.0.1847.137
+- Resolves: rhbz#1004948
+
+* Mon May 5 2014 Tomas Popela <tpopela@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@redhat.com> 32.0.1700.102-1
+- Update to 32.0.1700.102
+
+* Thu Jan 16 2014 Tomas Popela <tpopela@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@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@redhat.com> 31.0.1650.67-1
+- Update to 31.0.1650.63
+
+* Thu Nov 21 2013 Tomas Popela <tpopela@redhat.com> 31.0.1650.57-1
+- Update to 31.0.1650.57
+
+* Wed Nov 13 2013 Tomas Popela <tpopela@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@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@redhat.com> 30.0.1599.101-1
+- Update to 30.0.1599.101
+- Minor changes in scripts
+
+* Wed Oct 2 2013 Tomas Popela <tpopela@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@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@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@redhat.com> 29.0.1547.65-1
+- Initial version based on Tom Callaway's <spot@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@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@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@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

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-07 16:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-07 16:04 [rpms/chromium] epel9-next: HONK HONK! TRUCK FULL OF RADIOACTIVE WASTE AND ZOMBIE BITS COMING THROUGH Tom Callaway

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox