diff options
-rw-r--r-- | .SRCINFO | 23 | ||||
-rw-r--r-- | PKGBUILD | 93 | ||||
-rw-r--r-- | breakpad-use-ucontext_t.patch | 225 | ||||
-rw-r--r-- | ca40720.diff | 41 | ||||
-rw-r--r-- | chromium-atk-r1.patch | 11 | ||||
-rw-r--r-- | chromium-gcc-r1.patch | 14 | ||||
-rw-r--r-- | chromium-gn-bootstrap-r14.patch | 27 | ||||
-rw-r--r-- | chromium-gn-bootstrap-r8.patch | 13 | ||||
-rw-r--r-- | chromium-v8-gcc7.patch | 73 | ||||
-rw-r--r-- | issue2961473002_1_10001.diff | 63 |
10 files changed, 382 insertions, 201 deletions
@@ -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 @@ -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", >k_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", >k_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() { |