summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO23
-rw-r--r--PKGBUILD93
-rw-r--r--breakpad-use-ucontext_t.patch225
-rw-r--r--ca40720.diff41
-rw-r--r--chromium-atk-r1.patch11
-rw-r--r--chromium-gcc-r1.patch14
-rw-r--r--chromium-gn-bootstrap-r14.patch27
-rw-r--r--chromium-gn-bootstrap-r8.patch13
-rw-r--r--chromium-v8-gcc7.patch73
-rw-r--r--issue2961473002_1_10001.diff63
10 files changed, 382 insertions, 201 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b9ae82795b5d..f3b95cabfc17 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = chromium-gtk2
pkgdesc = A web browser built for speed, simplicity, and security (GTK2 version)
- pkgver = 60.0.3112.113
+ pkgver = 61.0.3163.79
pkgrel = 1
url = https://www.chromium.org/Home
install = chromium.install
@@ -32,6 +32,7 @@ pkgbase = chromium-gtk2
depends = flac
depends = opus
depends = minizip
+ depends = libxml2
depends = harfbuzz-icu
depends = libxslt
depends = re2
@@ -44,22 +45,26 @@ pkgbase = chromium-gtk2
optdepends = kwallet: for storing passwords in KWallet
provides = chromium
conflicts = chromium
- source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-60.0.3112.113.tar.xz
+ source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-61.0.3163.79.tar.xz
source = chromium-launcher-5.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v5.tar.gz
source = chromium.desktop
- source = chromium-gn-bootstrap-r8.patch
+ source = breakpad-use-ucontext_t.patch
+ source = chromium-gcc-r1.patch
+ source = chromium-gn-bootstrap-r14.patch
+ source = chromium-atk-r1.patch
source = chromium-blink-gcc7.patch
- source = chromium-v8-gcc7.patch
source = chromium-widevine.patch
- source = issue2961473002_1_10001.diff
- sha256sums = ebfce706a1ea02a92e35f360c7364d1184dacf040b59eade4cb51aa61a4fec59
+ source = ca40720.diff
+ sha256sums = bdbc139ed86f3b5d1ec3c3b00caeaef4f9ac2c363438f03dded56e217ad10727
sha256sums = 4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587
sha256sums = 028a748a5c275de9b8f776f97909f999a8583a4b77fd1cd600b4fc5c0c3e91e9
- sha256sums = 06345804c00d9618dad98a2dc04f31ef19912cdf6e9d6e577ef7ffb1fa57003f
+ sha256sums = 6e9a345f810d36068ee74ebba4708c70ab30421dad3571b6be5e9db635078ea8
+ sha256sums = 11cffe305dd49027c91638261463871e9ecb0ecc6ecc02bfa37b203c5960ab58
+ sha256sums = 98784c4a0a793ecf34987bc8f91ae360d78596a4a59dd47651411381f752a080
+ sha256sums = fc0e9abb77b6f8e21a7601ff53f267a854736d711b530be5bbd80d976678e98d
sha256sums = f94310a7ba9b8b777adfb4442bcc0a8f0a3d549b2cf4a156066f8e2e28e2f323
- sha256sums = 46dacc4fa52652b7d99b8996d6a97e5e3bac586f879aefb9fb95020d2c4e5aec
sha256sums = d6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808
- sha256sums = b40cea8b8da16a0f18e02887e866934415e5c534e8f29d104f013fc19a756495
+ sha256sums = e4dd9b77d789b879dba122097361d67c6bd64dba8e54dbadf2600ec390163cc4
pkgname = chromium-gtk2
diff --git a/PKGBUILD b/PKGBUILD
index 579d3c6cc1ee..fbdab7ad61f4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,31 +4,9 @@
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
-# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
-# Keys are the names in the above script; values are the dependencies in Arch
-declare -rgA _system_libs=(
- #[ffmpeg]=ffmpeg # https://crbug.com/731766
- [flac]=flac
- #[freetype]=freetype2 # https://crbug.com/pdfium/733
- [harfbuzz-ng]=harfbuzz-icu
- #[icu]=icu # Enable again when upstream supports ICU 59
- [libdrm]=
- [libjpeg]=libjpeg
- #[libpng]=libpng # https://crbug.com/752403#c10
- #[libvpx]=libvpx # https://bugs.gentoo.org/611394
- [libwebp]=libwebp
- #[libxml]=libxml2 # https://bugs.gentoo.org/616818
- [libxslt]=libxslt
- [opus]=opus
- [re2]=re2
- [snappy]=snappy
- [yasm]=
- [zlib]=minizip
-)
-
pkgname=chromium-gtk2
_pkgname=chromium
-pkgver=60.0.3112.113
+pkgver=61.0.3163.79
pkgrel=1
_launcher_ver=5
pkgdesc="A web browser built for speed, simplicity, and security (GTK2 version)"
@@ -38,7 +16,6 @@ license=('BSD')
depends=('gtk2' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib'
'desktop-file-utils' 'hicolor-icon-theme')
-depends+=(${_system_libs[@]})
makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git')
optdepends=('pepper-flash: support for Flash content'
'kdialog: needed for file dialogs in KDE'
@@ -50,19 +27,46 @@ install=chromium.install
source=(https://commondatastorage.googleapis.com/chromium-browser-official/$_pkgname-$pkgver.tar.xz
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
chromium.desktop
- chromium-gn-bootstrap-r8.patch
+ breakpad-use-ucontext_t.patch
+ chromium-gcc-r1.patch
+ chromium-gn-bootstrap-r14.patch
+ chromium-atk-r1.patch
chromium-blink-gcc7.patch
- chromium-v8-gcc7.patch
chromium-widevine.patch
- issue2961473002_1_10001.diff)
-sha256sums=('ebfce706a1ea02a92e35f360c7364d1184dacf040b59eade4cb51aa61a4fec59'
+ ca40720.diff)
+sha256sums=('bdbc139ed86f3b5d1ec3c3b00caeaef4f9ac2c363438f03dded56e217ad10727'
'4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587'
'028a748a5c275de9b8f776f97909f999a8583a4b77fd1cd600b4fc5c0c3e91e9'
- '06345804c00d9618dad98a2dc04f31ef19912cdf6e9d6e577ef7ffb1fa57003f'
+ '6e9a345f810d36068ee74ebba4708c70ab30421dad3571b6be5e9db635078ea8'
+ '11cffe305dd49027c91638261463871e9ecb0ecc6ecc02bfa37b203c5960ab58'
+ '98784c4a0a793ecf34987bc8f91ae360d78596a4a59dd47651411381f752a080'
+ 'fc0e9abb77b6f8e21a7601ff53f267a854736d711b530be5bbd80d976678e98d'
'f94310a7ba9b8b777adfb4442bcc0a8f0a3d549b2cf4a156066f8e2e28e2f323'
- '46dacc4fa52652b7d99b8996d6a97e5e3bac586f879aefb9fb95020d2c4e5aec'
'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808'
- 'b40cea8b8da16a0f18e02887e866934415e5c534e8f29d104f013fc19a756495')
+ 'e4dd9b77d789b879dba122097361d67c6bd64dba8e54dbadf2600ec390163cc4')
+
+# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
+# Keys are the names in the above script; values are the dependencies in Arch
+declare -rgA _system_libs=(
+ #[ffmpeg]=ffmpeg # https://crbug.com/731766
+ [flac]=flac
+ #[freetype]=freetype2 # https://crbug.com/pdfium/733
+ [harfbuzz-ng]=harfbuzz-icu
+ #[icu]=icu # Enable again when upstream supports ICU 59
+ [libdrm]=
+ [libjpeg]=libjpeg
+ #[libpng]=libpng # https://crbug.com/752403#c10
+ #[libvpx]=libvpx # https://bugs.gentoo.org/611394
+ [libwebp]=libwebp
+ [libxml]=libxml2
+ [libxslt]=libxslt
+ [opus]=opus
+ [re2]=re2
+ [snappy]=snappy
+ [yasm]=
+ [zlib]=minizip
+)
+depends+=(${_system_libs[@]})
# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
@@ -83,21 +87,23 @@ prepare() {
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853347
patch -Np1 -i ../chromium-blink-gcc7.patch
- # https://bugs.chromium.org/p/chromium/issues/detail?id=614289
- patch -Np1 -i ../chromium-v8-gcc7.patch
+ # Fix build with glibc 2.26
+ patch -Np1 -i ../breakpad-use-ucontext_t.patch
# Fixes from Gentoo
- patch -Np1 -i ../chromium-gn-bootstrap-r8.patch
+ patch -Np1 -i ../chromium-gcc-r1.patch
+ patch -Np1 -i ../chromium-gn-bootstrap-r14.patch
+ patch -Np1 -i ../chromium-atk-r1.patch
- # Reverse https://chromium.googlesource.com/chromium/src/+/8d1845c2267b05df565fa33e3c5e2b0e242a21cc%5E%21/
- patch -Rp1 -i ../issue2961473002_1_10001.diff
+ # Fix GTK2 build
+ patch -Np1 -i ../ca40720.diff
# Use Python 2
find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} +
# There are still a lot of relative calls which need a workaround
- mkdir -p "$srcdir/python2-path"
- ln -sf /usr/bin/python2 "$srcdir/python2-path/python"
+ mkdir "$srcdir/python2-path"
+ ln -s /usr/bin/python2 "$srcdir/python2-path/python"
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
@@ -117,9 +123,6 @@ prepare() {
python2 build/linux/unbundle/replace_gn_files.py \
--system-libraries "${!_system_libs[@]}"
-
- # remove forced gtk3 on xdu
- sed -i 's:use_gtk3 =.*:use_gtk3 = false:' build/config/linux/gtk/gtk.gni
}
build() {
@@ -142,12 +145,13 @@ build() {
'ffmpeg_branding="Chrome"'
'proprietary_codecs=true'
'link_pulseaudio=true'
- 'linux_use_bundled_binutils=false'
'use_gtk3=false'
'use_gconf=false'
'use_gnome_keyring=false'
'use_gold=false'
'use_sysroot=false'
+ 'linux_use_bundled_binutils=false'
+ 'use_custom_libcxx=false'
'enable_hangout_services_extension=true'
'enable_widevine=true'
'enable_nacl=false'
@@ -184,9 +188,12 @@ package() {
out/Release/{chrome_{100,200}_percent,resources}.pak \
out/Release/{*.bin,chromedriver,libwidevinecdmadapter.so} \
out/Release/locales \
- out/Release/icudtl.dat \
"$pkgdir/usr/lib/chromium/"
+ if [[ -z ${_system_libs[icu]+set} ]]; then
+ cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/"
+ fi
+
ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"
for size in 22 24 48 64 128 256; do
diff --git a/breakpad-use-ucontext_t.patch b/breakpad-use-ucontext_t.patch
new file mode 100644
index 000000000000..f32397236664
--- /dev/null
+++ b/breakpad-use-ucontext_t.patch
@@ -0,0 +1,225 @@
+From b6a312ed8e144a37da840ae50dbd39df5ffb7e9f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 2 Jul 2017 16:34:54 -0700
+Subject: [PATCH 2/2] replace struct ucontext with ucontext_t
+
+glibc 2.26 does not expose struct ucontext any longer
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../linux/dump_writer_common/ucontext_reader.cc | 30 +++++++++++-----------
+ .../linux/dump_writer_common/ucontext_reader.h | 10 ++++----
+ .../src/client/linux/handler/exception_handler.cc | 8 +++---
+ .../src/client/linux/handler/exception_handler.h | 2 +-
+ .../linux/microdump_writer/microdump_writer.cc | 2 +-
+ .../linux/minidump_writer/minidump_writer.cc | 2 +-
+ 6 files changed, 27 insertions(+), 27 deletions(-)
+
+diff --git a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+index c80724dd8..93b4d9f85 100644
+--- a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
++++ b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+@@ -40,15 +40,15 @@ namespace google_breakpad {
+
+ #if defined(__i386__)
+
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gregs[REG_ESP];
+ }
+
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gregs[REG_EIP];
+ }
+
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct _libc_fpstate* fp) {
+ const greg_t* regs = uc->uc_mcontext.gregs;
+
+@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+
+ #elif defined(__x86_64)
+
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gregs[REG_RSP];
+ }
+
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gregs[REG_RIP];
+ }
+
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct _libc_fpstate* fpregs) {
+ const greg_t* regs = uc->uc_mcontext.gregs;
+
+@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+
+ #elif defined(__ARM_EABI__)
+
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.arm_sp;
+ }
+
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.arm_pc;
+ }
+
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+ out->context_flags = MD_CONTEXT_ARM_FULL;
+
+ out->iregs[0] = uc->uc_mcontext.arm_r0;
+@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
+
+ #elif defined(__aarch64__)
+
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.sp;
+ }
+
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.pc;
+ }
+
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct fpsimd_context* fpregs) {
+ out->context_flags = MD_CONTEXT_ARM64_FULL;
+
+@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+
+ #elif defined(__mips__)
+
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
+ }
+
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.pc;
+ }
+
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+ #if _MIPS_SIM == _ABI64
+ out->context_flags = MD_CONTEXT_MIPS64_FULL;
+ #elif _MIPS_SIM == _ABIO32
+diff --git a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
+index b6e77b4b5..2369a9ad3 100644
+--- a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
++++ b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
+@@ -41,21 +41,21 @@ namespace google_breakpad {
+
+ // Wraps platform-dependent implementations of accessors to ucontext structs.
+ struct UContextReader {
+- static uintptr_t GetStackPointer(const struct ucontext* uc);
++ static uintptr_t GetStackPointer(const ucontext_t* uc);
+
+- static uintptr_t GetInstructionPointer(const struct ucontext* uc);
++ static uintptr_t GetInstructionPointer(const ucontext_t* uc);
+
+ // Juggle a arch-specific ucontext into a minidump format
+ // out: the minidump structure
+ // info: the collection of register structures.
+ #if defined(__i386__) || defined(__x86_64)
+- static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct _libc_fpstate* fp);
+ #elif defined(__aarch64__)
+- static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct fpsimd_context* fpregs);
+ #else
+- static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);
+ #endif
+ };
+
+diff --git a/breakpad/src/client/linux/handler/exception_handler.cc b/breakpad/src/client/linux/handler/exception_handler.cc
+index b63f973b8..f2688acaf 100644
+--- a/breakpad/src/client/linux/handler/exception_handler.cc
++++ b/breakpad/src/client/linux/handler/exception_handler.cc
+@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
+ // Fill in all the holes in the struct to make Valgrind happy.
+ memset(&g_crash_context_, 0, sizeof(g_crash_context_));
+ memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
+- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));
++ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));
+ #if defined(__aarch64__)
+- struct ucontext* uc_ptr = (struct ucontext*)uc;
++ ucontext_t* uc_ptr = (ucontext_t*)uc;
+ struct fpsimd_context* fp_ptr =
+ (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
+ if (fp_ptr->head.magic == FPSIMD_MAGIC) {
+@@ -452,7 +452,7 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
+ // FP state is not part of user ABI on ARM Linux.
+ // In case of MIPS Linux FP state is already part of struct ucontext
+ // and 'float_state' is not a member of CrashContext.
+- struct ucontext* uc_ptr = (struct ucontext*)uc;
++ ucontext_t* uc_ptr = (ucontext_t*)uc;
+ if (uc_ptr->uc_mcontext.fpregs) {
+ memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
+ sizeof(g_crash_context_.float_state));
+@@ -476,7 +476,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+ // ExceptionHandler::HandleSignal().
+ siginfo.si_code = SI_USER;
+ siginfo.si_pid = getpid();
+- struct ucontext context;
++ ucontext_t context;
+ getcontext(&context);
+ return HandleSignal(sig, &siginfo, &context);
+ }
+diff --git a/breakpad/src/client/linux/handler/exception_handler.h b/breakpad/src/client/linux/handler/exception_handler.h
+index 591c31085..846df772f 100644
+--- a/breakpad/src/client/linux/handler/exception_handler.h
++++ b/breakpad/src/client/linux/handler/exception_handler.h
+@@ -191,7 +191,7 @@ class ExceptionHandler {
+ struct CrashContext {
+ siginfo_t siginfo;
+ pid_t tid; // the crashing thread.
+- struct ucontext context;
++ ucontext_t context;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+ // #ifdef this out because FP state is not part of user ABI for Linux ARM.
+ // In case of MIPS Linux FP state is already part of struct
+diff --git a/breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
+index 6f5b43559..a508667a0 100644
+--- a/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
++++ b/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
+@@ -571,7 +571,7 @@ class MicrodumpWriter {
+
+ void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
+
+- const struct ucontext* const ucontext_;
++ const ucontext_t* const ucontext_;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+ const google_breakpad::fpstate_t* const float_state_;
+ #endif
+diff --git a/breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+index 86009b9f6..f2aec73d7 100644
+--- a/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
++++ b/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+@@ -1248,7 +1248,7 @@ class MinidumpWriter {
+ const int fd_; // File descriptor where the minidum should be written.
+ const char* path_; // Path to the file where the minidum should be written.
+
+- const struct ucontext* const ucontext_; // also from the signal handler
++ const ucontext_t* const ucontext_; // also from the signal handler
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+ const google_breakpad::fpstate_t* const float_state_; // ditto
+ #endif
+--
+2.13.2
+
diff --git a/ca40720.diff b/ca40720.diff
new file mode 100644
index 000000000000..bb6e4c3adcc9
--- /dev/null
+++ b/ca40720.diff
@@ -0,0 +1,41 @@
+From ca407201886875966db91d55c403fe0be3f0f4ca Mon Sep 17 00:00:00 2001
+From: Tom Anderson <thomasanderson@chromium.org>
+Date: Fri, 28 Jul 2017 00:32:42 +0000
+Subject: [PATCH] Fix GTK2 build
+
+R=erg@chromium.org
+
+BUG=749770
+
+Change-Id: If30b1d7e64998d78fb4e2635540ddfe922661391
+Reviewed-on: https://chromium-review.googlesource.com/589826
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Elliot Glaysher <erg@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#490162}
+---
+
+diff --git a/chrome/browser/ui/libgtkui/gtk_ui.cc b/chrome/browser/ui/libgtkui/gtk_ui.cc
+index a38c6b8..23f63b6 100644
+--- a/chrome/browser/ui/libgtkui/gtk_ui.cc
++++ b/chrome/browser/ui/libgtkui/gtk_ui.cc
+@@ -1052,11 +1052,20 @@
+ if (display::Display::HasForceDeviceScaleFactor())
+ return display::Display::GetForcedDeviceScaleFactor();
+
++#if GTK_MAJOR_VERSION == 2
++ GtkSettings* gtk_settings = gtk_settings_get_default();
++ gint gtk_dpi = -1;
++ g_object_get(gtk_settings, "gtk-xft-dpi", &gtk_dpi, nullptr);
++ const float scale_factor = gtk_dpi / (1024 * kDefaultDPI);
++#else
+ GdkScreen* screen = gdk_screen_get_default();
+ gint scale = gtk_widget_get_scale_factor(fake_window_);
++ DCHECK_GT(scale, 0);
+ gdouble resolution = gdk_screen_get_resolution(screen);
+ const float scale_factor =
+ resolution <= 0 ? scale : resolution * scale / kDefaultDPI;
++#endif
++
+ // Blacklist scaling factors <120% (crbug.com/484400) and round
+ // to 1 decimal to prevent rendering problems (crbug.com/485183).
+ return scale_factor < 1.2f ? 1.0f : roundf(scale_factor * 10) / 10;
diff --git a/chromium-atk-r1.patch b/chromium-atk-r1.patch
new file mode 100644
index 000000000000..32fa29975b3e
--- /dev/null
+++ b/chromium-atk-r1.patch
@@ -0,0 +1,11 @@
+--- a/content/browser/accessibility/browser_accessibility_auralinux.cc.orig 2017-07-27 06:28:01.090257874 +0000
++++ b/content/browser/accessibility/browser_accessibility_auralinux.cc 2017-07-27 06:28:21.174653680 +0000
+@@ -571,7 +571,7 @@
+ // it's best to leave this out rather than break people's builds:
+ #if defined(ATK_CHECK_VERSION)
+ #if ATK_CHECK_VERSION(2, 16, 0)
+- atk_state_set_add_state(atk_state_set, ATK_STATE_READ_ONLY);
++ atk_state_set_add_state(state_set, ATK_STATE_READ_ONLY);
+ #endif
+ #endif
+ break;
diff --git a/chromium-gcc-r1.patch b/chromium-gcc-r1.patch
new file mode 100644
index 000000000000..2acd11ed5b08
--- /dev/null
+++ b/chromium-gcc-r1.patch
@@ -0,0 +1,14 @@
+diff --git a/base/numerics/safe_math_shared_impl.h b/base/numerics/safe_math_shared_impl.h
+index 99f230ce7e9a..de2415d402f5 100644
+--- a/base/numerics/safe_math_shared_impl.h
++++ b/base/numerics/safe_math_shared_impl.h
+@@ -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-gn-bootstrap-r14.patch b/chromium-gn-bootstrap-r14.patch
new file mode 100644
index 000000000000..3c44c858f78d
--- /dev/null
+++ b/chromium-gn-bootstrap-r14.patch
@@ -0,0 +1,27 @@
+commit 96c271f8ab2be7ea4199078ea65ac50c6ada4685
+Author: Pawel Hajdan, Jr <phajdan.jr@chromium.org>
+Date: Wed Jul 26 21:51:54 2017 +0000
+
+ wip
+
+diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
+index 1390560f8e37..ff2ae57c46b0 100755
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -449,6 +449,7 @@ def write_gn_ninja(path, root_gen_dir, options):
+ 'base/metrics/histogram_base.cc',
+ 'base/metrics/histogram_functions.cc',
+ 'base/metrics/histogram_samples.cc',
++ 'base/metrics/histogram_snapshot_manager.cc',
+ 'base/metrics/metrics_hashes.cc',
+ 'base/metrics/persistent_histogram_allocator.cc',
+ 'base/metrics/persistent_memory_allocator.cc',
+@@ -534,7 +535,7 @@ def write_gn_ninja(path, root_gen_dir, options):
+ 'base/trace_event/heap_profiler_allocation_context_tracker.cc',
+ 'base/trace_event/heap_profiler_allocation_register.cc',
+ 'base/trace_event/heap_profiler_event_filter.cc',
+- 'base/trace_event/heap_profiler_event_writer.cc',
++ 'base/trace_event/heap_profiler_heap_dump_writer.cc',
+ 'base/trace_event/heap_profiler_serialization_state.cc',
+ 'base/trace_event/heap_profiler_stack_frame_deduplicator.cc',
+ 'base/trace_event/heap_profiler_type_name_deduplicator.cc',
diff --git a/chromium-gn-bootstrap-r8.patch b/chromium-gn-bootstrap-r8.patch
deleted file mode 100644
index d9f389aaf588..000000000000
--- a/chromium-gn-bootstrap-r8.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: tools/gn/bootstrap/bootstrap.py
-diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
-index 6f2f5b1264519ea38cc36fb0b7e2cc24c378ca7a..0b03d2626b358fb90ab39d737679ee47bd60303b 100755
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -487,6 +487,7 @@ def write_gn_ninja(path, root_gen_dir, options):
- 'base/sys_info.cc',
- 'base/task_runner.cc',
- 'base/task_scheduler/delayed_task_manager.cc',
-+ 'base/task_scheduler/environment_config.cc',
- 'base/task_scheduler/post_task.cc',
- 'base/task_scheduler/priority_queue.cc',
- 'base/task_scheduler/scheduler_lock_impl.cc',
diff --git a/chromium-v8-gcc7.patch b/chromium-v8-gcc7.patch
deleted file mode 100644
index a63b9a495513..000000000000
--- a/chromium-v8-gcc7.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-diff -upr chromium-59.0.3071.86.orig/v8/src/objects/hash-table.h chromium-59.0.3071.86/v8/src/objects/hash-table.h
---- chromium-59.0.3071.86.orig/v8/src/objects/hash-table.h 2017-06-05 22:04:29.000000000 +0300
-+++ chromium-59.0.3071.86/v8/src/objects/hash-table.h 2017-06-06 14:35:41.558245559 +0300
-@@ -135,22 +135,10 @@ class HashTable : public HashTableBase {
- public:
- typedef Shape ShapeT;
-
-- // Wrapper methods
-- inline uint32_t Hash(Key key) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHash(key, GetHeap()->HashSeed());
-- } else {
-- return Shape::Hash(key);
-- }
-- }
--
-- inline uint32_t HashForObject(Key key, Object* object) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-- } else {
-- return Shape::HashForObject(key, object);
-- }
-- }
-+ // Wrapper methods. Defined in src/objects-inl.h
-+ // to break a cycle with src/heap/heap.h.
-+ inline uint32_t Hash(Key key);
-+ inline uint32_t HashForObject(Key key, Object* object);
-
- // Returns a new HashTable object.
- MUST_USE_RESULT static Handle<Derived> New(
-diff -upr chromium-59.0.3071.86.orig/v8/src/objects-body-descriptors.h chromium-59.0.3071.86/v8/src/objects-body-descriptors.h
---- chromium-59.0.3071.86.orig/v8/src/objects-body-descriptors.h 2017-06-05 22:04:29.000000000 +0300
-+++ chromium-59.0.3071.86/v8/src/objects-body-descriptors.h 2017-06-06 14:35:41.554912132 +0300
-@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public
-
- template <typename StaticVisitor>
- static inline void IterateBody(HeapObject* obj, int object_size) {
-- IterateBody(obj);
-+ IterateBody<StaticVisitor>(obj);
- }
- };
-
-diff -upr chromium-59.0.3071.86.orig/v8/src/objects-inl.h chromium-59.0.3071.86/v8/src/objects-inl.h
---- chromium-59.0.3071.86.orig/v8/src/objects-inl.h 2017-06-05 22:04:29.000000000 +0300
-+++ chromium-59.0.3071.86/v8/src/objects-inl.h 2017-06-06 14:35:41.558245559 +0300
-@@ -46,6 +46,27 @@
- namespace v8 {
- namespace internal {
-
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHash(key, GetHeap()->HashSeed());
-+ } else {
-+ return Shape::Hash(key);
-+ }
-+}
-+
-+
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
-+ Object* object) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-+ } else {
-+ return Shape::HashForObject(key, object);
-+ }
-+}
-+
-+
- PropertyDetails::PropertyDetails(Smi* smi) {
- value_ = smi->value();
- }
diff --git a/issue2961473002_1_10001.diff b/issue2961473002_1_10001.diff
deleted file mode 100644
index 7a579a6c2d05..000000000000
--- a/issue2961473002_1_10001.diff
+++ /dev/null
@@ -1,63 +0,0 @@
-Index: chrome/browser/ui/libgtkui/gtk_ui.cc
-diff --git a/chrome/browser/ui/libgtkui/gtk_ui.cc b/chrome/browser/ui/libgtkui/gtk_ui.cc
-index cef1ef060470e395ed5c13fd59e297883d2f1cb6..7df1d0c511c142cfb92ae0f722b15063f316c778 100644
---- a/chrome/browser/ui/libgtkui/gtk_ui.cc
-+++ b/chrome/browser/ui/libgtkui/gtk_ui.cc
-@@ -315,52 +315,15 @@ gfx::FontRenderParams GetGtkFontRenderParams() {
- return params;
- }
-
--float GtkDpiToScaleFactor(int dpi) {
-- // GTK multiplies the DPI by 1024 before storing it.
-- return dpi / (1024 * kDefaultDPI);
--}
--
--gint GetGdkScreenSettingInt(const char* setting_name) {
-- GValue value = G_VALUE_INIT;
-- g_value_init(&value, G_TYPE_INT);
-- if (!gdk_screen_get_setting(gdk_screen_get_default(), setting_name, &value))
-- return -1;
-- return g_value_get_int(&value);
--}
--
--float GetScaleFromGdkScreenSettings() {
-- gint window_scale = GetGdkScreenSettingInt("gdk-window-scaling-factor");
-- if (window_scale <= 0)
-- return -1;
-- gint font_dpi = GetGdkScreenSettingInt("gdk-unscaled-dpi");
-- if (font_dpi <= 0)
-- return -1;
-- return window_scale * GtkDpiToScaleFactor(font_dpi);
--}
--
--float GetScaleFromXftDPI() {
-- GtkSettings* gtk_settings = gtk_settings_get_default();
-- CHECK(gtk_settings);
-- gint gtk_dpi = -1;
-- g_object_get(gtk_settings, "gtk-xft-dpi", &gtk_dpi, nullptr);
-- if (gtk_dpi <= 0)
-- return -1;
-- return GtkDpiToScaleFactor(gtk_dpi);
--}
--
- float GetRawDeviceScaleFactor() {
- if (display::Display::HasForceDeviceScaleFactor())
- return display::Display::GetForcedDeviceScaleFactor();
-
-- float scale = GetScaleFromGdkScreenSettings();
-- if (scale > 0)
-- return scale;
--
-- scale = GetScaleFromXftDPI();
-- if (scale > 0)
-- return scale;
--
-- return 1;
-+ GdkScreen* screen = gdk_screen_get_default();
-+ gint scale = gdk_screen_get_monitor_scale_factor(
-+ screen, gdk_screen_get_primary_monitor(screen));
-+ gdouble resolution = gdk_screen_get_resolution(screen);
-+ return resolution <= 0 ? scale : resolution * scale / kDefaultDPI;
- }
-
- views::LinuxUI::NonClientMiddleClickAction GetDefaultMiddleClickAction() {