Merge branch 'master' into f25

This commit is contained in:
Tom Callaway 2017-07-13 10:54:19 -04:00
commit a4acd898df
4 changed files with 337 additions and 14 deletions

2
.gitignore vendored
View File

@ -23,3 +23,5 @@
/chromium-59.0.3071.86-clean.tar.xz
/chromium-59.0.3071.104-clean.tar.xz
/chromium-59.0.3071.109-clean.tar.xz
/chromium-59.0.3071.115-clean.tar.xz
/chromium-59.0.3071.109-freetype.tar.bz2

View File

@ -0,0 +1,214 @@
diff -up chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
--- chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc.ucontextfix 2017-07-12 15:23:33.019591380 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc 2017-07-12 15:32:52.069197546 -0400
@@ -36,19 +36,19 @@ namespace google_breakpad {
// Minidump defines register structures which are different from the raw
// structures which we get from the kernel. These are platform specific
-// functions to juggle the ucontext and user structures into minidump format.
+// functions to juggle the ucontext_t and user structures into minidump format.
#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(RawC
#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(RawC
#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(RawC
#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(RawC
#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 -up chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
--- chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h.ucontextfix 2017-07-12 15:33:08.486806743 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h 2017-07-12 15:33:57.299644808 -0400
@@ -39,23 +39,23 @@
namespace google_breakpad {
-// Wraps platform-dependent implementations of accessors to ucontext structs.
+// Wraps platform-dependent implementations of accessors to ucontext_t 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
+ // Juggle a arch-specific ucontext_t 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 -up chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.cc.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.cc
--- chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.cc.ucontextfix 2017-07-12 15:34:09.094364048 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.cc 2017-07-12 15:35:36.483283853 -0400
@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int
// 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) {
@@ -450,9 +450,9 @@ bool ExceptionHandler::HandleSignal(int
}
#elif !defined(__ARM_EABI__) && !defined(__mips__)
// FP state is not part of user ABI on ARM Linux.
- // In case of MIPS Linux FP state is already part of struct ucontext
+ // In case of MIPS Linux FP state is already part of ucontext_t
// 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::SimulateSignalDel
// 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 -up chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.h.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.h
--- chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.h.ucontextfix 2017-07-12 15:35:48.559996380 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/handler/exception_handler.h 2017-07-12 15:36:32.615948562 -0400
@@ -191,11 +191,11 @@ 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
- // ucontext so 'float_state' is not required.
+ // ucontext_t so 'float_state' is not required.
fpstate_t float_state;
#endif
};
diff -up chromium-59.0.3071.115/breakpad/src/client/linux/microdump_writer/microdump_writer.cc.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
--- chromium-59.0.3071.115/breakpad/src/client/linux/microdump_writer/microdump_writer.cc.ucontextfix 2017-07-12 15:37:26.232674196 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/microdump_writer/microdump_writer.cc 2017-07-12 15:37:39.032369973 -0400
@@ -579,7 +579,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 -up chromium-59.0.3071.115/breakpad/src/client/linux/minidump_writer/minidump_writer.cc.ucontextfix chromium-59.0.3071.115/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
--- chromium-59.0.3071.115/breakpad/src/client/linux/minidump_writer/minidump_writer.cc.ucontextfix 2017-07-12 15:37:54.041013246 -0400
+++ chromium-59.0.3071.115/breakpad/src/client/linux/minidump_writer/minidump_writer.cc 2017-07-12 15:38:19.600405748 -0400
@@ -1323,7 +1323,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

View File

@ -1,5 +1,10 @@
# NEVER EVER EVER turn this on in official builds
%global freeworld 0
%if %{freeworld}
%global lsuffix freeworld
%else
%global lsuffix fedora
%endif
# Leave this alone, please.
%global target out/Release
@ -109,8 +114,8 @@ BuildRequires: libicu-devel >= 5.4
%global majorversion 59
Name: chromium%{chromium_channel}
Version: %{majorversion}.0.3071.109
Release: 5%{?dist}
Version: %{majorversion}.0.3071.115
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@ -178,7 +183,9 @@ Patch37: chromium-59.0.3071.86-ffmpeg-stdatomic.patch
Patch38: chromium-59.0.3071.86-dma-buf-header-hack.patch
# Nacl can't die soon enough
Patch39: chromium-59.0.3071.86-system-clang.patch
# Change struct ucontext to ucontext_t in breakpad
# https://patchwork.openembedded.org/patch/141358/
Patch40: chromium-59.0.3071.115-ucontext-fix.patch
### Chromium Tests Patches ###
Patch100: chromium-46.0.2490.86-use_system_opus.patch
@ -213,6 +220,10 @@ Source9: chromium-browser.xml
Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
Source11: chrome-remote-desktop@.service
Source13: master_preferences
# Upstream did not include third_party/freetype source code in the tarball for 59.0.3071.115
# So we copy it from the previous build. :/
Source14: chromium-59.0.3071.109-freetype.tar.bz2
# We can assume gcc and binutils.
BuildRequires: gcc-c++
@ -472,6 +483,8 @@ Chromium is an open-source web browser, powered by WebKit (Blink).
%package libs
Summary: Shared libraries used by chromium (and chrome-remote-desktop)
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).
@ -481,6 +494,8 @@ Shared libraries used by chromium (and chrome-remote-desktop).
Summary: Chromium media libraries built with all possible codecs
Provides: chromium-libs-media = %{version}-%{release}
Provides: chromium-libs-media%{_isa} = %{version}-%{release}
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
%description libs-media-freeworld
Chromium media libraries built with all possible codecs. Chromium is an
@ -491,6 +506,8 @@ can include.
%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.
@ -532,9 +549,9 @@ members of the Chromium and WebDriver teams.
%setup -q -T -c -n %{name}-policies -a 10
%setup -q -T -c -n depot_tools -a 2
%if 0%{tests}
%setup -q -n chromium-%{version} -b 1
%setup -q -n chromium-%{version} -b 1 -a 14
%else
%setup -q -n chromium-%{version}
%setup -q -n chromium-%{version} -a 14
%endif
### Chromium Fedora Patches ###
@ -564,6 +581,7 @@ members of the Chromium and WebDriver teams.
%patch37 -p1 -b .ffmpeg-stdatomic
%patch38 -p1 -b .headerhack
%patch39 -p1 -b .system-clang
%patch40 -p1 -b .ucontextfix
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@ -1003,6 +1021,9 @@ export CHROMIUM_BROWSER_UNIT_TESTS=
%global target out/Release
%if 0%{freeworld}
../depot_tools/ninja -C %{target} -vvv media $CHROMIUM_BROWSER_UNIT_TESTS
%else
../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver widevinecdmadapter clearkeycdm policy_templates $CHROMIUM_BROWSER_UNIT_TESTS
# remote client
@ -1017,6 +1038,8 @@ GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools
%endif
popd
%endif
# Nuke nacl/pnacl bits at the end of the build
rm -rf out/Release/gen/sdk
rm -rf native_client/toolchain
@ -1024,6 +1047,15 @@ 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}
popd
%else
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{chromium_path}
cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
@ -1060,6 +1092,11 @@ cp -a natives_blob.bin %{buildroot}%{chromium_path}
cp -a snapshot_blob.bin %{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
@ -1160,6 +1197,9 @@ cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
mkdir -p %{buildroot}%{chromium_path}/PepperFlash
# freeworld conditional
%endif
%check
%if 0%{tests}
%if 0%{?tests_force_display}
@ -1494,6 +1534,52 @@ if st and st.type == "link" then
os.remove(path)
end
%post libs
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libwidevinecdm.so libwidevinecdm.so \
%{_libdir}/chromium-browser/libwidevinecdm.so.fedora 10
%preun libs
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libwidevinecdm.so \
%{_libdir}/chromium-browser/libwidevinecdm.so.fedora
fi
%if %{freeworld}
%post libs-media-freeworld
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld 5
--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 libs-media-freeworld
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld
fi
%else
%post 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
@ -1507,6 +1593,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%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
%license LICENSE
@ -1602,15 +1692,8 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%files libs
%exclude %{chromium_path}/libffmpeg.so*
%exclude %{chromium_path}/libmedia.so*
%exclude %{chromium_path}/libwidevinecdm.so
%{chromium_path}/lib*.so*
%if %{freeworld}
%files libs-media-freeworld
%else
%files libs-media
%endif
%{chromium_path}/libffmpeg.so*
%{chromium_path}/libmedia.so*
%endif
%files -n chrome-remote-desktop
@ -1641,7 +1724,30 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%{_bindir}/chromedriver
%{chromium_path}/chromedriver
%endif
%if 0%{?shared}
%if %{freeworld}
%files 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
* Wed Jul 12 2017 Tom Callaway <spot@fedoraproject.org> 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 <dominik@greysector.net> 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 <spot@fedoraproject.org> 59.0.3071.109-5
- fix path in pretrans scriptlet

View File

@ -1,3 +1,4 @@
SHA512 (chromium-59.0.3071.109-clean.tar.xz) = 7158a5b1c228c077275cf1bde79c34d9eabf607c04424df02056700703f2fd2907fc011ad658d759d7c6dd78c303f9c2983eb811cc9f9b6b424b0af615f6eaa7
SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03
SHA512 (policy_templates.zip) = a997bd5d410cf8f0f104fb5b69b60699c9e60eb3f99b42e0aff167843f3a45923a9a99c881cac9cd4472a60ca9c7d1ba897e15d485fbfd66c996419e7fadd3f8
SHA512 (chromium-59.0.3071.115-clean.tar.xz) = 001e6d9b4cae244767de7e85575d4071421d588422ca434461939e9652549bcd43c56fe0c510ab0d7d0a050e97d98f4086b8bf102dbadd7f83dc8827b9ea7ed1
SHA512 (chromium-59.0.3071.109-freetype.tar.bz2) = 62a698c0229c0eb5ed4d31efd211db70f1183f4f86558bd68a6110214b2f0a61eecdde27efcab359ecee684b3df819b37a75505c1b9ea6bec407d289d6e78a66