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 + #include ++/* Needed for PATH_MAX */ ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif + #include + #include + #include +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 @@ + + + +- + + + 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 + + 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 T operator()(const T&, const T&); }; \ +- template 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(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 +-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(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 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 + #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 @@ + + + + + + Chromium + chromium-browser + /usr/bin/chromium-browser %s + chromium-browser + false + false + + + + 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 +# Copyright 2013-2016 Tomas Popela +# 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 52.0.2743.75-1 +- update to 52.0.2743.75 + +* Wed Jul 6 2016 Tom Callaway 52.0.2743.60-1 +- bump to 52.0.2743.60, disable nacl for now + +* Mon May 9 2016 Tom Callaway 52.0.2723.2-1 +- force to dev to see if it works better on F24+ + +* Wed May 4 2016 Tom Callaway 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 50.0.2661.94-5 +- use bundled re2 (conditionalize it) + +* Tue May 3 2016 Tom Callaway 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 50.0.2661.94-3 +- enable AddressSanize (ASan) for debugging + +* Sat Apr 30 2016 Tom Callaway 50.0.2661.94-2 +- use bundled icu always. *sigh* + +* Fri Apr 29 2016 Tom Callaway 50.0.2661.94-1 +- update to 50.0.2661.94 + +* Wed Apr 27 2016 Tom Callaway 50.0.2661.86-1 +- update to 50.0.2661.86 + +* Thu Mar 17 2016 Tom Callaway 49.0.2623.87-4 +- protect third_party/woff2 + +* Thu Mar 17 2016 Tom Callaway 49.0.2623.87-3 +- add BuildRequires: libffi-devel + +* Thu Mar 17 2016 Tom Callaway 49.0.2623.87-2 +- explicitly disable sysroot + +* Thu Mar 17 2016 Tom Callaway 49.0.2623.87-1 +- update to 49.0.2623.87 + +* Mon Feb 29 2016 Tom Callaway 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 48.0.2564.116-2 +- fix icu BR + +* Wed Feb 24 2016 Tom Callaway 48.0.2564.116-1 +- Update to 48.0.2564.116 +- conditionalize icu properly +- fix libusbx handling (bz1270324) + +* Wed Feb 17 2016 Tom Callaway 48.0.2564.103-2 +- fixes for gcc6 + +* Mon Feb 8 2016 Tom Callaway 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 48.0.2564.82-1 +- update to 48.0.2564.82 + +* Fri Jan 15 2016 Tom Callaway 47.0.2526.111-1 +- update to 47.0.2526.111 + +* Thu Jan 07 2016 Tomas Popela 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 47.0.2526.106-1 +- update to 47.0.2526.106 + +* Tue Dec 15 2015 Tom Callaway 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 47.0.2526.80-3 +- revert nacl fd patch (now we see 6 fds! 6 LIGHTS!) + +* Fri Dec 11 2015 Tom Callaway 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 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 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 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 47.0.2526.69-1 +- Update to 47.0.2526.69 + +* Tue Dec 1 2015 Tom Callaway 46.0.2490.86-4 +- still more remote desktop changes + +* Mon Nov 30 2015 Tom Callaway 46.0.2490.86-3 +- lots of remote desktop cleanups + +* Thu Nov 12 2015 Tom Callaway 46.0.2490.86-2 +- re-enable Requires/BuildRequires for libusbx +- add remote-desktop subpackage + +* Wed Nov 11 2015 Tomas Popela 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 46.0.2490.80-5 +- tls_edit is a nacl thing. who knew? + +* Thu Oct 29 2015 Tom Callaway 46.0.2490.80-4 +- more nacl fixups for i686 case + +* Thu Oct 29 2015 Tom Callaway 46.0.2490.80-3 +- conditionalize nacl/nonacl, disable nacl on i686, build for i686 + +* Mon Oct 26 2015 Tom Callaway 46.0.2490.80-2 +- conditionalize shared bits (enable by default) + +* Fri Oct 23 2015 Tom Callaway 46.0.2490.80-1 +- update to 46.0.2490.80 + +* Thu Oct 15 2015 Tom Callaway 46.0.2490.71-1 +- update to 46.0.2490.71 + +* Thu Oct 15 2015 Tom Callaway 45.0.2454.101-2 +- fix icu handling for f21 and older + +* Mon Oct 5 2015 Tom Callaway 45.0.2454.101-1 +- update to 45.0.2454.101 + +* Thu Jun 11 2015 Tom Callaway 43.0.2357.124-1 +- update to 43.0.2357.124 + +* Tue Jun 2 2015 Tom Callaway 43.0.2357.81-1 +- update to 43.0.2357.81 + +* Thu Feb 26 2015 Tom Callaway 40.0.2214.115-1 +- update to 40.0.2214.115 + +* Thu Feb 19 2015 Tom Callaway 40.0.2214.111-1 +- update to 40.0.2214.111 + +* Mon Feb 2 2015 Tom Callaway 40.0.2214.94-1 +- update to 40.0.2214.94 + +* Tue Jan 27 2015 Tom Callaway 40.0.2214.93-1 +- update to 40.0.2214.93 + +* Sat Jan 24 2015 Tom Callaway 40.0.2214.91-1 +- update to 40.0.2214.91 + +* Wed Jan 21 2015 Tom Callaway 39.0.2171.95-3 +- use bundled icu on Fedora < 21, we need 5.2 + +* Tue Jan 6 2015 Tom Callaway 39.0.2171.95-2 +- rebase off Tomas's spec file for Fedora + +* Fri Dec 12 2014 Tomas Popela 39.0.2171.95-1 +- Update to 39.0.2171.95 +- Resolves: rhbz#1173448 + +* Wed Nov 26 2014 Tomas Popela 39.0.2171.71-1 +- Update to 39.0.2171.71 +- Resolves: rhbz#1168128 + +* Wed Nov 19 2014 Tomas Popela 39.0.2171.65-2 +- Revert the chrome-sandbox rename to chrome_sandbox +- Resolves: rhbz#1165653 + +* Wed Nov 19 2014 Tomas Popela 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 38.0.2125.122-1 +- Update to 38.0.2125.122 +- Resolves: rhbz#1164116 + +* Wed Oct 29 2014 Tomas Popela 38.0.2125.111-1 +- Update to 38.0.2125.111 +- Resolves: rhbz#1158347 + +* Fri Oct 24 2014 Tomas Popela 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 38.0.2125.104-1 +- Update to 38.0.2125.104 +- Resolves: rhbz#1153012 + +* Thu Oct 09 2014 Tomas Popela 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 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 37.0.2062.120-1 +- Update to 37.0.2062.120 +- Resolves: rhbz#1004948 + +* Wed Aug 27 2014 Tomas Popela 37.0.2062.94-1 +- Update to 37.0.2062.94 +- Include the pdf viewer library + +* Wed Aug 13 2014 Tomas Popela 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 36.0.1985.125-1 +- Update to 36.0.1985.125 +- Add libexif as BR +- Resolves: rhbz#1004948 + +* Wed Jun 11 2014 Tomas Popela 35.0.1916.153-1 +- Update to 35.0.1916.153 +- Resolves: rhbz#1004948 + +* Wed May 21 2014 Tomas Popela 35.0.1916.114-1 +- Update to 35.0.1916.114 +- Bundle python-argparse +- Resolves: rhbz#1004948 + +* Wed May 14 2014 Tomas Popela 34.0.1847.137-1 +- Update to 34.0.1847.137 +- Resolves: rhbz#1004948 + +* Mon May 5 2014 Tomas Popela 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 32.0.1700.102-1 +- Update to 32.0.1700.102 + +* Thu Jan 16 2014 Tomas Popela 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 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 31.0.1650.67-1 +- Update to 31.0.1650.63 + +* Thu Nov 21 2013 Tomas Popela 31.0.1650.57-1 +- Update to 31.0.1650.57 + +* Wed Nov 13 2013 Tomas Popela 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 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 30.0.1599.101-1 +- Update to 30.0.1599.101 +- Minor changes in scripts + +* Wed Oct 2 2013 Tomas Popela 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 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 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 29.0.1547.65-1 +- Initial version based on Tom Callaway's 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 +# 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 +# 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 +# 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