summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorjk2019-11-22 20:41:27 -0500
committerjk2019-11-22 20:41:27 -0500
commitd94f5e13dfca9ff5e1f61dfae19569b4e981ffaf (patch)
tree01eb42170d2ae83dcc61d7ed66b83bb02e30a1f9
downloadaur-d94f5e13dfca9ff5e1f61dfae19569b4e981ffaf.tar.gz
initial commit
-rw-r--r--.SRCINFO110
-rw-r--r--.gitignore5
-rw-r--r--PKGBUILD259
-rw-r--r--add-missing-include-for-unique_ptr.patch30
-rw-r--r--chromium-drirc-disable-10bpc-color-configs.conf15
-rw-r--r--chromium-skia-harmony.patch14
-rw-r--r--chromium-system-icu.patch20
-rw-r--r--chromium-system-zlib.patch13
-rw-r--r--chromium-widevine.patch22
-rw-r--r--dns_util-make-DohUpgradeEntry-non-const.patch86
-rw-r--r--fix-shutdown-crash-in-ProfileManager.patch45
-rw-r--r--fix-spammy-unique-font-matching-log.patch13
-rw-r--r--fix-vaapi-ozone-build.patch17
-rw-r--r--flags.archlinux.gn43
-rw-r--r--icu65.patch64
-rw-r--r--vaapi-fix.patch54
16 files changed, 810 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..44864aff8800
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,110 @@
+pkgbase = ungoogled-chromium-ozone
+ pkgdesc = A lightweight approach to removing Google web service dependency
+ pkgver = 78.0.3904.108
+ pkgrel = 1
+ url = https://ungoogled-software.github.io/
+ arch = x86_64
+ license = BSD
+ makedepends = python
+ makedepends = python2
+ makedepends = gperf
+ makedepends = yasm
+ makedepends = mesa
+ makedepends = ninja
+ makedepends = nodejs
+ makedepends = git
+ makedepends = pipewire
+ makedepends = clang
+ makedepends = lld
+ makedepends = gn
+ makedepends = jre-openjdk-headless
+ makedepends = jack
+ depends = gtk3
+ depends = nss
+ depends = alsa-lib
+ depends = xdg-utils
+ depends = libxss
+ depends = libcups
+ depends = libgcrypt
+ depends = ttf-font
+ depends = systemd
+ depends = dbus
+ depends = libpulse
+ depends = pciutils
+ depends = json-glib
+ depends = libva
+ depends = icu
+ depends = libxml2
+ depends = fontconfig
+ depends = harfbuzz
+ depends = libjpeg
+ depends = re2
+ depends = snappy
+ depends = ffmpeg
+ depends = flac
+ depends = libwebp
+ depends = minizip
+ depends = libxslt
+ depends = freetype2
+ depends = opus
+ depends = desktop-file-utils
+ depends = hicolor-icon-theme
+ depends = icu
+ depends = libxml2
+ depends = fontconfig
+ depends = harfbuzz
+ depends = libjpeg
+ depends = re2
+ depends = snappy
+ depends = ffmpeg
+ depends = flac
+ depends = libwebp
+ depends = minizip
+ depends = libxslt
+ depends = freetype2
+ depends = opus
+ optdepends = pepper-flash: support for Flash content
+ optdepends = kdialog: needed for file dialogs in KDE
+ optdepends = gnome-keyring: for storing passwords in GNOME keyring
+ optdepends = kwallet: for storing passwords in KWallet
+ optdepends = libva-intel-driver: for hardware video acceleration with old Intel GPUs
+ optdepends = intel-media-driver: for hardware video acceleration with newer Intel GPUs
+ optdepends = libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs
+ optdepends = libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs
+ provides = chromium
+ conflicts = chromium
+ source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-78.0.3904.108.tar.xz
+ source = chromium-launcher-6.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v6.tar.gz
+ source = ungoogled-chromium.zip::https://github.com/Eloston/ungoogled-chromium/archive/master.zip
+ source = flags.archlinux.gn
+ source = chromium-drirc-disable-10bpc-color-configs.conf
+ source = vaapi-fix.patch
+ source = fix-vaapi-ozone-build.patch
+ source = add-missing-include-for-unique_ptr.patch
+ source = dns_util-make-DohUpgradeEntry-non-const.patch
+ source = fix-shutdown-crash-in-ProfileManager.patch
+ source = icu65.patch
+ source = chromium-system-icu.patch
+ source = chromium-system-zlib.patch
+ source = fix-spammy-unique-font-matching-log.patch
+ source = chromium-widevine.patch
+ source = chromium-skia-harmony.patch
+ sha256sums = f9c53839f306d2973de27723360024f7904101d426b9e7e9cdb56e8bcc775b0e
+ sha256sums = 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1
+ sha256sums = SKIP
+ sha256sums = d81d95f719e7b4ed2c15ece56b0272ae969e8df871f1d8d87065db0130134912
+ sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb
+ sha256sums = 9256123898cbdd4da4a111e5aa8752d5c6c2c07e59ca8677751791dd3321f6a9
+ sha256sums = 9aebd800e5fe191cd5f4bd82c33419eefdd80919e6c6f5a3a9346a224625f094
+ sha256sums = 49052e8aa630c4aa57bf46823edc32b7b309493275163c3bb3f9fd390c73356e
+ sha256sums = 69694ab12a5ced389916c0c5e8c7bdc191544f576b134ddfb2fe9d4ed9ec4494
+ sha256sums = 4f81612c28957987f7344d8ce2b95a4a63136a8319c9751819436b11c62df057
+ sha256sums = 1de9bdbfed482295dda45c7d4e323cee55a34e42f66b892da1c1a778682b7a41
+ sha256sums = e73cc2ee8d3ea35aab18c478d76fdfc68ca4463e1e10306fa1e738c03b3f26b5
+ sha256sums = eb67eda4945a89c3b90473fa8dc20637511ca4dcb58879a8ed6bf403700ca9c8
+ sha256sums = 6fbffe59b886195b92c9a55137cef83021c16593f49714acb20023633e3ebb19
+ sha256sums = d081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b
+ sha256sums = 771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1
+
+pkgname = ungoogled-chromium-ozone
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..57fc0051bb9c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.tar.xz
+*.tar.gz
+*.zip
+pkg/
+src/
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..7e461c993420
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,259 @@
+# Maintainer: JustKidding <jk@vin.ovh>
+# Derived from PKGBUILD for chromium
+
+pkgname=ungoogled-chromium-ozone
+_pkgname=ungoogled-chromium
+pkgver=78.0.3904.108
+pkgrel=1
+_launcher_ver=6
+pkgdesc="A lightweight approach to removing Google web service dependency"
+arch=('x86_64')
+url="https://ungoogled-software.github.io/"
+license=('BSD')
+depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
+ 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva'
+ 'icu' 'libxml2' 'fontconfig' 'harfbuzz' 'libjpeg' 're2' 'snappy' 'ffmpeg' 'flac' 'libwebp' 'minizip' 'libxslt' 'freetype2' 'opus'
+ 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git'
+ 'pipewire' 'clang' 'lld' 'gn' 'jre-openjdk-headless' 'jack')
+optdepends=('pepper-flash: support for Flash content'
+ 'kdialog: needed for file dialogs in KDE'
+ 'gnome-keyring: for storing passwords in GNOME keyring'
+ 'kwallet: for storing passwords in KWallet'
+ 'libva-intel-driver: for hardware video acceleration with old Intel GPUs'
+ 'intel-media-driver: for hardware video acceleration with newer Intel GPUs'
+ 'libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs'
+ 'libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs')
+provides=('chromium')
+conflicts=('chromium')
+source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${pkgver}.tar.xz
+ chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
+ 'ungoogled-chromium.zip::https://github.com/Eloston/ungoogled-chromium/archive/master.zip'
+ flags.archlinux.gn
+ chromium-drirc-disable-10bpc-color-configs.conf
+ vaapi-fix.patch
+ fix-vaapi-ozone-build.patch
+ add-missing-include-for-unique_ptr.patch
+ dns_util-make-DohUpgradeEntry-non-const.patch
+ fix-shutdown-crash-in-ProfileManager.patch
+ icu65.patch
+ chromium-system-icu.patch
+ chromium-system-zlib.patch
+ fix-spammy-unique-font-matching-log.patch
+ chromium-widevine.patch
+ chromium-skia-harmony.patch)
+sha256sums=('f9c53839f306d2973de27723360024f7904101d426b9e7e9cdb56e8bcc775b0e'
+ '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
+ 'SKIP'
+ 'd81d95f719e7b4ed2c15ece56b0272ae969e8df871f1d8d87065db0130134912'
+ 'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb'
+ '9256123898cbdd4da4a111e5aa8752d5c6c2c07e59ca8677751791dd3321f6a9'
+ '9aebd800e5fe191cd5f4bd82c33419eefdd80919e6c6f5a3a9346a224625f094'
+ '49052e8aa630c4aa57bf46823edc32b7b309493275163c3bb3f9fd390c73356e'
+ '69694ab12a5ced389916c0c5e8c7bdc191544f576b134ddfb2fe9d4ed9ec4494'
+ '4f81612c28957987f7344d8ce2b95a4a63136a8319c9751819436b11c62df057'
+ '1de9bdbfed482295dda45c7d4e323cee55a34e42f66b892da1c1a778682b7a41'
+ 'e73cc2ee8d3ea35aab18c478d76fdfc68ca4463e1e10306fa1e738c03b3f26b5'
+ 'eb67eda4945a89c3b90473fa8dc20637511ca4dcb58879a8ed6bf403700ca9c8'
+ '6fbffe59b886195b92c9a55137cef83021c16593f49714acb20023633e3ebb19'
+ 'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b'
+ '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1')
+# 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 -gA _system_libs=(
+ [ffmpeg]=ffmpeg
+ [flac]=flac
+ [fontconfig]=fontconfig
+ [freetype]=freetype2
+ [harfbuzz-ng]=harfbuzz
+ [icu]=icu
+ [libdrm]=
+ [libjpeg]=libjpeg
+ #[libpng]=libpng # https://crbug.com/752403#c10
+ #[libvpx]=libvpx # https://github.com/webmproject/libvpx/commit/5a0242ba5c
+ [libwebp]=libwebp
+ [libxml]=libxml2
+ [libxslt]=libxslt
+ [opus]=opus
+ [re2]=re2
+ [snappy]=snappy
+ [yasm]=
+ [zlib]=minizip
+)
+_unwanted_bundled_libs=(
+ ${!_system_libs[@]}
+ ${_system_libs[libjpeg]+libjpeg_turbo}
+)
+depends+=(${_system_libs[@]})
+
+prepare() {
+ cd "$srcdir/chromium-${pkgver}"
+
+ # Allow building against system libraries in official builds
+ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+ tools/generate_shim_headers/generate_shim_headers.py
+
+ # https://crbug.com/893950
+ sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
+ third_party/blink/renderer/core/xml/*.cc \
+ third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
+ third_party/libxml/chromium/libxml_utils.cc
+
+ msg2 'Applying archlinux patches'
+
+ # Fix VA-API on Intel and Nvidia
+ patch -Np1 -i ../vaapi-fix.patch
+
+ # Fix vaapi linkage error
+ patch -Np1 -i ../fix-vaapi-ozone-build.patch
+
+ # Missing include in third_party/blink/public/platform/web_rtc_rtp_source.h
+ patch -Np1 -i ../add-missing-include-for-unique_ptr.patch
+
+ # https://crbug.com/957519#c23
+ patch -Np1 -i ../dns_util-make-DohUpgradeEntry-non-const.patch
+
+ # https://crbug.com/1005244
+ patch -Np1 -i ../fix-shutdown-crash-in-ProfileManager.patch
+
+ # https://crbug.com/1014272
+ patch -Np1 -i ../icu65.patch
+
+ # Fixes from Gentoo
+ patch -Np1 -i ../chromium-system-icu.patch
+ patch -Np1 -i ../chromium-system-zlib.patch
+
+ # https://crbug.com/1005508
+ patch -Np1 -i ../fix-spammy-unique-font-matching-log.patch
+
+ # Load Widevine CDM if available
+ #patch -Np1 -i ../chromium-widevine.patch
+
+ # https://crbug.com/skia/6663#c10
+ patch -Np0 -i ../chromium-skia-harmony.patch
+
+ # Ungoogled chromium stuff
+ _ungoogled_repo="$srcdir/$_pkgname-master"
+ _utils="${_ungoogled_repo}/utils"
+ msg2 'Applying ungoogled chromium patches'
+ # Prune binaries
+ python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
+ # Patches themselves
+ python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches"
+ # domain substitution
+ python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" -f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
+
+ # Force script incompatible with Python 3 to use /usr/bin/python2
+ sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py
+
+ mkdir -p third_party/node/linux/node-linux-x64/bin
+ ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
+
+ # Remove bundled libraries for which we will use the system copies; this
+ # *should* do what the remove_bundled_libraries.py script does, with the
+ # added benefit of not having to list all the remaining libraries
+ local _lib
+ for _lib in ${_unwanted_bundled_libs[@]}; do
+ find "third_party/$_lib" -type f \
+ \! -path "third_party/$_lib/chromium/*" \
+ \! -path "third_party/$_lib/google/*" \
+ \! -path 'third_party/yasm/run_yasm.py' \
+ \! -regex '.*\.\(gn\|gni\|isolate\)' \
+ -delete
+ done
+
+ python2 build/linux/unbundle/replace_gn_files.py \
+ --system-libraries "${!_system_libs[@]}"
+}
+
+build() {
+ make -C chromium-launcher-$_launcher_ver
+
+ cd "$srcdir/chromium-${pkgver}"
+
+ if check_buildoption ccache y; then
+ # Avoid falling back to preprocessor mode when sources contain time macros
+ export CCACHE_SLOPPINESS=time_macros
+ fi
+
+ export CC=clang
+ export CXX=clang++
+ export AR=ar
+ export NM=nm
+
+ # Ungoogled Chromium stuff
+ _ungoogled_repo="$srcdir/$_pkgname-master"
+ nproc=$(nproc)
+ mkdir -p out/Release
+ # Assemble GN flags
+ cp "$_ungoogled_repo/flags.gn" "out/Release/args.gn"
+ printf '\n' >> "out/Release/args.gn"
+ cat "$srcdir/flags.archlinux.gn" >> "out/Release/args.gn"
+
+ if check_option strip y; then
+ _flags+=('symbol_level=0')
+ fi
+
+ # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
+ CFLAGS+=' -Wno-builtin-macro-redefined'
+ CXXFLAGS+=' -Wno-builtin-macro-redefined'
+ CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
+
+ # Do not warn about unknown warning options
+ CFLAGS+=' -Wno-unknown-warning-option'
+ CXXFLAGS+=' -Wno-unknown-warning-option'
+
+ gn gen out/Release --script-executable=/usr/bin/python2
+ ninja -C out/Release chrome chrome_sandbox chromedriver
+}
+
+package() {
+ cd chromium-launcher-$_launcher_ver
+ make PREFIX=/usr DESTDIR="$pkgdir" install
+ install -Dm644 LICENSE \
+ "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
+
+ cd "$srcdir/chromium-${pkgver}"
+
+ install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
+ install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
+ ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"
+
+ install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
+ "$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
+
+ install -Dm644 chrome/installer/linux/common/desktop.template \
+ "$pkgdir/usr/share/applications/chromium.desktop"
+ install -Dm644 chrome/app/resources/manpage.1.in \
+ "$pkgdir/usr/share/man/man1/chromium.1"
+ sed -i \
+ -e "s/@@MENUNAME@@/Chromium/g" \
+ -e "s/@@PACKAGE@@/chromium/g" \
+ -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
+ "$pkgdir/usr/share/applications/chromium.desktop" \
+ "$pkgdir/usr/share/man/man1/chromium.1"
+
+ cp \
+ out/Release/{chrome_{100,200}_percent,resources}.pak \
+ out/Release/{*.bin,chromedriver} \
+ "$pkgdir/usr/lib/chromium/"
+ install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
+
+ if [[ -z ${_system_libs[icu]+set} ]]; then
+ cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/"
+ fi
+
+ for size in 24 48 64 128 256; do
+ install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
+ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+ done
+
+ for size in 16 32; do
+ install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
+ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+ done
+
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/add-missing-include-for-unique_ptr.patch b/add-missing-include-for-unique_ptr.patch
new file mode 100644
index 000000000000..113e08f4a7c6
--- /dev/null
+++ b/add-missing-include-for-unique_ptr.patch
@@ -0,0 +1,30 @@
+From bbfe2665923225b4a7c436ba2b6c7e5f695f2e52 Mon Sep 17 00:00:00 2001
+From: David Landell <landell@vewd.com>
+Date: Fri, 13 Sep 2019 12:24:13 +0000
+Subject: [PATCH] Add missing include for unique_ptr
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Change-Id: I614d2f42868d563eb6a92dfb2aae08286e20d687
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1803137
+Reviewed-by: Henrik Boström <hbos@chromium.org>
+Commit-Queue: Henrik Boström <hbos@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#696355}
+---
+ third_party/blink/public/platform/web_rtc_rtp_source.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/third_party/blink/public/platform/web_rtc_rtp_source.h b/third_party/blink/public/platform/web_rtc_rtp_source.h
+index 959440f7a5..c3fd5421aa 100644
+--- a/third_party/blink/public/platform/web_rtc_rtp_source.h
++++ b/third_party/blink/public/platform/web_rtc_rtp_source.h
+@@ -5,6 +5,8 @@
+ #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
+ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
+
++#include <memory>
++
+ #include "base/optional.h"
+ #include "third_party/blink/public/platform/web_common.h"
+
diff --git a/chromium-drirc-disable-10bpc-color-configs.conf b/chromium-drirc-disable-10bpc-color-configs.conf
new file mode 100644
index 000000000000..ef836b32222e
--- /dev/null
+++ b/chromium-drirc-disable-10bpc-color-configs.conf
@@ -0,0 +1,15 @@
+<!--
+
+Disable 10 bpc color configs; fixes VAAPI playback.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=106490
+
+-->
+
+<driconf>
+ <device>
+ <application name="Chromium" executable="chromium">
+ <option name="allow_rgb10_configs" value="false" />
+ </application>
+ </device>
+</driconf>
diff --git a/chromium-skia-harmony.patch b/chromium-skia-harmony.patch
new file mode 100644
index 000000000000..c96d07e11489
--- /dev/null
+++ b/chromium-skia-harmony.patch
@@ -0,0 +1,14 @@
+--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-07-19 11:08:34.770972665 +0000
++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-07-19 11:08:44.274442065 +0000
+@@ -128,9 +128,9 @@ public:
+ : fGetVarDesignCoordinates(nullptr)
+ , fGetVarAxisFlags(nullptr)
+ , fLibrary(nullptr)
+- , fIsLCDSupported(false)
++ , fIsLCDSupported(true)
+ , fLightHintingIsYOnly(false)
+- , fLCDExtra(0)
++ , fLCDExtra(2)
+ {
+ if (FT_New_Library(&gFTMemory, &fLibrary)) {
+ return;
diff --git a/chromium-system-icu.patch b/chromium-system-icu.patch
new file mode 100644
index 000000000000..1f848d7ee2be
--- /dev/null
+++ b/chromium-system-icu.patch
@@ -0,0 +1,20 @@
+diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
+index 4450e40..9ca36dd 100644
+--- a/build/linux/unbundle/icu.gn
++++ b/build/linux/unbundle/icu.gn
+@@ -96,6 +96,7 @@ shim_headers("icui18n_shim") {
+ "unicode/fpositer.h",
+ "unicode/gender.h",
+ "unicode/gregocal.h",
++ "unicode/listformatter.h",
+ "unicode/measfmt.h",
+ "unicode/measunit.h",
+ "unicode/measure.h",
+@@ -178,7 +179,6 @@ shim_headers("icuuc_shim") {
+ "unicode/icudataver.h",
+ "unicode/icuplug.h",
+ "unicode/idna.h",
+- "unicode/listformatter.h",
+ "unicode/localpointer.h",
+ "unicode/locdspnm.h",
+ "unicode/locid.h",
diff --git a/chromium-system-zlib.patch b/chromium-system-zlib.patch
new file mode 100644
index 000000000000..951a2adb196a
--- /dev/null
+++ b/chromium-system-zlib.patch
@@ -0,0 +1,13 @@
+diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
+index 3bc618a..e0ddf6d 100644
+--- a/third_party/perfetto/gn/BUILD.gn
++++ b/third_party/perfetto/gn/BUILD.gn
+@@ -244,7 +244,7 @@ if (enable_perfetto_trace_processor || perfetto_build_standalone ||
+ "//buildtools:zlib",
+ ]
+ } else {
+- public_configs = [ "//third_party/zlib:zlib_config" ]
++ public_configs = [ "//third_party/zlib:system_zlib" ]
+ public_deps = [
+ "//third_party/zlib",
+ ]
diff --git a/chromium-widevine.patch b/chromium-widevine.patch
new file mode 100644
index 000000000000..1a1a3f228bf5
--- /dev/null
+++ b/chromium-widevine.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-03 20:16:43.000000000 +0000
++++ chromium-71.0.3578.80/chrome/common/chrome_content_client.cc 2018-12-04 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) && !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-03 20:18:01.000000000 +0000
++++ chromium-71.0.3578.80/third_party/widevine/cdm/widevine_cdm_version.h 2018-12-04 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 "unknown"
++
+ #endif // WIDEVINE_CDM_VERSION_H_
diff --git a/dns_util-make-DohUpgradeEntry-non-const.patch b/dns_util-make-DohUpgradeEntry-non-const.patch
new file mode 100644
index 000000000000..2d655e1ab1c8
--- /dev/null
+++ b/dns_util-make-DohUpgradeEntry-non-const.patch
@@ -0,0 +1,86 @@
+From f4c3c329588b78af63aad8b401da767242b86709 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Mon, 16 Sep 2019 17:05:42 +0000
+Subject: [PATCH] dns_util: Make DohUpgradeEntry non-const when used with
+ std::vector<>
+
+This fixes the build with libstdc++ (with most other standard libraries
+other than libc++, in fact) after commit f93a48e3 ("Allow upgrade to DoH
+during automatic mode"):
+
+../../../../../../usr/bin/../lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8/bits/stl_vector.h:351:7: error: static_assert failed due to requirement 'is_same<typename remove_cv<const DohUpgradeEntry>::type, const DohUpgradeEntry>::value' "std::vector must have a non-const, non-volatile value_type"
+ static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
+ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+../../base/no_destructor.h:77:28: note: in instantiation of template class 'std::vector<const net::(anonymous namespace)::DohUpgradeEntry, std::allocator<const net::(anonymous namespace)::DohUpgradeEntry> >' requested here
+ alignas(T) char storage_[sizeof(T)];
+ ^
+../../net/dns/dns_util.cc:147:7: note: in instantiation of template class 'base::NoDestructor<std::vector<const net::(anonymous namespace)::DohUpgradeEntry, std::allocator<const net::(anonymous namespace)::DohUpgradeEntry> > >' requested here
+ upgradable_servers({
+ ^
+../../net/dns/dns_util.cc:230:36: error: invalid range expression of type 'const std::vector<const net::(anonymous namespace)::DohUpgradeEntry, std::allocator<const net::(anonymous namespace)::DohUpgradeEntry> >'; no viable 'begin' function available
+ for (const auto& upgrade_entry : upgradable_servers) {
+ ^ ~~~~~~~~~~~~~~~~~~
+
+The C++ standard forbids containers of const elements. Callers of
+GetDohUpgradeList() use it in a safe way anyway, and most of
+DohUpgradeEntry's members are const.
+
+Bug: 957519
+Change-Id: I826a51823edb1184c0fae27105101e2894efe568
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1805636
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Commit-Queue: Eric Orth <ericorth@chromium.org>
+Reviewed-by: Eric Orth <ericorth@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#696834}
+---
+ net/dns/dns_util.cc | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/net/dns/dns_util.cc b/net/dns/dns_util.cc
+index d83ff7c150..14997c48b2 100644
+--- a/net/dns/dns_util.cc
++++ b/net/dns/dns_util.cc
+@@ -139,11 +139,11 @@ struct DohUpgradeEntry {
+ const DnsConfig::DnsOverHttpsServerConfig dns_over_https_config;
+ };
+
+-const std::vector<const DohUpgradeEntry>& GetDohUpgradeList() {
++const std::vector<DohUpgradeEntry>& GetDohUpgradeList() {
+ // The provider names in these entries should be kept in sync with the
+ // DohProviderId histogram suffix list in
+ // tools/metrics/histograms/histograms.xml.
+- static const base::NoDestructor<std::vector<const DohUpgradeEntry>>
++ static const base::NoDestructor<std::vector<DohUpgradeEntry>>
+ upgradable_servers({
+ DohUpgradeEntry(
+ "CleanBrowsingAdult",
+@@ -222,8 +222,7 @@ const std::vector<const DohUpgradeEntry>& GetDohUpgradeList() {
+ std::vector<const DohUpgradeEntry*> GetDohUpgradeEntriesFromNameservers(
+ const std::vector<IPEndPoint>& dns_servers,
+ const std::vector<std::string>& excluded_providers) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers = GetDohUpgradeList();
+ std::vector<const DohUpgradeEntry*> entries;
+
+ for (const auto& server : dns_servers) {
+@@ -417,8 +416,7 @@ std::vector<DnsConfig::DnsOverHttpsServerConfig>
+ GetDohUpgradeServersFromDotHostname(
+ const std::string& dot_server,
+ const std::vector<std::string>& excluded_providers) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers = GetDohUpgradeList();
+ std::vector<DnsConfig::DnsOverHttpsServerConfig> doh_servers;
+
+ if (dot_server.empty())
+@@ -451,8 +449,7 @@ GetDohUpgradeServersFromNameservers(
+
+ std::string GetDohProviderIdForHistogramFromDohConfig(
+ const DnsConfig::DnsOverHttpsServerConfig& doh_server) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers = GetDohUpgradeList();
+ for (const auto& upgrade_entry : upgradable_servers) {
+ if (doh_server.server_template ==
+ upgrade_entry.dns_over_https_config.server_template) {
diff --git a/fix-shutdown-crash-in-ProfileManager.patch b/fix-shutdown-crash-in-ProfileManager.patch
new file mode 100644
index 000000000000..01074eca5325
--- /dev/null
+++ b/fix-shutdown-crash-in-ProfileManager.patch
@@ -0,0 +1,45 @@
+From e73aed9a5ef15102f29ac31b70290faf5c90f9fe Mon Sep 17 00:00:00 2001
+From: Evan Stade <estade@chromium.org>
+Date: Wed, 16 Oct 2019 16:01:32 +0000
+Subject: [PATCH] Fix shutdown crash in ProfileManager.
+
+OnProfileMarkedForPermanentDeletion should move from
+ProfileManagerObserver to ProfileObserver, which would also
+fix this bug. However, changing the order of members is the
+quickest and most cherry-pick-able way to avoid the crash.
+
+Bug: 1005244
+Change-Id: If2db68c846dd418cd02864b57b9b543687fa1e03
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863518
+Auto-Submit: Evan Stade <estade@chromium.org>
+Reviewed-by: David Roger <droger@chromium.org>
+Commit-Queue: Evan Stade <estade@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#706467}
+---
+ chrome/browser/profiles/profile_manager.h | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h
+index b60df76d59..7d02af7f8f 100644
+--- a/chrome/browser/profiles/profile_manager.h
++++ b/chrome/browser/profiles/profile_manager.h
+@@ -410,6 +410,10 @@ class ProfileManager : public content::NotificationObserver,
+ const base::FilePath& profile_dir);
+ #endif // !defined(OS_ANDROID)
+
++ // Destroy after |profile_info_cache_| since Profile destruction may trigger
++ // some observers to unregister themselves.
++ base::ObserverList<ProfileManagerObserver> observers_;
++
+ // Object to cache various information about profiles. Contains information
+ // about every profile which has been created for this instance of Chrome,
+ // if it has not been explicitly deleted. It must be destroyed after
+@@ -451,8 +455,6 @@ class ProfileManager : public content::NotificationObserver,
+ // Controls whether to initialize some services. Only disabled for testing.
+ bool do_final_services_init_ = true;
+
+- base::ObserverList<ProfileManagerObserver> observers_;
+-
+ // TODO(chrome/browser/profiles/OWNERS): Usage of this in profile_manager.cc
+ // should likely be turned into DCHECK_CURRENTLY_ON(BrowserThread::UI) for
+ // consistency with surrounding code in the same file but that wasn't trivial
diff --git a/fix-spammy-unique-font-matching-log.patch b/fix-spammy-unique-font-matching-log.patch
new file mode 100644
index 000000000000..9321a98a7254
--- /dev/null
+++ b/fix-spammy-unique-font-matching-log.patch
@@ -0,0 +1,13 @@
+diff --git a/content/child/child_process_sandbox_support_impl_linux.cc b/content/child/child_process_sandbox_support_impl_linux.cc
+index 0a57543eb5..fe2ee491a2 100644
+--- a/content/child/child_process_sandbox_support_impl_linux.cc
++++ b/content/child/child_process_sandbox_support_impl_linux.cc
+@@ -78,8 +78,6 @@ void WebSandboxSupportLinux::MatchFontByPostscriptNameOrFullFontName(
+ std::string family_name;
+ if (!font_loader_->MatchFontByPostscriptNameOrFullFontName(font_unique_name,
+ &font_identity)) {
+- LOG(ERROR) << "FontService unique font name matching request did not "
+- "receive a response.";
+ return;
+ }
+
diff --git a/fix-vaapi-ozone-build.patch b/fix-vaapi-ozone-build.patch
new file mode 100644
index 000000000000..cc7c005ae82f
--- /dev/null
+++ b/fix-vaapi-ozone-build.patch
@@ -0,0 +1,17 @@
+--- a/media/gpu/vaapi/BUILD.gn
++++ b/media/gpu/vaapi/BUILD.gn
+@@ -128,12 +128,12 @@ source_set("vaapi") {
+ ]
+ }
+
+- if (ozone_platform_gbm || use_egl) {
++ if (ozone_platform_wayland || ozone_platform_gbm || use_egl) {
+ sources += [
+ "vaapi_picture_native_pixmap.cc",
+ "vaapi_picture_native_pixmap.h",
+ ]
+- if (ozone_platform_gbm) {
++ if (ozone_platform_wayland || ozone_platform_gbm) {
+ sources += [
+ "vaapi_picture_native_pixmap_ozone.cc",
+ "vaapi_picture_native_pixmap_ozone.h",
diff --git a/flags.archlinux.gn b/flags.archlinux.gn
new file mode 100644
index 000000000000..87539f6987b2
--- /dev/null
+++ b/flags.archlinux.gn
@@ -0,0 +1,43 @@
+blink_symbol_level=0
+custom_toolchain="//build/toolchain/linux/unbundle:default"
+enable_ac3_eac3_audio_demuxing=true
+enable_iterator_debugging=false
+fatal_linker_warnings=false
+ffmpeg_branding="Chrome"
+gold_path=""
+goma_dir=""
+is_official_build=true
+host_toolchain="//build/toolchain/linux/unbundle:default"
+is_clang=true
+jumbo_file_merge_limit=8
+link_pulseaudio=true
+linux_use_bundled_binutils=false
+proprietary_codecs=true
+symbol_level=0
+use_cups=true
+use_custom_libcxx=false
+use_gio=true
+use_gnome_keyring=false
+use_jumbo_build=true
+use_kerberos=false
+use_libjpeg_turbo=true
+use_lld=true
+use_openh264=false
+use_pulseaudio=true
+use_sysroot=false
+use_system_freetype=true
+use_system_harfbuzz=true
+use_system_lcms2=true
+use_system_libjpeg=true
+use_system_libopenjpeg2=true
+use_system_zlib=true
+use_vaapi=true
+enable_swiftshader=false
+use_ozone=true
+ozone_platform_wayland=true
+ozone_platform_x11=true
+ozone_auto_platforms=false
+use_xkbcommon=true
+use_system_libwayland=true
+use_system_minigbm=true
+use_system_libdrm=true
diff --git a/icu65.patch b/icu65.patch
new file mode 100644
index 000000000000..811d56286a98
--- /dev/null
+++ b/icu65.patch
@@ -0,0 +1,64 @@
+From 5679c3c191ed62b62d8db22f1657a296ee9bfe8e Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang@chromium.org>
+Date: Wed, 30 Oct 2019 22:49:47 +0000
+Subject: [PATCH] Update ICU to 65.1 from 64 and fix broken tests
+
+ICU 65-1 release note
+http://site.icu-project.org/download/65
+
+CLDR 36 release blog
+http://blog.unicode.org/2019/10/unicode-cldr-version-36-languagelocale.html
+
+Most of the test expectation change is due to CLDR 36 update
+of Grapheme Cluster for Indic languages
+See the following for related changes in ICU 65.1 in this area:
+https://unicode-org.atlassian.net/browse/CLDR-10994
+https://unicode-org.atlassian.net/browse/ICU-13637
+https://github.com/unicode-org/cldr/blob/master/common/properties/segments/readme.txt
+
+Bug: chromium:1014272, chromium:1017047
+Change-Id: I9fc6d4620bf2a4c189940d06d8c79893502db3dd
+Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng_disabled
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1866059
+Reviewed-by: Jungshik Shin <jshin@chromium.org>
+Reviewed-by: Doug Turner <dougt@chromium.org>
+Reviewed-by: Michael Wasserman <msw@chromium.org>
+Reviewed-by: Kent Tamura <tkent@chromium.org>
+Reviewed-by: Trent Apted <tapted@chromium.org>
+Reviewed-by: Mason Freed <masonfreed@chromium.org>
+Commit-Queue: Frank Tang <ftang@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#711027}
+---
+ third_party/blink/renderer/core/dom/document.cc | 2 +-
+ ui/gfx/render_text_harfbuzz.cc | 5 ++++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
+index 511aac29086..f188cf548a6 100644
+--- a/third_party/blink/renderer/core/dom/document.cc
++++ b/third_party/blink/renderer/core/dom/document.cc
+@@ -6191,7 +6191,7 @@ static ParseQualifiedNameResult ParseQualifiedNameInternal(
+
+ for (unsigned i = 0; i < length;) {
+ UChar32 c;
+- U16_NEXT(characters, i, length, c)
++ U16_NEXT(characters, i, length, c);
+ if (c == ':') {
+ if (saw_colon)
+ return ParseQualifiedNameResult(kQNMultipleColons);
+diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc
+index 50e86af6b97..0339ff3ff8e 100644
+--- a/ui/gfx/render_text_harfbuzz.cc
++++ b/ui/gfx/render_text_harfbuzz.cc
+@@ -971,7 +971,10 @@ RangeF TextRunHarfBuzz::GetGraphemeBounds(RenderTextHarfBuzz* render_text,
+ ++total;
+ }
+ }
+- DCHECK_GT(total, 0);
++ // With ICU 65.1, DCHECK_GT() below fails.
++ // See https://crbug.com/1017047 for more details.
++ //
++ // DCHECK_GT(total, 0);
+
+ // It's possible for |text_index| to point to a diacritical mark, at the end
+ // of |chars|. In this case all the grapheme boundaries come before it. Just
diff --git a/vaapi-fix.patch b/vaapi-fix.patch
new file mode 100644
index 000000000000..a1343731dcaf
--- /dev/null
+++ b/vaapi-fix.patch
@@ -0,0 +1,54 @@
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+@@ -635,6 +635,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+ // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
+ // internal decoded frame.
+ if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
++ buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau &&
+ !vpp_vaapi_wrapper_) {
+ vpp_vaapi_wrapper_ = VaapiWrapper::Create(
+ VaapiWrapper::kVideoProcess, VAProfileNone,
+@@ -650,7 +651,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
+ // only used as a copy destination. Therefore, the VaapiWrapper used and
+ // owned by |picture| is |vpp_vaapi_wrapper_|.
+ std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
+- (buffer_allocation_mode_ == BufferAllocationMode::kNone)
++ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
++ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
+ ? vaapi_wrapper_
+ : vpp_vaapi_wrapper_,
+ make_context_current_cb_, bind_image_cb_, buffers[i]);
+@@ -1077,6 +1079,14 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
+
+ VaapiVideoDecodeAccelerator::BufferAllocationMode
+ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
++ // NVIDIA blobs use VDPAU
++ if (base::StartsWith(VaapiWrapper::GetVendorStringForTesting(),
++ "Splitted-Desktop Systems VDPAU",
++ base::CompareCase::SENSITIVE)) {
++ LOG(INFO) << "VA-API driver on VDPAU backend";
++ return BufferAllocationMode::kWrapVdpau;
++ }
++
+ // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
+ // |output_mode_| as well.
+ if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
+@@ -1089,7 +1099,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+ // depends on the bitstream and sometimes it's not enough to cover the amount
+ // of frames needed by the client pipeline (see b/133733739).
+ // TODO(crbug.com/911754): Enable for VP9 Profile 2.
+- if (IsGeminiLakeOrLater() &&
++ if (false && IsGeminiLakeOrLater() &&
+ (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
+ // Add one to the reference frames for the one being currently egressed, and
+ // an extra allocation for both |client_| and |decoder_|, see
+--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
+ // Using |client_|s provided PictureBuffers and as many internally
+ // allocated.
+ kNormal,
++ kWrapVdpau,
+ };
+
+ // Decides the concrete buffer allocation mode, depending on the hardware