diff --git a/.gitignore b/.gitignore index e69de29b..06de94ba 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,22 @@ +/chromium-52.0.2743.75-clean.tar.xz +/depot_tools.git-master.tar.gz +/policy_templates.zip +/chromium-*.tar.xz +/gelasio.zip +/MuktiNarrow-0.94.tar.bz2 +/NotoSansCJKjp-hinted.zip +/lohit-gurmukhi-ttf-2.91.2.tar.gz +/Arimo-BoldItalic.ttf +/Arimo-Bold.ttf +/Arimo-Italic.ttf +/Arimo-Regular.ttf +/Cousine-BoldItalic.ttf +/Cousine-Bold.ttf +/Cousine-Italic.ttf +/Cousine-Regular.ttf +/Tinos-BoldItalic.ttf +/Tinos-Bold.ttf +/Tinos-Italic.ttf +/Tinos-Regular.ttf +/Ahem.ttf +/node-v8.9.1-linux-x64.tar.gz diff --git a/GardinerModBug.ttf b/GardinerModBug.ttf new file mode 100644 index 00000000..09f4c3e1 Binary files /dev/null and b/GardinerModBug.ttf differ diff --git a/GardinerModCat.ttf b/GardinerModCat.ttf new file mode 100644 index 00000000..6f6e5609 Binary files /dev/null and b/GardinerModCat.ttf differ diff --git a/chrome-remote-desktop@.service b/chrome-remote-desktop@.service new file mode 100644 index 00000000..4b5b1fcb --- /dev/null +++ b/chrome-remote-desktop@.service @@ -0,0 +1,14 @@ +[Unit] +Description="Chrome Remote Desktop host daemon" + +[Service] +User=%i +Environment=HOME=%h +ExecStart=@@CRD_PATH@@/chrome-remote-desktop --start --foreground +ExecStop=@@CRD_PATH@@/chrome-remote-desktop --stop +ExecReload=@@CRD_PATH@@/chrome-remote-desktop --reload +Restart=always +TimeoutStopSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/chromium-45.0.2454.101-linux-path-max.patch b/chromium-45.0.2454.101-linux-path-max.patch new file mode 100644 index 00000000..31463495 --- /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-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 00000000..c422957f --- /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 00000000..bfe04224 --- /dev/null +++ b/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch @@ -0,0 +1,11 @@ +diff -up chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme chromium-47.0.2526.80/native_client/build/untrusted.gypi +--- chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme 2015-12-09 11:54:27.584962337 -0500 ++++ chromium-47.0.2526.80/native_client/build/untrusted.gypi 2015-12-09 11:54:45.033571750 -0500 +@@ -1564,6 +1564,7 @@ + '-Wno-char-subscripts', + '-Wno-unused-function', + '-std=gnu++11', ++ '-fgnu-inline-asm', + ], + 'native_irt_compile_flags': [ + # IRT compile/link flags to make the binary smaller. diff --git a/chromium-53.0.2785.92-boringssl-time-fix.patch b/chromium-53.0.2785.92-boringssl-time-fix.patch new file mode 100644 index 00000000..8d679577 --- /dev/null +++ b/chromium-53.0.2785.92-boringssl-time-fix.patch @@ -0,0 +1,11 @@ +diff -up chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c +--- chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix 2016-09-06 15:20:06.094396255 -0400 ++++ chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c 2016-09-06 15:20:16.893187930 -0400 +@@ -56,6 +56,7 @@ + * [including the GNU Public Licence.] */ + + #include ++#include + #include + #include + diff --git a/chromium-54.0.2840.59-jpeg-include-dir.patch b/chromium-54.0.2840.59-jpeg-include-dir.patch new file mode 100644 index 00000000..f96a56cb --- /dev/null +++ b/chromium-54.0.2840.59-jpeg-include-dir.patch @@ -0,0 +1,11 @@ +diff -up chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix chromium-54.0.2840.59/third_party/BUILD.gn +--- chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix 2016-10-17 11:45:44.995340495 -0400 ++++ chromium-54.0.2840.59/third_party/BUILD.gn 2016-10-17 11:46:35.254289872 -0400 +@@ -20,6 +20,7 @@ declare_args() { + config("system_libjpeg_config") { + libs = [ "jpeg" ] + defines = [ "USE_SYSTEM_LIBJPEG" ] ++ include_dirs = [ "/usr/include/" ] + } + + config("libjpeg_turbo_config") { diff --git a/chromium-55.0.2883.75-addrfix.patch b/chromium-55.0.2883.75-addrfix.patch new file mode 100644 index 00000000..00c214c1 --- /dev/null +++ b/chromium-55.0.2883.75-addrfix.patch @@ -0,0 +1,11 @@ +diff -up chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix chromium-55.0.2883.75/third_party/boringssl/BUILD.gn +--- chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix 2016-12-12 15:30:27.727834891 -0500 ++++ chromium-55.0.2883.75/third_party/boringssl/BUILD.gn 2016-12-12 15:30:53.095709352 -0500 +@@ -24,6 +24,7 @@ config("internal_config") { + "BORINGSSL_IMPLEMENTATION", + "BORINGSSL_NO_STATIC_INITIALIZER", + "OPENSSL_SMALL", ++ "_POSIX_C_SOURCE=200112L", + ] + configs = [ + # TODO(davidben): Fix size_t truncations in BoringSSL. diff --git a/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch new file mode 100644 index 00000000..ddb94a07 --- /dev/null +++ b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch @@ -0,0 +1,19 @@ +diff -up chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc +--- chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert 2017-05-08 14:58:11.767482431 -0400 ++++ chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc 2017-05-08 14:58:37.722960109 -0400 +@@ -790,15 +790,6 @@ void DeviceDataManagerX11::UpdateScrollC + DCHECK(deviceid >= 0 && deviceid < kMaxDeviceNum); + ScrollInfo& info = scroll_data_[deviceid]; + +- bool legacy_scroll_available = +- (scroll_class_info->flags & XIScrollFlagNoEmulation) == 0; +- // If the device's highest resolution is lower than the resolution of xinput1 +- // then use xinput1's events instead (ie. don't configure smooth scrolling). +- if (legacy_scroll_available && +- std::abs(scroll_class_info->increment) <= 1.0) { +- return; +- } +- + switch (scroll_class_info->scroll_type) { + case XIScrollTypeVertical: + info.vertical.number = scroll_class_info->number; diff --git a/chromium-59.0.3071.86-i686-ld-memory-tricks.patch b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch new file mode 100644 index 00000000..9dde4c5b --- /dev/null +++ b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch @@ -0,0 +1,12 @@ +diff -up chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn +--- chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory 2017-06-07 15:37:09.436616113 -0400 ++++ chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn 2017-06-07 15:38:04.508519102 -0400 +@@ -93,7 +93,7 @@ gcc_toolchain("x86") { + nm = "nm" + ar = "ar" + ld = cxx +- extra_cppflags = "-fno-delete-null-pointer-checks" ++ extra_cppflags = "-fno-delete-null-pointer-checks -g1" + + # Output linker map files for binary size analysis. + enable_linker_map = true diff --git a/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch new file mode 100644 index 00000000..72488257 --- /dev/null +++ b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch @@ -0,0 +1,21 @@ +diff -up chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h +--- chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix 2017-08-25 15:29:12.143242471 -0400 ++++ chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h 2017-08-25 15:29:36.941835865 -0400 +@@ -39,13 +39,13 @@ + #include "log.h" + + #if ARCH_AARCH64 +-# include "aarch64/timer.h" ++# include "libavutil/aarch64/timer.h" + #elif ARCH_ARM +-# include "arm/timer.h" ++# include "libavutil/arm/timer.h" + #elif ARCH_PPC +-# include "ppc/timer.h" ++# include "libavutil/ppc/timer.h" + #elif ARCH_X86 +-# include "x86/timer.h" ++# include "libavutil/x86/timer.h" + #endif + + #if !defined(AV_READ_TIME) diff --git a/chromium-60.0.3112.78-jpeg-nomangle.patch b/chromium-60.0.3112.78-jpeg-nomangle.patch new file mode 100644 index 00000000..0b758a43 --- /dev/null +++ b/chromium-60.0.3112.78-jpeg-nomangle.patch @@ -0,0 +1,14 @@ +diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h +--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01 15:29:00.870759406 -0400 ++++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h 2017-08-01 15:29:09.326593414 -0400 +@@ -18,10 +18,6 @@ + #ifndef JPEGLIB_H + #define JPEGLIB_H + +-/* Begin chromium edits */ +-#include "jpeglibmangler.h" +-/* End chromium edits */ +- + /* + * First we include the configuration files that record how this + * installation of the JPEG library is set up. jconfig.h can be diff --git a/chromium-60.0.3112.78-no-libpng-prefix.patch b/chromium-60.0.3112.78-no-libpng-prefix.patch new file mode 100644 index 00000000..0dbdcf97 --- /dev/null +++ b/chromium-60.0.3112.78-no-libpng-prefix.patch @@ -0,0 +1,17 @@ +diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h +--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01 14:42:54.321986758 -0400 ++++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832 -0400 +@@ -225,13 +225,4 @@ + #define PNG_USER_CHUNK_MALLOC_MAX 4000000L + /* end of chromium settings */ + +-/* chromium prefixing */ +-/* +- * This is necessary to build multiple copies of libpng. We need this while pdfium builds +- * its own copy of libpng. +- */ +-#define PNG_PREFIX +-#include "pngprefix.h" +-/* end of chromium prefixing */ +- + #endif /* PNGLCONF_H */ diff --git a/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch new file mode 100644 index 00000000..183b5ab5 --- /dev/null +++ b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch @@ -0,0 +1,13 @@ +diff -up chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h +--- chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 2017-09-06 16:30:15.898454585 -0400 ++++ chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h 2017-09-06 16:30:27.570229539 -0400 +@@ -21,8 +21,7 @@ + #if !defined(__native_client__) && \ + ((defined(__clang__) && \ + ((__clang_major__ > 3) || \ +- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \ +- (defined(__GNUC__) && __GNUC__ >= 5)) ++ (__clang_major__ == 3 && __clang_minor__ >= 4)))) + #include "base/numerics/safe_math_clang_gcc_impl.h" + #define BASE_HAS_OPTIMIZED_SAFE_MATH (1) + #else diff --git a/chromium-62.0.3202.62-kmaxskip-constexpr.patch b/chromium-62.0.3202.62-kmaxskip-constexpr.patch new file mode 100644 index 00000000..d4f8250f --- /dev/null +++ b/chromium-62.0.3202.62-kmaxskip-constexpr.patch @@ -0,0 +1,12 @@ +diff -up chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc +--- chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip 2017-10-18 10:00:28.503714392 -0400 ++++ chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc 2017-10-18 10:00:43.153430212 -0400 +@@ -336,7 +336,7 @@ TYPES(M); + #undef TYPES + + const SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0}; +-const size_t PaintOp::kMaxSkip; ++constexpr size_t PaintOp::kMaxSkip; + + std::string PaintOpTypeToString(PaintOpType type) { + switch (type) { diff --git a/chromium-63.0.3289.84-nullfix.patch b/chromium-63.0.3289.84-nullfix.patch new file mode 100644 index 00000000..c66aff1f --- /dev/null +++ b/chromium-63.0.3289.84-nullfix.patch @@ -0,0 +1,43 @@ +diff -up chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn +--- chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix 2017-12-06 15:05:21.000000000 -0500 ++++ chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn 2017-12-07 10:44:34.507207080 -0500 +@@ -31,6 +31,7 @@ gcc_toolchain("arm64") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" ++ extra_cppflags = "-fno-delete-null-pointer-checks" + + toolchain_args = { + current_cpu = "arm64" +@@ -49,6 +50,7 @@ gcc_toolchain("arm") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" ++ extra_cppflags = "-fno-delete-null-pointer-checks" + + toolchain_args = { + current_cpu = "arm" +@@ -99,6 +101,7 @@ gcc_toolchain("x86") { + nm = "nm" + ar = "ar" + ld = cxx ++ extra_cppflags = "-fno-delete-null-pointer-checks" + + # Output linker map files for binary size analysis. + enable_linker_map = true +@@ -152,6 +155,7 @@ gcc_toolchain("x64") { + nm = "nm" + ar = "ar" + ld = cxx ++ extra_cppflags = "-fno-delete-null-pointer-checks" + + # Output linker map files for binary size analysis. + enable_linker_map = true +@@ -186,6 +190,7 @@ gcc_toolchain("mipsel") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" ++ extra_cppflags = "-fno-delete-null-pointer-checks" + + toolchain_args = { + cc_wrapper = "" diff --git a/chromium-64.0.3282.119-ffmpeg-stdatomic.patch b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch new file mode 100644 index 00000000..64c5f26f --- /dev/null +++ b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch @@ -0,0 +1,17 @@ +diff -up chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c +--- chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic 2018-01-25 11:55:57.880936815 -0500 ++++ chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c 2018-01-25 11:57:18.456787888 -0500 +@@ -18,7 +18,13 @@ + + #include + #include ++// GCC 4.8 didn't have stdatomic, but was advertising it. ++// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016 ++#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ == 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ == 8))) ++#include ++#else + #include ++#endif + + #include "attributes.h" + #include "cpu.h" diff --git a/chromium-65.0.3325.146-gcc-round-fix.patch b/chromium-65.0.3325.146-gcc-round-fix.patch new file mode 100644 index 00000000..a29779d5 --- /dev/null +++ b/chromium-65.0.3325.146-gcc-round-fix.patch @@ -0,0 +1,12 @@ +diff -up chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc +--- chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix 2018-03-07 10:57:11.284376048 -0500 ++++ chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc 2018-03-07 10:58:16.590742636 -0500 +@@ -10,7 +10,7 @@ + + #include "p2p/base/port.h" + +-#include ++#include + + #include + #include diff --git a/chromium-65.0.3325.146-memcpy-fix.patch b/chromium-65.0.3325.146-memcpy-fix.patch new file mode 100644 index 00000000..b2b2cd4e --- /dev/null +++ b/chromium-65.0.3325.146-memcpy-fix.patch @@ -0,0 +1,12 @@ +diff -up chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc +--- chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix 2018-03-07 11:04:14.690379817 -0500 ++++ chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc 2018-03-07 11:06:04.339878069 -0500 +@@ -3,7 +3,7 @@ + // found in the LICENSE file. + + #include "cc/paint/raw_memory_transfer_cache_entry.h" +- ++#include + #include + + namespace cc { diff --git a/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch new file mode 100644 index 00000000..d5b19cfd --- /dev/null +++ b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch @@ -0,0 +1,18 @@ +diff -up chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h +--- chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider 2018-04-25 16:33:40.872222779 -0400 ++++ chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h 2018-04-25 16:37:23.175883637 -0400 +@@ -11,13 +11,13 @@ + #include "base/callback_forward.h" + #include "base/macros.h" + #include "components/policy/core/browser/configuration_policy_handler_list.h" ++#include "components/policy/core/common/configuration_policy_provider.h" + #include "components/policy/core/common/schema.h" + #include "components/policy/core/common/schema_registry.h" + #include "components/policy/policy_export.h" + + namespace policy { + +-class ConfigurationPolicyProvider; + class PolicyService; + class PolicyServiceImpl; + diff --git a/chromium-66.0.3359.117-system-clang.patch b/chromium-66.0.3359.117-system-clang.patch new file mode 100644 index 00000000..e90dc581 --- /dev/null +++ b/chromium-66.0.3359.117-system-clang.patch @@ -0,0 +1,12 @@ +diff -up chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang chromium-66.0.3359.117/build/config/clang/clang.gni +--- chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang 2018-04-18 12:08:45.658190297 -0400 ++++ chromium-66.0.3359.117/build/config/clang/clang.gni 2018-04-18 12:09:37.612032982 -0400 +@@ -4,7 +4,7 @@ + + import("//build/toolchain/toolchain.gni") + +-default_clang_base_path = "//third_party/llvm-build/Release+Asserts" ++default_clang_base_path = "/usr" + + declare_args() { + # Indicates if the build should use the Chrome-specific plugins for enforcing diff --git a/chromium-67.0.3396.62-gcc5.patch b/chromium-67.0.3396.62-gcc5.patch new file mode 100644 index 00000000..ceef85d9 --- /dev/null +++ b/chromium-67.0.3396.62-gcc5.patch @@ -0,0 +1,12 @@ +diff -up chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl +--- chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 2018-05-30 04:44:33.000000000 -0400 ++++ chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl 2018-05-30 11:59:26.218625660 -0400 +@@ -262,7 +262,7 @@ interface mixin WebGL2RenderingContextBa + const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; +- const GLenum INVALID_INDEX = 0xFFFFFFFF; ++ const GLenum INVALID_INDEX = 256; + const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; diff --git a/chromium-67.0.3396.62-gn-system.patch b/chromium-67.0.3396.62-gn-system.patch new file mode 100644 index 00000000..4a08e94c --- /dev/null +++ b/chromium-67.0.3396.62-gn-system.patch @@ -0,0 +1,208 @@ +diff -up chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn +diff -up chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libusb.gn +--- chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem 2018-05-30 12:18:36.949488683 -0400 ++++ chromium-67.0.3396.62/build/linux/unbundle/libusb.gn 2018-05-30 12:18:36.949488683 -0400 +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++ packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++ root_path = "src/libusb" ++ headers = [ ++ "libusb.h", ++ ] ++} ++ ++source_set("libusb") { ++ deps = [ ++ ":libusb_shim", ++ ] ++ public_configs = [ ":system_libusb" ] ++} +diff -up chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/opus.gn +--- chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem 2018-05-30 04:43:03.000000000 -0400 ++++ chromium-67.0.3396.62/build/linux/unbundle/opus.gn 2018-05-30 12:18:36.950488661 -0400 +@@ -1,3 +1,164 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++import("//testing/test.gni") ++ ++pkg_config("system_opus") { ++ packages = [ "opus" ] ++} ++ ++shim_headers("opus_shim") { ++ root_path = "src/include" ++ headers = [ ++ "opus_custom.h", ++ "opus_defines.h", ++ "opus_multistream.h", ++ "opus_types.h", ++ "opus.h", ++ ] ++} ++ ++source_set("opus") { ++ deps = [ ++ ":opus_shim", ++ ] ++ public_configs = [ ":system_opus" ] ++} ++ ++config("opus_test_config") { ++ include_dirs = [ ++ "src/celt", ++ "src/silk", ++ ] ++ ++ if (is_win) { ++ defines = [ "inline=__inline" ] ++ } ++ if (is_android) { ++ libs = [ "log" ] ++ } ++ if (is_clang) { ++ cflags = [ "-Wno-absolute-value" ] ++ } ++} ++ ++executable("opus_compare") { ++ sources = [ ++ "src/src/opus_compare.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ "//build/config/sanitizers:deps", ++ "//build/win:default_exe_manifest", ++ ] ++} ++ ++executable("opus_demo") { ++ sources = [ ++ "src/src/opus_demo.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ "//build/config/sanitizers:deps", ++ "//build/win:default_exe_manifest", ++ ] ++} ++ ++test("test_opus_api") { ++ sources = [ ++ "src/tests/test_opus_api.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++test("test_opus_encode") { ++ sources = [ ++ "src/tests/test_opus_encode.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++# GN orders flags on a target before flags from configs. The default config ++# adds -Wall, and this flag have to be after -Wall -- so they need to ++# come from a config and can't be on the target directly. ++config("test_opus_decode_config") { ++ # test_opus_decode passes a null pointer to opus_decode() for an argument ++ # marked as requiring a non-null value by the nonnull function attribute, ++ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid ++ # a compilation error if -Werror is specified. ++ if (is_posix) { ++ cflags = [ "-Wno-nonnull" ] ++ } ++} ++ ++test("test_opus_decode") { ++ sources = [ ++ "src/tests/test_opus_decode.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ":test_opus_decode_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++test("test_opus_padding") { ++ sources = [ ++ "src/tests/test_opus_padding.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ + # Copyright 2017 The Chromium Authors. All rights reserved. + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. +diff -up chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py +--- chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem 2018-05-30 12:18:36.951488638 -0400 ++++ chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py 2018-05-30 12:20:02.542534270 -0400 +@@ -27,6 +27,7 @@ REPLACEMENTS = { + 'libevent': 'base/third_party/libevent/BUILD.gn', + 'libjpeg': 'third_party/libjpeg.gni', + 'libpng': 'third_party/libpng/BUILD.gn', ++ 'libusb': 'third_party/libusb/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/chromium-68.0.3440.106-boolfix.patch b/chromium-68.0.3440.106-boolfix.patch new file mode 100644 index 00000000..ed22aa99 --- /dev/null +++ b/chromium-68.0.3440.106-boolfix.patch @@ -0,0 +1,36 @@ +diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h +--- chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix 2018-08-09 03:21:23.066802340 -0400 ++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h 2018-08-09 03:25:10.638595925 -0400 +@@ -45,7 +45,7 @@ class AssociatedInterfacePtrInfo { + + bool is_valid() const { return handle_.is_valid(); } + +- explicit operator bool() const { return handle_.is_valid(); } ++ explicit operator bool() const { return (bool) handle_.is_valid(); } + + ScopedInterfaceEndpointHandle PassHandle() { + return std::move(handle_); +diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h +--- chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix 2018-08-09 03:21:23.067802318 -0400 ++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h 2018-08-09 03:24:44.935229067 -0400 +@@ -50,7 +50,7 @@ class AssociatedInterfaceRequest { + // handle. + bool is_pending() const { return handle_.is_valid(); } + +- explicit operator bool() const { return handle_.is_valid(); } ++ explicit operator bool() const { return (bool) handle_.is_valid(); } + + ScopedInterfaceEndpointHandle PassHandle() { return std::move(handle_); } + +diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h +--- chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix 2018-08-08 15:11:05.000000000 -0400 ++++ chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h 2018-08-09 03:21:23.067802318 -0400 +@@ -54,7 +54,7 @@ class InterfaceRequest { + // Indicates whether the request currently contains a valid message pipe. + bool is_pending() const { return handle_.is_valid(); } + +- explicit operator bool() const { return handle_.is_valid(); } ++ explicit operator bool() const { return (bool) handle_.is_valid(); } + + // Removes the message pipe from the request and returns it. + ScopedMessagePipeHandle PassMessagePipe() { return std::move(handle_); } diff --git a/chromium-68.0.3440.106-fix-default-on-redeclaration.patch b/chromium-68.0.3440.106-fix-default-on-redeclaration.patch new file mode 100644 index 00000000..4a92fba5 --- /dev/null +++ b/chromium-68.0.3440.106-fix-default-on-redeclaration.patch @@ -0,0 +1,30 @@ +diff -up chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc +--- chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c 2018-08-17 14:54:30.587338865 -0400 ++++ chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc 2018-08-17 14:55:20.461184298 -0400 +@@ -14,22 +14,22 @@ LogoMetadata::LogoMetadata() = default; + LogoMetadata::LogoMetadata(const LogoMetadata&) = default; + LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default; + LogoMetadata& LogoMetadata::operator=(const LogoMetadata&) = default; +-LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) noexcept = default; ++LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) = default; + LogoMetadata::~LogoMetadata() = default; + + EncodedLogo::EncodedLogo() = default; + EncodedLogo::EncodedLogo(const EncodedLogo&) = default; + EncodedLogo::EncodedLogo(EncodedLogo&&) noexcept = default; + EncodedLogo& EncodedLogo::operator=(const EncodedLogo&) = default; +-EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) noexcept = default; ++EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) = default; + EncodedLogo::~EncodedLogo() = default; + + Logo::Logo() = default; + Logo::~Logo() = default; + + LogoCallbacks::LogoCallbacks() = default; +-LogoCallbacks::LogoCallbacks(LogoCallbacks&&) noexcept = default; +-LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) noexcept = default; ++LogoCallbacks::LogoCallbacks(LogoCallbacks&&) = default; ++LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) = default; + LogoCallbacks::~LogoCallbacks() = default; + + } // namespace search_provider_logos diff --git a/chromium-68.0.3440.106-master-prefs-path.patch b/chromium-68.0.3440.106-master-prefs-path.patch new file mode 100644 index 00000000..9304adff --- /dev/null +++ b/chromium-68.0.3440.106-master-prefs-path.patch @@ -0,0 +1,15 @@ +diff -up chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc +--- chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc 2018-08-09 03:12:33.444705798 -0400 ++++ chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc 2018-08-09 03:14:46.275754910 -0400 +@@ -19,9 +19,9 @@ bool IsOrganicFirstRun() { + + base::FilePath MasterPrefsPath() { + // The standard location of the master prefs is next to the chrome binary. ++ // ...but we patch it to use /etc/chromium + base::FilePath master_prefs; +- if (!base::PathService::Get(base::DIR_EXE, &master_prefs)) +- return base::FilePath(); ++ master_prefs = base::FilePath("/etc/chromium"); + return master_prefs.AppendASCII(installer::kDefaultMasterPrefs); + } + diff --git a/chromium-69.0.3497.81-build-sanely-please.patch b/chromium-69.0.3497.81-build-sanely-please.patch new file mode 100644 index 00000000..6241a972 --- /dev/null +++ b/chromium-69.0.3497.81-build-sanely-please.patch @@ -0,0 +1,33 @@ +diff -up chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot chromium-69.0.3497.81/build/config/BUILD.gn +--- chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot 2018-09-06 13:43:44.863375238 -0400 ++++ chromium-69.0.3497.81/build/config/BUILD.gn 2018-09-06 13:43:58.377083290 -0400 +@@ -284,9 +284,9 @@ group("executable_and_loadable_module_an + public_deps += [ "//build/config/sanitizers:deps" ] + } + +- if (use_custom_libcxx) { +- public_deps += [ "//buildtools/third_party/libc++" ] +- } ++ # if (use_custom_libcxx) { ++ # public_deps += [ "//buildtools/third_party/libc++" ] ++ # } + + if (use_afl) { + public_deps += [ "//third_party/afl" ] +diff -up chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot chromium-69.0.3497.81/build/config/sysroot.gni +--- chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot 2018-09-06 13:40:46.212232232 -0400 ++++ chromium-69.0.3497.81/build/config/sysroot.gni 2018-09-06 13:41:02.421882529 -0400 +@@ -15,9 +15,10 @@ declare_args() { + # The absolute path to directory containing linux sysroot images + target_sysroot_dir = "//build/linux" + +- use_sysroot = current_cpu == "x86" || current_cpu == "x64" || +- current_cpu == "arm" || current_cpu == "arm64" || +- current_cpu == "mipsel" || current_cpu == "mips64el" ++ use_sysroot = false ++ # use_sysroot = current_cpu == "x86" || current_cpu == "x64" || ++ # current_cpu == "arm" || current_cpu == "arm64" || ++ # current_cpu == "mipsel" || current_cpu == "mips64el" + } + + if (current_os == target_os && current_cpu == target_cpu && diff --git a/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch new file mode 100644 index 00000000..0c60643c --- /dev/null +++ b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch @@ -0,0 +1,13 @@ +diff -up chromium-70.0.3538.67/base/test/BUILD.gn.nofc chromium-70.0.3538.67/base/test/BUILD.gn +--- chromium-70.0.3538.67/base/test/BUILD.gn.nofc 2018-10-29 11:29:01.356812567 -0400 ++++ chromium-70.0.3538.67/base/test/BUILD.gn 2018-10-29 11:29:12.631584916 -0400 +@@ -209,9 +209,6 @@ static_library("test_support") { + data_deps = [ + "//third_party/test_fonts", + ] +- if (current_toolchain == host_toolchain) { +- data_deps += [ ":do_generate_fontconfig_caches" ] +- } + } + + if (is_ios) { diff --git a/chromium-70.0.3538.67-sandbox-pie.patch b/chromium-70.0.3538.67-sandbox-pie.patch new file mode 100644 index 00000000..0f104e92 --- /dev/null +++ b/chromium-70.0.3538.67-sandbox-pie.patch @@ -0,0 +1,20 @@ +diff -up chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie chromium-70.0.3538.67/sandbox/linux/BUILD.gn +--- chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie 2018-10-18 12:14:05.766939769 -0400 ++++ chromium-70.0.3538.67/sandbox/linux/BUILD.gn 2018-10-18 12:16:37.820027182 -0400 +@@ -315,10 +315,16 @@ if (is_linux) { + # For ULLONG_MAX + "-std=gnu99", + ++ "-fPIE", ++ + # These files have a suspicious comparison. + # TODO fix this and re-enable this warning. + "-Wno-sign-compare", + ] ++ ++ ldflags = [ ++ "-pie", ++ ] + } + } + diff --git a/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch b/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch new file mode 100644 index 00000000..ccecfcb0 --- /dev/null +++ b/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch @@ -0,0 +1,12 @@ +diff -up chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h +--- chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat 2018-11-06 13:27:05.118766581 -0500 ++++ chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h 2018-11-06 13:27:34.575204504 -0500 +@@ -5,6 +5,8 @@ + #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_ + #define SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_ + ++#define __ARCH_WANT_NEW_STAT ++ + #include + + #if !defined(__NR_io_setup) diff --git a/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch b/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch new file mode 100644 index 00000000..d071e814 --- /dev/null +++ b/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch @@ -0,0 +1,12 @@ +diff -up chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9 chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h +--- chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9 2019-01-08 13:27:25.193614727 -0500 ++++ chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h 2019-01-08 13:27:35.161392234 -0500 +@@ -1231,7 +1231,7 @@ typedef unsigned long int ulong; + "d"(LSS_SYSCALL_ARG(parent_tidptr)), + "r"(LSS_SYSCALL_ARG(newtls)), + "r"(LSS_SYSCALL_ARG(child_tidptr)) +- : "rsp", "memory", "r8", "r10", "r11", "rcx"); ++ : "memory", "r8", "r10", "r11", "rcx"); + } + LSS_RETURN(int, __res); + } diff --git a/chromium-71.0.3578.98-py2-bootstrap.patch b/chromium-71.0.3578.98-py2-bootstrap.patch new file mode 100644 index 00000000..d575dff2 --- /dev/null +++ b/chromium-71.0.3578.98-py2-bootstrap.patch @@ -0,0 +1,33 @@ +diff -up chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py +--- chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 2018-12-12 17:02:58.000000000 -0500 ++++ chromium-71.0.3578.98/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py 2018-12-14 11:48:22.150229631 -0500 +@@ -58,7 +58,7 @@ def _MinifyJS(input_js): + + with tempfile.NamedTemporaryFile() as _: + args = [ +- 'python', ++ 'python2', + rjsmin_path + ] + p = subprocess.Popen(args, +@@ -177,7 +177,7 @@ def _MinifyCSS(css_text): + os.path.join(py_vulcanize_path, 'third_party', 'rcssmin', 'rcssmin.py')) + + with tempfile.NamedTemporaryFile() as _: +- rcssmin_args = ['python', rcssmin_path] ++ rcssmin_args = ['python2', rcssmin_path] + p = subprocess.Popen(rcssmin_args, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, +diff -up chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py.py2 chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py +--- chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py.py2 2018-12-14 11:48:22.155229522 -0500 ++++ chromium-71.0.3578.98/tools/gn/bootstrap/bootstrap.py 2018-12-14 11:49:31.043728244 -0500 +@@ -93,7 +93,7 @@ def main(argv): + if not options.debug: + gn_gen_args += ' is_debug=false' + subprocess.check_call([ +- gn_path, 'gen', out_dir, ++ gn_path, 'gen', out_dir, ' --script-executable=/usr/bin/python2', + '--args=%s' % gn_gen_args, "--root=" + SRC_ROOT + ]) + diff --git a/chromium-71.0.3578.98-skia-aarch64-buildfix.patch b/chromium-71.0.3578.98-skia-aarch64-buildfix.patch new file mode 100644 index 00000000..5da16745 --- /dev/null +++ b/chromium-71.0.3578.98-skia-aarch64-buildfix.patch @@ -0,0 +1,21 @@ +diff -up chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h +--- chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix 2018-12-14 11:17:43.249121756 -0500 ++++ chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h 2018-12-14 11:20:07.770030234 -0500 +@@ -658,7 +658,7 @@ SI F approx_powf(F x, F y) { + } + + SI F from_half(U16 h) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f32_f16(h); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) +@@ -678,7 +678,7 @@ SI F from_half(U16 h) { + } + + SI U16 to_half(F f) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f16_f32(f); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) diff --git a/chromium-71.0.3578.98-widevine-r3.patch b/chromium-71.0.3578.98-widevine-r3.patch new file mode 100644 index 00000000..75392a73 --- /dev/null +++ b/chromium-71.0.3578.98-widevine-r3.patch @@ -0,0 +1,22 @@ +diff -upr chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc chromium-71.0.3578.80/chrome/common/chrome_content_client.cc +--- chromium-71.0.3578.80.orig/chrome/common/chrome_content_client.cc 2018-12-21 20:16:43.000000000 +0000 ++++ chromium-71.0.3578.80/chrome/common/chrome_content_client.cc 2018-12-21 21:34:28.658206942 +0000 +@@ -99,7 +99,7 @@ + // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is + // bundled and not a component. When the Widevine CDM is a component, it is + // registered in widevine_cdm_component_installer.cc. +-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) ++#if !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) + #define REGISTER_BUNDLED_WIDEVINE_CDM + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck + // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support +diff -upr chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h +--- chromium-71.0.3578.80.orig/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-21 20:18:01.000000000 +0000 ++++ chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-21 21:37:45.635374949 +0000 +@@ -12,4 +12,6 @@ + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). + ++#define WIDEVINE_CDM_VERSION_STRING "undefined" ++ + #endif // WIDEVINE_CDM_VERSION_H_ diff --git a/chromium-72.0.3626.121-fedora-user-agent.patch b/chromium-72.0.3626.121-fedora-user-agent.patch new file mode 100644 index 00000000..5cef6f01 --- /dev/null +++ b/chromium-72.0.3626.121-fedora-user-agent.patch @@ -0,0 +1,12 @@ +diff -up chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent chromium-72.0.3626.121/content/common/user_agent.cc +--- chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent 2019-03-10 14:21:02.877454982 -0400 ++++ chromium-72.0.3626.121/content/common/user_agent.cc 2019-03-10 14:22:05.728812272 -0400 +@@ -36,7 +36,7 @@ std::string GetUserAgentPlatform() { + #elif defined(OS_MACOSX) + "Macintosh; "; + #elif defined(USE_X11) || defined(USE_OZONE) +- "X11; "; // strange, but that's what Firefox uses ++ "X11; Fedora; "; // strange, but that's what Firefox uses + #elif defined(OS_ANDROID) + "Linux; "; + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) diff --git a/chromium-72.0.3626.121-gcc5-r3.patch b/chromium-72.0.3626.121-gcc5-r3.patch new file mode 100644 index 00000000..f4cf40b2 --- /dev/null +++ b/chromium-72.0.3626.121-gcc5-r3.patch @@ -0,0 +1,36 @@ +diff -up chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h +--- chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 2019-03-01 23:10:21.000000000 -0500 ++++ chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h 2019-03-10 14:07:48.300244125 -0400 +@@ -15,7 +15,7 @@ namespace mojo { + template <> + struct StructTraits { + static base::span name(const gpu::Mailbox& mailbox) { +- return mailbox.name; ++ return base::make_span(mailbox.name); + } + static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out); + }; +diff -up chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h +--- chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 2019-03-01 23:10:31.000000000 -0500 ++++ chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h 2019-03-10 14:07:48.303244046 -0400 +@@ -340,7 +340,7 @@ struct StructTraits vertex_opacity(const viz::DrawQuad& input) { + const viz::TextureDrawQuad* quad = + viz::TextureDrawQuad::MaterialCast(&input); +- return quad->vertex_opacity; ++ return base::make_span(quad->vertex_opacity); + } + + static bool y_flipped(const viz::DrawQuad& input) { +diff -up chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc +--- chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 2019-03-10 14:07:48.307243941 -0400 ++++ chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2019-03-10 14:09:16.565920044 -0400 +@@ -10,7 +10,7 @@ + + #include "modules/audio_processing/aec3/aec_state.h" + +-#include ++#include + #include + #include + #include diff --git a/chromium-72.0.3626.121-notest.patch b/chromium-72.0.3626.121-notest.patch new file mode 100644 index 00000000..e8b7bf4d --- /dev/null +++ b/chromium-72.0.3626.121-notest.patch @@ -0,0 +1,11 @@ +diff -up chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd +--- chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest 2019-03-10 13:54:17.843583876 -0400 ++++ chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd 2019-03-10 14:03:29.302063637 -0400 +@@ -8,7 +8,6 @@ + + + +- + + + diff --git a/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch b/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch new file mode 100644 index 00000000..f8abb52b --- /dev/null +++ b/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch @@ -0,0 +1,48 @@ +diff -up chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn +--- chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc 2019-03-13 10:29:00.331009643 -0400 ++++ chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn 2019-03-13 10:29:28.344458746 -0400 +@@ -31,7 +31,7 @@ gcc_toolchain("arm64") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" +- extra_cppflags = "-fno-delete-null-pointer-checks" ++ extra_cppflags = "" + + toolchain_args = { + current_cpu = "arm64" +@@ -50,7 +50,7 @@ gcc_toolchain("arm") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" +- extra_cppflags = "-fno-delete-null-pointer-checks" ++ extra_cppflags = "" + + toolchain_args = { + current_cpu = "arm" +@@ -101,7 +101,7 @@ gcc_toolchain("x86") { + nm = "nm" + ar = "ar" + ld = cxx +- extra_cppflags = "-fno-delete-null-pointer-checks -g1" ++ extra_cppflags = "-g1" + + # Output linker map files for binary size analysis. + enable_linker_map = true +@@ -155,7 +155,7 @@ gcc_toolchain("x64") { + nm = "nm" + ar = "ar" + ld = cxx +- extra_cppflags = "-fno-delete-null-pointer-checks" ++ extra_cppflags = "" + + # Output linker map files for binary size analysis. + enable_linker_map = true +@@ -190,7 +190,7 @@ gcc_toolchain("mipsel") { + ld = cxx + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" +- extra_cppflags = "-fno-delete-null-pointer-checks" ++ extra_cppflags = "" + + toolchain_args = { + cc_wrapper = "" diff --git a/chromium-73.0.3683.75-norar.patch b/chromium-73.0.3683.75-norar.patch new file mode 100644 index 00000000..d61fd9cc --- /dev/null +++ b/chromium-73.0.3683.75-norar.patch @@ -0,0 +1,81 @@ +diff -up chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn +--- chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn.nounrar 2019-03-13 08:59:45.988801102 -0400 ++++ chromium-73.0.3683.75/chrome/common/safe_browsing/BUILD.gn 2019-03-13 09:00:20.244977448 -0400 +@@ -64,41 +64,6 @@ if (safe_browsing_mode == 1) { + ] + } + +- source_set("rar_analyzer") { +- sources = [ +- "rar_analyzer.cc", +- "rar_analyzer.h", +- ] +- +- deps = [ +- ":archive_analyzer_results", +- ":download_type_util", +- ":file_type_policies", +- "//base", +- "//base:i18n", +- "//components/safe_browsing:features", +- "//third_party/unrar:unrar", +- ] +- +- defines = [ +- "_FILE_OFFSET_BITS=64", +- "LARGEFILE_SOURCE", +- "RAR_SMP", +- "SILENT", +- +- # The following is set to disable certain macro definitions in the unrar +- # source code. +- "CHROMIUM_UNRAR", +- +- # Disables exceptions in unrar, replaces them with process termination. +- "UNRAR_NO_EXCEPTIONS", +- ] +- +- public_deps = [ +- "//components/safe_browsing:csd_proto", +- ] +- } +- + source_set("disk_image_type_sniffer_mac") { + sources = [ + "disk_image_type_sniffer_mac.cc", +@@ -167,7 +132,6 @@ source_set("safe_browsing") { + ":archive_analyzer_results", + ":binary_feature_extractor", + ":download_type_util", +- ":rar_analyzer", + "//components/safe_browsing:features", + ] + +diff -up chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS.nounrar chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS +--- chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS.nounrar 2019-03-11 18:00:54.000000000 -0400 ++++ chromium-73.0.3683.75/chrome/common/safe_browsing/DEPS 2019-03-13 08:59:26.513282690 -0400 +@@ -1,6 +1,5 @@ + include_rules = [ + "+components/safe_browsing", + "+third_party/protobuf", +- "+third_party/unrar", + "+third_party/zlib", + ] +diff -up chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc +--- chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc.nounrar 2019-03-13 08:59:26.518282566 -0400 ++++ chromium-73.0.3683.75/chrome/services/file_util/safe_archive_analyzer.cc 2019-03-13 09:01:03.885935483 -0400 +@@ -48,10 +48,14 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile + void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file, + base::File temporary_file, + AnalyzeRarFileCallback callback) { ++#if 0 + DCHECK(rar_file.IsValid()); + + safe_browsing::ArchiveAnalyzerResults results; + safe_browsing::rar_analyzer::AnalyzeRarFile( + std::move(rar_file), std::move(temporary_file), &results); + std::move(callback).Run(results); ++#else ++ NOTREACHED(); ++#endif + } diff --git a/chromium-75.0.3770.100-epel7-stdc++.patch b/chromium-75.0.3770.100-epel7-stdc++.patch new file mode 100644 index 00000000..e4d62a0e --- /dev/null +++ b/chromium-75.0.3770.100-epel7-stdc++.patch @@ -0,0 +1,11 @@ +diff -up chromium-75.0.3770.100/build/config/BUILD.gn.epel7 chromium-75.0.3770.100/build/config/BUILD.gn +--- chromium-75.0.3770.100/build/config/BUILD.gn.epel7 2019-06-20 10:10:03.099549006 -0400 ++++ chromium-75.0.3770.100/build/config/BUILD.gn 2019-06-20 10:10:21.483158162 -0400 +@@ -267,6 +267,7 @@ config("default_libs") { + "dl", + "pthread", + "rt", ++ "stdc++", + ] + } + } diff --git a/chromium-75.0.3770.100-fix-v8-gcc.patch b/chromium-75.0.3770.100-fix-v8-gcc.patch new file mode 100644 index 00000000..4a1a4b04 --- /dev/null +++ b/chromium-75.0.3770.100-fix-v8-gcc.patch @@ -0,0 +1,14 @@ +diff -up chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc chromium-75.0.3770.100/v8/src/objects/js-objects.cc +--- chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc 2019-06-25 10:55:08.132254304 -0400 ++++ chromium-75.0.3770.100/v8/src/objects/js-objects.cc 2019-06-25 10:55:23.147933648 -0400 +@@ -3792,6 +3792,10 @@ void JSObject::ApplyAttributesToDictiona + } + } + ++template void JSObject::ApplyAttributesToDictionary( ++ Isolate* isolate, ReadOnlyRoots roots, Handle dictionary, ++ const PropertyAttributes attributes); ++ + template + Maybe JSObject::PreventExtensionsWithTransition( + Handle object, ShouldThrow should_throw) { diff --git a/chromium-75.0.3770.100-git00281713.patch b/chromium-75.0.3770.100-git00281713.patch new file mode 100644 index 00000000..4356435a --- /dev/null +++ b/chromium-75.0.3770.100-git00281713.patch @@ -0,0 +1,34 @@ +diff -up chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc +--- chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 2019-07-02 09:10:38.951369854 -0400 ++++ chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc 2019-07-02 09:11:59.864642942 -0400 +@@ -12,13 +12,19 @@ + #include "chrome/browser/performance_manager/graph/process_node_impl.h" + #include "chrome/browser/performance_manager/performance_manager.h" + #include "chrome/browser/performance_manager/render_process_user_data.h" ++#include "content/public/browser/render_process_host.h" + #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h" + + namespace { + + void BindProcessNode( +- content::RenderProcessHost* render_process_host, ++ int render_process_host_id, + resource_coordinator::mojom::ProcessCoordinationUnitRequest request) { ++ content::RenderProcessHost* render_process_host = ++ content::RenderProcessHost::FromID(render_process_host_id); ++ if (!render_process_host) ++ return; ++ + performance_manager::RenderProcessUserData* user_data = + performance_manager::RenderProcessUserData::GetForRenderProcessHost( + render_process_host); +@@ -47,8 +53,7 @@ void ChromeContentBrowserClientPerforman + blink::AssociatedInterfaceRegistry* associated_registry, + content::RenderProcessHost* render_process_host) { + registry->AddInterface( +- base::BindRepeating(&BindProcessNode, +- base::Unretained(render_process_host)), ++ base::BindRepeating(&BindProcessNode, render_process_host->GetID()), + base::SequencedTaskRunnerHandle::Get()); + + // Ideally this would strictly be a "CreateForRenderProcess", but when a diff --git a/chromium-75.0.3770.80-SIOCGSTAMP.patch b/chromium-75.0.3770.80-SIOCGSTAMP.patch new file mode 100644 index 00000000..0ef1e7f1 --- /dev/null +++ b/chromium-75.0.3770.80-SIOCGSTAMP.patch @@ -0,0 +1,15 @@ +diff -up chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h +--- chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP 2019-06-06 10:04:57.050403639 -0400 ++++ chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h 2019-06-06 10:06:03.975121688 -0400 +@@ -16,6 +16,11 @@ + #define WEBRTC_USE_EPOLL 1 + #endif + ++// for SIOCGSTAMP in Linux 5.2 ++#if defined(WEBRTC_LINUX) ++#include ++#endif ++ + #include + #include + #include diff --git a/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch new file mode 100644 index 00000000..2a8ac2f8 --- /dev/null +++ b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch @@ -0,0 +1,14 @@ +diff -up chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc +--- chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix 2019-06-06 12:42:27.431575032 -0400 ++++ chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc 2019-06-06 12:43:05.692848409 -0400 +@@ -31,8 +31,8 @@ void CompositorFrameReportingController: + + void CompositorFrameReportingController::WillBeginMainFrame() { + DCHECK(reporters_[PipelineStage::kBeginImplFrame]); +- DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame], +- reporters_[PipelineStage::kBeginImplFrame]); ++ DCHECK(reporters_[PipelineStage::kBeginMainFrame] != ++ reporters_[PipelineStage::kBeginImplFrame]); + reporters_[PipelineStage::kBeginImplFrame]->StartStage( + "SendBeginMainFrameToCommit"); + AdvanceReporterStage(PipelineStage::kBeginImplFrame, diff --git a/chromium-75.0.3770.80-gcc-no-assume.patch b/chromium-75.0.3770.80-gcc-no-assume.patch new file mode 100644 index 00000000..0bbb08f5 --- /dev/null +++ b/chromium-75.0.3770.80-gcc-no-assume.patch @@ -0,0 +1,21 @@ +diff -up chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume chromium-75.0.3770.80/third_party/angle/src/common/debug.h +--- chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume 2019-06-06 17:38:01.876631704 -0400 ++++ chromium-75.0.3770.80/third_party/angle/src/common/debug.h 2019-06-07 09:30:06.205446547 -0400 +@@ -248,7 +248,7 @@ std::ostream &FmtHex(std::ostream &os, T + # define EVENT(message, ...) (void(0)) + #endif + +-#if defined(COMPILER_GCC) || defined(__clang__) ++#if defined(__GNUC__) + # define ANGLE_CRASH() __builtin_trap() + #else + # define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0) +@@ -336,7 +336,7 @@ std::ostream &FmtHex(std::ostream &os, T + # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"") + # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop") +-#elif defined(COMPILER_GCC) ++#elif defined(__GNUC__) + # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \ + _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"") + # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop") diff --git a/chromium-75.0.3770.80-grpc-gettid-fix.patch b/chromium-75.0.3770.80-grpc-gettid-fix.patch new file mode 100644 index 00000000..c526f4aa --- /dev/null +++ b/chromium-75.0.3770.80-grpc-gettid-fix.patch @@ -0,0 +1,22 @@ +diff -up chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc.gettid-fix chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc +--- chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc.gettid-fix 2019-06-12 17:05:01.720907204 -0400 ++++ chromium-75.0.3770.80/third_party/grpc/src/src/core/lib/gpr/log_linux.cc 2019-06-12 17:06:01.000671370 -0400 +@@ -40,7 +40,8 @@ + #include + #include + +-static long gettid(void) { return syscall(__NR_gettid); } ++/* renamed to avoid conflict with glibc 'gettid()' */ ++static long gettid_gpr(void) { return syscall(__NR_gettid); } + + void gpr_log(const char* file, int line, gpr_log_severity severity, + const char* format, ...) { +@@ -70,7 +71,7 @@ void gpr_default_log(gpr_log_func_args* + gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); + struct tm tm; + static __thread long tid = 0; +- if (tid == 0) tid = gettid(); ++ if (tid == 0) tid = gettid_gpr(); + + timer = static_cast(now.tv_sec); + final_slash = strrchr(args->file, '/'); diff --git a/chromium-75.0.3770.80-no-zlib-mangle.patch b/chromium-75.0.3770.80-no-zlib-mangle.patch new file mode 100644 index 00000000..998be67a --- /dev/null +++ b/chromium-75.0.3770.80-no-zlib-mangle.patch @@ -0,0 +1,14 @@ +diff -up chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle chromium-75.0.3770.80/third_party/zlib/zconf.h +--- chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle 2019-06-05 11:12:30.420412467 -0400 ++++ chromium-75.0.3770.80/third_party/zlib/zconf.h 2019-06-05 11:17:43.512683058 -0400 +@@ -8,10 +8,6 @@ + #ifndef ZCONF_H + #define ZCONF_H + +-/* This include does prefixing as below, but with an updated set of names. Also +- * sets up export macros in component builds. */ +-#include "chromeconf.h" +- + /* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. diff --git a/chromium-75.0.3770.80-pure-virtual-crash-fix.patch b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch new file mode 100644 index 00000000..06c909ff --- /dev/null +++ b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch @@ -0,0 +1,24 @@ +diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc +--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix 2019-06-07 15:03:43.302202979 -0400 ++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc 2019-06-07 15:04:25.140393048 -0400 +@@ -116,4 +116,9 @@ void RenderProcessUserData::RenderProces + base::Unretained(process_node_.get()), info.exit_code)); + } + ++void RenderProcessUserData::RenderProcessHostDestroyed( ++ content::RenderProcessHost* host) { ++ host->RemoveUserData(kRenderProcessUserDataKey); ++} ++ + } // namespace performance_manager +diff -up chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h +--- chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix 2019-06-07 15:04:43.530039597 -0400 ++++ chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h 2019-06-07 15:05:13.770458374 -0400 +@@ -47,6 +47,7 @@ class RenderProcessUserData : public bas + void RenderProcessExited( + content::RenderProcessHost* host, + const content::ChildProcessTerminationInfo& info) override; ++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; + + // All instances are linked together in a doubly linked list to allow orderly + // destruction at browser shutdown time. diff --git a/chromium-75.0.3770.80-revert-daff6b.patch b/chromium-75.0.3770.80-revert-daff6b.patch new file mode 100644 index 00000000..f9968981 --- /dev/null +++ b/chromium-75.0.3770.80-revert-daff6b.patch @@ -0,0 +1,13 @@ +diff -up chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc +--- chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b 2019-06-06 14:54:13.819190586 -0400 ++++ chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc 2019-06-06 14:54:31.892839991 -0400 +@@ -154,8 +154,7 @@ AutocompleteMatch::AutocompleteMatch(con + additional_info(match.additional_info), + duplicate_matches(match.duplicate_matches) {} + +-AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) noexcept = +- default; ++AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) = default; + + AutocompleteMatch::~AutocompleteMatch() { + } diff --git a/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch b/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch new file mode 100644 index 00000000..c44473db --- /dev/null +++ b/chromium-75.0.3770.80-vaapi-i686-fpermissive.patch @@ -0,0 +1,23 @@ +diff -up chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn.i686permissive chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn +--- chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn.i686permissive 2019-06-10 14:47:37.315515026 -0400 ++++ chromium-75.0.3770.80/media/gpu/vaapi/BUILD.gn 2019-06-10 14:48:25.250604888 -0400 +@@ -11,6 +11,10 @@ import("//ui/ozone/ozone.gni") + + assert(use_vaapi) + ++config("vaapi_permissive") { ++ cflags = [ "-fpermissive" ] ++} ++ + generate_stubs("libva_stubs") { + extra_header = "va_stub_header.fragment" + sigs = [ "va.sigs" ] +@@ -89,6 +93,8 @@ source_set("vaapi") { + deps += [ "//media/gpu/linux" ] + } + ++ configs += [ ":vaapi_permissive" ] ++ + if (use_x11) { + configs += [ "//build/config/linux:x11" ] + deps += [ "//ui/gfx/x" ] diff --git a/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch new file mode 100644 index 00000000..dc0bfcbc --- /dev/null +++ b/chromium-75.0.3770.80-vaapi-libva1-compatibility.patch @@ -0,0 +1,14 @@ +diff -up chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc +--- chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc.va1compat 2019-06-05 11:35:57.274466969 -0400 ++++ chromium-75.0.3770.80/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc 2019-06-05 11:36:17.201067326 -0400 +@@ -39,6 +39,10 @@ enum VAJDADecoderFailure { + VAJDA_DECODER_FAILURES_MAX, + }; + ++#ifndef VA_FOURCC_I420 ++#define VA_FOURCC_I420 VA_FOURCC('I', '4', '2', '0') ++#endif ++ + static void ReportToVAJDADecoderFailureUMA(VAJDADecoderFailure failure) { + UMA_HISTOGRAM_ENUMERATION("Media.VAJDA.DecoderFailure", failure, + VAJDA_DECODER_FAILURES_MAX + 1); diff --git a/chromium-76.0.3809.100-el7-noexcept.patch b/chromium-76.0.3809.100-el7-noexcept.patch new file mode 100644 index 00000000..407f8de5 --- /dev/null +++ b/chromium-76.0.3809.100-el7-noexcept.patch @@ -0,0 +1,129 @@ +diff -up chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noexcept chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc +--- chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-08-23 13:41:04.842597850 +0200 ++++ chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc 2019-08-23 13:41:04.842597850 +0200 +@@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id + provider_id_(provider_id) {} + + MediaSink::MediaSink(const MediaSink& other) = default; +-MediaSink::MediaSink(MediaSink&& other) noexcept = default; ++MediaSink::MediaSink(MediaSink&& other) = default; + MediaSink::MediaSink() = default; + MediaSink::~MediaSink() = default; + + MediaSink& MediaSink::operator=(const MediaSink& other) = default; +-MediaSink& MediaSink::operator=(MediaSink&& other) noexcept = default; ++MediaSink& MediaSink::operator=(MediaSink&& other) = default; + + bool MediaSink::IsMaybeCloudSink() const { + switch (icon_type_) { +diff -up chromium-76.0.3809.100/components/history/core/browser/history_types.cc.el7-noexcept chromium-76.0.3809.100/components/history/core/browser/history_types.cc +--- chromium-76.0.3809.100/components/history/core/browser/history_types.cc.el7-noexcept 2019-08-23 13:45:57.673815531 +0200 ++++ chromium-76.0.3809.100/components/history/core/browser/history_types.cc 2019-08-26 10:13:00.815409764 +0200 +@@ -42,7 +42,7 @@ QueryResults::QueryResults(QueryResults& + Swap(&other); + } + +-QueryResults& QueryResults::operator=(QueryResults&& other) noexcept { ++QueryResults& QueryResults::operator=(QueryResults&& other) { + Swap(&other); + return *this; + } +@@ -186,7 +186,7 @@ QueryURLResult::QueryURLResult(QueryURLR + + QueryURLResult& QueryURLResult::operator=(const QueryURLResult&) = default; + +-QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) noexcept = default; ++QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) = default; + + // MostVisitedURL -------------------------------------------------------------- + +diff -up chromium-76.0.3809.100/components/history/core/browser/history_types.h.el7-noexcept chromium-76.0.3809.100/components/history/core/browser/history_types.h +--- chromium-76.0.3809.100/components/history/core/browser/history_types.h.el7-noexcept 2019-08-23 13:46:11.455966965 +0200 ++++ chromium-76.0.3809.100/components/history/core/browser/history_types.h 2019-08-26 10:13:49.951881558 +0200 +@@ -143,7 +143,7 @@ class QueryResults { + ~QueryResults(); + + QueryResults(QueryResults&& other) noexcept; +- QueryResults& operator=(QueryResults&& other) noexcept; ++ QueryResults& operator=(QueryResults&& other); + + void set_reached_beginning(bool reached) { reached_beginning_ = reached; } + bool reached_beginning() { return reached_beginning_; } +@@ -278,7 +278,7 @@ struct QueryURLResult { + QueryURLResult(const QueryURLResult&); + QueryURLResult(QueryURLResult&&) noexcept; + QueryURLResult& operator=(const QueryURLResult&); +- QueryURLResult& operator=(QueryURLResult&&) noexcept; ++ QueryURLResult& operator=(QueryURLResult&&); + ~QueryURLResult(); + + // Indicates whether the call to HistoryBackend::QueryURL was successfull +diff -up chromium-76.0.3809.100/components/policy/core/common/policy_map.cc.el7-noexcept chromium-76.0.3809.100/components/policy/core/common/policy_map.cc +--- chromium-76.0.3809.100/components/policy/core/common/policy_map.cc.el7-noexcept 2019-08-23 13:40:42.633353810 +0200 ++++ chromium-76.0.3809.100/components/policy/core/common/policy_map.cc 2019-08-23 13:40:42.576353183 +0200 +@@ -52,7 +52,7 @@ PolicyMap::Entry::Entry( + PolicyMap::Entry::~Entry() = default; + + PolicyMap::Entry::Entry(Entry&&) noexcept = default; +-PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) noexcept = default; ++PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default; + + PolicyMap::Entry PolicyMap::Entry::DeepCopy() const { + Entry copy; +diff -up chromium-76.0.3809.100/components/signin/core/browser/account_info.cc.el7-noexcept chromium-76.0.3809.100/components/signin/core/browser/account_info.cc +--- chromium-76.0.3809.100/components/signin/core/browser/account_info.cc.el7-noexcept 2019-08-23 13:40:44.224371292 +0200 ++++ chromium-76.0.3809.100/components/signin/core/browser/account_info.cc 2019-08-23 13:40:44.190370918 +0200 +@@ -52,7 +52,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc + CoreAccountInfo& CoreAccountInfo::operator=(const CoreAccountInfo& other) = + default; + +-CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other) noexcept = ++CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other) = + default; + + bool CoreAccountInfo::IsEmpty() const { +@@ -69,7 +69,7 @@ AccountInfo::AccountInfo(AccountInfo&& o + + AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default; + +-AccountInfo& AccountInfo::operator=(AccountInfo&& other) noexcept = default; ++AccountInfo& AccountInfo::operator=(AccountInfo&& other) = default; + + bool AccountInfo::IsEmpty() const { + return CoreAccountInfo::IsEmpty() && hosted_domain.empty() && +diff -up chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.el7-noexcept chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc +--- chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.el7-noexcept 2019-08-23 13:40:25.468165195 +0200 ++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23 13:40:25.481165338 +0200 +@@ -14,7 +14,7 @@ CoreAccountId::~CoreAccountId() = defaul + + CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default; + +-CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept = default; ++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) = default; + + CoreAccountId::CoreAccountId(const char* id) : id(id) {} + +diff -up chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.el7-noexcept chromium-76.0.3809.100/google_apis/gaia/core_account_id.h +--- chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.el7-noexcept 2019-08-23 13:40:25.468165195 +0200 ++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23 13:40:25.481165338 +0200 +@@ -19,7 +19,7 @@ struct CoreAccountId { + ~CoreAccountId(); + + CoreAccountId& operator=(const CoreAccountId&); +- CoreAccountId& operator=(CoreAccountId&&) noexcept; ++ CoreAccountId& operator=(CoreAccountId&&); + + // Those implicit constructor and conversion operator allow to + // progressively migrate the code to use this struct. Removing +diff -up chromium-76.0.3809.100/gpu/config/gpu_info.cc.el7-noexcept chromium-76.0.3809.100/gpu/config/gpu_info.cc +--- chromium-76.0.3809.100/gpu/config/gpu_info.cc.el7-noexcept 2019-08-09 16:48:01.000000000 +0200 ++++ chromium-76.0.3809.100/gpu/config/gpu_info.cc 2019-08-23 13:40:25.482165349 +0200 +@@ -166,7 +166,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice:: + const GPUInfo::GPUDevice& other) = default; + + GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=( +- GPUInfo::GPUDevice&& other) noexcept = default; ++ GPUInfo::GPUDevice&& other) = default; + + GPUInfo::GPUInfo() + : optimus(false), diff --git a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch new file mode 100644 index 00000000..5f45a8ff --- /dev/null +++ b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch @@ -0,0 +1,53 @@ +From 719df31ffd4d52b473509cf77acd9c02ec112acb Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 04 Jun 2019 18:38:12 +0200 +Subject: [PATCH] GCC: fix noexcept from move constructor and assign operators of AccountInfo + +AccountInfo declares them as noexcept and uses default implementation, +so all its members (including AccountId) should be noexcept. But AccountId +is not noexcept. To fix it we just need to make CoreAccountId move +operator/assign operator noexcept. + +Bug: 819294 +Change-Id: Ice38654ab7cf3b9eaa6f54aa36e1fec329264f98 +--- + +diff --git a/google_apis/gaia/core_account_id.cc b/google_apis/gaia/core_account_id.cc +index d808082..12eefe3 100644 +--- a/google_apis/gaia/core_account_id.cc ++++ b/google_apis/gaia/core_account_id.cc +@@ -6,8 +6,16 @@ + + CoreAccountId::CoreAccountId() = default; + ++CoreAccountId::CoreAccountId(const CoreAccountId&) = default; ++ ++CoreAccountId::CoreAccountId(CoreAccountId&&) noexcept = default; ++ + CoreAccountId::~CoreAccountId() = default; + ++CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default; ++ ++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept = default; ++ + CoreAccountId::CoreAccountId(const char* id) : id(id) {} + + CoreAccountId::CoreAccountId(std::string&& id) : id(std::move(id)) {} +diff --git a/google_apis/gaia/core_account_id.h b/google_apis/gaia/core_account_id.h +index 5ea602a..c2d1911 100644 +--- a/google_apis/gaia/core_account_id.h ++++ b/google_apis/gaia/core_account_id.h +@@ -14,8 +14,13 @@ + // for design and tracking). + struct CoreAccountId { + CoreAccountId(); ++ CoreAccountId(const CoreAccountId&); ++ CoreAccountId(CoreAccountId&&) noexcept; + ~CoreAccountId(); + ++ CoreAccountId& operator=(const CoreAccountId&); ++ CoreAccountId& operator=(CoreAccountId&&) noexcept; ++ + // Those implicit constructor and conversion operator allow to + // progressively migrate the code to use this struct. Removing + // them is tracked by https://crbug.com/959161 diff --git a/chromium-76.0.3809.100-gcc-cc-no-except.patch b/chromium-76.0.3809.100-gcc-cc-no-except.patch new file mode 100644 index 00000000..e4d754a8 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-cc-no-except.patch @@ -0,0 +1,105 @@ +From 84c91abab33966f928497c24db4a39f436d2dca8 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Fri, 07 Jun 2019 09:50:11 +0000 +Subject: [PATCH] Make SharedMemoryMapping move constructor noexcept + +As LayerTreeHostImpl::UIResourceData move constructor is declared +noexcept with default implementation, the move constructor of its +members should also be noexcept. GCC will fail to build otherwise +for mismatching noexcept declaration. + +We also set the move assignment operator. + +Bug: 819294 +Change-Id: Icd663da83b882e15f7d16780c9241972e09bc492 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645297 +Commit-Queue: José Dapena Paz +Reviewed-by: Daniel Cheng +Cr-Commit-Position: refs/heads/master@{#667064} +--- + +diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc +index 2be2570..8426fa8 100644 +--- a/base/memory/shared_memory_mapping.cc ++++ b/base/memory/shared_memory_mapping.cc +@@ -33,7 +33,7 @@ + + SharedMemoryMapping::SharedMemoryMapping() = default; + +-SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping) ++SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept + : memory_(mapping.memory_), + size_(mapping.size_), + mapped_size_(mapping.mapped_size_), +@@ -42,7 +42,7 @@ + } + + SharedMemoryMapping& SharedMemoryMapping::operator=( +- SharedMemoryMapping&& mapping) { ++ SharedMemoryMapping&& mapping) noexcept { + Unmap(); + memory_ = mapping.memory_; + size_ = mapping.size_; +@@ -90,9 +90,9 @@ + + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping() = default; + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping( +- ReadOnlySharedMemoryMapping&&) = default; ++ ReadOnlySharedMemoryMapping&&) noexcept = default; + ReadOnlySharedMemoryMapping& ReadOnlySharedMemoryMapping::operator=( +- ReadOnlySharedMemoryMapping&&) = default; ++ ReadOnlySharedMemoryMapping&&) noexcept = default; + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping( + void* address, + size_t size, +@@ -102,9 +102,9 @@ + + WritableSharedMemoryMapping::WritableSharedMemoryMapping() = default; + WritableSharedMemoryMapping::WritableSharedMemoryMapping( +- WritableSharedMemoryMapping&&) = default; ++ WritableSharedMemoryMapping&&) noexcept = default; + WritableSharedMemoryMapping& WritableSharedMemoryMapping::operator=( +- WritableSharedMemoryMapping&&) = default; ++ WritableSharedMemoryMapping&&) noexcept = default; + WritableSharedMemoryMapping::WritableSharedMemoryMapping( + void* address, + size_t size, +diff --git a/base/memory/shared_memory_mapping.h b/base/memory/shared_memory_mapping.h +index d9569af..2b8858e 100644 +--- a/base/memory/shared_memory_mapping.h ++++ b/base/memory/shared_memory_mapping.h +@@ -32,8 +32,8 @@ + SharedMemoryMapping(); + + // Move operations are allowed. +- SharedMemoryMapping(SharedMemoryMapping&& mapping); +- SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping); ++ SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept; ++ SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping) noexcept; + + // Unmaps the region if the mapping is valid. + virtual ~SharedMemoryMapping(); +@@ -93,8 +93,9 @@ + ReadOnlySharedMemoryMapping(); + + // Move operations are allowed. +- ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&); +- ReadOnlySharedMemoryMapping& operator=(ReadOnlySharedMemoryMapping&&); ++ ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&) noexcept; ++ ReadOnlySharedMemoryMapping& operator=( ++ ReadOnlySharedMemoryMapping&&) noexcept; + + // Returns the base address of the mapping. This is read-only memory. This is + // page-aligned. This is nullptr for invalid instances. +@@ -171,8 +172,9 @@ + WritableSharedMemoryMapping(); + + // Move operations are allowed. +- WritableSharedMemoryMapping(WritableSharedMemoryMapping&&); +- WritableSharedMemoryMapping& operator=(WritableSharedMemoryMapping&&); ++ WritableSharedMemoryMapping(WritableSharedMemoryMapping&&) noexcept; ++ WritableSharedMemoryMapping& operator=( ++ WritableSharedMemoryMapping&&) noexcept; + + // Returns the base address of the mapping. This is writable memory. This is + // page-aligned. This is nullptr for invalid instances. diff --git a/chromium-76.0.3809.100-gcc-feature-policy-parser.patch b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch new file mode 100644 index 00000000..0dbffd54 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch @@ -0,0 +1,76 @@ +From 0aca7b8dea0f52ba7bd58dfce4ac236ee60670a8 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 04 Jun 2019 19:44:58 +0200 +Subject: [PATCH] GCC: FeaturePolicyParser ParseValueForFuzzer is not in anonymous namespace + +Compilation fails because we are declaring ParseValueForFuzzer as friend method, +but we are declaring it is in anonymous namespace. Moving to global namespace +still fails (in this case in Clang). + +So final solution is making it a public static method of FeaturePolicyParser. + +Bug: 819294 +Change-Id: Iea307cb6faef675b748d6eb5da2175dcbb17fdc7 +--- + +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc +index 3b7f4a9..eaee409 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc +@@ -317,6 +317,13 @@ + return value; + } + ++void FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType feature_type, ++ const WTF::String& value_string) { ++ bool ok; ++ ParseValueForType(feature_type, value_string, &ok); ++} ++ + bool IsFeatureDeclared(mojom::FeaturePolicyFeature feature, + const ParsedFeaturePolicy& policy) { + return std::any_of(policy.begin(), policy.end(), +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h +index fd25d90..36af405 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h +@@ -16,9 +16,6 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + +-// Forward declare for friendship. +-void ParseValueForFuzzer(blink::mojom::PolicyValueType, const WTF::String&); +- + namespace blink { + + class Document; +@@ -79,8 +76,9 @@ + const FeatureNameMap& feature_names, + ExecutionContext* execution_context = nullptr); + ++ static void ParseValueForFuzzer(mojom::PolicyValueType, const String&); ++ + private: +- friend void ::ParseValueForFuzzer(mojom::PolicyValueType, const String&); + static PolicyValue GetFallbackValueForFeature( + mojom::FeaturePolicyFeature feature); + static PolicyValue ParseValueForType(mojom::PolicyValueType feature_type, +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc +index 7f8e6aa..53350e43 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc +@@ -23,9 +23,9 @@ + extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + static blink::BlinkFuzzerTestSupport test_support = + blink::BlinkFuzzerTestSupport(); +- ParseValueForFuzzer(blink::mojom::PolicyValueType::kBool, +- WTF::String(data, size)); +- ParseValueForFuzzer(blink::mojom::PolicyValueType::kDecDouble, +- WTF::String(data, size)); ++ blink::FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType::kBool, WTF::String(data, size)); ++ blink::FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType::kDecDouble, WTF::String(data, size)); + return 0; + } diff --git a/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch new file mode 100644 index 00000000..26bba05a --- /dev/null +++ b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch @@ -0,0 +1,32 @@ +From cf6d6b40d711fce93a24a2cf517fa3becdbae8bb Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Wed, 05 Jun 2019 17:18:40 +0000 +Subject: [PATCH] Make blink::LayoutUnit::HasFraction constexpr + +Other HasFraction methods as in PhysicalUnit are declared already +constexpr and using it. It breaks GCC build. + +Bug: 819294. +Change-Id: I0c4bd9bd206d45cf31f7fa815ce8533718a425cb +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645222 +Reviewed-by: vmpstr +Reviewed-by: Xianzhu Wang +Commit-Queue: José Dapena Paz +Cr-Commit-Position: refs/heads/master@{#666336} +--- + +diff --git a/third_party/blink/renderer/platform/geometry/layout_unit.h b/third_party/blink/renderer/platform/geometry/layout_unit.h +index f073986..b6dbc76 100644 +--- a/third_party/blink/renderer/platform/geometry/layout_unit.h ++++ b/third_party/blink/renderer/platform/geometry/layout_unit.h +@@ -202,7 +202,9 @@ + return value_ > 0 ? LayoutUnit() : *this; + } + +- bool HasFraction() const { return RawValue() % kFixedPointDenominator; } ++ constexpr bool HasFraction() const { ++ return RawValue() % kFixedPointDenominator; ++ } + + LayoutUnit Fraction() const { + // Compute fraction using the mod operator to preserve the sign of the value diff --git a/chromium-76.0.3809.100-gcc-history-move-noexcept.patch b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch new file mode 100644 index 00000000..2876de43 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch @@ -0,0 +1,42 @@ +From abe74a7f0c53a43a9706a42d71b7ff4a5da53380 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 11 Jun 2019 10:27:19 +0200 +Subject: [PATCH] GCC: add noexcept move assignment in history::URLRow + +In GCC, build is failing because history::QueryURLResult declares its move +assignment operator as noexcept using default implementation. That requires +its members to provide a move assignment operator that is noexcept too. + +But URLRow was missing noexcept declaration in move assignment operator (even +though it was providing noexcept to its move constructor). + +Bug: 819294 +Change-Id: I726e3cf7a4a50c9206a5d0fba8a561d363483d4f +--- + +diff --git a/components/history/core/browser/url_row.cc b/components/history/core/browser/url_row.cc +index 44c22fd..aec0101 100644 +--- a/components/history/core/browser/url_row.cc ++++ b/components/history/core/browser/url_row.cc +@@ -26,7 +26,7 @@ + } + + URLRow& URLRow::operator=(const URLRow& other) = default; +-URLRow& URLRow::operator=(URLRow&& other) = default; ++URLRow& URLRow::operator=(URLRow&& other) noexcept = default; + + void URLRow::Swap(URLRow* other) { + std::swap(id_, other->id_); +diff --git a/components/history/core/browser/url_row.h b/components/history/core/browser/url_row.h +index 8f6f9cf..31a1ef8 100644 +--- a/components/history/core/browser/url_row.h ++++ b/components/history/core/browser/url_row.h +@@ -35,7 +35,7 @@ + + virtual ~URLRow(); + URLRow& operator=(const URLRow& other); +- URLRow& operator=(URLRow&& other); ++ URLRow& operator=(URLRow&& other) noexcept; + + URLID id() const { return id_; } + diff --git a/chromium-76.0.3809.100-gcc-initialization-order.patch b/chromium-76.0.3809.100-gcc-initialization-order.patch new file mode 100644 index 00000000..3bf394f9 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-initialization-order.patch @@ -0,0 +1,33 @@ +From 7dc76c8d9f4cfbce7cf11424120aa6f6094916dc Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Wed, 05 Jun 2019 21:09:01 +0000 +Subject: [PATCH] GCC: XSetWindowAttributes struct initialization should keep order of declaration + +XSetWindowAttributes initialization of attributes in GLSurfaceGLX is not in the +same order of the declaration. GCC fails because of that. + +Bug: 819294 +Change-Id: I8a97da980d5961a35a47ae4d0d8d558b85291f1f +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1646253 +Reviewed-by: Zhenyao Mo +Commit-Queue: José Dapena Paz +Cr-Commit-Position: refs/heads/master@{#666436} +--- + +diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc +index f649dd4..0aa6892 100644 +--- a/ui/gl/gl_surface_glx.cc ++++ b/ui/gl/gl_surface_glx.cc +@@ -583,10 +583,10 @@ + + XSetWindowAttributes swa = { + .background_pixmap = 0, +- .bit_gravity = NorthWestGravity, +- .colormap = g_colormap, + .background_pixel = 0, // ARGB(0,0,0,0) for compositing WM + .border_pixel = 0, ++ .bit_gravity = NorthWestGravity, ++ .colormap = g_colormap, + }; + auto value_mask = CWBackPixmap | CWBitGravity | CWColormap | CWBorderPixel; + if (ui::IsCompositingManagerPresent() && diff --git a/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch new file mode 100644 index 00000000..1d4b90fe --- /dev/null +++ b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch @@ -0,0 +1,97 @@ +From dcb55fb8f18abe5f43d260aa67b14b2dc996f992 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 11 Jun 2019 08:00:13 +0000 +Subject: [PATCH] GCC: move explicit specialization out of RunInfo + +Explicit specialization in non-namespace scope is not allowed in C++, and GCC breaks +build because of that. Move the template specializations out of RunInfo declaration +in shape_result_inline_headeres.h to fix the GCC build issue. + +Bug: 819294 +Change-Id: Id083852bcf8e9efbdc911fdad28fd8767d2905d0 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651728 +Reviewed-by: Kinuko Yasuda +Commit-Queue: José Dapena Paz +Cr-Commit-Position: refs/heads/master@{#667901} +--- + +diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +index 76ee6091..c14d3a0 100644 +--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h ++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +@@ -251,37 +251,6 @@ + template + struct iterator final {}; + +- // For non-zero glyph offset array +- template <> +- struct iterator final { +- // The constructor for ShapeResult +- explicit iterator(const GlyphOffsetArray& array) +- : pointer(array.storage_.get()) { +- DCHECK(pointer); +- } +- +- // The constructor for ShapeResultView +- explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { +- DCHECK(pointer); +- } +- +- GlyphOffset operator*() const { return *pointer; } +- void operator++() { ++pointer; } +- +- const GlyphOffset* pointer; +- }; +- +- // For zero glyph offset array +- template <> +- struct iterator final { +- explicit iterator(const GlyphOffsetArray& array) { +- DCHECK(!array.HasStorage()); +- } +- explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } +- GlyphOffset operator*() const { return GlyphOffset(); } +- void operator++() {} +- }; +- + template + iterator GetIterator() const { + return iterator(*this); +@@ -495,6 +464,37 @@ + float width_; + }; + ++// For non-zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator final { ++ // The constructor for ShapeResult ++ explicit iterator(const GlyphOffsetArray& array) ++ : pointer(array.storage_.get()) { ++ DCHECK(pointer); ++ } ++ ++ // The constructor for ShapeResultView ++ explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { ++ DCHECK(pointer); ++ } ++ ++ GlyphOffset operator*() const { return *pointer; } ++ void operator++() { ++pointer; } ++ ++ const GlyphOffset* pointer; ++}; ++ ++// For zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator final { ++ explicit iterator(const GlyphOffsetArray& array) { ++ DCHECK(!array.HasStorage()); ++ } ++ explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } ++ GlyphOffset operator*() const { return GlyphOffset(); } ++ void operator++() {} ++}; ++ + // Find the range of HarfBuzzRunGlyphData for the specified character index + // range. This function uses binary search twice, hence O(2 log n). + inline ShapeResult::RunInfo::GlyphDataRange diff --git a/chromium-76.0.3809.100-gcc-net-fetcher.patch b/chromium-76.0.3809.100-gcc-net-fetcher.patch new file mode 100644 index 00000000..bc0ed980 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-net-fetcher.patch @@ -0,0 +1,63 @@ +From 502e6e42633d2571c8236c8649b031fe9915eb5b Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 11 Jun 2019 16:56:27 +0000 +Subject: [PATCH] GCC: CertNetFetcherImpl declares Job as a friend but it is in the anonymous namespace + +GCC does not allow friendship declaration to anonymous namespace as done with Job +object in the CertNetFetcherImpl. This fix removes the friend declaration, and just +makes RemoveJob method public, that was the only reason to make Job a friend. + +Error was: +./../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void net::{anonymous}::Job::DetachRequest(net::CertNetFetcherImpl::RequestCore*)’: +../../net/cert_net/cert_net_fetcher_impl.cc:458:42: error: ‘std::unique_ptr net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is private within this context + delete_this = parent_->RemoveJob(this); + ^ +../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here + std::unique_ptr RemoveJob(Job* job); + ^~~~~~~~~ +../../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void net::{anonymous}::Job::OnJobCompleted(net::Error)’: +../../net/cert_net/cert_net_fetcher_impl.cc:610:61: error: ‘std::unique_ptr net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is private within this context + std::unique_ptr delete_this = parent_->RemoveJob(this); + ^ +../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here + std::unique_ptr RemoveJob(Job* job); + ^~~~~~~~~ + +Bug: 819294 +Change-Id: I3609f4558e570741395366de6a4cd40577d91450 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651783 +Commit-Queue: Eric Roman +Reviewed-by: Eric Roman +Cr-Commit-Position: refs/heads/master@{#668015} +--- + +diff --git a/net/cert_net/cert_net_fetcher_impl.cc b/net/cert_net/cert_net_fetcher_impl.cc +index 11a1166..349c656 100644 +--- a/net/cert_net/cert_net_fetcher_impl.cc ++++ b/net/cert_net/cert_net_fetcher_impl.cc +@@ -135,21 +135,19 @@ + void Fetch(std::unique_ptr request_params, + scoped_refptr request); + ++ // Removes |job| from the in progress jobs and transfers ownership to the ++ // caller. ++ std::unique_ptr RemoveJob(Job* job); ++ + // Cancels outstanding jobs, which stops network requests and signals the + // corresponding RequestCores that the requests have completed. + void Shutdown(); + + private: +- friend class Job; +- + // Finds a job with a matching RequestPararms or returns nullptr if there was + // no match. + Job* FindJob(const RequestParams& params); + +- // Removes |job| from the in progress jobs and transfers ownership to the +- // caller. +- std::unique_ptr RemoveJob(Job* job); +- + // The in-progress jobs. This set does not contain the job which is actively + // invoking callbacks (OnJobCompleted). + JobSet jobs_; diff --git a/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch new file mode 100644 index 00000000..cc91d1ef --- /dev/null +++ b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch @@ -0,0 +1,14 @@ +diff -up chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h +--- chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas 2019-08-09 16:48:13.000000000 +0200 ++++ chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h 2019-08-15 21:04:30.231532746 +0200 +@@ -176,8 +176,8 @@ class CSSLazyPropertyParser + DISALLOW_COPY_AND_ASSIGN(CSSLazyPropertyParser); + }; + +-class CORE_EXPORT alignas(Member) alignas( +- CSSPropertyValueMetadata) ImmutableCSSPropertyValueSet ++class CORE_EXPORT ALIGNAS(alignof(Member)) ++ ALIGNAS(alignof(CSSPropertyValueMetadata)) ImmutableCSSPropertyValueSet + : public CSSPropertyValueSet { + public: + ImmutableCSSPropertyValueSet(const CSSPropertyValue*, diff --git a/chromium-76.0.3809.100-gcc-remoting-constexpr.patch b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch new file mode 100644 index 00000000..aec3107f --- /dev/null +++ b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch @@ -0,0 +1,27 @@ +diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker.cc +--- chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr 2019-08-09 16:48:08.000000000 +0200 ++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.cc 2019-08-20 21:29:14.545465656 +0200 +@@ -9,8 +9,7 @@ + namespace remoting { + + // static +-const base::TimeDelta MessageTracker::kCleanupInterval = +- base::TimeDelta::FromMinutes(2); ++constexpr base::TimeDelta MessageTracker::kCleanupInterval; + + MessageTracker::MessageTracker() = default; + +diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker.h +--- chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr 2019-08-20 22:02:25.625970954 +0200 ++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.h 2019-08-20 21:28:23.371952434 +0200 +@@ -36,7 +36,8 @@ class MessageTracker final { + + // All IDs older than now - kCleanupInterval will be eventually removed, but + // they are not guaranteed to be immediately removed after the interval. +- static const base::TimeDelta kCleanupInterval; ++ static constexpr base::TimeDelta kCleanupInterval = ++ base::TimeDelta::FromMinutes(2); + + void RemoveExpiredIds(); + +diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc.gcc-constexpr chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc diff --git a/chromium-76.0.3809.100-gcc-themeservice-includes.patch b/chromium-76.0.3809.100-gcc-themeservice-includes.patch new file mode 100644 index 00000000..ad40bb9e --- /dev/null +++ b/chromium-76.0.3809.100-gcc-themeservice-includes.patch @@ -0,0 +1,36 @@ +From d08ea83acc2f5ff395c1fe54f52687e92fe51c3b Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 04 Jun 2019 22:01:03 +0200 +Subject: [PATCH] IWYU: ThemeService requires NativeTheme + +As ThemeService referes to NativeTheme through a ScopedObserver, +the full declaration is required. + +Bug: 819294 +Change-Id: I9d5bd2e87cfaa76e87f9b5509daea24848906a63 +--- + +diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc +index d65388e2..23dc86d 100644 +--- a/chrome/browser/themes/theme_service.cc ++++ b/chrome/browser/themes/theme_service.cc +@@ -54,7 +54,6 @@ + #include "ui/gfx/color_palette.h" + #include "ui/gfx/image/image_skia.h" + #include "ui/native_theme/common_theme.h" +-#include "ui/native_theme/native_theme.h" + + #if BUILDFLAG(ENABLE_EXTENSIONS) + #include "base/scoped_observer.h" +diff --git a/chrome/browser/themes/theme_service.h b/chrome/browser/themes/theme_service.h +index 6c79c72..f93dc0d 100644 +--- a/chrome/browser/themes/theme_service.h ++++ b/chrome/browser/themes/theme_service.h +@@ -25,6 +25,7 @@ + #include "extensions/buildflags/buildflags.h" + #include "extensions/common/extension_id.h" + #include "ui/base/theme_provider.h" ++#include "ui/native_theme/native_theme.h" + #include "ui/native_theme/native_theme_observer.h" + + class BrowserThemePack; diff --git a/chromium-76.0.3809.100-gcc-vulkan.patch b/chromium-76.0.3809.100-gcc-vulkan.patch new file mode 100644 index 00000000..cf93bce6 --- /dev/null +++ b/chromium-76.0.3809.100-gcc-vulkan.patch @@ -0,0 +1,115 @@ +From fdb3bb1f8c41d044a5b0cb80257a26dd3c8f83a3 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Tue, 11 Jun 2019 17:39:38 +0000 +Subject: [PATCH] GCC: do not use old C notation to assign struct with property names. + +The notation for initialization of structs referring to its properties +is invalid in C++. This is not accepted in GCC. It was making build +fail in VulkanCommandBuffer. + +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function 'void gpu::VulkanCommandBuffer::TransitionImageLayout(VkImage, VkImageLayout, VkImageLayout)': +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:214:7: error: expected primary-expression before '.' token + .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:215:7: error: expected primary-expression before '.' token + .subresourceRange.baseMipLevel = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:216:7: error: expected primary-expression before '.' token + .subresourceRange.levelCount = 1, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:217:7: error: expected primary-expression before '.' token + .subresourceRange.baseArrayLayer = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:218:7: error: expected primary-expression before '.' token + .subresourceRange.layerCount = 1, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function 'void gpu::VulkanCommandBuffer::CopyBufferToImage(VkBuffer, VkImage, uint32_t, uint32_t, uint32_t, uint32_t)': +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:235:7: error: expected primary-expression before '.' token + .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:236:7: error: expected primary-expression before '.' token + .imageSubresource.mipLevel = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:237:7: error: expected primary-expression before '.' token + .imageSubresource.baseArrayLayer = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:238:7: error: expected primary-expression before '.' token + .imageSubresource.layerCount = 1, + ^ +Bug: 819294 + +Change-Id: I999abece0c727e77964789183642ba62009c2c22 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651802 +Commit-Queue: José Dapena Paz +Reviewed-by: Antoine Labour +Cr-Commit-Position: refs/heads/master@{#668033} +--- + +diff --git a/gpu/vulkan/vulkan_command_buffer.cc b/gpu/vulkan/vulkan_command_buffer.cc +index ba776e4..4f14c85 100644 +--- a/gpu/vulkan/vulkan_command_buffer.cc ++++ b/gpu/vulkan/vulkan_command_buffer.cc +@@ -207,21 +207,20 @@ + void VulkanCommandBuffer::TransitionImageLayout(VkImage image, + VkImageLayout old_layout, + VkImageLayout new_layout) { +- VkImageMemoryBarrier barrier = { +- .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, +- .srcAccessMask = GetAccessMask(old_layout), +- .dstAccessMask = GetAccessMask(new_layout), +- .oldLayout = old_layout, +- .newLayout = new_layout, +- .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, +- .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, +- .image = image, +- .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, +- .subresourceRange.baseMipLevel = 0, +- .subresourceRange.levelCount = 1, +- .subresourceRange.baseArrayLayer = 0, +- .subresourceRange.layerCount = 1, +- }; ++ VkImageMemoryBarrier barrier = {}; ++ barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; ++ barrier.srcAccessMask = GetAccessMask(old_layout); ++ barrier.dstAccessMask = GetAccessMask(new_layout); ++ barrier.oldLayout = old_layout; ++ barrier.newLayout = new_layout; ++ barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; ++ barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; ++ barrier.image = image; ++ barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ++ barrier.subresourceRange.baseMipLevel = 0; ++ barrier.subresourceRange.levelCount = 1; ++ barrier.subresourceRange.baseArrayLayer = 0; ++ barrier.subresourceRange.layerCount = 1; + vkCmdPipelineBarrier(command_buffer_, GetPipelineStageFlags(old_layout), + GetPipelineStageFlags(new_layout), 0, 0, nullptr, 0, + nullptr, 1, &barrier); +@@ -233,17 +232,16 @@ + uint32_t buffer_height, + uint32_t width, + uint32_t height) { +- VkBufferImageCopy region = { +- .bufferOffset = 0, +- .bufferRowLength = buffer_width, +- .bufferImageHeight = buffer_height, +- .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, +- .imageSubresource.mipLevel = 0, +- .imageSubresource.baseArrayLayer = 0, +- .imageSubresource.layerCount = 1, +- .imageOffset = {0, 0, 0}, +- .imageExtent = {width, height, 1}, +- }; ++ VkBufferImageCopy region = {}; ++ region.bufferOffset = 0; ++ region.bufferRowLength = buffer_width; ++ region.bufferImageHeight = buffer_height; ++ region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ++ region.imageSubresource.mipLevel = 0; ++ region.imageSubresource.baseArrayLayer = 0; ++ region.imageSubresource.layerCount = 1; ++ region.imageOffset = {0, 0, 0}; ++ region.imageExtent = {width, height, 1}; + vkCmdCopyBufferToImage(command_buffer_, buffer, image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); + } diff --git a/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch new file mode 100644 index 00000000..690f0f9c --- /dev/null +++ b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch @@ -0,0 +1,15 @@ +diff -up chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx chromium-76.0.3809.100/services/device/usb/usb_context.cc +--- chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx 2019-08-12 15:40:49.034170484 +0200 ++++ chromium-76.0.3809.100/services/device/usb/usb_context.cc 2019-08-12 15:41:23.775558867 +0200 +@@ -58,7 +58,11 @@ void UsbContext::UsbEventHandler::Run() + + void UsbContext::UsbEventHandler::Stop() { + base::subtle::Release_Store(&running_, 0); ++#ifdef LIBUSB_API_VERSION >= 0x01000105 ++ libusb_interrupt_event_handler(context_); ++#else + libusb_interrupt_handle_event(context_); ++#endif + } + + UsbContext::UsbContext(PlatformUsbContext context) : context_(context) { diff --git a/chromium-76.0.3809.100-pulse-api-change.patch b/chromium-76.0.3809.100-pulse-api-change.patch new file mode 100644 index 00000000..d4e2b466 --- /dev/null +++ b/chromium-76.0.3809.100-pulse-api-change.patch @@ -0,0 +1,47 @@ +diff -up chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change chromium-76.0.3809.100/media/audio/pulse/pulse.sigs +--- chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change 2019-08-14 23:18:59.624627870 +0200 ++++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 23:19:41.258104998 +0200 +@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info + pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata); + pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata); + pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata); +-pa_context_state_t pa_context_get_state(pa_context* c); ++pa_context_state_t pa_context_get_state(const pa_context* c); + pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name); + pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata); + void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata); +-pa_operation_state_t pa_operation_get_state(pa_operation* o); ++pa_operation_state_t pa_operation_get_state(const pa_operation* o); + void pa_context_unref(pa_context* c); + void pa_operation_unref(pa_operation* o); + int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes); +@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* + int pa_stream_disconnect(pa_stream* s); + int pa_stream_drop(pa_stream *p); + pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata); +-uint32_t pa_stream_get_device_index(pa_stream* s); ++uint32_t pa_stream_get_device_index(const pa_stream* s); + int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative); +-pa_stream_state_t pa_stream_get_state(pa_stream* p); ++pa_stream_state_t pa_stream_get_state(const pa_stream* p); + pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map); + pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p); + pa_proplist* pa_proplist_new(void); +-int pa_proplist_contains(pa_proplist* p, const char* key); ++int pa_proplist_contains(const pa_proplist* p, const char* key); + void pa_proplist_free(pa_proplist* p); +-const char* pa_proplist_gets(pa_proplist* p, const char* key); ++const char* pa_proplist_gets(const pa_proplist* p, const char* key); + int pa_proplist_sets(pa_proplist* p, const char* key, const char* value); +-size_t pa_stream_readable_size(pa_stream *p); ++size_t pa_stream_readable_size(const pa_stream *p); + int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes); + void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata); + void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata); + int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek); + void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata); + void pa_stream_unref(pa_stream* s); +-int pa_context_errno(pa_context *c); ++int pa_context_errno(const pa_context *c); + const char* pa_strerror(int error); + pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v); diff --git a/chromium-76.0.3809.100-quiche-compile-fix.patch b/chromium-76.0.3809.100-quiche-compile-fix.patch new file mode 100644 index 00000000..98789d9b --- /dev/null +++ b/chromium-76.0.3809.100-quiche-compile-fix.patch @@ -0,0 +1,225 @@ +diff -up chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc +--- chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix 2019-08-14 09:58:07.721193200 +0200 ++++ chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc 2019-08-14 09:59:33.131041525 +0200 +@@ -62,37 +62,37 @@ const size_t kStatelessResetTokenLength + std::string TransportParameterIdToString( + TransportParameters::TransportParameterId param_id) { + switch (param_id) { +- case kOriginalConnectionId: ++ case TransportParameters::kOriginalConnectionId: + return "original_connection_id"; +- case kIdleTimeout: ++ case TransportParameters::kIdleTimeout: + return "idle_timeout"; +- case kStatelessResetToken: ++ case TransportParameters::kStatelessResetToken: + return "stateless_reset_token"; +- case kMaxPacketSize: ++ case TransportParameters::kMaxPacketSize: + return "max_packet_size"; +- case kInitialMaxData: ++ case TransportParameters::kInitialMaxData: + return "initial_max_data"; +- case kInitialMaxStreamDataBidiLocal: ++ case TransportParameters::kInitialMaxStreamDataBidiLocal: + return "initial_max_stream_data_bidi_local"; +- case kInitialMaxStreamDataBidiRemote: ++ case TransportParameters::kInitialMaxStreamDataBidiRemote: + return "initial_max_stream_data_bidi_remote"; +- case kInitialMaxStreamDataUni: ++ case TransportParameters::kInitialMaxStreamDataUni: + return "initial_max_stream_data_uni"; +- case kInitialMaxStreamsBidi: ++ case TransportParameters::kInitialMaxStreamsBidi: + return "initial_max_streams_bidi"; +- case kInitialMaxStreamsUni: ++ case TransportParameters::kInitialMaxStreamsUni: + return "initial_max_streams_uni"; +- case kAckDelayExponent: ++ case TransportParameters::kAckDelayExponent: + return "ack_delay_exponent"; +- case kMaxAckDelay: ++ case TransportParameters::kMaxAckDelay: + return "max_ack_delay"; +- case kDisableMigration: ++ case TransportParameters::kDisableMigration: + return "disable_migration"; +- case kPreferredAddress: ++ case TransportParameters::kPreferredAddress: + return "preferred_address"; +- case kGoogleQuicParam: ++ case TransportParameters::kGoogleQuicParam: + return "google"; +- case kGoogleQuicVersion: ++ case TransportParameters::kGoogleQuicVersion: + return "google-version"; + } + return "Unknown(" + QuicTextUtils::Uint64ToString(param_id) + ")"; +@@ -390,7 +390,7 @@ bool SerializeTransportParameters(const + CBB original_connection_id_param; + if (!in.original_connection_id.IsEmpty()) { + DCHECK_EQ(Perspective::IS_SERVER, in.perspective); +- if (!CBB_add_u16(¶ms, kOriginalConnectionId) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kOriginalConnectionId) || + !CBB_add_u16_length_prefixed(¶ms, &original_connection_id_param) || + !CBB_add_bytes( + &original_connection_id_param, +@@ -412,7 +412,7 @@ bool SerializeTransportParameters(const + if (!in.stateless_reset_token.empty()) { + DCHECK_EQ(kStatelessResetTokenLength, in.stateless_reset_token.size()); + DCHECK_EQ(Perspective::IS_SERVER, in.perspective); +- if (!CBB_add_u16(¶ms, kStatelessResetToken) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kStatelessResetToken) || + !CBB_add_u16_length_prefixed(¶ms, &stateless_reset_token_param) || + !CBB_add_bytes(&stateless_reset_token_param, + in.stateless_reset_token.data(), +@@ -438,7 +438,7 @@ bool SerializeTransportParameters(const + + // disable_migration + if (in.disable_migration) { +- if (!CBB_add_u16(¶ms, kDisableMigration) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kDisableMigration) || + !CBB_add_u16(¶ms, 0u)) { // 0 is the length of this parameter. + QUIC_BUG << "Failed to write disable_migration for " << in; + return false; +@@ -458,7 +458,7 @@ bool SerializeTransportParameters(const + QUIC_BUG << "Bad lengths " << *in.preferred_address; + return false; + } +- if (!CBB_add_u16(¶ms, kPreferredAddress) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kPreferredAddress) || + !CBB_add_u16_length_prefixed(¶ms, &preferred_address_params) || + !CBB_add_bytes( + &preferred_address_params, +@@ -491,7 +491,7 @@ bool SerializeTransportParameters(const + if (in.google_quic_params) { + const QuicData& serialized_google_quic_params = + in.google_quic_params->GetSerialized(); +- if (!CBB_add_u16(¶ms, kGoogleQuicParam) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicParam) || + !CBB_add_u16_length_prefixed(¶ms, &google_quic_params) || + !CBB_add_bytes(&google_quic_params, + reinterpret_cast( +@@ -505,7 +505,7 @@ bool SerializeTransportParameters(const + + // Google-specific version extension. + CBB google_version_params; +- if (!CBB_add_u16(¶ms, kGoogleQuicVersion) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicVersion) || + !CBB_add_u16_length_prefixed(¶ms, &google_version_params) || + !CBB_add_u32(&google_version_params, in.version)) { + QUIC_BUG << "Failed to write Google version extension for " << in; +@@ -565,7 +565,7 @@ bool ParseTransportParameters(const uint + } + bool parse_success = true; + switch (param_id) { +- case kOriginalConnectionId: ++ case TransportParameters::kOriginalConnectionId: + if (!out->original_connection_id.IsEmpty()) { + QUIC_DLOG(ERROR) << "Received a second original connection ID"; + return false; +@@ -581,10 +581,10 @@ bool ParseTransportParameters(const uint + CBS_len(&value)); + } + break; +- case kIdleTimeout: ++ case TransportParameters::kIdleTimeout: + parse_success = out->idle_timeout_milliseconds.ReadFromCbs(&value); + break; +- case kStatelessResetToken: ++ case TransportParameters::kStatelessResetToken: + if (!out->stateless_reset_token.empty()) { + QUIC_DLOG(ERROR) << "Received a second stateless reset token"; + return false; +@@ -597,36 +597,36 @@ bool ParseTransportParameters(const uint + out->stateless_reset_token.assign(CBS_data(&value), + CBS_data(&value) + CBS_len(&value)); + break; +- case kMaxPacketSize: ++ case TransportParameters::kMaxPacketSize: + parse_success = out->max_packet_size.ReadFromCbs(&value); + break; +- case kInitialMaxData: ++ case TransportParameters::kInitialMaxData: + parse_success = out->initial_max_data.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataBidiLocal: ++ case TransportParameters::kInitialMaxStreamDataBidiLocal: + parse_success = + out->initial_max_stream_data_bidi_local.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataBidiRemote: ++ case TransportParameters::kInitialMaxStreamDataBidiRemote: + parse_success = + out->initial_max_stream_data_bidi_remote.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataUni: ++ case TransportParameters::kInitialMaxStreamDataUni: + parse_success = out->initial_max_stream_data_uni.ReadFromCbs(&value); + break; +- case kInitialMaxStreamsBidi: ++ case TransportParameters::kInitialMaxStreamsBidi: + parse_success = out->initial_max_streams_bidi.ReadFromCbs(&value); + break; +- case kInitialMaxStreamsUni: ++ case TransportParameters::kInitialMaxStreamsUni: + parse_success = out->initial_max_streams_uni.ReadFromCbs(&value); + break; +- case kAckDelayExponent: ++ case TransportParameters::kAckDelayExponent: + parse_success = out->ack_delay_exponent.ReadFromCbs(&value); + break; +- case kMaxAckDelay: ++ case TransportParameters::kMaxAckDelay: + parse_success = out->max_ack_delay.ReadFromCbs(&value); + break; +- case kDisableMigration: ++ case TransportParameters::kDisableMigration: + if (out->disable_migration) { + QUIC_DLOG(ERROR) << "Received a second disable migration"; + return false; +@@ -638,7 +638,7 @@ bool ParseTransportParameters(const uint + } + out->disable_migration = true; + break; +- case kPreferredAddress: { ++ case TransportParameters::kPreferredAddress: { + uint16_t ipv4_port, ipv6_port; + in_addr ipv4_address; + in6_addr ipv6_address; +@@ -692,7 +692,7 @@ bool ParseTransportParameters(const uint + QuicMakeUnique( + preferred_address); + } break; +- case kGoogleQuicParam: { ++ case TransportParameters::kGoogleQuicParam: { + if (out->google_quic_params) { + QUIC_DLOG(ERROR) << "Received a second Google parameter"; + return false; +@@ -701,7 +701,7 @@ bool ParseTransportParameters(const uint + reinterpret_cast(CBS_data(&value)), CBS_len(&value)); + out->google_quic_params = CryptoFramer::ParseMessage(serialized_params); + } break; +- case kGoogleQuicVersion: { ++ case TransportParameters::kGoogleQuicVersion: { + if (!CBS_get_u32(&value, &out->version)) { + QUIC_DLOG(ERROR) << "Failed to parse Google version extension"; + return false; +diff -up chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc +--- chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix 2019-08-14 09:59:19.139902052 +0200 ++++ chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc 2019-08-14 09:59:33.132041535 +0200 +@@ -2,10 +2,12 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-#include +- + #include "net/third_party/quiche/src/quic/core/quic_socket_address_coder.h" + ++#include ++#include ++#include ++ + namespace quic { + + namespace { diff --git a/chromium-76.0.3809.100-throttling-dead-beef.patch b/chromium-76.0.3809.100-throttling-dead-beef.patch new file mode 100644 index 00000000..5e392e6a --- /dev/null +++ b/chromium-76.0.3809.100-throttling-dead-beef.patch @@ -0,0 +1,30 @@ +From 53bb5a463ee956c70230eaa5450022185d0ddc3c Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Thu, 06 Jun 2019 07:54:05 +0000 +Subject: [PATCH] ThrottlingController::Liveness needs to be uint32_t + +We are setting kAlive and kDead values assigning values that +are bigger than the maximum signed int32. It is better to use +uint32_t in this case. + +Bug: 819294 +Change-Id: If72b48291a66a3a9db24b4c8e2d11d31936a66ee +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645772 +Reviewed-by: Kinuko Yasuda +Commit-Queue: José Dapena Paz +Cr-Commit-Position: refs/heads/master@{#666619} +--- + +diff --git a/services/network/throttling/throttling_controller.h b/services/network/throttling/throttling_controller.h +index 43751c4..3c6f87b 100644 +--- a/services/network/throttling/throttling_controller.h ++++ b/services/network/throttling/throttling_controller.h +@@ -38,7 +38,7 @@ + + // TODO(https://crbug.com/960874): Debugging code to try and shed some light + // on why the owned maps are invalid. +- enum class Liveness : int32_t { ++ enum class Liveness : uint32_t { + kAlive = 0xCA11AB13, + kDead = 0xDEADBEEF, + }; diff --git a/chromium-76.0.3809.100-vtable-symbol-undefined.patch b/chromium-76.0.3809.100-vtable-symbol-undefined.patch new file mode 100644 index 00000000..64532df9 --- /dev/null +++ b/chromium-76.0.3809.100-vtable-symbol-undefined.patch @@ -0,0 +1,11 @@ +diff -up chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc +--- chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined 2019-08-20 21:21:24.901899270 +0200 ++++ chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc 2019-08-20 21:19:30.361746211 +0200 +@@ -18,6 +18,7 @@ + #include "net/quic/crypto/proof_verifier_chromium.h" + #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" + #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" ++#include "net/quic/platform/impl/quic_flags_impl.cc" + + DEFINE_QUIC_COMMAND_LINE_FLAG(std::string, + certificate_file, diff --git a/chromium-76.0.3809.100-weak-ptr-no-except.patch b/chromium-76.0.3809.100-weak-ptr-no-except.patch new file mode 100644 index 00000000..a3929716 --- /dev/null +++ b/chromium-76.0.3809.100-weak-ptr-no-except.patch @@ -0,0 +1,66 @@ +From 0370838723e786b51e7ec8ab55014811ec3e3aa3 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Thu, 18 Jul 2019 14:26:11 +0200 +Subject: [PATCH] Make base::WeakPtr move constructor/operator noexcept to fix GCC build regression + +A GCC build regression has happened on DisjointRangeLockManager, as its move +operator and constructor were declared noexcept. This was failing because the +default implementation depended on base::WeakPtr, that did not provide +noexcept declaration for them. + +So make base::WeakPtr noexcept. + +Bug: 819294 +Change-Id: I936784b881c7c1afea136ceedbe9341e76464f95 +--- + +diff --git a/base/memory/weak_ptr.cc b/base/memory/weak_ptr.cc +index 64fd499..0efcc44 100644 +--- a/base/memory/weak_ptr.cc ++++ b/base/memory/weak_ptr.cc +@@ -46,7 +46,7 @@ + + WeakReference::~WeakReference() = default; + +-WeakReference::WeakReference(WeakReference&& other) = default; ++WeakReference::WeakReference(WeakReference&& other) noexcept = default; + + WeakReference::WeakReference(const WeakReference& other) = default; + +diff --git a/base/memory/weak_ptr.h b/base/memory/weak_ptr.h +index 72b5f1f..ccd22fd13 100644 +--- a/base/memory/weak_ptr.h ++++ b/base/memory/weak_ptr.h +@@ -116,9 +116,9 @@ + explicit WeakReference(const scoped_refptr& flag); + ~WeakReference(); + +- WeakReference(WeakReference&& other); ++ WeakReference(WeakReference&& other) noexcept; + WeakReference(const WeakReference& other); +- WeakReference& operator=(WeakReference&& other) = default; ++ WeakReference& operator=(WeakReference&& other) noexcept = default; + WeakReference& operator=(const WeakReference& other) = default; + + bool IsValid() const; +@@ -153,9 +153,9 @@ + ~WeakPtrBase(); + + WeakPtrBase(const WeakPtrBase& other) = default; +- WeakPtrBase(WeakPtrBase&& other) = default; ++ WeakPtrBase(WeakPtrBase&& other) noexcept = default; + WeakPtrBase& operator=(const WeakPtrBase& other) = default; +- WeakPtrBase& operator=(WeakPtrBase&& other) = default; ++ WeakPtrBase& operator=(WeakPtrBase&& other) noexcept = default; + + void reset() { + ref_ = internal::WeakReference(); +@@ -236,7 +236,7 @@ + ptr_ = reinterpret_cast(t); + } + template +- WeakPtr(WeakPtr&& other) : WeakPtrBase(std::move(other)) { ++ WeakPtr(WeakPtr&& other) noexcept : WeakPtrBase(std::move(other)) { + // Need to cast from U* to T* to do pointer adjustment in case of multiple + // inheritance. This also enforces the "U is a T" rule. + T* t = reinterpret_cast(other.ptr_); diff --git a/chromium-76.0.3809.132-certificate-transparency.patch b/chromium-76.0.3809.132-certificate-transparency.patch new file mode 100644 index 00000000..8bfbceda --- /dev/null +++ b/chromium-76.0.3809.132-certificate-transparency.patch @@ -0,0 +1,539 @@ +diff -up chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc +--- chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-03 22:08:28.931786496 +0200 ++++ chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-03 22:15:24.743555759 +0200 +@@ -17,6 +17,7 @@ + #include "chrome/common/pref_names.h" + #include "chrome/test/base/in_process_browser_test.h" + #include "components/prefs/pref_service.h" ++#include "services/network/public/cpp/network_service_buildflags.h" + #include "services/network/public/mojom/network_context.mojom.h" + #include "services/network/public/mojom/network_service.mojom.h" + #include "testing/gmock/include/gmock/gmock.h" +@@ -297,3 +298,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont + INSTANTIATE_TEST_SUITE_P(, + SystemNetworkContextManagerStubResolverBrowsertest, + ::testing::Values(false, true)); ++ ++class SystemNetworkContextManagerCertificateTransparencyBrowsertest ++ : public SystemNetworkContextManagerBrowsertest, ++ public testing::WithParamInterface> { ++ public: ++ SystemNetworkContextManagerCertificateTransparencyBrowsertest() { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ GetParam()); ++ } ++ ~SystemNetworkContextManagerCertificateTransparencyBrowsertest() override { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ base::nullopt); ++ } ++}; ++ ++#if BUILDFLAG(IS_CT_SUPPORTED) ++IN_PROC_BROWSER_TEST_P( ++ SystemNetworkContextManagerCertificateTransparencyBrowsertest, ++ CertificateTransparencyConfig) { ++ network::mojom::NetworkContextParamsPtr context_params = ++ g_browser_process->system_network_context_manager() ++ ->CreateDefaultNetworkContextParams(); ++ ++ const bool kDefault = ++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \ ++ !defined(OS_ANDROID) ++ true; ++#else ++ false; ++#endif ++ ++ EXPECT_EQ(GetParam().value_or(kDefault), ++ context_params->enforce_chrome_ct_policy); ++ EXPECT_NE(GetParam().value_or(kDefault), context_params->ct_logs.empty()); ++ ++ if (GetParam().value_or(kDefault)) { ++ bool has_google_log = false; ++ bool has_disqualified_log = false; ++ for (const auto& ct_log : context_params->ct_logs) { ++ has_google_log |= ct_log->operated_by_google; ++ has_disqualified_log |= ct_log->disqualified_at.has_value(); ++ } ++ EXPECT_TRUE(has_google_log); ++ EXPECT_TRUE(has_disqualified_log); ++ } ++} ++#endif ++ ++INSTANTIATE_TEST_SUITE_P( ++ , ++ SystemNetworkContextManagerCertificateTransparencyBrowsertest, ++ ::testing::Values(base::nullopt, true, false)); +diff -up chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc +--- chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-08-26 21:02:05.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc 2019-09-03 22:13:26.451198970 +0200 +@@ -4,11 +4,13 @@ + + #include "chrome/browser/net/system_network_context_manager.h" + ++#include + #include + #include + #include + + #include "base/bind.h" ++#include "base/build_time.h" + #include "base/command_line.h" + #include "base/feature_list.h" + #include "base/logging.h" +@@ -51,6 +53,7 @@ + #include "content/public/common/mime_handler_view_mode.h" + #include "content/public/common/service_names.mojom.h" + #include "content/public/common/user_agent.h" ++#include "crypto/sha2.h" + #include "mojo/public/cpp/bindings/associated_interface_ptr.h" + #include "net/dns/public/util.h" + #include "net/net_buildflags.h" +@@ -81,6 +84,20 @@ + + namespace { + ++constexpr bool kCertificateTransparencyEnabled = ++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \ ++ !defined(OS_ANDROID) ++ // Certificate Transparency is only enabled if: ++ // - Desktop (!OS_ANDROID); OS_IOS does not use this file ++ // - base::GetBuildTime() is deterministic to the source (OFFICIAL_BUILD) ++ // - The build in reliably updatable (GOOGLE_CHROME_BUILD) ++ true; ++#else ++ false; ++#endif ++ ++bool g_enable_certificate_transparency = kCertificateTransparencyEnabled; ++ + // The global instance of the SystemNetworkContextmanager. + SystemNetworkContextManager* g_system_network_context_manager = nullptr; + +@@ -686,14 +703,35 @@ SystemNetworkContextManager::CreateDefau + + bool http_09_on_non_default_ports_enabled = false; + #if !defined(OS_ANDROID) +- // CT is only enabled on Desktop platforms for now. +- network_context_params->enforce_chrome_ct_policy = true; +- for (const auto& ct_log : certificate_transparency::GetKnownLogs()) { +- // TODO(rsleevi): https://crbug.com/702062 - Remove this duplication. +- network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New(); +- log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length); +- log_info->name = ct_log.log_name; +- network_context_params->ct_logs.push_back(std::move(log_info)); ++ ++ if (g_enable_certificate_transparency) { ++ network_context_params->enforce_chrome_ct_policy = true; ++ network_context_params->ct_log_update_time = base::GetBuildTime(); ++ ++ std::vector operated_by_google_logs = ++ certificate_transparency::GetLogsOperatedByGoogle(); ++ std::vector> disqualified_logs = ++ certificate_transparency::GetDisqualifiedLogs(); ++ for (const auto& ct_log : certificate_transparency::GetKnownLogs()) { ++ // TODO(rsleevi): https://crbug.com/702062 - Remove this duplication. ++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New(); ++ log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length); ++ log_info->name = ct_log.log_name; ++ ++ std::string log_id = crypto::SHA256HashString(log_info->public_key); ++ log_info->operated_by_google = ++ std::binary_search(std::begin(operated_by_google_logs), ++ std::end(operated_by_google_logs), log_id); ++ auto it = std::lower_bound( ++ std::begin(disqualified_logs), std::end(disqualified_logs), log_id, ++ [](const auto& disqualified_log, const std::string& log_id) { ++ return disqualified_log.first < log_id; ++ }); ++ if (it != std::end(disqualified_logs) && it->first == log_id) { ++ log_info->disqualified_at = it->second; ++ } ++ network_context_params->ct_logs.push_back(std::move(log_info)); ++ } + } + + const base::Value* value = +@@ -756,6 +794,12 @@ SystemNetworkContextManager::GetHttpAuth + return CreateHttpAuthDynamicParams(g_browser_process->local_state()); + } + ++void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ base::Optional enabled) { ++ g_enable_certificate_transparency = ++ enabled.value_or(kCertificateTransparencyEnabled); ++} ++ + network::mojom::NetworkContextParamsPtr + SystemNetworkContextManager::CreateNetworkContextParams() { + // TODO(mmenke): Set up parameters here (in memory cookie store, etc). +diff -up chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h.certificate-transparency chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h +--- chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-08-26 21:02:05.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h 2019-09-03 22:08:28.931786496 +0200 +@@ -158,6 +158,12 @@ class SystemNetworkContextManager { + static network::mojom::HttpAuthDynamicParamsPtr + GetHttpAuthDynamicParamsForTesting(); + ++ // Enables Certificate Transparency and enforcing the Chrome Certificate ++ // Transparency Policy. For test use only. Use base::nullopt_t to reset to ++ // the default state. ++ static void SetEnableCertificateTransparencyForTesting( ++ base::Optional enabled); ++ + private: + class URLLoaderFactoryForSystem; + +diff -up chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc +--- chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-08-26 21:02:05.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc 2019-09-03 22:08:28.932786508 +0200 +@@ -4834,7 +4834,7 @@ IN_PROC_BROWSER_TEST_P(SSLPolicyTestComm + browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); + } + +-IN_PROC_BROWSER_TEST_F(PolicyTest, ++IN_PROC_BROWSER_TEST_F(CertificateTransparencyPolicyTest, + CertificateTransparencyEnforcementDisabledForCas) { + net::EmbeddedTestServer https_server_ok(net::EmbeddedTestServer::TYPE_HTTPS); + https_server_ok.SetSSLConfig(net::EmbeddedTestServer::CERT_OK); +diff -up chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc +--- chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-08-26 21:02:07.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-03 22:08:28.932786508 +0200 +@@ -8,6 +8,7 @@ + #include "base/callback.h" + #include "base/run_loop.h" + #include "base/test/scoped_feature_list.h" ++#include "chrome/browser/net/system_network_context_manager.h" + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/ssl/cert_verifier_browser_test.h" + #include "chrome/browser/ui/browser.h" +@@ -27,7 +28,17 @@ namespace { + // received by a server. + class ExpectCTBrowserTest : public CertVerifierBrowserTest { + public: +- ExpectCTBrowserTest() : CertVerifierBrowserTest() {} ++ ExpectCTBrowserTest() : CertVerifierBrowserTest() { ++ // Expect-CT reporting depends on actually enforcing Certificate ++ // Transparency. ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ true); ++ } ++ ++ ~ExpectCTBrowserTest() override { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ base::nullopt); ++ } + + void SetUpOnMainThread() override { + run_loop_ = std::make_unique(); +diff -up chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc +--- chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-08-26 21:02:07.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-03 22:08:28.932786508 +0200 +@@ -457,6 +457,13 @@ class SecurityStateTabHelperTest : publi + SecurityStateTabHelperTest() + : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) { + https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir()); ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ true); ++ } ++ ++ ~SecurityStateTabHelperTest() override { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ base::nullopt); + } + + void SetUpOnMainThread() override { +diff -up chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc +--- chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-08-26 21:02:07.000000000 +0200 ++++ chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc 2019-09-03 22:08:28.934786531 +0200 +@@ -2008,8 +2008,14 @@ class CertificateTransparencySSLUITest : + public: + CertificateTransparencySSLUITest() + : CertVerifierBrowserTest(), +- https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} +- ~CertificateTransparencySSLUITest() override {} ++ https_server_(net::EmbeddedTestServer::TYPE_HTTPS) { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ true); ++ } ++ ~CertificateTransparencySSLUITest() override { ++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting( ++ base::nullopt); ++ } + + void SetUpOnMainThread() override { + CertVerifierBrowserTest::SetUpOnMainThread(); +diff -up chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h +--- chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-08-26 21:02:14.000000000 +0200 ++++ chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-03 22:08:28.934786531 +0200 +@@ -45,6 +45,19 @@ class ChromeCTPolicyEnforcer : public ne + + void SetClockForTesting(const base::Clock* clock) { clock_ = clock; } + ++ // TODO(https://crbug.com/999240): These are exposed to allow end-to-end ++ // testing by higher layers (i.e. that the ChromeCTPolicyEnforcer is ++ // correctly constructed). When either this issue or https://crbug.com/848277 ++ // are fixed, the configuration can be tested independently, and these can ++ // be removed. ++ const std::vector& operated_by_google_logs_for_testing() { ++ return operated_by_google_logs_; ++ } ++ const std::vector>& ++ disqualified_logs_for_testing() { ++ return disqualified_logs_; ++ } ++ + private: + // Returns true if the log identified by |log_id| (the SHA-256 hash of the + // log's DER-encoded SPKI) has been disqualified, and sets +diff -up chromium-76.0.3809.132/services/network/network_context.cc.certificate-transparency chromium-76.0.3809.132/services/network/network_context.cc +--- chromium-76.0.3809.132/services/network/network_context.cc.certificate-transparency 2019-08-26 21:02:33.000000000 +0200 ++++ chromium-76.0.3809.132/services/network/network_context.cc 2019-09-03 22:17:27.977834857 +0200 +@@ -35,6 +35,7 @@ + #include "components/prefs/pref_registry_simple.h" + #include "components/prefs/pref_service.h" + #include "components/prefs/pref_service_factory.h" ++#include "crypto/sha2.h" + #include "mojo/public/cpp/bindings/strong_binding.h" + #include "net/base/layered_network_delegate.h" + #include "net/base/load_flags.h" +@@ -1851,16 +1852,6 @@ URLRequestContextOwner NetworkContext::A + base::FeatureList::IsEnabled(features::kNetworkErrorLogging)); + #endif // BUILDFLAG(ENABLE_REPORTING) + +-#if BUILDFLAG(IS_CT_SUPPORTED) +- if (params_->enforce_chrome_ct_policy) { +- builder->set_ct_policy_enforcer( +- std::make_unique( +- base::GetBuildTime(), +- certificate_transparency::GetDisqualifiedLogs(), +- certificate_transparency::GetLogsOperatedByGoogle())); +- } +-#endif // BUILDFLAG(IS_CT_SUPPORTED) +- + net::HttpNetworkSession::Params session_params; + bool is_quic_force_disabled = false; + if (network_service_ && network_service_->quic_disabled()) +@@ -1910,8 +1901,20 @@ URLRequestContextOwner NetworkContext::A + + #if BUILDFLAG(IS_CT_SUPPORTED) + std::vector> ct_logs; ++ std::vector> disqualified_logs; ++ std::vector operated_by_google_logs; ++ + if (!params_->ct_logs.empty()) { + for (const auto& log : params_->ct_logs) { ++ if (log->operated_by_google || log->disqualified_at) { ++ std::string log_id = crypto::SHA256HashString(log->public_key); ++ if (log->operated_by_google) ++ operated_by_google_logs.push_back(log_id); ++ if (log->disqualified_at) { ++ disqualified_logs.push_back( ++ std::make_pair(log_id, log->disqualified_at.value())); ++ } ++ } + scoped_refptr log_verifier = + net::CTLogVerifier::Create(log->public_key, log->name); + if (!log_verifier) { +@@ -1924,6 +1927,17 @@ URLRequestContextOwner NetworkContext::A + ct_verifier->AddLogs(ct_logs); + builder->set_ct_verifier(std::move(ct_verifier)); + } ++ ++ if (params_->enforce_chrome_ct_policy) { ++ std::sort(std::begin(operated_by_google_logs), ++ std::end(operated_by_google_logs)); ++ std::sort(std::begin(disqualified_logs), std::end(disqualified_logs)); ++ ++ builder->set_ct_policy_enforcer( ++ std::make_unique( ++ params_->ct_log_update_time, disqualified_logs, ++ operated_by_google_logs)); ++ } + #endif // BUILDFLAG(IS_CT_SUPPORTED) + + const base::CommandLine* command_line = +diff -up chromium-76.0.3809.132/services/network/network_context_unittest.cc.certificate-transparency chromium-76.0.3809.132/services/network/network_context_unittest.cc +--- chromium-76.0.3809.132/services/network/network_context_unittest.cc.certificate-transparency 2019-08-26 21:02:33.000000000 +0200 ++++ chromium-76.0.3809.132/services/network/network_context_unittest.cc 2019-09-03 22:20:22.382888089 +0200 +@@ -2,6 +2,7 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include + #include + #include + #include +@@ -38,10 +39,12 @@ + #include "base/threading/thread_task_runner_handle.h" + #include "base/time/default_clock.h" + #include "base/time/default_tick_clock.h" ++#include "base/time/time.h" + #include "build/build_config.h" + #include "components/network_session_configurator/browser/network_session_configurator.h" + #include "components/network_session_configurator/common/network_switches.h" + #include "components/prefs/testing_pref_service.h" ++#include "crypto/sha2.h" + #include "mojo/public/cpp/bindings/interface_request.h" + #include "mojo/public/cpp/bindings/strong_binding.h" + #include "mojo/public/cpp/system/data_pipe_utils.h" +@@ -113,6 +116,11 @@ + #include "url/scheme_host_port.h" + #include "url/url_constants.h" + ++#if BUILDFLAG(IS_CT_SUPPORTED) ++#include "components/certificate_transparency/chrome_ct_policy_enforcer.h" ++#include "services/network/public/mojom/ct_log_info.mojom.h" ++#endif ++ + #if BUILDFLAG(ENABLE_REPORTING) + #include "net/network_error_logging/network_error_logging_service.h" + #include "net/reporting/reporting_cache.h" +@@ -5566,6 +5574,72 @@ TEST_F(NetworkContextTest, BlockAllCooki + EXPECT_EQ("None", response_body); + } + ++#if BUILDFLAG(IS_CT_SUPPORTED) ++TEST_F(NetworkContextTest, CertificateTransparencyConfig) { ++ mojom::NetworkContextParamsPtr params = CreateContextParams(); ++ params->enforce_chrome_ct_policy = true; ++ params->ct_log_update_time = base::Time::Now(); ++ ++ // The log public keys do not matter for the test, so invalid keys are used. ++ // However, because the log IDs are derived from the SHA-256 hash of the log ++ // key, the log keys are generated such that qualified logs are in the form ++ // of four digits (e.g. "0000", "1111"), while disqualified logs are in the ++ // form of four letters (e.g. "AAAA", "BBBB"). ++ ++ for (int i = 0; i < 6; ++i) { ++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New(); ++ // Shift to ASCII '0' (0x30) ++ log_info->public_key = std::string(4, 0x30 + static_cast(i)); ++ log_info->name = std::string(4, 0x30 + static_cast(i)); ++ log_info->operated_by_google = i % 2; ++ ++ params->ct_logs.push_back(std::move(log_info)); ++ } ++ for (int i = 0; i < 3; ++i) { ++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New(); ++ // Shift to ASCII 'A' (0x41) ++ log_info->public_key = std::string(4, 0x41 + static_cast(i)); ++ log_info->name = std::string(4, 0x41 + static_cast(i)); ++ log_info->operated_by_google = false; ++ log_info->disqualified_at = base::TimeDelta::FromSeconds(i); ++ ++ params->ct_logs.push_back(std::move(log_info)); ++ } ++ std::unique_ptr network_context = ++ CreateContextWithParams(std::move(params)); ++ ++ net::CTPolicyEnforcer* request_enforcer = ++ network_context->url_request_context()->ct_policy_enforcer(); ++ ASSERT_TRUE(request_enforcer); ++ ++ // Completely unsafe if |enforce_chrome_ct_policy| is false. ++ certificate_transparency::ChromeCTPolicyEnforcer* policy_enforcer = ++ reinterpret_cast( ++ request_enforcer); ++ ++ EXPECT_TRUE(std::is_sorted( ++ policy_enforcer->operated_by_google_logs_for_testing().begin(), ++ policy_enforcer->operated_by_google_logs_for_testing().end())); ++ EXPECT_TRUE( ++ std::is_sorted(policy_enforcer->disqualified_logs_for_testing().begin(), ++ policy_enforcer->disqualified_logs_for_testing().end())); ++ ++ EXPECT_THAT( ++ policy_enforcer->operated_by_google_logs_for_testing(), ++ ::testing::UnorderedElementsAreArray({crypto::SHA256HashString("1111"), ++ crypto::SHA256HashString("3333"), ++ crypto::SHA256HashString("5555")})); ++ EXPECT_THAT(policy_enforcer->disqualified_logs_for_testing(), ++ ::testing::UnorderedElementsAre( ++ ::testing::Pair(crypto::SHA256HashString("AAAA"), ++ base::TimeDelta::FromSeconds(0)), ++ ::testing::Pair(crypto::SHA256HashString("BBBB"), ++ base::TimeDelta::FromSeconds(1)), ++ ::testing::Pair(crypto::SHA256HashString("CCCC"), ++ base::TimeDelta::FromSeconds(2)))); ++} ++#endif ++ + } // namespace + + } // namespace network +diff -up chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.certificate-transparency chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom +--- chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-08-26 21:02:33.000000000 +0200 ++++ chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom 2019-09-03 22:08:28.936786554 +0200 +@@ -4,6 +4,8 @@ + + module network.mojom; + ++import "mojo/public/mojom/base/time.mojom"; ++ + // A single Certificate Transparency Log configuration. + struct CTLogInfo { + // The DER-encoded SubjectPublicKeyInfo of the log. +@@ -14,4 +16,13 @@ struct CTLogInfo { + // The human-readable, log-supplied log name. Note that this will not be + // translated. + string name; ++ ++ // Whether or not the log should should be considered a Google Log for the ++ // purposes of enforcing the "Certificate Transparency in Chrome" policy. ++ bool operated_by_google = false; ++ ++ // If set, the time since the Unix Epoch when the log was disqualified. This ++ // is used to determine the "once or currently qualified" status of the log. ++ // If the log is currently qualified, this will not be set. ++ mojo_base.mojom.TimeDelta? disqualified_at; + }; +diff -up chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom.certificate-transparency chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom +--- chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-08-26 21:02:33.000000000 +0200 ++++ chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom 2019-09-03 22:08:28.936786554 +0200 +@@ -238,15 +238,6 @@ struct NetworkContextParams { + [EnableIf=is_android] + bool check_clear_text_permitted = false; + +- // True if the "Certificate Transparency in Chrome" policy (see +- // https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should +- // be enforced for certificates and connections. +- // +- // See //net/docs/certificate-transparency.md before setting this flag to +- // true. +- [EnableIf=is_ct_supported] +- bool enforce_chrome_ct_policy = false; +- + // Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS. + bool http_09_on_non_default_ports_enabled = false; + +@@ -299,6 +290,15 @@ struct NetworkContextParams { + // servers, so they can discover misconfigurations. + bool enable_certificate_reporting = false; + ++ // True if the "Certificate Transparency in Chrome" policy (see ++ // https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should ++ // be enforced for certificates and connections. ++ // ++ // See //net/docs/certificate-transparency.md before setting this flag to ++ // true. ++ [EnableIf=is_ct_supported] ++ bool enforce_chrome_ct_policy = false; ++ + // Enables Expect CT reporting, which sends reports for opted-in sites that + // don't serve sufficient Certificate Transparency information. + [EnableIf=is_ct_supported] +@@ -310,6 +310,13 @@ struct NetworkContextParams { + [EnableIf=is_ct_supported] + array ct_logs; + ++ // When the Certificate Transparency logs in |ct_logs| were last updated. If ++ // |enforce_chrome_ct_policy| is set, and |ct_log_update_time| is not ++ // sufficiently recent, enforcement of the "Certificate Transparency in ++ // Chrome" policy will be disabled. ++ [EnableIf=is_ct_supported] ++ mojo_base.mojom.Time ct_log_update_time; ++ + // Specifies the path to the directory where NSS will store its database. + [EnableIf=is_chromeos] + mojo_base.mojom.FilePath? nss_path; diff --git a/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch b/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch new file mode 100644 index 00000000..73db4d4c --- /dev/null +++ b/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch @@ -0,0 +1,21 @@ +diff -up chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc.gcc-ambigous-instantiation chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc +--- chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc.gcc-ambigous-instantiation 2019-08-26 21:02:33.000000000 +0200 ++++ chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc 2019-08-27 06:58:23.963821667 +0200 +@@ -207,7 +207,7 @@ std::set& GetPluginProxyingProcesse + // confirmation sniffing because images, scripts, etc. are frequently + // mislabelled by http servers as HTML/JSON/XML). + base::flat_set& GetNeverSniffedMimeTypes() { +- static base::NoDestructor> s_types({ ++ static base::NoDestructor> s_types{{ + // The list below has been populated based on most commonly used content + // types according to HTTP Archive - see: + // https://github.com/whatwg/fetch/issues/860#issuecomment-457330454 +@@ -219,7 +219,7 @@ base::flat_set& GetNeverSni + "application/x-protobuf", + "application/zip", + "text/event-stream", +- }); ++ }}; + + // All items need to be lower-case, to support case-insensitive comparisons + // later. diff --git a/chromium-browser.desktop b/chromium-browser.desktop new file mode 100644 index 00000000..962decbd --- /dev/null +++ b/chromium-browser.desktop @@ -0,0 +1,356 @@ +[Desktop Entry] +Version=1.0 +Name=Chromium Web Browser +Name[ast]=Restolador web Chromium +Name[ca]=Navegador web Chromium +Name[de]=Chromium-Webbrowser +Name[es]=Navegador web Chromium +Name[fr]=Navigateur Web Chromium +Name[gl]=Navegador web Chromium +Name[he]=דפדפן האינטרנט Chromium +Name[hr]=Chromium web preglednik +Name[hu]=Chromium webböngésző +Name[id]=Peramban Web Chromium +Name[it]=Browser web Chromium +Name[ja]=Chromium ウェブ・ブラウザ +Name[ko]=Chromium 웹 브라우저 +Name[pt_BR]=Chromium Navegador da Internet +Name[ru]=Веб-браузер Chromium +Name[sl]=Chromium spletni brskalnik +Name[sv]=Webbläsaren Chromium +Name[ug]=Chromium توركۆرگۈ +Name[zh_CN]=Chromium 网页浏览器 +Name[zh_HK]=Chromium 網頁瀏覽器 +Name[zh_TW]=Chromium 網頁瀏覽器 +Comment=Access the Internet +Comment[ar]=الدخول إلى الإنترنت +Comment[ast]=Accesu a Internet +Comment[bg]=Достъп до интернет +Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন +Comment[ca]=Accediu a Internet +Comment[cs]=Přístup k internetu +Comment[da]=Få adgang til internettet +Comment[de]=Internetzugriff +Comment[el]=Πρόσβαση στο Διαδίκτυο +Comment[en_GB]=Access the Internet +Comment[es]=Acceda a Internet +Comment[et]=Pääs Internetti +Comment[fi]=Käytä internetiä +Comment[fil]=I-access ang Internet +Comment[fr]=Explorer le Web +Comment[gl]=Acceda a Internet +Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો +Comment[he]=גישה לאינטרנט +Comment[hi]=इंटरनेट तक पहुंच स्थापित करें +Comment[hr]=Pristupite Internetu +Comment[hu]=Az internet elérése +Comment[id]=Akses Internet +Comment[it]=Accesso a Internet +Comment[ja]=インターネットにアクセス +Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿs +Comment[ko]=인터넷에 연결합니다 +Comment[lt]=Interneto prieiga +Comment[lv]=Piekļūt internetam +Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക +Comment[mr]=इंटरनेटमध्ये प्रवेश करा +Comment[nb]=Gå til Internett +Comment[nl]=Verbinding maken met internet +Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ +Comment[pl]=Skorzystaj z internetu +Comment[pt]=Aceder à Internet +Comment[pt_BR]=Acessar a internet +Comment[ro]=Accesaţi Internetul +Comment[ru]=Доступ в Интернет +Comment[sk]=Prístup do siete Internet +Comment[sl]=Dostop do interneta +Comment[sr]=Приступите Интернету +Comment[sv]=Surfa på Internet +Comment[ta]=இணையத்தை அணுகுதல் +Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి +Comment[th]=เข้าถึงอินเทอร์เน็ต +Comment[tr]=İnternet'e erişin +Comment[ug]=ئىنتېرنېتنى زىيارەت قىلىش +Comment[uk]=Доступ до Інтернету +Comment[vi]=Truy cập Internet +Comment[zh_CN]=访问互联网 +Comment[zh_HK]=連線到網際網路 +Comment[zh_TW]=連線到網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح الشبكة +GenericName[ast]=Restolador web +GenericName[bg]=Уеб браузър +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=WWW prohlížeč +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=Περιηγητής ιστού +GenericName[en_GB]=Web Browser +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fi]=WWW-selain +GenericName[fil]=Web Browser +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador web +GenericName[gu]=વેબ બ્રાઉઝર +GenericName[he]=דפדפן אינטרנט +GenericName[hi]=वेब ब्राउज़र +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[id]=Peramban Web +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ +GenericName[ko]=웹 브라우저 +GenericName[lt]=Žiniatinklio naršyklė +GenericName[lv]=Tīmekļa pārlūks +GenericName[ml]=വെബ് ബ്രൌസര്‍ +GenericName[mr]=वेब ब्राऊजर +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador da Internet +GenericName[ro]=Navigator de Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=WWW prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sr]=Интернет прегледник +GenericName[sv]=Webbläsare +GenericName[ta]=இணைய உலாவி +GenericName[te]=మహాతల అన్వేషి +GenericName[th]=เว็บเบราว์เซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Навігатор Тенет +GenericName[vi]=Bộ duyệt Web +GenericName[zh_CN]=网页浏览器 +GenericName[zh_HK]=網頁瀏覽器 +GenericName[zh_TW]=網頁瀏覽器 +Exec=/usr/bin/chromium-browser %U +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=chromium-browser +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; +StartupWMClass=Chromium-browser +Keywords=web;browser;internet; +Actions=new-window;new-private-window; + +[Desktop Action new-window] +Name=Open a New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn-BD]=নতুন উইন্ডো (N) +Name[bn-IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en-GB]=New Window +Name[en-US]=New Window +Name[en-ZA]=New Window +Name[eo]=Nova fenestro +Name[es-AR]=Nueva ventana +Name[es-CL]=Nueva ventana +Name[es-ES]=Nueva ventana +Name[es-MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید‌ +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy-NL]=Nij finster +Name[ga-IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu-IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi-IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy-AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja-JP-mac]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួច​​​ថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb-NO]=Nytt vindu +Name[ne-NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn-NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa-IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt-BR]=Nova janela +Name[pt-PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv-SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh-CN]=新建窗口 +Name[zh-TW]=開新視窗 +Exec=chromium-browser %U + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en-GB]=New Private Window +Name[en-US]=New Private Window +Name[en-ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es-AR]=Nueva ventana privada +Name[es-CL]=Nueva ventana privada +Name[es-ES]=Nueva ventana privada +Name[es-MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy-NL]=Nij priveefinster +Name[ga-IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu-IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi-IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy-AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja-JP-mac]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួច​ឯកជន​ថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو& +Name[lij]=Neuvo barcon privou +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb-NO]=Nytt privat vindu +Name[ne-NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn-NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt-BR]=Nova janela privativa +Name[pt-PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv-SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh-CN]=新建隐私浏览窗口 +Name[zh-TW]=新增隱私視窗 +Exec=chromium-browser --incognito %U diff --git a/chromium-browser.sh b/chromium-browser.sh new file mode 100755 index 00000000..97607b94 --- /dev/null +++ b/chromium-browser.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Let the wrapped binary know that it has been run through the wrapper. +export CHROME_WRAPPER="`readlink -f "$0"`" + +HERE="`dirname "$CHROME_WRAPPER"`" + +# We include some xdg utilities next to the binary, and we want to prefer them +# over the system versions when we know the system versions are very old. We +# detect whether the system xdg utilities are sufficiently new to be likely to +# work for us by looking for xdg-settings. If we find it, we leave $PATH alone, +# so that the system xdg utilities (including any distro patches) will be used. +if ! which xdg-settings &> /dev/null; then + # Old xdg utilities. Prepend $HERE to $PATH to use ours instead. + export PATH="$HERE:$PATH" +else + # Use system xdg utilities. But first create mimeapps.list if it doesn't + # exist; some systems have bugs in xdg-mime that make it fail without it. + xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}" + mkdir -p "$xdg_app_dir" + [ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list" +fi + +# Always use our versions of ffmpeg libs. +# This also makes RPMs find the compatibly-named library symlinks. +if [[ -n "$LD_LIBRARY_PATH" ]]; then + LD_LIBRARY_PATH="$HERE:$HERE/lib:$LD_LIBRARY_PATH" +else + LD_LIBRARY_PATH="$HERE:$HERE/lib" +fi +export LD_LIBRARY_PATH + +export CHROME_VERSION_EXTRA="Built from source for @@BUILD_TARGET@@" + +# We don't want bug-buddy intercepting our crashes. http://crbug.com/24120 +export GNOME_DISABLE_CRASH_DIALOG=SET_BY_GOOGLE_CHROME + +CHROMIUM_DISTRO_FLAGS=" --enable-plugins \ + --enable-extensions \ + --enable-user-scripts \ + --enable-printing \ + --enable-gpu-rasterization \ + --enable-sync \ + --auto-ssl-client-auth @@EXTRA_FLAGS@@" + +if [ -f "$HERE/PepperFlash/libpepflashplayer.so" ] && [ -f "$HERE/PepperFlash/manifest.json" ] ; then + CHROMIUM_FLASH_VERSION=$(grep '"version":' "$HERE/PepperFlash/manifest.json" | awk -F\" '{ print $4 }') + CHROMIUM_FLASH_FLAGS=" --ppapi-flash-path=$HERE/PepperFlash/libpepflashplayer.so \ + --ppapi-flash-version=$CHROMIUM_FLASH_VERSION" +else + CHROMIUM_FLASH_FLAGS="" +fi + +exec -a "$0" "$HERE/@@CHROMIUM_BROWSER_CHANNEL@@" $CHROMIUM_DISTRO_FLAGS $CHROMIUM_FLASH_FLAGS "$@" diff --git a/chromium-browser.xml b/chromium-browser.xml new file mode 100644 index 00000000..159e05cc --- /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 00000000..5af86286 --- /dev/null +++ b/chromium-latest.py @@ -0,0 +1,344 @@ +#!/usr/bin/python3 +# Copyright 2010,2015-2019 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 io +import sys +import urllib.request, urllib.parse, urllib.error + +chromium_url = "http://commondatastorage.googleapis.com/chromium-browser-official/" + +chromium_root_dir = "." +version_string = "stable" + +name = 'Chromium Latest' +script_version = 0.9 +my_description = '{0} {1}'.format(name, script_version) + + +def dlProgress(count, blockSize, totalSize): + + if (totalSize <= blockSize): + percent = int(count * 100) + else: + percent = int(count * blockSize * 100 / totalSize) + sys.stdout.write("\r" + "Downloading ... %d%%" % percent) + sys.stdout.flush() + + +def delete_chromium_dir(ch_dir): + + full_dir = "%s/%s" % (latest_dir, ch_dir) + print('Deleting %s ' % full_dir) + if os.path.isdir(full_dir): + shutil.rmtree(full_dir) + print('[DONE]') + else: + print('[NOT FOUND]') + + +def delete_chromium_files(files): + + full_path = "%s/%s" % (latest_dir, files) + print('Deleting ' + full_path + ' ', end=' ') + for filename in glob.glob(full_path): + print('Deleting ' + filename + ' ', end=' ') + 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.request.urlopen(status_url) + status_dump = usock.read().decode('utf-8') + usock.close() + status_list = io.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.request.urlretrieve(path, file_to_download, reporthook=dlProgress)[1] + urllib.request.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.request.urlretrieve(path, hashes_file, reporthook=dlProgress)[1] + urllib.request.urlcleanup() + print("") + + if os.path.isfile(hashes_local_file): + with open(hashes_local_file, "r") as input_file: + md5sum = input_file.readline().split()[1] + md5 = hashlib.md5() + with open(tarball_local_file, "rb") as f: + for block in iter(lambda: f.read(65536), b""): + md5.update(block) + if (md5sum == md5.hexdigest()): + print("MD5 matches for %s!" % file_to_download) + else: + print("MD5 mismatch for %s!" % file_to_download) + sys.exit(1) + else: + print("Cannot compare hashes for %s!" % file_to_download) + + +def download_version(version): + + download_file_and_compare_hashes ('chromium-%s.tar.xz' % version) + + if (args.tests): + download_file_and_compare_hashes ('chromium-%s-testdata.tar.xz' % version) + +def nacl_versions(version): + + if sys.version_info[0] == 2 and sys.version_info[1] == 6: + return + + myvars = {} + chrome_dir = './chromium-%s' % version + with open(chrome_dir + "/native_client/tools/REVISIONS") as myfile: + for line in myfile: + name, var = line.partition("=")[::2] + myvars[name] = var + print("nacl-binutils commit: %s" % myvars["NACL_BINUTILS_COMMIT"]) + print("nacl-gcc commit: %s" % myvars["NACL_GCC_COMMIT"]) + print("nacl-newlib commit: %s" % myvars["NACL_NEWLIB_COMMIT"]) + + # Parse GIT_REVISIONS dict from toolchain_build.py + + sys.path.append(os.path.abspath(chrome_dir + "/native_client/toolchain_build")) + from toolchain_build import GIT_REVISIONS + print("nacl-arm-binutils commit: %s" % GIT_REVISIONS['binutils']['rev']) + print("nacl-arm-gcc commit: %s" % GIT_REVISIONS['gcc']['rev']) + + +def download_chrome_latest_rpm(arch): + + chrome_rpm = 'google-chrome-%s_current_%s.rpm' % (version_string, arch) + path = 'https://dl.google.com/linux/direct/%s' % chrome_rpm + + if (args.clean): + remove_file_if_exists(chrome_rpm) + + # Let's make sure we haven't already downloaded it. + if os.path.isfile("./%s" % chrome_rpm): + print("%s already exists!" % chrome_rpm) + else: + print("Downloading %s" % path) + # Perhaps look at using python-progressbar at some point? + info=urllib.request.urlretrieve(path, chrome_rpm, reporthook=dlProgress)[1] + urllib.request.urlcleanup() + print("") + if (info["Content-Type"] != "binary/octet-stream" and info["Content-Type"] != "application/x-redhat-package-manager"): + print('Chrome %s rpms are not on servers.' % version_string) + remove_file_if_exists (chrome_rpm) + sys.exit(1) + +# This is where the magic happens +if __name__ == '__main__': + + # Locale magic + locale.setlocale(locale.LC_ALL, '') + + # Create the parser object + if optparse: + parser = OptionParser(description=my_description) + parser_add_argument = parser.add_option + else: + parser = argparse.ArgumentParser(description=my_description) + parser_add_argument = parser.add_argument + + parser_add_argument( + '--ffmpegarm', action='store_true', + help='Leave arm sources when cleaning ffmpeg') + parser_add_argument( + '--beta', action='store_true', + help='Get the latest beta Chromium source') + parser_add_argument( + '--clean', action='store_true', + help='Re-download all previously downloaded sources') + parser_add_argument( + '--cleansources', action='store_true', + help='Get the latest Chromium release from given channel and clean various directories to from unnecessary or unwanted stuff') + parser_add_argument( + '--dev', action='store_true', + help='Get the latest dev Chromium source') + parser_add_argument( + '--ffmpegclean', action='store_true', + help='Get the latest Chromium release from given channel and cleans ffmpeg sources from proprietary stuff') + parser_add_argument( + '--chrome', action='store_true', + help='Get the latest Chrome rpms for the given channel') + parser_add_argument( + '--prep', action='store_true', + help='Prepare everything, but don\'t compress the result') + parser_add_argument( + '--stable', action='store_true', + help='Get the latest stable Chromium source') + parser_add_argument( + '--tests', action='store_true', + help='Get the additional data for running tests') + parser_add_argument( + '--version', + help='Download a specific version of Chromium') + parser_add_argument( + '--naclvers', + help='Display the commit versions of nacl toolchain components') + + # Parse the args + if optparse: + args, options = parser.parse_args() + else: + args = parser.parse_args() + + if args.stable: + version_string = "stable" + elif args.beta: + version_string = "beta" + elif args.dev: + version_string = "dev" + elif (not (args.stable or args.beta or args.dev)): + if (not args.version): + print('No version specified, downloading STABLE') + args.stable = True + + chromium_version = args.version if args.version else check_omahaproxy(version_string) + + if args.dev: + version_string = "unstable" + + if args.chrome: + if args.version: + print('You cannot specify a Chrome RPM version!') + sys.exit(1) + latest = 'google-chrome-%s_current_i386' % version_string + download_chrome_latest_rpm("i386") + latest = 'google-chrome-%s_current_x86_64' % version_string + download_chrome_latest_rpm("x86_64") + if (not (args.ffmpegclean or args.tests)): + sys.exit(0) + + latest = 'chromium-%s.tar.xz' % chromium_version + + download_version(chromium_version) + + # Lets make sure we haven't unpacked it already + latest_dir = "%s/chromium-%s" % (chromium_root_dir, chromium_version) + if (args.clean and os.path.isdir(latest_dir)): + shutil.rmtree(latest_dir) + + if os.path.isdir(latest_dir): + print("%s already exists, perhaps %s has already been unpacked?" % (latest_dir, latest)) + else: + print("Unpacking %s into %s, please wait." % (latest, latest_dir)) + if (os.system("tar -xJf %s" % latest) != 0): + print("%s is possibly corrupted, exiting." % (latest)) + sys.exit(1) + + if (args.naclvers): + nacl_versions(chromium_version) + + if (args.cleansources): + junk_dirs = ['third_party/WebKit/Tools/Scripts/webkitpy/layout_tests', + 'webkit/data/layout_tests', 'third_party/hunspell/dictionaries', + 'chrome/test/data', 'native_client/tests', + 'third_party/WebKit/LayoutTests'] + + # First, the dirs: + for directory in junk_dirs: + delete_chromium_dir(directory) + + # There has got to be a better, more portable way to do this. + os.system("find %s -depth -name reference_build -type d -exec rm -rf {} \;" % latest_dir) + + # I could not find good bindings for xz/lzma support, so we system call here too. + chromium_clean_xz_file = "chromium-" + chromium_version + "-clean.tar.xz" + + remove_file_if_exists(chromium_clean_xz_file) + + if (args.ffmpegclean): + print("Cleaning ffmpeg from proprietary things...") + os.system("./clean_ffmpeg.sh %s %d" % (latest_dir, 0 if args.ffmpegarm else 1)) + print("Done!") + + if (not args.prep): + print("Compressing cleaned tree, please wait...") + os.chdir(chromium_root_dir) + os.system("tar --exclude=\.svn -cf - chromium-%s | xz -9 -T 0 -f > %s" % (chromium_version, chromium_clean_xz_file)) + + print("Finished!") diff --git a/chromium-widevine-other-locations.patch b/chromium-widevine-other-locations.patch new file mode 100644 index 00000000..04601802 --- /dev/null +++ b/chromium-widevine-other-locations.patch @@ -0,0 +1,23 @@ +Description: try alternative locations for libwidevinecdm.so: + - $HOME/.local/lib/ (snap-friendly, see https://launchpad.net/bugs/1738149) + - /opt/google/chrome/ (installed by official google chrome package) +Author: Olivier Tilloy + +--- a/chrome/common/chrome_paths.cc ++++ b/chrome/common/chrome_paths.cc +@@ -377,6 +377,15 @@ bool PathProvider(int key, base::FilePat + // TODO(crbug.com/663554): Remove this after component updated CDM is + // supported on Linux and ChromeOS. + case chrome::FILE_WIDEVINE_CDM: ++ base::PathService::Get(base::DIR_HOME, &cur); ++ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so")); ++ if (base::PathExists(cur)) { ++ break; ++ } ++ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so")))) { ++ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/libwidevinecdm.so")); ++ break; ++ } + if (!GetComponentDirectory(&cur)) + return false; + cur = diff --git a/chromium.spec b/chromium.spec new file mode 100644 index 00000000..1471b94d --- /dev/null +++ b/chromium.spec @@ -0,0 +1,2783 @@ +# This package depends on automagic byte compilation +# https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_2 +%global _python_bytecompile_extra 1 + +# This is faster when it works, but it doesn't always. +%ifarch aarch64 +%global use_jumbo 0 +%else +%global use_jumbo 1 +%endif + +# We usually want this. +%global build_headless 1 + +# We'd like to always have this on. +%global use_vaapi 0 + +# NEVER EVER EVER turn this on in official builds +%global freeworld 0 +%if %{freeworld} +%global lsuffix freeworld +%else +%global lsuffix fedora +%endif + +# Some people wish not to use the Fedora Google API keys. Mmkay. +# Expect stuff to break in weird ways if you disable. +%global useapikeys 1 + +# Leave this alone, please. +%global target out/Release +%global headlesstarget out/Headless +%global remotingtarget out/Remoting + +# Debuginfo packages aren't very useful here. If you need to debug +# you should do a proper debug build (not implemented in this spec yet) +%global debug_package %{nil} + +# %%{nil} for Stable; -beta for Beta; -dev for Devel +# dash in -beta and -dev is intentional ! +%global chromium_channel %{nil} +%global chromium_menu_name Chromium +%global chromium_browser_channel chromium-browser%{chromium_channel} +%global chromium_path %{_libdir}/chromium-browser%{chromium_channel} +%global crd_path %{_libdir}/chrome-remote-desktop + +# We don't want any libs in these directories to generate Provides +# Requires is trickier. + +# To generate this list, go into %%{buildroot}%%{chromium_path} and run +# for i in `find . -name "*.so"`; do NAME=`basename -s .so $i`; printf "$NAME|"; done +# for RHEL7, append libfontconfig to the end +# make sure there is not a trailing | at the end of the list + +%global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.* +%if 0%{?rhel} == 7 +%global privlibs libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia|libfontconfig +%else +%global privlibs libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia +%endif +%global __requires_exclude ^(%{privlibs})\\.so* + +# If we build with shared on, then chrome-remote-desktop depends on chromium libs. +# If we build with shared off, then users cannot swap out libffmpeg (and i686 gets a lot harder to build) +%global shared 1 +# We should not need to turn this on. The app in the webstore _should_ work. +%global build_remoting_app 0 + +# AddressSanitizer mode +# https://www.chromium.org/developers/testing/addresssanitizer +%global asan 0 + +# nacl/pnacl are soon to be dead. We're just killing them off early. +%global killnacl 1 + +%if 0%{?killnacl} + %global nacl 0 + %global nonacl 1 +%else +# TODO: Try arm (nacl disabled) +%if 0%{?fedora} + %ifarch i686 + %global nacl 0 + %global nonacl 1 + %else + %global nacl 1 + %global nonacl 0 + %endif +%endif +%endif + +%if 0 +# Chromium's fork of ICU is now something we can't unbundle. +# This is left here to ease the change if that ever switches. +BuildRequires: libicu-devel >= 5.4 +%global bundleicu 0 +%else +%global bundleicu 1 +%endif + +%global bundlere2 1 + +# The libxml_utils code depends on the specific bundled libxml checkout +# which is not compatible with the current code in the Fedora package as of +# 2017-06-08. +%global bundlelibxml 1 + +# Fedora's Python 2 stack is being removed, we use the bundled Python libraries +# This can be revisited once we upgrade to Python 3 +%global bundlepylibs 1 + +# Chromium used to break on wayland, hidpi, and colors with gtk3 enabled. +# Hopefully it does not anymore. +%global gtk3 1 + +%if 0%{?rhel} == 7 +%global dts_version 8 + +%global bundleopus 1 +%global bundlelibusbx 1 +%global bundleharfbuzz 1 +%global bundlelibwebp 1 +%global bundlelibpng 1 +%global bundlelibjpeg 1 +%global bundlefreetype 1 +%global bundlelibdrm 1 +%global bundlefontconfig 1 +%else +%global bundleharfbuzz 0 +%global bundleopus 1 +%global bundlelibusbx 0 +%global bundlelibwebp 0 +%global bundlelibpng 0 +%global bundlelibjpeg 0 +%global bundlefreetype 0 +%global bundlelibdrm 0 +%global bundlefontconfig 0 +%endif + +# Needs at least harfbuzz 2.3.0 now. +# 2019-03-13 +%if 0%{?fedora} < 30 +%global bundleharfbuzz 1 +%else +%global bundleharfbuzz 0 +%endif + +# Pulseaudio changed the API a little in 12.99.1 +%if 0%{?fedora} > 30 +%global pulseaudioapichange 1 +%else +%global pulseaudioapichange 0 +%endif + +### Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) +### Note: These are for Fedora use ONLY. +### For your own distribution, please get your own set of keys. +### http://lists.debian.org/debian-legal/2013/11/msg00006.html +%if %{useapikeys} +%global api_key AIzaSyDUIXvzVrt5OkVsgXhQ6NFfvWlA44by-aw +%global default_client_id 449907151817.apps.googleusercontent.com +%global default_client_secret miEreAep8nuvTdvLums6qyLK +%global chromoting_client_id 449907151817-8vnlfih032ni8c4jjps9int9t86k546t.apps.googleusercontent.com +%else +%global api_key %nil +%global default_client_id %nil +%global default_client_secret %nil +%global chromoting_client_id %nil +%endif + +%global majorversion 76 + +%if %{freeworld} +Name: chromium%{chromium_channel}%{?freeworld:-freeworld} +%else +Name: chromium%{chromium_channel} +%endif +Version: %{majorversion}.0.3809.132 +Release: 2%{?dist} +Summary: A WebKit (Blink) powered web browser +Url: http://www.chromium.org/Home +License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) + +### Chromium Fedora Patches ### +Patch0: chromium-67.0.3396.62-gcc5.patch +Patch1: chromium-45.0.2454.101-linux-path-max.patch +Patch2: chromium-55.0.2883.75-addrfix.patch +Patch3: chromium-72.0.3626.121-notest.patch +# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a) +Patch4: chromium-76.0.3809.100-libusb_interrupt_event_handler.patch +# Use PIE in the Linux sandbox (from openSUSE via Russian Fedora) +Patch6: chromium-70.0.3538.67-sandbox-pie.patch +# Use /etc/chromium for master_prefs +Patch7: chromium-68.0.3440.106-master-prefs-path.patch +# Use gn system files +Patch8: chromium-67.0.3396.62-gn-system.patch +# Fix issue where timespec is not defined when sys/stat.h is included. +Patch9: chromium-53.0.2785.92-boringssl-time-fix.patch +# I wouldn't have to do this if there was a standard way to append extra compiler flags +Patch10: chromium-63.0.3289.84-nullfix.patch +# Add explicit includedir for jpeglib.h +Patch11: chromium-54.0.2840.59-jpeg-include-dir.patch +# On i686, pass --no-keep-memory --reduce-memory-overheads to ld. +Patch12: chromium-59.0.3071.86-i686-ld-memory-tricks.patch +# Revert https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8db6940240c563cf4%5E%21/#F0 +# https://bugs.chromium.org/p/chromium/issues/detail?id=712737 +# https://bugzilla.redhat.com/show_bug.cgi?id=1446851 +Patch13: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch +# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8 +Patch14: chromium-64.0.3282.119-ffmpeg-stdatomic.patch +# Nacl can't die soon enough +Patch15: chromium-66.0.3359.117-system-clang.patch +# Do not prefix libpng functions +Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch +# Do not mangle libjpeg +Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch +# Do not mangle zlib +Patch18: chromium-75.0.3770.80-no-zlib-mangle.patch +# Fix libavutil include pathing to find arch specific timer.h +# For some reason, this only fails on aarch64. No idea why. +Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch +# from gentoo +Patch20: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch +# From gentoo +Patch21: chromium-72.0.3626.121-gcc5-r3.patch +# To use round with gcc, you need to #include +Patch22: chromium-65.0.3325.146-gcc-round-fix.patch +# Include proper headers to invoke memcpy() +Patch23: chromium-65.0.3325.146-memcpy-fix.patch +# ../../mojo/public/cpp/bindings/associated_interface_ptr_info.h:48:43: error: cannot convert 'const mojo::ScopedInterfaceEndpointHandle' to 'bool' in return +Patch24: chromium-68.0.3440.106-boolfix.patch +# From Debian +Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch +# Do not use unrar code, it is non-free +Patch27: chromium-73.0.3683.75-norar.patch +# Upstream GCC fixes +Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch +# Add "Fedora" to the user agent string +Patch29: chromium-72.0.3626.121-fedora-user-agent.patch +# Try to fix version.py for Rawhide +Patch30: chromium-71.0.3578.98-py2-bootstrap.patch +# Fix default on redeclaration error +# https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c575ae687e3f4c056%5E%21/#F0 +Patch31: chromium-68.0.3440.106-fix-default-on-redeclaration.patch +# Use Gentoo's Widevine hack +# https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/chromium-widevine-r3.patch +Patch32: chromium-71.0.3578.98-widevine-r3.patch +# Do not require sysroot +# Forget about trying to make libc++ +# BUILD SANELY PLEASE +Patch33: chromium-69.0.3497.81-build-sanely-please.patch +# Disable fontconfig cache magic that breaks remoting +Patch34: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch +# Fix aarch64 build against latest linux kernel headers +Patch35: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch +# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law) +Patch36: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch +# Try to load widevine from other places +Patch37: chromium-widevine-other-locations.patch +# Disable -fno-delete-null-pointer-checks +Patch38: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch +# Linux 5.2 defines SIOCGSTAMP in a slightly different way, so we need to teach chromium where to find it +Patch41: chromium-75.0.3770.80-SIOCGSTAMP.patch +# Revert https://chromium.googlesource.com/chromium/src/+/daff6b66faae53a0cefb88987c9ff4843629b728%5E%21/#F0 +# It might make clang happy but it breaks gcc. F*** clang. +Patch43: chromium-75.0.3770.80-revert-daff6b.patch +# Avoid pure virtual crash destroying RenderProcessUserData +# https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa954487585d5a5a16205a5ebd%5E%21/ +Patch44: chromium-75.0.3770.80-pure-virtual-crash-fix.patch +# rename function to avoid conflict with rawhide glibc "gettid()" +Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch +# fix v8 compile with gcc +# https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550537d6ac3f%5E%21/#F1 +Patch46: chromium-75.0.3770.100-fix-v8-gcc.patch +# Fix Vulkan compilation with gcc +# https://chromium.googlesource.com/chromium/src/+/fdb3bb1f8c41d044a5b0cb80257a26dd3c8f83a3 +Patch47: chromium-76.0.3809.100-gcc-vulkan.patch +# https://chromium-review.googlesource.com/c/chromium/src/+/1645297 +Patch48: chromium-76.0.3809.100-gcc-cc-no-except.patch +# https://chromium.googlesource.com/chromium/src.git/+/502e6e42633d2571c8236c8649b031fe9915eb5b +Patch49: chromium-76.0.3809.100-gcc-net-fetcher.patch +# https://quiche.googlesource.com/quiche.git/+/9424add9d73432a794b7944790253213cce6dcb8 +Patch50: chromium-76.0.3809.100-quiche-compile-fix.patch +# https://chromium.googlesource.com/chromium/src/+/53bb5a463ee956c70230eaa5450022185d0ddc3c +Patch51: chromium-76.0.3809.100-throttling-dead-beef.patch +# https://chromium.googlesource.com/chromium/src/+/52b5ceac95b67491b1c71f0ef9a32b778bbbaa2e +Patch52: chromium-76.0.3809.132-gcc-ambigous-instantiation.patch +# https://chromium.googlesource.com/chromium/src.git/+/715cb38eac889625de0c429d2672562188b4107e +Patch53: chromium-76.0.3809.100-weak-ptr-no-except.patch +# https://chromium.googlesource.com/chromium/src.git/+/c6afbd59c997c2b64f11abdd1eaef71ae8ea2ddc +Patch54: chromium-76.0.3809.100-gcc-feature-policy-parser.patch +# https://chromium.googlesource.com/chromium/src.git/+/cf6d6b40d711fce93a24a2cf517fa3becdbae8bb +Patch55: chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch +# https://chromium.googlesource.com/chromium/src.git/+/dcb55fb8f18abe5f43d260aa67b14b2dc996f992 +Patch56: chromium-76.0.3809.100-gcc-move-explicit-initialization.patch +# https://chromium.googlesource.com/chromium/src.git/+/7dc76c8d9f4cfbce7cf11424120aa6f6094916dc +Patch57: chromium-76.0.3809.100-gcc-initialization-order.patch +# https://chromium.googlesource.com/chromium/src.git/+/138904af5d6a4158ef4247fda816a8035e621e59 +Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch +# https://chromium.googlesource.com/chromium/src.git/+/bdc24128b75008743d819e298557a53205706e7c +Patch59: chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch +# https://chromium.googlesource.com/chromium/src.git/+/5d7f227fa844e79568df64e495e7ef958c12d7b2 +Patch60: chromium-76.0.3809.100-gcc-themeservice-includes.patch +# In GCC one can't use alignas() for exported classes +# https://chromium.googlesource.com/chromium/src.git/+/8148fd96ae04a1150a9c6012634dcd2a7335f87a +Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch +# Needs to be submitted.. +Patch62: chromium-76.0.3809.100-gcc-remoting-constexpr.patch +# Needs to be submitted.. (ugly hack, needs to be added properly to GN files) +Patch63: chromium-76.0.3809.100-vtable-symbol-undefined.patch +# https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222f8348d2a2a3c25e098ae +Patch64: chromium-76.0.3809.132-certificate-transparency.patch + +# Apply these changes to work around EPEL7 compiler issues +Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch +# Use lstdc++ on EPEL7 only +Patch101: chromium-75.0.3770.100-epel7-stdc++.patch +# el7 only patch +Patch102: chromium-76.0.3809.100-el7-noexcept.patch + +# In file included from ../linux/directory.c:21: +# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20: +# ../../../../native_client/src/nonsfi/linux/linux_syscall_structs.h:44:13: error: GNU-style inline assembly is disabled +# __asm__ __volatile__("mov %%gs, %0" : "=r"(gs)); +# ^ +# 1 error generated. +Patch200: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch +# Ignore broken nacl open fd counter +Patch201: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch + +# Enable VAAPI support on Linux +# NOTE: This patch will never land upstream +Patch202: enable-vaapi.patch +Patch203: chromium-75.0.3770.80-vaapi-i686-fpermissive.patch +# Fix compatibility with VA-API library (libva) version 1 +Patch204: chromium-75.0.3770.80-vaapi-libva1-compatibility.patch +# Pulseaudio changed the API a little in 12.99.1 +Patch205: chromium-76.0.3809.100-pulse-api-change.patch + +# Use chromium-latest.py to generate clean tarball from released build tarballs, found here: +# http://build.chromium.org/buildbot/official/ +# For Chromium Fedora use chromium-latest.py --stable --ffmpegclean --ffmpegarm +# If you want to include the ffmpeg arm sources append the --ffmpegarm switch +# https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%%{version}.tar.xz +%if %{freeworld} +Source0: https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{version}.tar.xz +%else +Source0: chromium-%{version}-clean.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 +Source11: chrome-remote-desktop@.service +Source13: master_preferences +# Unpackaged fonts +Source14: https://fontlibrary.org/assets/downloads/gelasio/4d610887ff4d445cbc639aae7828d139/gelasio.zip +Source15: http://download.savannah.nongnu.org/releases/freebangfont/MuktiNarrow-0.94.tar.bz2 +Source16: https://github.com/web-platform-tests/wpt/raw/master/fonts/Ahem.ttf +Source17: GardinerModBug.ttf +Source18: GardinerModCat.ttf +# RHEL needs newer nodejs +%if 0%{?rhel} +Source19: node-v8.9.1-linux-x64.tar.gz +%endif + +# We can assume gcc and binutils. +BuildRequires: gcc-c++ + +BuildRequires: alsa-lib-devel +BuildRequires: atk-devel +BuildRequires: bison +BuildRequires: cups-devel +BuildRequires: dbus-devel +BuildRequires: desktop-file-utils +BuildRequires: expat-devel +BuildRequires: flex +BuildRequires: fontconfig-devel +BuildRequires: GConf2-devel +BuildRequires: glib2-devel +%if 0%{?fedora} <= 27 +BuildRequires: gnome-keyring-devel +%endif +BuildRequires: glibc-devel +BuildRequires: gperf +%if 0%{?bundleharfbuzz} +#nothing +%else +BuildRequires: harfbuzz-devel >= 2.3.0 +%endif +BuildRequires: libatomic +BuildRequires: libcap-devel +%if 0%{?bundlelibdrm} +#nothing +%else +BuildRequires: libdrm-devel +%endif +BuildRequires: libgcrypt-devel +BuildRequires: libudev-devel +BuildRequires: libuuid-devel +BuildRequires: libusb-devel +BuildRequires: libXdamage-devel +BuildRequires: libXScrnSaver-devel +BuildRequires: libXtst-devel +%if 0%{?fedora} >= 30 +BuildRequires: minizip-compat-devel +%else +BuildRequires: minizip-devel +%endif +# RHEL 7's nodejs is too old +%if 0%{?fedora} +BuildRequires: nodejs +%endif +BuildRequires: nss-devel >= 3.26 +BuildRequires: pciutils-devel +BuildRequires: pulseaudio-libs-devel + +# For screen sharing on Wayland, currently Fedora only thing - no epel +%if 0%{?fedora} +BuildRequires: pkgconfig(libpipewire-0.2) +%endif + +# for /usr/bin/appstream-util +BuildRequires: libappstream-glib + +# gn needs these +BuildRequires: libstdc++-static +BuildRequires: libstdc++-devel, openssl-devel +%if 0%{?nacl} +BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib +BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib +# pNaCl needs this monster +# It's possible that someday this dep will stabilize, but +# right now, it needs to be updated everytime chromium bumps +# a major version. +BuildRequires: chromium-native_client >= 52.0.2743.82 +BuildRequires: clang +BuildRequires: llvm +%ifarch x86_64 +# Really, this is what we want: +# BuildRequires: glibc-devel(x86-32) libgcc(x86-32) +# But, koji only offers glibc32. Maybe that's enough. +# This BR will pull in either glibc.i686 or glibc32. +BuildRequires: /lib/libc.so.6 /usr/lib/libc.so +%endif +%endif +# Fedora tries to use system libs whenever it can. +BuildRequires: bzip2-devel +BuildRequires: dbus-glib-devel +BuildRequires: elfutils-libelf-devel +BuildRequires: flac-devel +%if 0%{?bundlefreetype} +# nothing +%else +BuildRequires: freetype-devel +%endif +BuildRequires: hwdata +BuildRequires: kernel-headers +BuildRequires: libevent-devel +BuildRequires: libffi-devel +%if 0%{?bundleicu} +# If this is true, we're using the bundled icu. +# We'd like to use the system icu every time, but we cannot always do that. +%else +# Not newer than 54 (at least not right now) +BuildRequires: libicu-devel = 54.1 +%endif +%if 0%{?bundlelibjpeg} +# If this is true, we're using the bundled libjpeg +# which we need to do because the RHEL 7 libjpeg doesn't work for chromium anymore +%else +BuildRequires: libjpeg-devel +%endif +%if 0%{?bundlelibpng} +# If this is true, we're using the bundled libpng +# which we need to do because the RHEL 7 libpng doesn't work right anymore +%else +BuildRequires: libpng-devel +%endif +%if 0 +# see https://code.google.com/p/chromium/issues/detail?id=501318 +BuildRequires: libsrtp-devel >= 1.4.4 +%endif +BuildRequires: libudev-devel +%if %{bundlelibusbx} +# Do nothing +%else +Requires: libusbx >= 1.0.21-0.1.git448584a +BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a +%endif +BuildRequires: libva-devel +# We don't use libvpx anymore because Chromium loves to +# use bleeding edge revisions here that break other things +# ... so we just use the bundled libvpx. +%if %{bundlelibwebp} +# Do nothing +%else +BuildRequires: libwebp-devel +%endif +BuildRequires: libxslt-devel +# Same here, it seems. +# BuildRequires: libyuv-devel +BuildRequires: mesa-libGL-devel +%if %{bundleopus} +# Do nothing +%else +BuildRequires: opus-devel +%endif +BuildRequires: perl(Switch) +%if 0%{gtk3} +BuildRequires: pkgconfig(gtk+-3.0) +%else +BuildRequires: pkgconfig(gtk+-2.0) +%endif +BuildRequires: /usr/bin/python2 +%if 0%{?bundlepylibs} +# Using bundled bits, do nothing. +%else +%if 0%{?fedora} +BuildRequires: python2-beautifulsoup4 +BuildRequires: python2-beautifulsoup +BuildRequires: python2-html5lib +BuildRequires: python2-markupsafe +BuildRequires: python2-ply +%else +BuildRequires: python-beautifulsoup4 +BuildRequires: python-BeautifulSoup +BuildRequires: python-html5lib +BuildRequires: python-markupsafe +BuildRequires: python-ply +%endif +BuildRequires: python2-simplejson +BuildRequires: python2-devel +%endif +%if 0%{?bundlere2} +# Using bundled bits, do nothing. +%else +Requires: re2 >= 20160401 +BuildRequires: re2-devel >= 20160401 +%endif +BuildRequires: speech-dispatcher-devel +BuildRequires: yasm +BuildRequires: zlib-devel +BuildRequires: pkgconfig(gnome-keyring-1) +# remote desktop needs this +BuildRequires: pam-devel +BuildRequires: systemd +# for third_party/test_fonts +%if %{freeworld} +# dont need fonts for this +%else +%if 0%{?rhel} == 7 +Source100: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Bold.ttf +Source101: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-BoldItalic.ttf +Source102: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Italic.ttf +Source103: https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Regular.ttf +Source104: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Bold.ttf +Source105: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-BoldItalic.ttf +Source106: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Italic.ttf +Source107: https://github.com/google/fonts/blob/master/apache/cousine/Cousine-Regular.ttf +Source108: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Bold.ttf +Source109: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldItalic.ttf +Source110: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Italic.ttf +Source111: https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Regular.ttf +Source112: https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz +Source113: https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip +%else +BuildRequires: google-croscore-arimo-fonts +BuildRequires: google-croscore-cousine-fonts +BuildRequires: google-croscore-tinos-fonts +BuildRequires: google-noto-sans-cjk-jp-fonts +BuildRequires: lohit-gurmukhi-fonts +%endif +BuildRequires: dejavu-sans-fonts +BuildRequires: thai-scalable-garuda-fonts +BuildRequires: lohit-devanagari-fonts +BuildRequires: lohit-tamil-fonts +BuildRequires: google-noto-sans-khmer-fonts +%endif +# using the built from source version on aarch64 +BuildRequires: ninja-build +# Yes, java is needed as well.. +BuildRequires: java-1.8.0-openjdk-headless + +%if 0%{?rhel} == 7 +BuildRequires: devtoolset-%{dts_version}-toolchain, devtoolset-%{dts_version}-libatomic-devel +%endif + +# There is a hardcoded check for nss 3.26 in the chromium code (crypto/nss_util.cc) +Requires: nss%{_isa} >= 3.26 +Requires: nss-mdns%{_isa} + +# GTK modules it expects to find for some reason. +%if 0%{gtk3} +Requires: libcanberra-gtk3%{_isa} +%else +Requires: libcanberra-gtk2%{_isa} +%endif + +%if 0%{?fedora} +# This enables support for u2f tokens +Requires: u2f-hidraw-policy +%endif + +# Once upon a time, we tried to split these out... but that's not worth the effort anymore. +Provides: chromium-ffmpegsumo = %{version}-%{release} +Obsoletes: chromium-ffmpegsumo <= 35.0.1916.114 +# This is a lie. v8 has its own version... but I'm being lazy and not using it here. +# Barring Google getting much faster on the v8 side (or much slower on the Chromium side) +# the true v8 version will be much smaller than the Chromium version that it came from. +Provides: chromium-v8 = %{version}-%{release} +Obsoletes: chromium-v8 <= 3.25.28.18 +# This is a lie. webrtc never had any real version. 0.2 is greater than 0.1 +Provides: webrtc = 0.2 +Obsoletes: webrtc <= 0.1 +%if 0%{?shared} +Requires: chromium-libs%{_isa} = %{version}-%{release} +# This is broken out so it can be replaced. +Requires: chromium-libs-media%{_isa} = %{version}-%{release} +# Nothing to do here. chromium-libs is real. +%else +Provides: chromium-libs = %{version}-%{release} +Obsoletes: chromium-libs <= %{version}-%{release} +%endif + +%if 0%{?rhel} +ExclusiveArch: x86_64 i686 +%else +ExclusiveArch: x86_64 i686 aarch64 +%endif + +# Bundled bits (I'm sure I've missed some) +Provides: bundled(angle) = 2422 +Provides: bundled(bintrees) = 1.0.1 +# This is a fork of openssl. +Provides: bundled(boringssl) +Provides: bundled(brotli) = 222564a95d9ab58865a096b8d9f7324ea5f2e03e +Provides: bundled(bspatch) +Provides: bundled(cacheinvalidation) = 20150720 +Provides: bundled(colorama) = 799604a104 +Provides: bundled(crashpad) +Provides: bundled(dmg_fp) +Provides: bundled(expat) = 2.2.0 +Provides: bundled(fdmlibm) = 5.3 +# Don't get too excited. MPEG and other legally problematic stuff is stripped out. +Provides: bundled(ffmpeg) = 3.2git +Provides: bundled(fips181) = 2.2.3 +%if 0%{?bundlefontconfig} +Provides: bundled(fontconfig) = 2.12.6 +%endif +%if 0%{?bundlefreetype} +Provides: bundled(freetype) = 2.9.3 +%endif +Provides: bundled(gperftools) = svn144 +%if 0%{?bundleharfbuzz} +Provides: bundled(harfbuzz) = 2.3.0 +%endif +Provides: bundled(hunspell) = 1.6.0 +Provides: bundled(iccjpeg) +%if 0%{?bundleicu} +Provides: bundled(icu) = 58.1 +%endif +Provides: bundled(kitchensink) = 1 +Provides: bundled(leveldb) = 1.20 +Provides: bundled(libaddressinput) = 0 +%if 0%{?bundlelibdrm} +Provides: bundled(libdrm) = 2.4.85 +%endif +Provides: bundled(libevent) = 1.4.15 +Provides: bundled(libjingle) = 9564 +%if 0%{?bundlelibjpeg} +Provides: bundled(libjpeg-turbo) = 1.4.90 +%endif +Provides: bundled(libphonenumber) = a4da30df63a097d67e3c429ead6790ad91d36cf4 +%if 0%{?bundlelibpng} +Provides: bundled(libpng) = 1.6.22 +%endif +Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d +%if %{bundlelibusbx} +Provides: bundled(libusbx) = 1.0.17 +%endif +Provides: bundled(libvpx) = 1.6.0 +%if %{bundlelibwebp} +Provides: bundled(libwebp) = 0.6.0 +%endif +%if %{bundlelibxml} +# Well, it's actually newer than 2.9.4 and has code in it that has been reverted upstream... but eh. +Provides: bundled(libxml) = 2.9.4 +%endif +Provides: bundled(libXNVCtrl) = 302.17 +Provides: bundled(libyuv) = 1651 +Provides: bundled(lzma) = 15.14 +Provides: bundled(libudis86) = 1.7.1 +Provides: bundled(mesa) = 9.0.3 +Provides: bundled(NSBezierPath) = 1.0 +Provides: bundled(mozc) +%if %{bundleopus} +Provides: bundled(opus) = 1.1.3 +%endif +Provides: bundled(ots) = 8d70cffebbfa58f67a5c3ed0e9bc84dccdbc5bc0 +Provides: bundled(protobuf) = 3.0.0.beta.3 +Provides: bundled(qcms) = 4 +%if 0%{?bundlere2} +Provides: bundled(re2) +%endif +Provides: bundled(sfntly) = 04740d2600193b14aa3ef24cd9fbb3d5996b9f77 +Provides: bundled(skia) +Provides: bundled(SMHasher) = 0 +Provides: bundled(snappy) = 1.1.4-head +Provides: bundled(speech-dispatcher) = 0.7.1 +Provides: bundled(sqlite) = 3.17patched +Provides: bundled(superfasthash) = 0 +Provides: bundled(talloc) = 2.0.1 +Provides: bundled(usrsctp) = 0 +Provides: bundled(v8) = 5.9.211.31 +Provides: bundled(webrtc) = 90usrsctp +Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d +Provides: bundled(xdg-mime) +Provides: bundled(xdg-user-dirs) +# Provides: bundled(zlib) = 1.2.11 + +# For selinux scriptlet +Requires(post): /usr/sbin/semanage +Requires(post): /usr/sbin/restorecon + +%description +Chromium is an open-source web browser, powered by WebKit (Blink). + +%package common +Summary: Files needed for both the headless_shell and full Chromium +# Chromium needs an explicit Requires: minizip-compat +# We put it here to cover headless too. +%if 0%{?fedora} >= 30 +Requires: minizip-compat%{_isa} +%else +Requires: minizip%{_isa} +%endif + +%description common +%{summary}. + +%if 0%{?shared} +%package libs +Summary: Shared libraries used by chromium (and chrome-remote-desktop) +Requires: chromium-common%{_isa} = %{version}-%{release} +Requires: chromium-libs-media%{_isa} >= %{majorversion} +Requires(post): %{_sbindir}/update-alternatives +Requires(preun): %{_sbindir}/update-alternatives + +%description libs +Shared libraries used by chromium (and chrome-remote-desktop). + +%if %{freeworld} +%package -n chromium-libs-media-freeworld +Summary: Chromium media libraries built with all possible codecs +Provides: chromium-libs-media = %{version}-%{release} +Provides: chromium-libs-media%{_isa} = %{version}-%{release} +Requires: chromium-libs%{_isa} = %{version} +Requires(post): %{_sbindir}/update-alternatives +Requires(preun): %{_sbindir}/update-alternatives + +%description -n chromium-libs-media-freeworld +Chromium media libraries built with all possible codecs. Chromium is an +open-source web browser, powered by WebKit (Blink). This package replaces +the default chromium-libs-media package, which is limited in what it +can include. +%else +%package libs-media +Summary: Shared libraries used by the chromium media subsystem +Requires: chromium-libs%{_isa} = %{version} +Requires(post): %{_sbindir}/update-alternatives +Requires(preun): %{_sbindir}/update-alternatives + +%description libs-media +Shared libraries used by the chromium media subsystem. +%endif +%endif + +%package -n chrome-remote-desktop +Requires(pre): shadow-utils +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +Requires: xorg-x11-server-Xvfb +Requires: python2-psutil +%if 0%{?shared} +Requires: chromium-libs%{_isa} = %{version}-%{release} +%endif +Summary: Remote desktop support for google-chrome & chromium + +%description -n chrome-remote-desktop +Remote desktop support for google-chrome & chromium. + +%package -n chromedriver +Summary: WebDriver for Google Chrome/Chromium +%if 0%{?shared} +Requires: chromium-libs%{_isa} = %{version}-%{release} +%endif +# From Russian Fedora (minus the epoch) +Provides: chromedriver-stable = %{version}-%{release} +Conflicts: chromedriver-testing +Conflicts: chromedriver-unstable + +%description -n chromedriver +WebDriver is an open source tool for automated testing of webapps across many +browsers. It provides capabilities for navigating to web pages, user input, +JavaScript execution, and more. ChromeDriver is a standalone server which +implements WebDriver's wire protocol for Chromium. It is being developed by +members of the Chromium and WebDriver teams. + +%package headless +Summary: A minimal headless shell built from Chromium +Requires: chromium-common%{_isa} = %{version}-%{release} + +%description headless +A minimal headless client built from Chromium. headless_shell is built +without support for alsa, cups, dbus, gconf, gio, kerberos, pulseaudio, or +udev. + +%prep +%setup -q -T -c -n depot_tools -a 2 +%setup -q -n chromium-%{version} + +### Chromium Fedora Patches ### +%patch0 -p1 -b .gcc5 +%patch1 -p1 -b .pathmax +%patch2 -p1 -b .addrfix +%patch3 -p1 -b .notest +%patch4 -p1 -b .modern-libusbx +%patch6 -p1 -b .sandboxpie +%patch7 -p1 -b .etc +%patch8 -p1 -b .gnsystem +%patch9 -p1 -b .timefix +%patch10 -p1 -b .nullfix +%patch11 -p1 -b .jpegfix +%patch12 -p1 -b .ldmemory +%patch13 -p1 -b .revert +%patch14 -p1 -b .ffmpeg-stdatomic +%patch15 -p1 -b .system-clang +%patch16 -p1 -b .noprefix +%patch17 -p1 -b .nomangle +%patch18 -p1 -b .nozmangle +%patch19 -p1 -b .pathfix +%patch20 -p1 -b .nogccoptmath +%patch21 -p1 -b .gcc5-r3 +%patch22 -p1 -b .gcc-round-fix +%patch23 -p1 -b .memcpyfix +%patch24 -p1 -b .boolfix +%patch25 -p1 -b .aarch64fix +%patch27 -p1 -b .nounrar +%patch28 -p1 -b .gcc-cpolicyprovider +%patch29 -p1 -b .fedora-user-agent +%patch30 -p1 -b .py2 +%patch31 -p1 -b .fix-default-redeclaration +%patch32 -p1 -b .wvhack +%patch33 -p1 -b .sanebuild +%patch34 -p1 -b .nofc +%patch35 -p1 -b .aarch64-new-stat +%patch36 -p1 -b .gcc9 +%patch37 -p1 -b .widevine-other-locations +%patch38 -p1 -b .disable-ndnpc +%patch41 -p1 -b .SIOCGSTAMP +%patch43 -p1 -b .revert-daff6b +%patch44 -p1 -b .pure-virtual-fix +%patch45 -p1 -b .gettid-fix +%patch46 -p1 -b .fix-v8-gcc +%patch47 -p1 -b .gcc-vulkan +%patch48 -p1 -b .gcc-cc-no-except +%patch49 -p1 -b .gcc-net-fetcher +%patch50 -p1 -b .quiche-compile-fix +%patch51 -p1 -b .throttling-dead-beef +%patch52 -p1 -b .gcc-ambigous-instantiation +%patch53 -p1 -b .weak-ptr-no-except +%patch54 -p1 -b .gcc-feature-policy-parser +%patch55 -p1 -b .gcc-hasfraction-constexpr +%patch56 -p1 -b .gcc-move-explicit-initialization +%patch57 -p1 -b .gcc-initialization-order +%patch58 -p1 -b .gcc-history-move-noexcept +%patch59 -p1 -b .gcc-accountinfo-move-noexcept +%patch60 -p1 -b .gcc-themeservice-includes +%patch61 -p1 -b .gcc-no-alignas-and-export +%patch62 -p1 -b .gcc-remoting-constexpr +%patch63 -p1 -b .vtable-symbol-undefined +%patch64 -p1 -b .certificate-transparency + +# EPEL specific patches +%if 0%{?rhel} == 7 +%patch100 -p1 -b .kmaxskip +%patch101 -p1 -b .epel7 +%patch102 -p1 -b .el7-noexcept +# Revert patch58 because it's breaking the build on el7 +%patch58 -R -p1 +%endif + +# Feature specific patches +%if ! 0%{?killnacl} +%patch200 -p1 -b .gnu-inline +%patch201 -p1 -b .ignore-fd-count +%endif + +%if %{use_vaapi} +%patch202 -p1 -b .vaapi +%ifarch i686 +%patch203 -p1 -b .i686permissive +%patch204 -p1 -b .va1compat +%endif +%endif + +%if 0%{?pulseaudioapichange} +%patch205 -p1 -b .pulseaudioapichange +%endif + +# Change shebang in all relevant files in this directory and all subdirectories +# See `man find` for how the `-exec command {} +` syntax works +find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!%{__python2}=' {} + + +%if 0%{?asan} +export CC="clang" +export CXX="clang++" +%else +export CC="gcc" +export CXX="g++" +%endif +export AR="ar" +export RANLIB="ranlib" + +rm -rf buildtools/third_party/libc++/BUILD.gn + +%if 0%{?nacl} +# prep the nacl tree +mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib +cp -a --no-preserve=context /usr/%{_arch}-nacl/* out/Release/gen/sdk/linux_x86/nacl_x86_newlib + +mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib +cp -a --no-preserve=context /usr/arm-nacl/* out/Release/gen/sdk/linux_x86/nacl_arm_newlib + +# Not sure if we need this or not, but better safe than sorry. +pushd out/Release/gen/sdk/linux_x86 +ln -s nacl_x86_newlib nacl_x86_newlib_raw +ln -s nacl_arm_newlib nacl_arm_newlib_raw +popd + +mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin +pushd out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin +ln -s /usr/bin/x86_64-nacl-gcc gcc +ln -s /usr/bin/x86_64-nacl-gcc x86_64-nacl-gcc +ln -s /usr/bin/x86_64-nacl-g++ g++ +ln -s /usr/bin/x86_64-nacl-g++ x86_64-nacl-g++ +# ln -s /usr/bin/x86_64-nacl-ar ar +ln -s /usr/bin/x86_64-nacl-ar x86_64-nacl-ar +# ln -s /usr/bin/x86_64-nacl-as as +ln -s /usr/bin/x86_64-nacl-as x86_64-nacl-as +# ln -s /usr/bin/x86_64-nacl-ranlib ranlib +ln -s /usr/bin/x86_64-nacl-ranlib x86_64-nacl-ranlib +# Cleanups +rm addr2line +ln -s /usr/bin/x86_64-nacl-addr2line addr2line +rm c++filt +ln -s /usr/bin/x86_64-nacl-c++filt c++filt +rm gprof +ln -s /usr/bin/x86_64-nacl-gprof gprof +rm readelf +ln -s /usr/bin/x86_64-nacl-readelf readelf +rm size +ln -s /usr/bin/x86_64-nacl-size size +rm strings +ln -s /usr/bin/x86_64-nacl-strings strings +popd + +mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin +pushd out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin +ln -s /usr/bin/arm-nacl-gcc gcc +ln -s /usr/bin/arm-nacl-gcc arm-nacl-gcc +ln -s /usr/bin/arm-nacl-g++ g++ +ln -s /usr/bin/arm-nacl-g++ arm-nacl-g++ +ln -s /usr/bin/arm-nacl-ar arm-nacl-ar +ln -s /usr/bin/arm-nacl-as arm-nacl-as +ln -s /usr/bin/arm-nacl-ranlib arm-nacl-ranlib +popd + +touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.prep +touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/nacl_x86_newlib.json +touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.prep +touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/nacl_arm_newlib.json + +pushd out/Release/gen/sdk/linux_x86/ +mkdir -p pnacl_newlib pnacl_translator +# Might be able to do symlinks here, but eh. +cp -a --no-preserve=context /usr/pnacl_newlib/* pnacl_newlib/ +cp -a --no-preserve=context /usr/pnacl_translator/* pnacl_translator/ +for i in lib/libc.a lib/libc++.a lib/libg.a lib/libm.a; do + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/x86_64_bc-nacl/$i + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/i686_bc-nacl/$i + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i +done + +for i in lib/libpthread.a lib/libnacl.a; do + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i +done + +for i in lib/clang/3.7.0/lib/x86_64_bc-nacl/libpnaclmm.a lib/clang/3.7.0/lib/i686_bc-nacl/libpnaclmm.a; do + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i +done + +for i in lib/clang/3.7.0/lib/le32-nacl/libpnaclmm.a lib/clang/3.7.0/lib/le32-nacl/libgcc.a; do + /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i +done + +popd + +mkdir -p native_client/toolchain/.tars/linux_x86 +touch native_client/toolchain/.tars/linux_x86/pnacl_translator.json + +pushd native_client/toolchain +ln -s ../../out/Release/gen/sdk/linux_x86 linux_x86 +popd + +mkdir -p third_party/llvm-build/Release+Asserts/bin +pushd third_party/llvm-build/Release+Asserts/bin +ln -s /usr/bin/clang clang +popd +%endif + +# Unpack fonts +%if %{freeworld} +# no font fun needed. +%else +pushd third_party/test_fonts +mkdir test_fonts +cd test_fonts +unzip %{SOURCE14} +tar xf %{SOURCE15} +mv MuktiNarrow0.94/MuktiNarrow.ttf . +rm -rf MuktiNarrow0.94 +cp %{SOURCE16} . +cp %{SOURCE17} . +cp %{SOURCE18} . +%if 0%{?rhel} == 7 +cp %{SOURCE100} . +cp %{SOURCE101} . +cp %{SOURCE102} . +cp %{SOURCE103} . +cp %{SOURCE104} . +cp %{SOURCE105} . +cp %{SOURCE106} . +cp %{SOURCE107} . +cp %{SOURCE108} . +cp %{SOURCE109} . +cp %{SOURCE110} . +cp %{SOURCE111} . +tar xf %{SOURCE112} +mv lohit-gurmukhi-ttf-2.91.2/Lohit-Gurmukhi.ttf . +rm -rf lohit-gurmukhi-ttf-2.91.2 +unzip %{SOURCE113} +%else +cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf . +cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf . +cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf . +cp -a /usr/share/fonts/lohit-gurmukhi/Lohit-Gurmukhi.ttf . +cp -a /usr/share/fonts/google-noto-cjk/NotoSansCJKjp-Regular.otf . +%endif +cp -a /usr/share/fonts/dejavu/DejaVuSans.ttf /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf . +cp -a /usr/share/fonts/thai-scalable/Garuda.ttf . +cp -a /usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf /usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf . +cp -a /usr/share/fonts/google-noto/NotoSansKhmer-Regular.ttf . +popd +%endif + +# Core defines are flags that are true for both the browser and headless. +CHROMIUM_CORE_GN_DEFINES="" +CHROMIUM_CORE_GN_DEFINES+=' is_debug=false' +%ifarch x86_64 aarch64 +CHROMIUM_CORE_GN_DEFINES+=' system_libdir="lib64"' +%endif +CHROMIUM_CORE_GN_DEFINES+=' google_api_key="%{api_key}" google_default_client_id="%{default_client_id}" google_default_client_secret="%{default_client_secret}"' +CHROMIUM_CORE_GN_DEFINES+=' is_clang=false use_sysroot=false use_gold=false fieldtrial_testing_like_official_build=true use_lld=false' +%if %{freeworld} +CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="ChromeOS" proprietary_codecs=true' +%else +CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="Chromium" proprietary_codecs=false' +%endif +CHROMIUM_CORE_GN_DEFINES+=' treat_warnings_as_errors=false linux_use_bundled_binutils=false' +CHROMIUM_CORE_GN_DEFINES+=' use_custom_libcxx=false' +%ifarch aarch64 +CHROMIUM_CORE_GN_DEFINES+=' target_cpu="arm64"' +%endif +%if %{?use_jumbo} +CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=8' +%endif +export CHROMIUM_CORE_GN_DEFINES + +CHROMIUM_BROWSER_GN_DEFINES="" +CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true icu_use_data_file=true' +%if 0%{?nonacl} +CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false' +%endif +%if 0%{?shared} +CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true' +%else +CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=false' +%endif +CHROMIUM_BROWSER_GN_DEFINES+=' blink_symbol_level=0 enable_hangout_services_extension=true' +CHROMIUM_BROWSER_GN_DEFINES+=' use_aura=true' +CHROMIUM_BROWSER_GN_DEFINES+=' enable_widevine=true' +%if %{use_vaapi} +%if 0%{?fedora} >= 28 +CHROMIUM_BROWSER_GN_DEFINES+=' use_vaapi=true' +%endif +%endif +%if 0%{?fedora} +CHROMIUM_BROWSER_GN_DEFINES+=' rtc_use_pipewire=true rtc_link_pipewire=true' +%endif +export CHROMIUM_BROWSER_GN_DEFINES + +CHROMIUM_HEADLESS_GN_DEFINES="" +CHROMIUM_HEADLESS_GN_DEFINES+=' use_ozone=true ozone_auto_platforms=false ozone_platform="headless" ozone_platform_headless=true' +CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true icu_use_data_file=false v8_use_external_startup_data=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false enable_remoting=false use_alsa=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gio=false use_kerberos=false use_libpci=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false' +export CHROMIUM_HEADLESS_GN_DEFINES + +%if 0%{?rhel} +pushd third_party/node/linux +tar xf %{SOURCE19} +mv node-v8.9.1-linux-x64 node-linux-x64 +popd +%else +mkdir -p third_party/node/linux/node-linux-x64/bin +ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node +%endif + +# Remove most of the bundled libraries. Libraries specified below (taken from +# Gentoo's Chromium ebuild) are the libraries that needs to be preserved. +build/linux/unbundle/remove_bundled_libraries.py \ + 'base/third_party/cityhash' \ + 'base/third_party/dmg_fp' \ + 'base/third_party/dynamic_annotations' \ + 'base/third_party/icu' \ + 'base/third_party/libevent' \ + 'base/third_party/nspr' \ + 'base/third_party/superfasthash' \ + 'base/third_party/symbolize' \ + 'base/third_party/valgrind' \ + 'base/third_party/xdg_mime' \ + 'base/third_party/xdg_user_dirs' \ + 'buildtools/third_party/libc++' \ + 'buildtools/third_party/libc++abi' \ + 'chrome/third_party/mozilla_security_manager' \ + 'courgette/third_party' \ + 'net/third_party/mozilla_security_manager' \ + 'net/third_party/nss' \ + 'net/third_party/quic' \ + 'net/third_party/uri_template' \ + 'third_party/abseil-cpp' \ + 'third_party/adobe' \ + 'third_party/angle' \ + 'third_party/angle/src/common/third_party/base' \ + 'third_party/angle/src/common/third_party/smhasher' \ + 'third_party/angle/src/common/third_party/xxhash' \ + 'third_party/angle/src/third_party/compiler' \ + 'third_party/angle/src/third_party/libXNVCtrl' \ + 'third_party/angle/src/third_party/trace_event' \ + 'third_party/angle/third_party/glslang' \ + 'third_party/angle/third_party/spirv-headers' \ + 'third_party/angle/third_party/spirv-tools' \ + 'third_party/angle/third_party/vulkan-headers' \ + 'third_party/angle/third_party/vulkan-loader' \ + 'third_party/angle/third_party/vulkan-tools' \ + 'third_party/angle/third_party/vulkan-validation-layers' \ + 'third_party/apple_apsl' \ + 'third_party/axe-core' \ + 'third_party/blanketjs' \ + 'third_party/blink' \ + 'third_party/boringssl' \ + 'third_party/boringssl/src/third_party/fiat' \ + 'third_party/boringssl/src/third_party/sike' \ + 'third_party/boringssl/linux-x86_64/crypto/third_party/sike' \ + 'third_party/boringssl/linux-aarch64/crypto/third_party/sike' \ + 'third_party/breakpad' \ + 'third_party/breakpad/breakpad/src/third_party/curl' \ + 'third_party/brotli' \ + 'third_party/cacheinvalidation' \ + 'third_party/catapult' \ + 'third_party/catapult/common/py_vulcanize/third_party/rcssmin' \ + 'third_party/catapult/common/py_vulcanize/third_party/rjsmin' \ + 'third_party/catapult/third_party/beautifulsoup4' \ + 'third_party/catapult/third_party/html5lib-python' \ + 'third_party/catapult/third_party/polymer' \ + 'third_party/catapult/third_party/six' \ + 'third_party/catapult/tracing/third_party/d3' \ + 'third_party/catapult/tracing/third_party/gl-matrix' \ + 'third_party/catapult/tracing/third_party/jszip' \ + 'third_party/catapult/tracing/third_party/mannwhitneyu' \ + 'third_party/catapult/tracing/third_party/oboe' \ + 'third_party/catapult/tracing/third_party/pako' \ + 'third_party/ced' \ + 'third_party/cld_3' \ + 'third_party/closure_compiler' \ + 'third_party/crashpad' \ + 'third_party/crashpad/crashpad/third_party/lss' \ + 'third_party/crashpad/crashpad/third_party/zlib/' \ + 'third_party/crc32c' \ + 'third_party/cros_system_api' \ + 'third_party/dav1d' \ + 'third_party/dawn' \ + 'third_party/devscripts' \ + 'third_party/dom_distiller_js' \ + 'third_party/emoji-segmenter' \ + 'third_party/expat' \ + 'third_party/ffmpeg' \ + 'third_party/flac' \ + 'third_party/flatbuffers' \ + 'third_party/flot' \ + 'third_party/fontconfig' \ + 'third_party/freetype' \ + 'third_party/google_input_tools' \ + 'third_party/google_input_tools/third_party/closure_library' \ + 'third_party/google_input_tools/third_party/closure_library/third_party/closure' \ + 'third_party/google_trust_services' \ + 'third_party/googletest' \ + 'third_party/glslang' \ + 'third_party/grpc' \ + 'third_party/grpc/src/third_party/nanopb' \ + 'third_party/harfbuzz-ng' \ + 'third_party/hunspell' \ + 'third_party/iccjpeg' \ + 'third_party/icu' \ + 'third_party/inspector_protocol' \ + 'third_party/jinja2' \ + 'third_party/jsoncpp' \ + 'third_party/jstemplate' \ + 'third_party/khronos' \ + 'third_party/leveldatabase' \ + 'third_party/libXNVCtrl' \ + 'third_party/libaddressinput' \ + 'third_party/libaom' \ + 'third_party/libaom/source/libaom/third_party/vector' \ + 'third_party/libaom/source/libaom/third_party/x86inc' \ + 'third_party/libdrm' \ + 'third_party/libjingle' \ + 'third_party/libjpeg_turbo' \ + 'third_party/libphonenumber' \ + 'third_party/libpng' \ + 'third_party/libsecret' \ + 'third_party/libsrtp' \ + 'third_party/libsync' \ + 'third_party/libudev' \ + 'third_party/libusb' \ + 'third_party/libvpx' \ + 'third_party/libvpx/source/libvpx/third_party/x86inc' \ + 'third_party/libxml' \ + 'third_party/libxml/chromium' \ + 'third_party/libxslt' \ + 'third_party/libwebm' \ + 'third_party/libwebp' \ + 'third_party/libyuv' \ +%if 0%{?nacl} + 'third_party/llvm-build' \ +%endif + 'third_party/lss' \ + 'third_party/lzma_sdk' \ +%if 0%{?bundlepylibs} + 'third_party/markupsafe' \ +%endif + 'third_party/mesa' \ + 'third_party/metrics_proto' \ + 'third_party/modp_b64' \ + 'third_party/nasm' \ + 'third_party/node' \ + 'third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2' \ +%if %{freeworld} + 'third_party/openh264' \ +%endif + 'third_party/openscreen' \ + 'third_party/opus' \ + 'third_party/ots' \ + 'third_party/pdfium' \ + 'third_party/pdfium/third_party/agg23' \ + 'third_party/pdfium/third_party/base' \ + 'third_party/pdfium/third_party/bigint' \ + 'third_party/pdfium/third_party/freetype' \ + 'third_party/pdfium/third_party/lcms' \ + 'third_party/pdfium/third_party/libopenjpeg20' \ + 'third_party/pdfium/third_party/libpng16' \ + 'third_party/pdfium/third_party/libtiff' \ + 'third_party/pdfium/third_party/skia_shared' \ + 'third_party/perfetto' \ + 'third_party/pffft' \ + 'third_party/ply' \ + 'third_party/polymer' \ + 'third_party/protobuf' \ + 'third_party/protobuf/third_party/six' \ + 'third_party/pyjson5' \ + 'third_party/qcms' \ + 'third_party/qunit' \ +%if 0%{?bundlere2} + 'third_party/re2' \ +%endif + 'third_party/rnnoise' \ + 'third_party/s2cellid' \ + 'third_party/sfntly' \ + 'third_party/simplejson' \ + 'third_party/sinonjs' \ + 'third_party/skia' \ + 'third_party/skia/include/third_party/vulkan' \ + 'third_party/skia/include/third_party/skcms' \ + 'third_party/skia/third_party/gif' \ + 'third_party/skia/third_party/skcms' \ + 'third_party/skia/third_party/vulkan' \ + 'third_party/smhasher' \ + 'third_party/snappy' \ + 'third_party/speech-dispatcher' \ + 'third_party/spirv-headers' \ + 'third_party/SPIRV-Tools' \ + 'third_party/sqlite' \ + 'third_party/swiftshader' \ + 'third_party/swiftshader/third_party/subzero' \ + 'third_party/swiftshader/third_party/llvm-subzero' \ + 'third_party/swiftshader/third_party/llvm-7.0' \ + 'third_party/tcmalloc' \ + 'third_party/test_fonts' \ + 'third_party/usb_ids' \ + 'third_party/usrsctp' \ + 'third_party/vulkan' \ + 'third_party/web-animations-js' \ + 'third_party/webdriver' \ + 'third_party/webrtc' \ + 'third_party/webrtc/common_audio/third_party/fft4g' \ + 'third_party/webrtc/common_audio/third_party/spl_sqrt_floor' \ + 'third_party/webrtc/modules/third_party/fft' \ + 'third_party/webrtc/modules/third_party/g711' \ + 'third_party/webrtc/modules/third_party/g722' \ + 'third_party/webrtc/rtc_base/third_party/base64' \ + 'third_party/webrtc/rtc_base/third_party/sigslot' \ + 'third_party/widevine' \ + 'third_party/woff2' \ + 'third_party/xdg-utils' \ + 'third_party/yasm' \ + 'third_party/zlib' \ + 'third_party/zlib/google' \ + 'tools/gn/base/third_party/icu' \ + 'url/third_party/mozilla' \ + 'v8/src/third_party/siphash' \ + 'v8/src/third_party/utf8-decoder' \ + 'v8/src/third_party/valgrind' \ + 'v8/third_party/v8' \ + 'v8/third_party/inspector_protocol' \ + --do-remove + +%if ! 0%{?bundlepylibs} +# Look, I don't know. This package is spit and chewing gum. Sorry. +rm -rf third_party/markupsafe +ln -s %{python2_sitearch}/markupsafe third_party/markupsafe +# We should look on removing other python2 packages as well i.e. ply +%endif + +# Fix hardcoded path in remoting code +sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' remoting/host/setup/daemon_controller_delegate_linux.cc + +export PATH=$PATH:%{_builddir}/depot_tools + +build/linux/unbundle/replace_gn_files.py --system-libraries \ + flac \ +%if 0%{?bundlefontconfig} +%else + fontconfig \ +%endif +%if 0%{?bundlefreetype} +%else + freetype \ +%endif +%if 0%{?bundleharfbuzz} +%else + harfbuzz-ng \ +%endif +%if 0%{?bundleicu} +%else + icu \ +%endif +%if %{bundlelibdrm} +%else + libdrm \ +%endif +%if %{bundlelibjpeg} +%else + libjpeg \ +%endif +%if %{bundlelibpng} +%else + libpng \ +%endif +%if %{bundlelibusbx} +%else + libusb \ +%endif +%if %{bundlelibwebp} +%else + libwebp \ +%endif +%if %{bundlelibxml} +%else + libxml \ +%endif + libxslt \ +%if %{bundleopus} +%else + opus \ +%endif +%if 0%{?bundlere2} +%else + re2 \ +%endif + yasm \ + zlib + +# fix arm gcc +sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn + +%ifarch aarch64 +# We don't need to cross compile while building on an aarch64 system. +sed -i 's|aarch64-linux-gnu-||g' build/toolchain/linux/BUILD.gn + +# Correct the ninja file to check for aarch64, not just x86. +sed -i '/${LONG_BIT}/ a \ aarch64)\' ../depot_tools/ninja +sed -i '/aarch64)/ a \ exec "/usr/bin/ninja-build" "$@";;\' ../depot_tools/ninja +%endif +sed -i 's|exec "${THIS_DIR}/ninja-linux${LONG_BIT}"|exec "/usr/bin/ninja-build"|g' ../depot_tools/ninja + +%if 0%{?rhel} == 7 +. /opt/rh/devtoolset-%{dts_version}/enable +%endif + +# Check that there is no system 'google' module, shadowing bundled ones: +if python2 -c 'import google ; print google.__path__' 2> /dev/null ; then \ + echo "Python 2 'google' module is defined, this will shadow modules of this build"; \ + exit 1 ; \ +fi + +tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" +%{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target} + +%if %{freeworld} +# do not need to do headless gen +%else +%if %{build_headless} +%{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES" %{headlesstarget} +%endif +%endif + +%{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{remotingtarget} + +%if %{bundlelibusbx} +# no hackity hack hack +%else +# hackity hack hack +rm -rf third_party/libusb/src/libusb/libusb.h +# we _shouldn't need to do this, but it looks like we do. +cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h +%endif + +# Hard code extra version +FILE=chrome/common/channel_info_posix.cc +sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE + +%build +%if 0%{?rhel} == 7 +. /opt/rh/devtoolset-%{dts_version}/enable +%endif + +# Now do the full browser +%if 0%{freeworld} +../depot_tools/ninja -C %{target} -vvv media +%else +%if %{build_headless} +# Do headless first. +../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell +%endif + +../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver clear_key_cdm policy_templates + +# remote client +pushd remoting + +# ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host remoting_native_messaging_manifests remoting_resources +../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all +%if 0%{?build_remoting_app} +%if 0%{?nacl} +GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja -vv -C ../out/Release/ remoting_webapp +%endif +%endif +popd + +%endif + +# Nuke nacl/pnacl bits at the end of the build +rm -rf out/Release/gen/sdk +rm -rf native_client/toolchain +rm -rf third_party/llvm-build/* + +%install +rm -rf %{buildroot} + +%if 0%{freeworld} +mkdir -p %{buildroot}%{chromium_path} + +pushd %{target} +cp -a libffmpeg.so* %{buildroot}%{chromium_path} +cp -a libmedia.so* %{buildroot}%{chromium_path} +mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}} +popd +%else +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{chromium_path} +cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +export BUILD_TARGET=`cat /etc/redhat-release` +export CHROMIUM_PATH=%{chromium_path} +export CHROMIUM_BROWSER_CHANNEL=%{chromium_browser_channel} +sed -i "s|@@BUILD_TARGET@@|$BUILD_TARGET|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +sed -i "s|@@CHROMIUM_PATH@@|$CHROMIUM_PATH|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +sed -i "s|@@CHROMIUM_BROWSER_CHANNEL@@|$CHROMIUM_BROWSER_CHANNEL|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +%if "%{chromium_channel}" == "%%{nil}" +sed -i "s|@@EXTRA_FLAGS@@||g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +%else +# Enable debug outputs for beta and dev channels +export EXTRA_FLAGS="--enable-logging=stderr --v=2" +sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh +%endif + +ln -s %{chromium_path}/%{chromium_browser_channel}.sh %{buildroot}%{_bindir}/%{chromium_browser_channel} +mkdir -p %{buildroot}%{_mandir}/man1/ + +pushd %{target} +cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path} +%if 0%{?nacl} +cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path} +chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe +%endif +# Reasonably sure we don't need this anymore. Chrome doesn't include it. +%if 0 +cp -a protoc pyproto %{buildroot}%{chromium_path} +%endif +%ifarch x86_64 i686 aarch64 +cp -a swiftshader %{buildroot}%{chromium_path} +%endif +cp -a chrome %{buildroot}%{chromium_path}/%{chromium_browser_channel} +cp -a chrome_sandbox %{buildroot}%{chromium_path}/chrome-sandbox +cp -a ../../chrome/app/resources/manpage.1.in %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1 +sed -i "s|@@PACKAGE@@|%{chromium_browser_channel}|g" %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1 +sed -i "s|@@MENUNAME@@|%{chromium_menu_name}|g" %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1 +# V8 initial snapshots +# https://code.google.com/p/chromium/issues/detail?id=421063 +cp -a natives_blob.bin %{buildroot}%{chromium_path} +cp -a snapshot_blob.bin %{buildroot}%{chromium_path} +cp -a v8_context_snapshot.bin %{buildroot}%{chromium_path} +cp -a xdg-mime xdg-settings %{buildroot}%{chromium_path} +cp -a MEIPreload %{buildroot}%{chromium_path} +%if 0%{?shared} +cp -a lib*.so* %{buildroot}%{chromium_path} +# cp -p %%{buildroot}%{chromium_path}/libwidevinecdm.so{,.fedora} +cp -p %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}} +cp -p %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}} +cp -p %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}} +cp -p %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}} +%endif + +# chromedriver +cp -a chromedriver %{buildroot}%{chromium_path}/chromedriver +ln -s %{chromium_path}/chromedriver %{buildroot}%{_bindir}/chromedriver + +# Remote desktop bits +mkdir -p %{buildroot}%{crd_path} + +%if 0%{?shared} +pushd %{buildroot}%{crd_path} +for i in ../chromium-browser%{?chromium_channel}/lib*.so; do + libname=`basename $i` + ln -s $i $libname +done +popd +%endif +popd + +pushd %{remotingtarget} + +# See remoting/host/installer/linux/Makefile for logic +cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host +cp -a remote_assistance_host %{buildroot}%{crd_path}/remote-assistance-host +cp -a remoting_locales %{buildroot}%{crd_path}/ +cp -a remoting_me2me_host %{buildroot}%{crd_path}/chrome-remote-desktop-host +cp -a remoting_start_host %{buildroot}%{crd_path}/start-host +cp -a remoting_user_session %{buildroot}%{crd_path}/user-session +chmod +s %{buildroot}%{crd_path}/user-session + +# chromium +mkdir -p %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts +# google-chrome +mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/ +cp -a remoting/* %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/ +for i in %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/*.json; do + sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' $i +done +mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts +pushd %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts +for i in ../../../chromium/native-messaging-hosts/*; do +# rpm gets unhappy when we symlink here + cp -a $i . +done +popd +popd + +mkdir -p %{buildroot}/var/lib/chrome-remote-desktop +touch %{buildroot}/var/lib/chrome-remote-desktop/hashes + +mkdir -p %{buildroot}%{_sysconfdir}/pam.d/ +pushd %{buildroot}%{_sysconfdir}/pam.d/ +ln -s system-auth chrome-remote-desktop +popd + +%if 0%{?build_remoting_app} +%if 0%{?nacl} +cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path} +%endif +%endif + +%if %{build_headless} +pushd %{headlesstarget} +cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path} +popd +%endif + +cp -a remoting/host/linux/linux_me2me_host.py %{buildroot}%{crd_path}/chrome-remote-desktop +cp -a remoting/host/installer/linux/is-remoting-session %{buildroot}%{crd_path}/ + +mkdir -p %{buildroot}%{_unitdir} +cp -a %{SOURCE11} %{buildroot}%{_unitdir}/ +sed -i 's|@@CRD_PATH@@|%{crd_path}|g' %{buildroot}%{_unitdir}/chrome-remote-desktop@.service + +# Add directories for policy management +mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/managed +mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/recommended + +cp -a out/Release/gen/chrome/app/policy/common/html/en-US/*.html . +cp -a out/Release/gen/chrome/app/policy/linux/examples/chrome.json . + +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps +cp -a chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps +cp -a chrome/app/theme/chromium/product_logo_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{chromium_browser_channel}.png +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps +cp -a chrome/app/theme/chromium/product_logo_64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{chromium_browser_channel}.png +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps +cp -a chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps +cp -a chrome/app/theme/chromium/product_logo_24.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps +cp -a chrome/app/theme/chromium/product_logo_22.png %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/%{chromium_browser_channel}.png + +# Install the master_preferences file +mkdir -p %{buildroot}%{_sysconfdir}/%{name} +install -m 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/%{name}/ + +mkdir -p %{buildroot}%{_datadir}/applications/ +desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4} + +install -D -m0644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml ${RPM_BUILD_ROOT}%{_datadir}/metainfo/%{chromium_browser_channel}.appdata.xml +appstream-util validate-relax --nonet ${RPM_BUILD_ROOT}%{_datadir}/metainfo/%{chromium_browser_channel}.appdata.xml + +mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/ +cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/ + +mkdir -p %{buildroot}%{chromium_path}/PepperFlash + +# freeworld conditional +%endif + +%post +# Set SELinux labels - semanage itself will adjust the lib directory naming +# But only do it when selinux is enabled, otherwise, it gets noisy. +if selinuxenabled; then + semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel} + semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}/%{chromium_browser_channel}.sh + semanage fcontext -a -t chrome_sandbox_exec_t /usr/lib/chrome-sandbox + restorecon -R -v %{chromium_path}/%{chromium_browser_channel} +fi + +%pretrans -n chrome-remote-desktop -p +path = "/etc/opt/chrome/native-messaging-hosts" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end + +%if %{freeworld} +%posttrans -n chromium-libs-media-freeworld +%{_sbindir}/update-alternatives --install \ + %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \ + %{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \ + --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \ + %{_libdir}/chromium-browser/libffmpeg.so.TOC.freeworld \ + --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \ + %{_libdir}/chromium-browser/libmedia.so.freeworld \ + --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \ + %{_libdir}/chromium-browser/libmedia.so.TOC.freeworld + +%preun -n chromium-libs-media-freeworld +if [ $1 = 0 ]; then + %{_sbindir}/alternatives --remove libffmpeg.so \ + %{_libdir}/chromium-browser/libffmpeg.so.freeworld +fi +%else +%posttrans libs-media +%{_sbindir}/update-alternatives --install \ + %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \ + %{_libdir}/chromium-browser/libffmpeg.so.fedora 10 \ + --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \ + %{_libdir}/chromium-browser/libffmpeg.so.TOC.fedora \ + --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \ + %{_libdir}/chromium-browser/libmedia.so.fedora \ + --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \ + %{_libdir}/chromium-browser/libmedia.so.TOC.fedora + +%preun libs-media +if [ $1 = 0 ]; then + %{_sbindir}/alternatives --remove libffmpeg.so \ + %{_libdir}/chromium-browser/libffmpeg.so.fedora +fi +%endif + +%pre -n chrome-remote-desktop +getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-desktop + +%post -n chrome-remote-desktop +%systemd_post chrome-remote-desktop@.service + +%preun -n chrome-remote-desktop +%systemd_preun chrome-remote-desktop@.service + +%postun -n chrome-remote-desktop +%systemd_postun_with_restart chrome-remote-desktop@.service + +%if 0%{freeworld} +# We only build libs-media-freeworld. +%else + +%files +%doc AUTHORS +%doc chrome_policy_list.html *.json +%license LICENSE +%config %{_sysconfdir}/%{name}/ +# %%dir %%{_sysconfdir}/%%{name}/native-messaging-hosts +# This is chrome-remote-desktop stuff +%exclude %{_sysconfdir}/%{name}/native-messaging-hosts/* +%{_bindir}/%{chromium_browser_channel} +%dir %{chromium_path} +%{chromium_path}/*.bin +%{chromium_path}/chrome_*.pak +%{chromium_path}/resources.pak +%{chromium_path}/icudtl.dat +%{chromium_path}/%{chromium_browser_channel} +%{chromium_path}/%{chromium_browser_channel}.sh +%{chromium_path}/MEIPreload/ +%ifarch x86_64 i686 aarch64 +%{chromium_path}/swiftshader/ +%endif +%if 0%{?nacl} +%{chromium_path}/nacl_helper* +%{chromium_path}/*.nexe +%{chromium_path}/pnacl/ +%{chromium_path}/tls_edit +%endif +%dir %{chromium_path}/PepperFlash/ +%if 0 +%{chromium_path}/protoc +%endif +# %%{chromium_path}/remoting_locales/ +# %%{chromium_path}/pseudo_locales/ +# %%{chromium_path}/plugins/ +%attr(4755, root, root) %{chromium_path}/chrome-sandbox +%{chromium_path}/xdg-mime +%{chromium_path}/xdg-settings +%{_mandir}/man1/%{chromium_browser_channel}.* +%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png +%{_datadir}/applications/*.desktop +%{_datadir}/metainfo/*.appdata.xml +%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml + +%files common +%if %{build_headless} +%{chromium_path}/headless_lib.pak +%endif +# %%{chromium_path}/mus_app_resources_*.pak +%if 0 +%{chromium_path}/pyproto/ +%endif +%{chromium_path}/resources/ +%dir %{chromium_path}/locales/ +%lang(am) %{chromium_path}/locales/am.pak* +%lang(ar) %{chromium_path}/locales/ar.pak* +%lang(bg) %{chromium_path}/locales/bg.pak* +%lang(bn) %{chromium_path}/locales/bn.pak* +%lang(ca) %{chromium_path}/locales/ca.pak* +%lang(cs) %{chromium_path}/locales/cs.pak* +%lang(da) %{chromium_path}/locales/da.pak* +%lang(de) %{chromium_path}/locales/de.pak* +%lang(el) %{chromium_path}/locales/el.pak* +%lang(en_GB) %{chromium_path}/locales/en-GB.pak* +# Chromium _ALWAYS_ needs en-US.pak as a fallback +# This means we cannot apply the lang code here. +# Otherwise, it is filtered out on install. +%{chromium_path}/locales/en-US.pak* +%lang(es) %{chromium_path}/locales/es.pak* +%lang(es) %{chromium_path}/locales/es-419.pak* +%lang(et) %{chromium_path}/locales/et.pak* +%lang(fa) %{chromium_path}/locales/fa.pak* +%lang(fi) %{chromium_path}/locales/fi.pak* +%lang(fil) %{chromium_path}/locales/fil.pak* +%lang(fr) %{chromium_path}/locales/fr.pak* +%lang(gu) %{chromium_path}/locales/gu.pak* +%lang(he) %{chromium_path}/locales/he.pak* +%lang(hi) %{chromium_path}/locales/hi.pak* +%lang(hr) %{chromium_path}/locales/hr.pak* +%lang(hu) %{chromium_path}/locales/hu.pak* +%lang(id) %{chromium_path}/locales/id.pak* +%lang(it) %{chromium_path}/locales/it.pak* +%lang(ja) %{chromium_path}/locales/ja.pak* +%lang(kn) %{chromium_path}/locales/kn.pak* +%lang(ko) %{chromium_path}/locales/ko.pak* +%lang(lt) %{chromium_path}/locales/lt.pak* +%lang(lv) %{chromium_path}/locales/lv.pak* +%lang(ml) %{chromium_path}/locales/ml.pak* +%lang(mr) %{chromium_path}/locales/mr.pak* +%lang(ms) %{chromium_path}/locales/ms.pak* +%lang(nb) %{chromium_path}/locales/nb.pak* +%lang(nl) %{chromium_path}/locales/nl.pak* +%lang(pl) %{chromium_path}/locales/pl.pak* +%lang(pt_BR) %{chromium_path}/locales/pt-BR.pak* +%lang(pt_PT) %{chromium_path}/locales/pt-PT.pak* +%lang(ro) %{chromium_path}/locales/ro.pak* +%lang(ru) %{chromium_path}/locales/ru.pak* +%lang(sk) %{chromium_path}/locales/sk.pak* +%lang(sl) %{chromium_path}/locales/sl.pak* +%lang(sr) %{chromium_path}/locales/sr.pak* +%lang(sv) %{chromium_path}/locales/sv.pak* +%lang(sw) %{chromium_path}/locales/sw.pak* +%lang(ta) %{chromium_path}/locales/ta.pak* +%lang(te) %{chromium_path}/locales/te.pak* +%lang(th) %{chromium_path}/locales/th.pak* +%lang(tr) %{chromium_path}/locales/tr.pak* +%lang(uk) %{chromium_path}/locales/uk.pak* +%lang(vi) %{chromium_path}/locales/vi.pak* +%lang(zh_CN) %{chromium_path}/locales/zh-CN.pak* +%lang(zh_TW) %{chromium_path}/locales/zh-TW.pak* + +%if %{build_headless} +%files headless +%{chromium_path}/headless_shell +%endif + +%if 0%{?shared} +%files libs +%exclude %{chromium_path}/libffmpeg.so* +%exclude %{chromium_path}/libmedia.so* +# %%exclude %%{chromium_path}/libwidevinecdm.so +%{chromium_path}/lib*.so* +%endif + +%files -n chrome-remote-desktop +%{crd_path}/chrome-remote-desktop +%{crd_path}/chrome-remote-desktop-host +%{crd_path}/is-remoting-session +%if 0%{?shared} +%{crd_path}/lib*.so +%endif +%{crd_path}/native-messaging-host +%{crd_path}/remote-assistance-host +%{_sysconfdir}/pam.d/chrome-remote-desktop +%{_sysconfdir}/chromium/native-messaging-hosts/* +%{_sysconfdir}/opt/chrome/ +%{crd_path}/remoting_locales/ +%{crd_path}/start-host +%{crd_path}/user-session +%{_unitdir}/chrome-remote-desktop@.service +/var/lib/chrome-remote-desktop/ +%if 0%{?build_remoting_app} +%if 0%{?nacl} +%{chromium_path}/remoting_client_plugin_newlib.* +%endif +%endif + +%files -n chromedriver +%doc AUTHORS +%license LICENSE +%{_bindir}/chromedriver +%{chromium_path}/chromedriver + +%endif + +%if 0%{?shared} +%if %{freeworld} +%files -n chromium-libs-media-freeworld +%else +%files libs-media +%endif +%{chromium_path}/libffmpeg.so.%{lsuffix}* +%{chromium_path}/libffmpeg.so.TOC.%{lsuffix}* +%{chromium_path}/libmedia.so.%{lsuffix}* +%{chromium_path}/libmedia.so.TOC.%{lsuffix}* +%endif + + +%changelog +* Tue Sep 03 2019 Tomas Popela - 76.0.3809.132-2 +- Backport patch to fix certificate transparency + +* Tue Aug 27 2019 Tomas Popela - 76.0.3809.132-1 +- Update to 76.0.3809.132 + +* Tue Aug 13 2019 Tomas Popela - 76.0.3809.100-1 +- Update to 76.0.3809.100 + +* Wed Jul 24 2019 Fedora Release Engineering - 75.0.3770.100-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 2 2019 Tom Callaway - 75.0.3770.100-3 +- apply upstream fix to resolve issue where it is dangerous to post a + task with a RenderProcessHost pointer because the RenderProcessHost + can go away before the task is run (causing a segfault). + +* Tue Jun 25 2019 Tom Callaway - 75.0.3770.100-2 +- fix v8 compile with gcc + +* Thu Jun 20 2019 Tom Callaway - 75.0.3770.100-1 +- update to 75.0.3770.100 + +* Fri Jun 14 2019 Tom Callaway - 75.0.3770.90-1 +- update to 75.0.3770.90 + +* Wed Jun 5 2019 Tom Callaway - 75.0.3770.80-1 +- update to 75.0.3770.80 +- disable vaapi (via conditional), too broken + +* Fri May 31 2019 Tom Callaway - 74.0.3729.169-1 +- update to 74.0.3729.169 + +* Thu Apr 11 2019 Tom Callaway - 73.0.3683.103-1 +- update to 73.0.3683.103 +- add CLONE_VFORK logic to seccomp filter for linux to handle glibc 2.29 change + +* Wed Mar 27 2019 Tom Callaway - 73.0.3683.86-2 +- remove lang macro from en-US.pak* because Chromium crashes if it is not present + (bz1692660) + +* Fri Mar 22 2019 Tom Callaway - 73.0.3683.86-1 +- update to 73.0.3683.86 + +* Tue Mar 19 2019 Tom Callaway - 73.0.3683.75-2 +- do not include pyproto/protoc files in package + +* Tue Mar 12 2019 Tom Callaway - 73.0.3683.75-1 +- update to 73.0.3683.75 + +* Sat Mar 9 2019 Tom Callaway - 72.0.3626.121-1 +- update to 72.0.3626.121 + +* Tue Feb 26 2019 Tom Callaway - 71.0.3578.98-5 +- rebuild for libva api change + +* Thu Jan 31 2019 Fedora Release Engineering - 71.0.3578.98-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Tom Callaway - 71.0.3578.98-3 +- rebuild with widevine fix + +* Tue Jan 8 2019 Tom Callaway - 71.0.3578.98-2 +- drop rsp clobber, which breaks gcc9 (thanks to Jeff Law) + +* Fri Dec 14 2018 Tom Callaway - 71.0.3578.98-1 +- update to 71.0.3578.98 + +* Tue Nov 27 2018 Tom Callaway - 70.0.3538.110-2 +- enable vaapi support (thanks to Akarshan Biswas for doing the hard work here) + +* Mon Nov 26 2018 Tom Callaway - 70.0.3538.110-1 +- update to .110 + +* Wed Nov 7 2018 Tom Callaway - 70.0.3538.77-4 +- fix library requires filtering + +* Tue Nov 6 2018 Tom Callaway - 70.0.3538.77-3 +- fix build with harfbuzz2 in rawhide + +* Mon Nov 5 2018 Tom Callaway - 70.0.3538.77-2 +- drop jumbo_file_merge_limit to 8 to (hopefully) avoid OOMs on aarch64 + +* Fri Nov 2 2018 Tom Callaway - 70.0.3538.77-1 +- .77 came out while I was working on this. :/ + +* Fri Nov 2 2018 Tom Callaway - 70.0.3538.67-1 +- update to 70 + +* Tue Oct 16 2018 Tom Callaway - 69.0.3497.100-2 +- do not play with fonts on freeworld builds + +* Thu Oct 4 2018 Tom Callaway - 69.0.3497.100-1 +- update to 69.0.3497.100 + +* Wed Sep 12 2018 Tom Callaway - 69.0.3497.92-1 +- update to 69.0.3497.92 + +* Wed Sep 5 2018 Tom Callaway - 69.0.3497.81-1 +- update to 69.0.3497.81 + +* Tue Aug 28 2018 Patrik Novotný - 68.0.3440.106-4 +- change requires to minizip-compat(-devel), rhbz#1609830, rhbz#1615381 + +* Sun Aug 19 2018 Tom Callaway - 68.0.3440.106-3 +- fix library filters + +* Fri Aug 17 2018 Tom Callaway - 68.0.3440.106-2 +- fix error with defaulting on redeclaration + +* Thu Aug 9 2018 Tom Callaway - 68.0.3440.106-1 +- update to 68.0.3440.106 + +* Wed Aug 8 2018 Tom Callaway - 68.0.3440.84-1 +- update to 68.0.3440.84 + +* Mon Jul 30 2018 Tom Callaway - 68.0.3440.75-1 +- update to 68.0.3440.75 + +* Thu Jul 12 2018 Fedora Release Engineering - 67.0.3396.99-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 9 2018 Tom Callaway 67.0.3396.99-1 +- update to 67.0.3396.99 + +* Mon Jun 25 2018 Tom Callaway 67.0.3396.87-2 +- add "Fedora" to the user agent string + +* Tue Jun 19 2018 Tom Callaway 67.0.3396.87-1 +- update to 67.0.3396.87 + +* Thu Jun 7 2018 Tom Callaway 67.0.3396.79-1 +- update to 67.0.3396.79 + +* Wed Jun 6 2018 Tom Callaway 67.0.3396.62-2 +- work around bug in RHEL7 python exec + +* Wed May 30 2018 Tom Callaway 67.0.3396.62-1 +- 67 releases of chromium on the wall... + +* Tue May 29 2018 Tom Callaway 66.0.3359.181-3 +- also filter out fontconfig on epel7 + +* Wed May 23 2018 Tom Callaway 66.0.3359.181-2 +- fix missing files + +* Mon May 21 2018 Tom Callaway 66.0.3359.181-1 +- update to 66.0.3359.181 + +* Tue May 15 2018 Tom Callaway 66.0.3359.170-2 +- only x86_64 i686 have swiftshader +- fix gcc8 alignof issue on i686 + +* Mon May 14 2018 Tom Callaway 66.0.3359.170-1 +- update to 66.0.3359.170 +- include swiftshader files + +* Tue May 1 2018 Tom Callaway 66.0.3359.139-1 +- update to 66.0.3359.139 + +* Wed Apr 18 2018 Tom Callaway 66.0.3359.117-1 +- update to 66.0.3359.117 + +* Tue Apr 17 2018 Tom Callaway 65.0.3325.181-3 +- use system fontconfig (except on epel7) + +* Wed Apr 4 2018 Tom Callaway 65.0.3325.181-2 +- add explicit dependency on minizip (bz 1534282) + +* Wed Mar 28 2018 Tom Callaway +- check that there is no system 'google' module, shadowing bundled ones +- conditionalize api keys (on by default) + +* Wed Mar 21 2018 Tom Callaway 65.0.3325.181-1 +- update to 65.0.3325.181 + +* Mon Mar 19 2018 Tom Callaway 65.0.3325.162-3 +- use bundled libdrm on epel7 + +* Fri Mar 16 2018 Tom Callaway 65.0.3325.162-2 +- disable StartupNotify in chromium-browser.desktop (not in google-chrome desktop file) + (bz1545241) +- use bundled freetype on epel7 + +* Wed Mar 14 2018 Tom Callaway 65.0.3325.162-1 +- update to 65.0.3325.162 + +* Wed Mar 7 2018 Tom Callaway 65.0.3325.146-1 +- update to 65.0.3325.146 + +* Mon Mar 5 2018 Tom Callaway 64.0.3282.186-1 +- update to 64.0.3282.186 + +* Fri Feb 16 2018 Tom Callaway 64.0.3282.167-1 +- update to 64.0.3282.167 +- include workaround for gcc8 bug in gn +- disable unnecessary aarch64 glibc symbol change + +* Fri Feb 2 2018 Tom Callaway 64.0.3282.140-1 +- update to 64.0.3282.140 + +* Thu Feb 1 2018 Tom Callaway 64.0.3282.119-2 +- include user-session binary in chrome-remote-desktop subpackage + +* Thu Jan 25 2018 Tom Callaway 64.0.3282.119-1 +- update to 64.0.3282.119 + +* Fri Dec 15 2017 Tomas Popela 63.0.3239.108-1 +- Update to 63.0.3239.108 + +* Thu Dec 7 2017 Tom Callaway 63.0.3239.84-1 +- update to 63.0.3239.84 + +* Wed Nov 8 2017 Tom Callaway 62.0.3202.89-1 +- update to 62.0.3202.89 + +* Fri Oct 27 2017 Tom Callaway 62.0.3202.75-1 +- update to 62.0.3202.75 +- use devtoolset-7-toolchain to build on epel7 + +* Tue Oct 24 2017 Tom Callaway 62.0.3202.62-1.1 +- do not attempt std=c++14 on epel7 + +* Wed Oct 18 2017 Tom Callaway 62.0.3202.62-1 +- update to 62.0.3202.62 + +* Fri Sep 22 2017 Tom Callaway 61.0.3163.100-1 +- update to 61.0.3163.100 +- lots of epel7 specific fixes +- use bundled libpng on epel7 + +* Wed Sep 6 2017 Tom Callaway 61.0.3163.79-1 +- update to 61.0.3163.79 + +* Mon Aug 28 2017 Tom Callaway 60.0.3112.113-2 +- disable aarch64 on rhel7, missing libatomic.so for some reason + +* Wed Aug 23 2017 Tom Callaway 60.0.3112.113-1 +- fix ffmpeg clean script to not delete aarch64 file +- update to 60.0.3112.113 + +* Wed Aug 23 2017 Tom Callaway 60.0.3112.101-3 +- apply aarch64 fixes from Ryan Blakely + +* Thu Aug 17 2017 Tom Callaway 60.0.3112.101-2 +- fix dep issue with chrome-remote-desktop on el7 + +* Wed Aug 16 2017 Tom Callaway 60.0.3112.101-1 +- update to 60.0.3112.101 +- apply upstream fix for cameras which report zero resolution formats + (bz1465357) + +* Mon Aug 14 2017 Tom Callaway 60.0.3112.90-3 +- apply more workarounds to coax code to build with epel7 gcc + +* Wed Aug 9 2017 Tom Callaway 60.0.3112.90-2 +- apply post 60 code commit to get code building on epel7 + +* Fri Aug 4 2017 Tom Callaway 60.0.3112.90-1 +- update to 60.0.3112.90 + +* Wed Aug 02 2017 Fedora Release Engineering - 59.0.3071.115-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Mon Jul 31 2017 Tom Callaway 60.0.3112.78-1 +- update to 60.0.3112.78 + +* Wed Jul 26 2017 Fedora Release Engineering - 59.0.3071.115-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 21 2017 Tom Callaway 59.0.3071.115-4 +- put common files in -common subpackage +- build headless_shell for -headless subpackage + +* Fri Jul 21 2017 Tom Callaway 59.0.3071.115-3 +- use posttrans to ensure that old libs are gone before trying to make alternative symlinks + +* Thu Jul 13 2017 Tom Callaway 59.0.3071.115-2 +- fix scriptlets + +* Wed Jul 12 2017 Tom Callaway 59.0.3071.115-1 +- 59.0.3071.115 +- conditionalize spec so it can be easily used to make -libs-media-freeworld + +* Wed Jun 28 2017 Dominik Mierzejewski 59.0.3071.109-6 +- use alternatives for widevine stub and media libs to allow third-party + packages to replace them without conflicts + +* Mon Jun 26 2017 Tom Callaway 59.0.3071.109-5 +- fix path in pretrans scriptlet + +* Fri Jun 23 2017 Tom Callaway 59.0.3071.109-4 +- copy files into /etc/opt/chrome/native-messaging-hosts instead of making symlinks + this results in duplicate copies of the same files, but eh. making rpm happy. + +* Fri Jun 23 2017 Tom Callaway 59.0.3071.109-3 +- use pretrans scriptlet to remove symlink on /etc/opt/chrome/native-messaging-hosts + (it is now a directory) + +* Thu Jun 22 2017 Tom Callaway 59.0.3071.109-2 +- fix duplication between chrome-remote-desktop and chromium + +* Thu Jun 22 2017 Tom Callaway 59.0.3071.109-1 +- update to .109 +- fix native-messaging-hosts dir to be a true dir instead of a symlink + +* Fri Jun 16 2017 Tom Callaway 59.0.3071.104-1 +- update to .104 + +* Fri Jun 16 2017 Tom Callaway 59.0.3071.86-4 +- actually fix mp3 playback support + +* Tue Jun 13 2017 Tom Callaway 59.0.3071.86-3 +- fix filtering + +* Mon Jun 12 2017 Tom Callaway 59.0.3071.86-2 +- pnacl/nacl now needs llvm to build the bootstrap lib + +* Mon Jun 12 2017 Tom Callaway 59.0.3071.86-1 +- update to 59.0.3071.86 +- include smaller logo files + +* Tue May 16 2017 Tom Callaway 58.0.3029.110-2 +- strip provides/requires on libsensors + +* Mon May 15 2017 Tom Callaway 58.0.3029.110-1 +- update to 58.0.3029.110 + +* Mon May 8 2017 Tom Callaway 58.0.3029.96-1 +- update to 58.0.3029.96 + +* Fri Apr 21 2017 Tom Callaway 58.0.3029.81-1 +- update to 58.0.3029.81 + +* Thu Mar 30 2017 Tom Callaway 57.0.2987.133-1 +- update to 57.0.2987.133 + +* Sun Mar 26 2017 Tom Callaway 57.0.2987.110-4 +- copy compat stdatomic.h in for RHEL. Re-enable mp3 enablement. +- fix issue in gtk_ui.cc revealed by RHEL build + +* Sun Mar 26 2017 Tom Callaway 57.0.2987.110-3 +- fix mp3 enablement +- disable mp3 enablement on RHEL (compiler too old) + +* Tue Mar 21 2017 Tom Callaway 57.0.2987.110-2 +- fix privlibs + +* Mon Mar 20 2017 Tom Callaway 57.0.2987.110-1 +- update to 57.0.2987.110 + +* Tue Mar 14 2017 Tom Callaway 57.0.2987.98-1 +- update to 57.0.2987.98 + +* Sun Mar 5 2017 Tom Callaway 56.0.2924.87-8 +- enable mp3 support + +* Sat Mar 4 2017 Tom Callaway 56.0.2924.87-7 +- fix desktop file to have "new window" and "new private window" actions + +* Tue Feb 28 2017 Tom Callaway 56.0.2924.87-6 +- fix issue with gcc7 compile in v8 (thanks to Ben Noordhuis) + +* Fri Feb 24 2017 Tom Callaway 56.0.2924.87-5 +- versioning sync build on rawhide + +* Fri Feb 24 2017 Tom Callaway 56.0.2924.87-4.1 +- fix issue with unique_ptr move on return with old gcc + +* Tue Feb 21 2017 Tom Callaway 56.0.2924.87-4 +- disable debuginfo + +* Mon Feb 13 2017 Tom Callaway 56.0.2924.87-3 +- fix compilation issue +- build third_party/WebKit with -fpermissive +- use bundled jinja everywhere + +* Fri Feb 10 2017 Tom Callaway 56.0.2924.87-2 +- add BR: gtk3-devel + +* Fri Feb 10 2017 Tom Callaway 56.0.2924.87-1 +- update to 56.0.2924.87 + +* Fri Feb 10 2017 Fedora Release Engineering - 55.0.2883.87-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Dec 13 2016 Tom Callaway 55.0.2883.87-1.1 +- use bundled jinja2 on RHEL (or Fedora older than 23) +- fix rvalue issue in remoting code + +* Tue Dec 13 2016 Tom Callaway 55.0.2883.87-1 +- update to 55.0.2883.87 + +* Mon Dec 12 2016 Tom Callaway 55.0.2883.75-1 +- update to 55.0.2883.75 + +* Fri Dec 2 2016 Tom Callaway 54.0.2840.100-1 +- update to 54.0.2840.100 + +* Fri Nov 4 2016 Tom Callaway 54.0.2840.90-3 +- when use_aura is on, chrome/browser needs to link to ui/snapshot + +* Wed Nov 2 2016 Tom Callaway 54.0.2840.90-2 +- export setOpaque in cc_blink + +* Wed Nov 2 2016 Tom Callaway 54.0.2840.90-1 +- update to 54.0.2840.90 +- undo ld manipulation for i686, just use -g1 there + +* Tue Nov 1 2016 Tom Callaway 54.0.2840.71-2 +- disable debugging + +* Wed Oct 26 2016 Tom Callaway 54.0.2840.71-1 +- update to 54.0.2840.71 + +* Wed Oct 26 2016 Tom Callaway 54.0.2840.59-2 +- fix deps + +* Thu Oct 13 2016 Tom Callaway 54.0.2840.59-1 +- 54.0.2840.59 +- use bundled opus, libevent + +* Fri Sep 30 2016 Tom Callaway 53.0.2785.143-1 +- 53.0.2785.143 + +* Tue Sep 20 2016 Tom Callaway 53.0.2785.116-1 +- 53.0.2785.116 + +* Wed Sep 14 2016 Tom Callaway 53.0.2785.113-1 +- 53.0.2785.113 + +* Thu Sep 8 2016 Tom Callaway 53.0.2785.101-1 +- 53.0.2785.101 +- happy star trek day. live long and prosper. + +* Wed Sep 7 2016 Tom Callaway 53.0.2785.92-1 +- add basic framework for gn tooling (disabled because it doesn't work yet) +- update to 53.0.2785.92 +- fix HOME environment issue in chrome-remote-desktop service file + +* Mon Aug 29 2016 Tom Callaway 52.0.2743.116-11 +- conditionalize Requires: u2f-hidraw-policy so that it is only used on Fedora +- use bundled harfbuzz on EL7 + +* Thu Aug 18 2016 Tom Callaway 52.0.2743.116-10 +- disable gtk3 because it breaks lots of things +- re-enable hidpi setting + +* Tue Aug 16 2016 Tom Callaway 52.0.2743.116-9 +- filter out Requires/Provides for chromium-only libs and plugins + +* Tue Aug 16 2016 Tom Callaway 52.0.2743.116-8 +- fix path on Requires(post) line for semanage + +* Mon Aug 15 2016 Tom Callaway 52.0.2743.116-7 +- add Requires(post) items for selinux scriptlets + +* Mon Aug 15 2016 Tom Callaway 52.0.2743.116-6 +- disable the "hidpi" setting +- unset MADV_FREE if set (should get F25+ working again) + +* Fri Aug 12 2016 Tom Callaway 52.0.2743.116-5 +- do not package libwidevinecdm*.so, they are just empty shells + instead, to enable widevine, get these files from Google Chrome + +* Fri Aug 12 2016 Tom Callaway 52.0.2743.116-4 +- add "freeworld" conditional for testing netflix/widevine + +* Fri Aug 12 2016 Tom Callaway 52.0.2743.116-3 +- move PepperFlash directory out of the nacl conditional (thanks to churchyard) +- fix widevine (thanks to David Vásquez and UnitedRPMS) + +* Wed Aug 10 2016 Tom Callaway 52.0.2743.116-2 +- include clearkeycdm and widevinecdm files in libs-media + +* Mon Aug 8 2016 Tom Callaway 52.0.2743.116-1 +- update to 52.0.2743.116 + +* Thu Aug 4 2016 Tom Callaway 52.0.2743.82-13 +- change libs split to "libs-media", as that actually works. +- add PepperFlash directory (nothing in it though, sorry) + +* Wed Aug 3 2016 Tom Callaway 52.0.2743.82-12 +- split out libs package beyond ffmpeg, into libs and libs-content +- fix libusbx conditional for el7 to not nuke libusb headers +- disable speech-dispatcher header prefix setting if not fedora (el7) + +* Wed Aug 3 2016 Tom Callaway 52.0.2743.82-11 +- split out chromium-libs-ffmpeg so it can be easily replaced +- conditionalize opus and libusbx for el7 + +* Wed Aug 3 2016 Tom Callaway 52.0.2743.82-10 +- Add ICU Text Codec aliases (from openSUSE via Russian Fedora) +- Use PIE in the Linux sandbox (from openSUSE via Russian Fedora) +- Enable ARM CPU detection for webrtc (from archlinux via Russian Fedora) +- Do not force -m32 in icu compile on ARM (from archlinux via Russian Fedora) +- Enable gtk3 support (via conditional) +- Enable fpic on linux +- Enable hidpi +- Force aura on +- Enable touch_ui +- Add chromedriver subpackage (from Russian Fedora) +- Set default master_preferences location to /etc/chromium +- Add master_preferences file as config file +- Improve chromium-browser.desktop (from Russian Fedora) + +* Thu Jul 28 2016 Tom Callaway 52.0.2743.82-9 +- fix conditional to disable verbose logging output unless beta/dev + +* Thu Jul 28 2016 Tom Callaway 52.0.2743.82-8 +- disable nacl/pnacl for Fedora 23 (and older) + +* Thu Jul 28 2016 Tom Callaway 52.0.2743.82-7 +- fix post scriptlet so that selinux stuff only happens when selinux is enabled + +* Thu Jul 28 2016 Richard Hughes 52.0.2743.82-6 +- Add an AppData file so that Chromium appears in the software center + +* Wed Jul 27 2016 Tom Callaway 52.0.2743.82-5 +- enable nacl/pnacl (chromium-native_client has landed in Fedora) +- fix chromium-browser.sh to report Fedora build target properly + +* Wed Jul 27 2016 Tom Callaway 52.0.2743.82-4 +- compile with -fno-delete-null-pointer-checks (fixes v8 crashes, nacl/pnacl) +- turn nacl/pnacl off until chromium-native_client lands in Fedora + +* Tue Jul 26 2016 Tom Callaway 52.0.2743.82-3 +- turn nacl back on for x86_64 + +* Thu Jul 21 2016 Tom Callaway 52.0.2743.82-2 +- fix cups 2.2 support +- try to enable widevine compatibility (you still need to get the binary .so files from chrome) + +* Thu Jul 21 2016 Tom Callaway 52.0.2743.82-1 +- update to 52.0.2743.82 +- handle locales properly +- cleanup spec + +* 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 00000000..2f27435a --- /dev/null +++ b/clean_ffmpeg.sh @@ -0,0 +1,345 @@ +#!/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) + +if ! generated_files=$(./get_free_ffmpeg_source_files.py "$1" "$2"); then + exit 1 +fi +# As the build system files does not contain the header files, cheat here +# and generate the header files names from source files. These that does not +# exist will be later skipped while copying. +generated_files_headers="${generated_files//.c/.h}" +generated_files_headers="$generated_files_headers ${generated_files//.c/_internal.h}" +if [ "$2" -ne "1" ]; then + generated_files_headers="$generated_files_headers ${generated_files//.S/.h}" +fi +generated_files_headers="$generated_files_headers ${generated_files//.asm/.h}" + +header_files=" libavcodec/x86/inline_asm.h \ + libavcodec/x86/mathops.h \ + libavcodec/x86/vp56_arith.h \ + libavcodec/aarch64/vp8dsp.h \ + libavcodec/arm/vp8dsp.h \ + libavcodec/aac.h \ + libavcodec/aacps.h \ + libavcodec/aacpsdsp.h \ + libavcodec/aacsbrdata.h \ + libavcodec/aac_ac3_parser.h \ + libavcodec/aac_defines.h \ + libavcodec/ac3.h \ + libavcodec/ac3tab.h \ + libavcodec/adts_header.h \ + libavcodec/avcodec.h \ + libavcodec/blockdsp.h \ + libavcodec/bytestream.h \ + libavcodec/cbrt_data.h \ + libavcodec/cbrt_tablegen.h \ + libavcodec/dct.h \ + libavcodec/dct32.h \ + libavcodec/error_resilience.h \ + libavcodec/fdctdsp.h \ + libavcodec/fft.h \ + libavcodec/fft-internal.h \ + libavcodec/fft_table.h \ + libavcodec/flac.h \ + libavcodec/flacdsp.h \ + libavcodec/frame_thread_encoder.h \ + libavcodec/get_bits.h \ + libavcodec/h263dsp.h \ + libavcodec/h264chroma.h \ + libavcodec/hpeldsp.h \ + libavcodec/hwaccel.h \ + libavcodec/hwaccels.h \ + libavcodec/idctdsp.h \ + libavcodec/internal.h \ + libavcodec/kbdwin.h \ + libavcodec/mathops.h \ + libavcodec/mdct15.c \ + libavcodec/mdct15.h \ + libavcodec/me_cmp.h \ + libavcodec/motion_est.h \ + libavcodec/mpeg12.h \ + libavcodec/mpeg12data.h \ + libavcodec/mpeg12vlc.h \ + libavcodec/mpegaudio.h \ + libavcodec/mpegaudiodecheader.h \ + libavcodec/mpegaudiodectab.h \ + libavcodec/mpegaudiodsp.h \ + libavcodec/mpegaudio_tablegen.h \ + libavcodec/mpegpicture.h \ + libavcodec/mpegutils.h \ + libavcodec/mpegvideo.h \ + libavcodec/mpegvideodata.h \ + libavcodec/mpegvideodsp.h \ + libavcodec/mpegvideoencdsp.h \ + libavcodec/options_table.h \ + libavcodec/opusdsp.h \ + libavcodec/opus_celt.h \ + libavcodec/opus_pvq.h \ + libavcodec/opus_rc.h \ + libavcodec/pcm_tablegen.h \ + libavcodec/pixblockdsp.h \ + libavcodec/pixels.h \ + libavcodec/png.h \ + libavcodec/put_bits.h \ + libavcodec/qpeldsp.h \ + libavcodec/ratecontrol.h \ + libavcodec/rectangle.h \ + libavcodec/rl.h \ + libavcodec/rnd_avg.h \ + libavcodec/sbr.h \ + libavcodec/sbrdsp.h \ + libavcodec/sinewin.h \ + libavcodec/sinewin_tablegen.h \ + libavcodec/thread.h \ + libavcodec/unary.h \ + libavcodec/version.h \ + libavcodec/videodsp.h \ + libavcodec/vlc.h \ + libavcodec/vorbisdsp.h \ + libavcodec/vp3data.h \ + libavcodec/vp3dsp.h \ + libavcodec/vp56.h \ + libavcodec/vp56dsp.h \ + libavcodec/vp8data.h \ + libavcodec/vp8dsp.h \ + libavformat/apetag.h \ + libavformat/audiointerleave.h \ + libavformat/avformat.h \ + libavformat/dv.h \ + libavformat/img2.h \ + libavformat/internal.h \ + libavformat/mov_chan.h \ + libavformat/pcm.h \ + libavformat/rdt.h \ + libavformat/rtp.h \ + libavformat/rtpdec.h \ + libavformat/spdif.h \ + libavformat/srtp.h \ + libavformat/options_table.h \ + libavformat/version.h \ + libavformat/w64.h \ + libavutil/x86/asm.h \ + libavutil/x86/bswap.h \ + libavutil/x86/cpu.h \ + libavutil/x86/emms.h + libavutil/x86/intreadwrite.h \ + libavutil/x86/intmath.h + libavutil/x86/timer.h \ + libavutil/attributes.h \ + libavutil/audio_fifo.h \ + libavutil/avassert.h \ + libavutil/avutil.h \ + libavutil/bswap.h \ + libavutil/common.h \ + libavutil/colorspace.h \ + libavutil/cpu.h \ + libavutil/cpu_internal.h \ + libavutil/dynarray.h \ + libavutil/ffmath.h \ + libavutil/fixed_dsp.h \ + libavutil/float_dsp.h \ + libavutil/imgutils.h \ + libavutil/imgutils_internal.h \ + libavutil/internal.h \ + libavutil/intfloat.h \ + libavutil/intreadwrite.h \ + libavutil/libm.h \ + libavutil/lls.h \ + libavutil/macros.h \ + libavutil/pixfmt.h \ + libavutil/qsort.h \ + libavutil/replaygain.h \ + libavutil/softfloat.h \ + libavutil/softfloat_tables.h \ + libavutil/thread.h \ + libavutil/timer.h \ + libavutil/timestamp.h \ + libavutil/version.h \ + libswresample/swresample.h \ + libswresample/version.h \ + compat/va_copy.h \ + compat/atomics/gcc/stdatomic.h " + +manual_files=" libavcodec/aarch64/fft_neon.S \ + libavcodec/aarch64/h264pred_neon.S \ + libavcodec/aarch64/hpeldsp_neon.S \ + libavcodec/aarch64/mdct_neon.S \ + libavcodec/aarch64/neon.S \ + libavcodec/aarch64/vorbisdsp_neon.S \ + libavcodec/aarch64/vp8dsp_neon.S \ + libavcodec/x86/hpeldsp_rnd_template.c \ + libavcodec/x86/mdct15.asm \ + libavcodec/x86/mdct15_init.c \ + libavcodec/x86/rnd_template.c \ + libavcodec/x86/videodsp.asm \ + libavcodec/x86/videodsp_init.c \ + libavcodec/x86/vorbisdsp_init.c \ + libavcodec/autorename_libavcodec_mdct15.c \ + libavcodec/bit_depth_template.c \ + libavcodec/fft_template.c \ + libavcodec/flacdec.c \ + libavcodec/flacdsp.c \ + libavcodec/flacdsp_template.c \ + libavcodec/flacdsp_lpc_template.c \ + libavcodec/h264pred_template.c \ + libavcodec/hpel_template.c \ + libavcodec/hpeldsp.c \ + libavcodec/mdct15.c \ + libavcodec/mdct_template.c \ + libavcodec/pel_template.c \ + libavcodec/utils.c \ + libavcodec/videodsp.c \ + libavcodec/videodsp_template.c \ + libavcodec/vorbisdsp.c \ + libavcodec/vp3dsp.c \ + libavcodec/vp8dsp.c \ + libavformat/options.c \ + libavformat/pcm.c \ + libavformat/utils.c \ + libavutil/aarch64/asm.S \ + libavutil/aarch64/bswap.h \ + libavutil/aarch64/float_dsp_neon.S \ + libavutil/aarch64/timer.h \ + libavutil/cpu.c \ + libavutil/fixed_dsp.c \ + libavutil/float_dsp.c \ + libavutil/imgutils.c \ + libavutil/x86/cpu.c \ + libavutil/x86/float_dsp_init.c \ + libavutil/x86/x86inc.asm \ + libavutil/x86/x86util.asm " + +mp3_files=" libavcodec/aarch64/aacpsdsp_init_aarch64.c \ + libavcodec/aarch64/aacpsdsp_neon.S \ + libavcodec/aarch64/autorename_libavcodec_aarch64_aacpsdsp_neon.S \ + libavcodec/aarch64/autorename_libavcodec_aarch64_sbrdsp_neon.S \ + libavcodec/aarch64/mpegaudiodsp_init.c \ + libavcodec/aarch64/mpegaudiodsp_neon.S \ + libavcodec/aarch64/sbrdsp_init_aarch64.c \ + libavcodec/aarch64/sbrdsp_neon.S \ + libavcodec/aac_ac3_parser.c \ + libavcodec/aac_parser.c \ + libavcodec/aacps_float.c \ + libavcodec/aacpsdsp_float.c \ + libavcodec/aacsbr.c \ + libavcodec/aactab.c \ + libavcodec/ac3tab.c \ + libavcodec/autorename_libavcodec_aacdec.c \ + libavcodec/autorename_libavcodec_mpegaudiodsp.c \ + libavcodec/autorename_libavcodec_sbrdsp.c \ + libavcodec/cbrt_data.c \ + libavcodec/dct.c \ + libavcodec/dct32_fixed.c \ + libavcodec/dct32_float.c \ + libavcodec/dct32_template.c \ + libavcodec/kbdwin.c \ + libavcodec/mpegaudio.c \ + libavcodec/mpegaudio_parser.c \ + libavcodec/mpegaudiodec_fixed.c \ + libavcodec/mpegaudiodec_template.c \ + libavcodec/mpegaudiodecheader.c \ + libavcodec/mpegaudiodsp.c \ + libavcodec/mpegaudiodsp_data.c \ + libavcodec/mpegaudiodsp_fixed.c \ + libavcodec/mpegaudiodsp_float.c \ + libavcodec/mpegaudiodsp_template.c \ + libavcodec/sbrdsp.c \ + libavcodec/sbrdsp_template.c \ + libavcodec/sinewin.c \ + libavcodec/sinewin_fixed.c \ + libavcodec/x86/dct_init.c \ + libavcodec/x86/dct32.asm \ + libavcodec/x86/imdct36.asm \ + libavcodec/x86/mpegaudiodsp.c \ + libavcodec/x86/sbrdsp_init.c \ + libavcodec/x86/sbrdsp.asm \ + libavformat/aacdec.c \ + libavformat/apetag.c \ + libavformat/img2.c \ + libavformat/mov.c \ + libavformat/mov_chan.c \ + libavformat/mp3dec.c " + +other_files=" BUILD.gn \ + Changelog \ + COPYING.GPLv2 \ + COPYING.GPLv3 \ + COPYING.LGPLv2.1 \ + COPYING.LGPLv3 \ + CREDITS \ + CREDITS.chromium \ + ffmpeg_generated.gni \ + ffmpeg_options.gni \ + INSTALL.md \ + LICENSE.md \ + MAINTAINERS \ + OWNERS \ + README.chromium \ + README.md \ + RELEASE " + +cd "$1/third_party/ffmpeg" || exit 1 + +copy_files "$generated_files" 0 +copy_files "$generated_files_headers" 0 +copy_files "$manual_files" 1 +copy_files "$other_files" 1 +copy_files "$header_files" 1 +copy_files "$mp3_files" 1 + +mkdir -p ../tmp_ffmpeg/tmp_chromium/config +cp -r chromium/config ../tmp_ffmpeg/tmp_chromium + +cd ../tmp_ffmpeg || exit 1 + +while IFS= read -r -d '' tmp_directory +do + new_name=${tmp_directory//tmp_/} + mv "$tmp_directory" "$new_name" +done < <(find . -type d -name 'tmp_*' -print0) + +cd "$where" || exit 1 + +rm -rf "$1/third_party/ffmpeg" +mv "$1/third_party/tmp_ffmpeg" "$1/third_party/ffmpeg" diff --git a/enable-vaapi.patch b/enable-vaapi.patch new file mode 100644 index 00000000..3286af7c --- /dev/null +++ b/enable-vaapi.patch @@ -0,0 +1,96 @@ +diff -up chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi chromium-75.0.3770.80/chrome/browser/about_flags.cc +--- chromium-75.0.3770.80/chrome/browser/about_flags.cc.vaapi 2019-06-04 14:55:16.000000000 -0400 ++++ chromium-75.0.3770.80/chrome/browser/about_flags.cc 2019-06-05 11:26:46.472753047 -0400 +@@ -1390,7 +1390,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_WIN) +@@ -1882,12 +1882,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS // OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc +--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc.vaapi 2019-06-05 11:26:46.473753026 -0400 ++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.cc 2019-06-05 11:29:28.039397479 -0400 +@@ -2941,15 +2941,20 @@ const char kMacSystemMediaPermissionsInf + + #endif + +-// Chrome OS ------------------------------------------------------------------- ++// Chrome OS & Linux------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + const char kAcceleratedMjpegDecodeName[] = + "Hardware-accelerated mjpeg decode for captured frame"; + const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; ++#endif ++ ++// Chrome OS ------------------------------------------------------------------- ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +diff -up chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi chromium-75.0.3770.80/chrome/browser/flag_descriptions.h +--- chromium-75.0.3770.80/chrome/browser/flag_descriptions.h.vaapi 2019-06-05 11:26:46.475752984 -0400 ++++ chromium-75.0.3770.80/chrome/browser/flag_descriptions.h 2019-06-05 11:30:39.503928986 -0400 +@@ -1765,13 +1765,19 @@ extern const char kPermissionPromptPersi + + #endif // defined(OS_MACOSX) + +-// Chrome OS ------------------------------------------------------------------ ++// Chrome OS & Linux ---------------------------------------------------------- + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++#endif ++ ++// Chrome OS ------------------------------------------------------------------ ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +diff -up chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi chromium-75.0.3770.80/gpu/config/software_rendering_list.json +--- chromium-75.0.3770.80/gpu/config/software_rendering_list.json.vaapi 2019-06-04 14:55:24.000000000 -0400 ++++ chromium-75.0.3770.80/gpu/config/software_rendering_list.json 2019-06-05 11:26:46.482752839 -0400 +@@ -371,11 +371,12 @@ + }, + { + "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", ++ "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms", + "cr_bugs": [137247], + "os": { + "type": "linux" + }, ++ "vendor_id": "0x10de", + "features": [ + "accelerated_video_decode" + ] diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py new file mode 100755 index 00000000..f2225eaf --- /dev/null +++ b/get_free_ffmpeg_source_files.py @@ -0,0 +1,82 @@ +#!/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_gni_file(gni_path, arch_not_arm): + + with open(gni_path, "r") as input_file: + content = input_file.read().replace('\n', '') + + output_sources = [] + # Get all the sections. + sections = re.findall(r"if (.*?})", content, re.DOTALL) + for section in sections: + # Get all the conditions (first group) and sources (second group) for the + # current section. + blocks = re.findall(r"(\(.*?\))\s\{(.*?)\}", section, re.DOTALL) + for block in blocks: + conditions = re.findall(r"\(?\((.*?)\)", block[0]) + inserted = False + for condition in conditions: + if inserted: + break + limitations = ['ffmpeg_branding == "Chrome"', 'ffmpeg_branding == "ChromeOS"'] + if ('use_linux_config' in condition) and not any(limitation in condition for limitation in limitations): + if (arch_not_arm): + if ('x64' in condition) or ('x86' in condition) or ('use_linux_config' in condition): + parse_sources (block[1], output_sources, arch_not_arm) + inserted = True + else: + parse_sources (block[1], output_sources, arch_not_arm) + inserted = True + + if len(output_sources) == 0: + sys.stderr.write("Something went wrong, no sources parsed!\n") + sys.exit(1) + + print ' '.join(output_sources) + + +if __name__ == "__main__": + + path = "%s/third_party/ffmpeg/ffmpeg_generated.gni" % sys.argv[1] + parse_ffmpeg_gni_file (path, False if sys.argv[2] == "0" else True) diff --git a/get_linux_tests_names.py b/get_linux_tests_names.py new file mode 100755 index 00000000..08a913a7 --- /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/master_preferences b/master_preferences new file mode 100644 index 00000000..fbc2ff04 --- /dev/null +++ b/master_preferences @@ -0,0 +1,17 @@ +{ + "homepage": "https://start.fedoraproject.org", + "homepage_is_newtabpage": false, + "distribution": { + "alternate_shortcut_text": false, + "oem_bubble": true, + "chrome_shortcut_icon_index": 0, + "create_all_shortcuts": true, + "show_welcome_page": true, + "system_level": false, + "verbose_logging": false + }, + "first_run_tabs": [ + "https://start.fedoraproject.org", + "http://tools.google.com/chrome/intl/en/welcome.html" + ] +} diff --git a/sources b/sources index e69de29b..2d38a7c3 100644 --- a/sources +++ b/sources @@ -0,0 +1,20 @@ +SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03 +SHA512 (gelasio.zip) = 0a22def3eca8848161ee72453dc5f97cc52ed09ffe21834152f2535d3a71f404cdf1f6e1809564bacb86aae75278cbcb96cae52b537d3ccdc299b60d6d0bc53e +SHA512 (MuktiNarrow-0.94.tar.bz2) = f7abd429e2591eaa047d1ac982d97fa67dc1480c42e55b2a97861abd90918704dce90b6bb27dec7b6d696f188017a74de54a7b7f45281f0515923b90300959d1 +SHA512 (NotoSansCJKjp-hinted.zip) = e7bcbc53a10b8ec3679dcade5a8a94cea7e1f60875ab38f2193b4fa8e33968e1f0abc8184a3df1e5210f6f5c731f96c727c6aa8f519423a29707d2dee5ada193 +SHA512 (lohit-gurmukhi-ttf-2.91.2.tar.gz) = 714ed72d201e7f8956d24e9d9f1526207beb91a604e88c02a8b0d145f19d9bfe1408ca290d1665ebef462ab3854365dcd9850529803277738e2585addf3e280a +SHA512 (Arimo-BoldItalic.ttf) = cb1f411f2630f2754dfb0244b3c56fde43650d603512d47c143bc0f24028da4d7ca2b35a633226ef9c502b97c63cfbd5a6d696934b3e60b2a98ad879b113a4c4 +SHA512 (Arimo-Bold.ttf) = 2853e5f41e6899baf226db2578aba09f2f88085eaea02da024621492d21e1af8bdefdefd354ea23dc4d5de5cb0d554085040a0108820f213e86dd532986fdb41 +SHA512 (Arimo-Italic.ttf) = 56ef918e5811dcd375e6cd8d79dc69f4db75d544639c0f6ac3a0343b3b4ef94b7dee5a6066f1558d8747a32bbee074256be68b943ff31cfbd2f5f32acfa7c1c5 +SHA512 (Arimo-Regular.ttf) = 05e6aa6b785b0038a8e0e0a8a618a1b8e907a700be302148eaebc91cfac3c9e2d9acf90b9d077ff3b9ff54bd5f8a9c522a039cff6103cdeee54be29b6a0b355f +SHA512 (Cousine-BoldItalic.ttf) = 2125aa9f5db4ae4a3725d308b6afbfbce5957f3c96a3c5fcba8ebf5cd167017d9c7023391e947ed68d12fa97e2cba3f156a3acca276d9f5ed50df7d78c07f918 +SHA512 (Cousine-Bold.ttf) = 1759fd23419ae0e1bfc9be92abb9cb0c74084ce85e7f53c055d86ec3d62da83169d0d67ed96fd4e496b28acf382933d63448459108b109d8202db7f18f05caab +SHA512 (Cousine-Italic.ttf) = ec3fc9d940b748dbbc64aa66184413a78ae2b085181eed563449df044b891e951e8feebd865be5be42f0cd001acf5bdce9084a006f9b5be32f096f7df0dc7700 +SHA512 (Cousine-Regular.ttf) = a665a6a4a5583079eb87509e2da7d6bd06965e6a7655217302b088caef942ae9ad63e6cffda18d0001fc9ab2284836766843e46bfdacd188b54f39d7855f36a0 +SHA512 (Tinos-BoldItalic.ttf) = 2574de2add94ef976b731fac688951fab49574c9b0ccd259ba647ea3598ca026bcfb88e2ea3f19effb3af71fdc0eb5fa9973f0b6e996c22185c5f2aab5a23fdd +SHA512 (Tinos-Bold.ttf) = 54aeca804c06a4d5c57ade596e73df91a6a1c4401c4aadba55d987b3fb73045d35f3df02678b59abb77c4914ec741755536c0adf808c931e4b77848c52c229c4 +SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0e22a16414278217f37497b904a18540273c0e2d79d4f1faabde3b0eb5446283b318c73bafb38 +SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f +SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd +SHA512 (node-v8.9.1-linux-x64.tar.gz) = a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844 +SHA512 (chromium-76.0.3809.132-clean.tar.xz) = fbc5f989945adfaffb9fb5199ccb988accdc53f41a03bba9c4ab3df8585b9267b1f34cd7a6ac487eff34ebb6e65865e32ceea4ad945eec30f871d8eed41f3e6f