From 1a6c1821d64b9bb84dfe9246fd0dee9e41c4b69e Mon Sep 17 00:00:00 2001
From: Chris Xiong <chirs241097@gmail.com>
Date: Sat, 10 May 2025 09:12:33 -0400
Subject: chromium 138.0.7166.2?

---
 www-client/chromium/Manifest                       |    7 +-
 www-client/chromium/chromium-137.0.7106.2.ebuild   | 1291 -------------------
 www-client/chromium/chromium-138.0.7166.2.ebuild   | 1293 ++++++++++++++++++++
 .../chromium/files/chromium-138-compiler.patch     |  444 +++++++
 .../chromium-138-gn-exec_script_allowlist.patch    |   52 +
 .../files/chromium-138-mv2-ungoogled.patch         |  163 +++
 6 files changed, 1957 insertions(+), 1293 deletions(-)
 delete mode 100644 www-client/chromium/chromium-137.0.7106.2.ebuild
 create mode 100644 www-client/chromium/chromium-138.0.7166.2.ebuild
 create mode 100644 www-client/chromium/files/chromium-138-compiler.patch
 create mode 100644 www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch
 create mode 100644 www-client/chromium/files/chromium-138-mv2-ungoogled.patch

diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index a9f3e58..2995369 100644
--- a/www-client/chromium/Manifest
+++ b/www-client/chromium/Manifest
@@ -35,14 +35,17 @@ AUX chromium-137-gn-exec_script_allowlist.patch 2328 BLAKE2B 6b575d1886f839c27eb
 AUX chromium-137-mv2-ungoogled-r1.patch 8715 BLAKE2B eabfeccb1b3536d1500d2ea0f5628727be85a4a4a9452a2f18ef52d34668e3f4b3b6c2964b8b60f2e06f6c0560fc1873eb326ecb86146796a9a05bc40bdc3f46 SHA512 4bce5dd230d25c76530f71b0440341cf7edf3802ffac90f1ffd7380718c261da805853a6f930e91fc11ad64c07d1f407ab55c6cbbe6bb3b7422d7a9c46a545c4
 AUX chromium-137-mv2-ungoogled.patch 8708 BLAKE2B a7c664c5b5789aa87a02b135a54365c28b4e23fa3299a8375e4d7d94b4414d6a5e4884d86df4f425efbbfe70f7ecdfbdd8937b12e9bc85e52b425b6e0a1d2ceb SHA512 427f9af6ffba70aab476389159672a0b19e328b1b67f38237ac4f13514b493741e07a3db830cdc90ea46ce355fcd9e1117bf45edc5c6214adc8d4b0b503056d1
 AUX chromium-137-pdfium-png-decoder-fieldname.patch 862 BLAKE2B a1cb42d7fc6e39bde7e6685533f3074731ba28439faaf9e6457b72b3ffa387274f0f4351bf006081ebfbf574353c2036b9a6467f509707d1a122fea9a540529c SHA512 e9419b1f5caf539c5bf54ec55c3a07edc3eaed0d71140b4f23a168602695902c8b8a6405de8052721ad11a2def4dca74252e9265da531eb9e5b71465c3cd8d79
+AUX chromium-138-compiler.patch 17184 BLAKE2B 0b0202513d87aa2883611993afcb23cdc57715cf023328c7b2a89cffb394932fe6973984729efc0d74d08ab74c90cd0e6fa0a432ef0f9cf802aeda7a375a9cb9 SHA512 ae0783097a9658180c8ae70fec2fdf8ac9f497e98014b35a473a8b2ceb6e702a2794916539f13033cb544b34b07bf2307d66f08d6a6bbac90c3024a118eb18fc
+AUX chromium-138-gn-exec_script_allowlist.patch 1828 BLAKE2B 9717369b1e89321d06c94757bab5e281b06d8f711f418c33cf68d1d6c2027b2743bd92d1aee97747546030902359766352fa06793b45485b5a1ba30fb7898436 SHA512 dc117e296daa8a02252450078c5aa25cb8dd447a61fe06b2f430708c69f8e429be99ba808f36464e57f8be0b5855be4c83d9e576a9e2d4282fc8bce213787b2d
+AUX chromium-138-mv2-ungoogled.patch 7303 BLAKE2B 089429a5749d8a3cb071fbe48a35f6a709cf75465a6a3dbd2e72203af71bca8bfc4d3d81b441640089e50d7a0208de579fff32ea937b9cab7e0d6aafc92d57b1 SHA512 1721744dab5827ce9482faceed4eec40a198253e34250d3f3fc994bd287d096450585dd9712f1e4347e591c4873de10d6e6c53c225a2ca21c9c2c47f92820f3f
 AUX chromium-browser.xml 407 BLAKE2B 168d78b0855546ca559cfb51aff0bc85d5e6ae974c25eb76e4a02f6d11659489c6e40397a0b2f7bc1fda336fd2c6dd8c863fccc3340719210b41c7fef51927f4 SHA512 b767fb4fd1925029d95560fc14cb7ab12ae43b2fe923e92d75e733b9723cbe1dcdf6df041a2b62554e98b79b47ef3f6028c773e72e6fd53166a021d49657aeca
 AUX chromium-cross-compile.patch 323 BLAKE2B 8d5091ce5287422c9688ede2563360a96b8bd34b9750dc1c8f0b6ca9aeff2c066fac2da169396baa131d971c087c78f9af53999df0e102d1f57176f5e8d3dd57 SHA512 06d3afc1aa19e57daac0e4bad37e1f365a68408240430e5e818e5a4f12e3b7519214eafa463633e447e7029f4ae13ea864ca347ad1fac117702a0be88718a954
 AUX chromium-launcher-r7.sh 1631 BLAKE2B ae28d758264446511fd2b64ba69fe920144b351e8833e0e98f43d00633e850094c288b5d97d1a84801ea13aceb294623692c86c1b9be5811b7b97fa8a07a1ecd SHA512 1e97f8394bd8bb4b29570b1b85176efe6258314a596f079bee1c4018113e0023aa54a93690ba8de2a00d127af10dbe2cc3fb3127b72b841c6f28f9e7bed820e0
 AUX chromium-shim_headers.patch 1510 BLAKE2B 9716cd250b249c6255aca01a385ef8a2a6f1df9ea3cf7499715543c14f8be62fd323b6048b890aa2be45891e7a765d92de3f41c3b3a88c08dae4b806c048e20f SHA512 c74bcf690a41b4f9b364477d23408d493aa674e3bd014940098a594471297c2a425241f908510061b5f11c9cfe009c4a803370edd757d3c0ab8d9c0cc128135c
 AUX chromium-use-oauth2-client-switches-as-default.patch 1085 BLAKE2B baf3c463305934c126af4f7c5be305863edc7eec3add5b5ada30565b49b5944021eb40f1a9643e7eec3f973c502d9b02426f00b760570fcea5f1509219e41c6f SHA512 fe2878ee45778bac894ea17a668511d27ad2ca40988d5f11439790b700bfefd6560f3931415b4e6c543fcbbfc7cfef55cc757ed4ace1d111039ae78c46b81945
 AUX chromium.default 148 BLAKE2B 5ee5b582c59a6e4bef87bbb0e232e2470ad412b1fbbb3b9af6ef7153edb55c5b9080cc16a5a115b0c5b3c381aa87ce57a7b12bdd2070e67dac10a6c2995ddbaf SHA512 0d4849e03592fb58b05e62a43021eca7e61615616c8907c3b2e445402e03adaf9e8fa25b0a745d6c31eb037456215cc02b59e345a3a06d932e76cf990c92d739
-DIST chromium-137.0.7106.2.tar.xz 7083460752 BLAKE2B 9b952e86bfa2bd3cc70b6b104d922cf85db446366ff1fa09d64d95686c744d0aeaaba1d1939795b10a9fef6ca137aab0281fb25c76b974426140974f2a4cd5b7 SHA512 5c2b6b64f1504c07eb275928784c2975550967bf634042652ff941e20a35dbb97a6b3e57e37d0b2b5f251e5015011abfcf13e69005ea82025a425452124a1f64
 DIST chromium-137.0.7141.3.tar.xz 7162471108 BLAKE2B da7a7c414034eb8335d76591c64d12bd09d8b50e2a5c6f6cccffe0b0f749bcb0aacbc247855969e41763558064266abaf37c794ea9c5c0df84c8a422eb1c8f9a SHA512 1594b1197d134e14f99c0c9a8dcc17ea29f9dce00a7858cfb62f54d13a9994f95e3d2b0ee6776213dbdff164fabe9fa8e4abe620036c048a9653b3ef8a1d052f
+DIST chromium-138.0.7166.2.tar.xz 7094031476 BLAKE2B 85e5e92175618bc6d21691e1493971dedc0d765d92ad3cdfafc0cc7f65c4b25d39f0016ffd7fcee64bf417919ae79238b7994a7069269ec4bccf4c73fb5e4874 SHA512 ea2ec10ad536056019b4d9f94393feb46f39a4890d7ed20be2d83db75421090056986b1885c288b02300fa3137cd3bb1e6960790aec0dd4eaf70d186fda9780a
 DIST chromium-profiler-0.2.tar 259952640 BLAKE2B 5e82389fce00b267280d633b26551231c558b80f0c92cd7d60271095a3503365ab673e7a46dc5f74f8a82db1f21262cb24dcc0531d954bab5fb3b175dab3394d SHA512 9fa89a5ab728419683e7495ae676567480987d68a2d589f2aa97bfcbcf123f3c8f97f8bca5f65e5e3f6e41475535add473ded83b9c7a33bb4746a9d05b298a6c
-EBUILD chromium-137.0.7106.2.ebuild 40550 BLAKE2B 5e1ae7f847e457c1796ee21d0bd03e65e775bde8747b59ab224651d315221913a1631325a22ebde7af3f768a1781595bca6ea0449d0afbbe6c7d452f2608cd86 SHA512 aa9e9b276069e298fbe5049d098527465ec9ab0989717cb942a07f0c88002ec4ac0dc0d3584a28d383ab0541d965f7567e1efea4a441f6422cc28a8d7c9f376b
 EBUILD chromium-137.0.7141.3.ebuild 40646 BLAKE2B 2d013ab5664af5a03dfad65e9a910ef7ff6e17bd2cf3df4ab002e9a24f695377817cec303d967f5a4a28ca85b75437fea20ace469cc4b72eafdb624aafe86827 SHA512 c16c3630fdac558008f93dc1e1f024f72487e508d1b498f9dde4d4843608605f68fe79528f35575362dc508f3848df463be4ac1677be26b1af263f093d99b48d
+EBUILD chromium-138.0.7166.2.ebuild 40640 BLAKE2B d316048c4bf1c89874dd1804cc370a8eec2ddc321cd5278f4ce4b0804d7361449f947aa1b0c6cf833d51535559099c47f30142031f4aad4cb59bf0f60dce7287 SHA512 9e38e0f647696d1e98bd485613ca1f3fd642d59e74e437c7c6dfa6df07f0de1061c2ed35cefe8d2c3f59f5af8f6d247752e055b53279f63af17ccbc9178a8a13
diff --git a/www-client/chromium/chromium-137.0.7106.2.ebuild b/www-client/chromium/chromium-137.0.7106.2.ebuild
deleted file mode 100644
index dc54630..0000000
--- a/www-client/chromium/chromium-137.0.7106.2.ebuild
+++ /dev/null
@@ -1,1291 +0,0 @@
-# Copyright 2009-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-PYTHON_COMPAT=( python3_{9..12} )
-PYTHON_REQ_USE="xml(+)"
-LLVM_COMPAT=( 19 )
-RUST_MIN_VER=1.78.0
-RUST_NEEDS_LLVM="yes please"
-
-CHROMIUM_LANGS="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
-	hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr
-	sv sw ta te th tr uk ur vi zh-CN zh-TW"
-
-VIRTUALX_REQUIRED="pgo"
-
-inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 ninja-utils pax-utils
-inherit python-any-r1 qmake-utils readme.gentoo-r1 rust toolchain-funcs virtualx xdg-utils
-
-DESCRIPTION="Open-source version of Google Chrome web browser"
-HOMEPAGE="https://chromium.org/"
-SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
-	pgo? ( https://github.com/elkablo/chromium-profiler/releases/download/v0.2/chromium-profiler-0.2.tar )"
-
-LICENSE="BSD"
-SLOT="0/dev"
-KEYWORDS="~amd64 ~arm64"
-IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless kerberos libcxx lto +official pgo pic +proprietary-codecs pulseaudio qt5 screencast selinux +suid +system-av1 +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine"
-REQUIRED_USE="
-	component-build? ( !suid !libcxx )
-	screencast? ( wayland )
-	!headless? ( || ( X wayland ) )
-	pgo? ( X !wayland )
-"
-
-COMMON_X_DEPEND="
-	x11-libs/libXcomposite:=
-	x11-libs/libXcursor:=
-	x11-libs/libXdamage:=
-	x11-libs/libXfixes:=
-	>=x11-libs/libXi-1.6.0:=
-	x11-libs/libXrandr:=
-	x11-libs/libXrender:=
-	x11-libs/libXtst:=
-	x11-libs/libxshmfence:=
-"
-
-COMMON_SNAPSHOT_DEPEND="
-	system-icu? ( >=dev-libs/icu-71.1:= )
-	>=dev-libs/libxml2-2.9.4-r3:=[icu]
-	dev-libs/nspr:=
-	>=dev-libs/nss-3.26:=
-	!libcxx? ( >=dev-libs/re2-0.2019.08.01:= )
-	dev-libs/libxslt:=
-	media-libs/fontconfig:=
-	>=media-libs/freetype-2.11.0-r1:=
-	system-harfbuzz? ( >=media-libs/harfbuzz-3:0=[icu(-)] )
-	media-libs/libjpeg-turbo:=
-	system-png? ( media-libs/libpng:=[-apng(-)] )
-	>=media-libs/libwebp-0.4.0:=
-	media-libs/mesa:=[gbm(+)]
-	>=media-libs/openh264-1.6.0:=
-	system-av1? (
-		>=media-libs/dav1d-1.0.0:=
-		>=media-libs/libaom-3.4.0:=
-	)
-	sys-libs/zlib:=
-	!headless? (
-		dev-libs/glib:2
-		>=media-libs/alsa-lib-1.0.19:=
-		pulseaudio? ( media-sound/pulseaudio:= )
-		sys-apps/pciutils:=
-		kerberos? ( virtual/krb5 )
-		vaapi? ( >=media-libs/libva-2.7:=[X?,wayland?] )
-		X? (
-			x11-libs/libX11:=
-			x11-libs/libXext:=
-			x11-libs/libxcb:=
-		)
-		x11-libs/libxkbcommon:=
-		wayland? (
-			dev-libs/libffi:=
-			screencast? ( media-video/pipewire:= )
-		)
-	)
-"
-
-COMMON_DEPEND="
-	${COMMON_SNAPSHOT_DEPEND}
-	app-arch/bzip2:=
-	dev-libs/expat:=
-	system-ffmpeg? (
-		>=media-video/ffmpeg-4.3:=
-		|| (
-			media-video/ffmpeg[-samba]
-			>=net-fs/samba-4.5.10-r1[-debug(-)]
-		)
-		>=media-libs/opus-1.3.1:=
-	)
-	net-misc/curl[ssl]
-	sys-apps/dbus:=
-	media-libs/flac:=
-	sys-libs/zlib:=[minizip]
-	!headless? (
-		X? ( ${COMMON_X_DEPEND} )
-		>=app-accessibility/at-spi2-core-2.46.0:2
-		media-libs/mesa:=[X?,wayland?]
-		cups? ( >=net-print/cups-1.3.11:= )
-		virtual/udev
-		x11-libs/cairo:=
-		x11-libs/gdk-pixbuf:2
-		x11-libs/pango:=
-		qt5? (
-			dev-qt/qtcore:5
-			dev-qt/qtwidgets:5
-		)
-	)
-"
-RDEPEND="${COMMON_DEPEND}
-	!headless? (
-		|| (
-			x11-libs/gtk+:3[X?,wayland?]
-			gui-libs/gtk:4[X?,wayland?]
-		)
-		qt5? ( dev-qt/qtgui:5[X?,wayland?] )
-	)
-	virtual/ttf-fonts
-	selinux? ( sec-policy/selinux-chromium )
-"
-DEPEND="${COMMON_DEPEND}
-	!headless? (
-		gtk4? ( gui-libs/gtk:4[X?,wayland?] )
-		!gtk4? ( x11-libs/gtk+:3[X?,wayland?] )
-	)
-"
-
-depend_clang_llvm_version() {
-	echo "llvm-core/clang:$1"
-	echo "llvm-core/llvm:$1"
-	echo "=llvm-core/lld-$1*"
-}
-
-depend_clang_llvm_versions() {
-	local _v
-	if [[ $# -gt 1 ]]; then
-		echo "|| ("
-		for _v in "$@"; do
-			echo "("
-			depend_clang_llvm_version "${_v}"
-			echo ")"
-		done
-		echo ")"
-	elif [[ $# -eq 1 ]]; then
-		depend_clang_llvm_version "$1"
-	fi
-}
-
-BDEPEND="
-	${COMMON_SNAPSHOT_DEPEND}
-	${PYTHON_DEPS}
-	$(python_gen_any_dep '
-		dev-python/setuptools[${PYTHON_USEDEP}]
-	')
-	>=app-arch/gzip-1.7
-	!headless? (
-		qt5? ( dev-qt/qtcore:5 )
-	)
-	libcxx? ( >=llvm-core/clang-13 )
-	lto? ( $(depend_clang_llvm_versions 19) )
-	pgo? (
-		>=dev-python/selenium-3.141.0
-		>=dev-util/web_page_replay_go-20220314
-		$(depend_clang_llvm_versions 19)
-	)
-	dev-util/bindgen
-	dev-lang/perl
-	>=dev-build/gn-0.2122
-	>=dev-util/gperf-3.0.3
-	>=dev-build/ninja-1.7.2
-	dev-vcs/git
-	>=net-libs/nodejs-7.6.0[inspector]
-	>=sys-devel/bison-2.4.3
-	sys-devel/flex
-	virtual/pkgconfig
-"
-
-# These are intended for ebuild maintainer use to force clang if GCC is broken.
-: ${CHROMIUM_FORCE_CLANG=yes}
-
-if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then
-	BDEPEND+=" >=llvm-core/clang-13"
-fi
-
-if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then
-	EBUILD_DEATH_HOOKS+=" chromium_pkg_die";
-fi
-
-DISABLE_AUTOFORMATTING="yes"
-DOC_CONTENTS="
-Some web pages may require additional fonts to display properly.
-Try installing some of the following packages if some characters
-are not displayed properly:
-- media-fonts/arphicfonts
-- media-fonts/droid
-- media-fonts/ipamonafont
-- media-fonts/noto
-- media-fonts/ja-ipafonts
-- media-fonts/takao-fonts
-- media-fonts/wqy-microhei
-- media-fonts/wqy-zenhei
-
-To fix broken icons on the Downloads page, you should install an icon
-theme that covers the appropriate MIME types, and configure this as your
-GTK+ icon theme.
-
-For native file dialogs in KDE, install kde-apps/kdialog.
-
-To make password storage work with your desktop environment you may
-have install one of the supported credentials management applications:
-- app-crypt/libsecret (GNOME)
-- kde-frameworks/kwallet (KDE)
-If you have one of above packages installed, but don't want to use
-them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS
-in /etc/chromium/default.
-"
-
-python_check_deps() {
-	python_has_version "dev-python/setuptools[${PYTHON_USEDEP}]"
-}
-
-needs_clang() {
-	[[ ${CHROMIUM_FORCE_CLANG} == yes ]] || use libcxx || use lto || use pgo
-}
-
-llvm_check_deps() {
-	if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
-		einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
-		return 1
-	fi
-
-	if ( use lto || use pgo ) && ! has_version -b "=llvm-core/lld-${LLVM_SLOT}*" ; then
-		einfo "=llvm-core/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
-		return 1
-	fi
-
-	einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
-}
-
-pre_build_checks() {
-	if [[ ${MERGE_TYPE} != binary ]]; then
-		[[ ${EBUILD_PHASE_FUNC} == pkg_setup ]] && ( use lto || use pgo ) && llvm-r1_pkg_setup
-
-		local -x CPP="$(tc-getCXX) -E"
-		if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 10.4; then
-			die "At least gcc 10.4 is required"
-		fi
-		if use pgo && tc-is-cross-compiler; then
-			die "The pgo USE flag cannot be used when cross-compiling"
-		fi
-		if needs_clang || tc-is-clang; then
-			tc-is-cross-compiler && CPP=${CBUILD}-clang++ || CPP=${CHOST}-clang++
-			CPP+=" -E"
-		fi
-	fi
-
-	# Check build requirements, bug #541816 and bug #471810 .
-	CHECKREQS_MEMORY="4G"
-	CHECKREQS_DISK_BUILD="12G"
-	tc-is-cross-compiler && CHECKREQS_DISK_BUILD="14G"
-	if use lto || use pgo; then
-		CHECKREQS_MEMORY="9G"
-		CHECKREQS_DISK_BUILD="13G"
-		tc-is-cross-compiler && CHECKREQS_DISK_BUILD="16G"
-		use pgo && CHECKREQS_DISK_BUILD="20G"
-	fi
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		if use custom-cflags || use component-build; then
-			CHECKREQS_DISK_BUILD="25G"
-		fi
-		if ! use component-build; then
-			CHECKREQS_MEMORY="16G"
-		fi
-	fi
-	check-reqs_${EBUILD_PHASE_FUNC}
-}
-
-pkg_pretend() {
-	pre_build_checks
-
-	if use headless; then
-		local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt5" "vaapi" "wayland")
-		for myiuse in ${headless_unused_flags[@]}; do
-			use ${myiuse} && ewarn "Ignoring USE=${myiuse} since USE=headless is set."
-		done
-	fi
-}
-
-pkg_setup() {
-	pre_build_checks
-
-	chromium_suid_sandbox_check_kernel_config
-
-	# nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams
-	if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then
-		ewarn "Proprietary nVidia driver does not work with Wayland. You can disable"
-		ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default."
-	fi
-
-	llvm-r1_pkg_setup
-	rust_pkg_setup
-}
-
-src_prepare() {
-	# Calling this here supports resumption via FEATURES=keepwork
-	python_setup
-
-	local PATCHES=(
-		"${FILESDIR}/chromium-135-protobuf-RepeatedPtrField-export.patch"
-		"${FILESDIR}/chromium-137-compiler.patch"
-		"${FILESDIR}/chromium-119-minizip.patch"
-		"${FILESDIR}/chromium-118-material-color-utils.patch"
-		"${FILESDIR}/chromium-126-freetype-blink.patch"
-		"${FILESDIR}/chromium-124-metrics-histograms-nodepotbin.patch"
-		"${FILESDIR}/chromium-134-gn-exec_script_allowlist.patch"
-		"${FILESDIR}/chromium-137-mv2-ungoogled.patch"
-
-		"${FILESDIR}/chromium-111-InkDropHost-crash.patch"
-		"${FILESDIR}/chromium-134-EnumTable-crash.patch"
-		"${FILESDIR}/chromium-cross-compile.patch"
-	)
-
-	sed -i -e \
-			"/if (is_clang && toolchain_has_rust) {/,+2d" \
-			build/config/compiler/BUILD.gn || die "Failed to disable bundled compiler builtins"
-	sed -i -e \
-			"/\`--sysroot\` flag/i\ \ \ \ args += [ \"-I\" + rebase_path(sysroot + \"/usr/lib/clang/${LLVM_SLOT}/include/\", root_build_dir) ]" \
-			-e \
-			"/clang_resource_dir =/,+2d" \
-			-e \
-			"s/clang_resource_dir,/rebase_path(sysroot + \"\/usr\/lib\/clang\/${LLVM_SLOT}\/\", root_build_dir)/" \
-			build/rust/rust_bindgen.gni || die "Failed to append include dir for bindgen"
-
-	default
-
-	#mkdir -p third_party/node/linux/node-linux-x64/bin || die
-	#ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die
-
-	# I don't know how to do this properly
-	rm -r third_party/rust-toolchain || die
-	mkdir -p third_party/rust-toolchain/bin || die
-	ln -s "${EPREFIX}"/usr/bin/bindgen third_party/rust-toolchain/bin/bindgen || die
-	ln -s "${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/lib64" third_party/rust-toolchain/lib || die
-
-	# adjust python interpreter version
-	sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
-	sed -i -e "s|vpython3|${EPYTHON}|g" testing/xvfb.py || die
-
-	local keeplibs=(
-		base/third_party/cityhash
-		base/third_party/double_conversion
-		base/third_party/icu
-		base/third_party/nspr
-		base/third_party/superfasthash
-		base/third_party/symbolize
-		base/third_party/xdg_user_dirs
-		buildtools/third_party/libc++
-		buildtools/third_party/libc++abi
-		chrome/third_party/mozilla_security_manager
-		net/third_party/mozilla_security_manager
-		net/third_party/nss
-		net/third_party/quic
-		net/third_party/uri_template
-		third_party/abseil-cpp
-		third_party/angle
-		third_party/angle/src/common/third_party/xxhash
-		third_party/angle/src/third_party/ceval
-		third_party/angle/src/third_party/libXNVCtrl
-		third_party/angle/src/third_party/volk
-		third_party/anonymous_tokens
-		third_party/apple_apsl
-		third_party/axe-core
-		third_party/bidimapper
-		third_party/blink
-		third_party/boringssl
-		third_party/boringssl/src/third_party/fiat
-		third_party/breakpad
-		third_party/breakpad/breakpad/src/third_party/curl
-		third_party/brotli
-		third_party/catapult
-		third_party/catapult/common/py_vulcanize/third_party/rcssmin
-		third_party/catapult/common/py_vulcanize/third_party/rjsmin
-		third_party/catapult/third_party/beautifulsoup4-4.9.3
-		third_party/catapult/third_party/html5lib-1.1
-		third_party/catapult/third_party/polymer
-		third_party/catapult/third_party/six
-		third_party/catapult/tracing/third_party/d3
-		third_party/catapult/tracing/third_party/gl-matrix
-		third_party/catapult/tracing/third_party/jpeg-js
-		third_party/catapult/tracing/third_party/jszip
-		third_party/catapult/tracing/third_party/mannwhitneyu
-		third_party/catapult/tracing/third_party/oboe
-		third_party/catapult/tracing/third_party/pako
-		third_party/ced
-		third_party/content_analysis_sdk
-		third_party/cld_3
-		third_party/closure_compiler
-		third_party/cpuinfo
-		third_party/crabbyavif
-		third_party/crashpad
-		third_party/crashpad/crashpad/third_party/lss
-		third_party/crashpad/crashpad/third_party/zlib
-		third_party/crc32c
-		third_party/cros_system_api
-		third_party/d3
-		third_party/dawn
-		third_party/dawn/third_party/gn/webgpu-cts
-		third_party/dawn/third_party/khronos
-		third_party/depot_tools
-		third_party/devscripts
-		third_party/devtools-frontend
-		third_party/devtools-frontend/src/front_end/third_party/acorn
-		third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json
-		third_party/devtools-frontend/src/front_end/third_party/axe-core
-		third_party/devtools-frontend/src/front_end/third_party/chromium
-		third_party/devtools-frontend/src/front_end/third_party/codemirror
-		third_party/devtools-frontend/src/front_end/third_party/csp_evaluator
-		third_party/devtools-frontend/src/front_end/third_party/diff
-		third_party/devtools-frontend/src/front_end/third_party/i18n
-		third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
-		third_party/devtools-frontend/src/front_end/third_party/json5
-		third_party/devtools-frontend/src/front_end/third_party/legacy-javascript
-		third_party/devtools-frontend/src/front_end/third_party/lighthouse
-		third_party/devtools-frontend/src/front_end/third_party/lit
-		third_party/devtools-frontend/src/front_end/third_party/marked
-		third_party/devtools-frontend/src/front_end/third_party/puppeteer
-		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/mitt
-		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/parsel-js
-		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/rxjs
-		third_party/devtools-frontend/src/front_end/third_party/third-party-web
-		third_party/devtools-frontend/src/front_end/third_party/vscode.web-custom-data
-		third_party/devtools-frontend/src/front_end/third_party/wasmparser
-		third_party/devtools-frontend/src/front_end/third_party/web-vitals
-		third_party/devtools-frontend/src/third_party
-		third_party/distributed_point_functions
-		third_party/dom_distiller_js
-		third_party/eigen3
-		third_party/emoji-segmenter
-		third_party/fast_float
-		third_party/farmhash
-		third_party/fdlibm
-		third_party/fft2d
-		third_party/flatbuffers
-		third_party/fp16
-		third_party/freetype
-		third_party/fusejs
-		third_party/fxdiv
-		third_party/highway
-		third_party/liburlpattern
-		third_party/libzip
-		third_party/gemmlowp
-		third_party/google_input_tools
-		third_party/google_input_tools/third_party/closure_library
-		third_party/google_input_tools/third_party/closure_library/third_party/closure
-		third_party/googletest
-		third_party/harfbuzz-ng
-		third_party/hunspell
-		third_party/ink
-		third_party/inspector_protocol
-		third_party/ipcz
-		third_party/jinja2
-		third_party/jsoncpp
-		third_party/khronos
-		third_party/leveldatabase
-		third_party/lens_server_proto
-		third_party/libaddressinput
-		third_party/libdrm
-		third_party/libgav1
-		third_party/libjingle
-		third_party/libphonenumber
-		third_party/libsecret
-		third_party/libsrtp
-		third_party/libsync
-		third_party/libtess2
-		third_party/libva_protected_content
-		third_party/libvpx
-		third_party/libvpx/source/libvpx/third_party/x86inc
-		third_party/libwebm
-		third_party/libwebp
-		third_party/libx11
-		third_party/libxcb-keysyms
-		third_party/libxml/chromium
-		third_party/libyuv
-		third_party/lit
-		third_party/llvm
-		third_party/lottie
-		third_party/lss
-		third_party/lzma_sdk
-		third_party/mako
-		third_party/markupsafe
-		third_party/material_color_utilities
-		third_party/mesa
-		third_party/metrics_proto
-		third_party/minigbm
-		third_party/modp_b64
-		third_party/nasm
-		third_party/nearby
-		third_party/neon_2_sse
-		third_party/node
-		third_party/omnibox_proto
-		third_party/one_euro_filter
-		third_party/openh264
-		third_party/openscreen
-		third_party/openscreen/src/third_party/tinycbor/src/src
-		third_party/ots
-		third_party/pdfium
-		third_party/pdfium/third_party/agg23
-		third_party/pdfium/third_party/bigint
-		third_party/pdfium/third_party/freetype
-		third_party/pdfium/third_party/lcms
-		third_party/pdfium/third_party/libopenjpeg
-		third_party/pdfium/third_party/libtiff
-		third_party/perfetto
-		third_party/perfetto/protos/third_party/chromium
-		third_party/perfetto/protos/third_party/simpleperf
-		third_party/pffft
-		third_party/ply
-		third_party/polymer
-		third_party/private-join-and-compute
-		third_party/private_membership
-		third_party/protobuf
-		third_party/protobuf/third_party/utf8_range
-		third_party/pthreadpool
-		third_party/puffin
-		third_party/pyjson5
-		third_party/pyyaml
-		third_party/rapidhash
-		third_party/rnnoise
-		third_party/rust
-		third_party/s2cellid
-		third_party/search_engines_data
-		third_party/securemessage
-		third_party/selenium-atoms
-		third_party/sentencepiece
-		third_party/sentencepiece/src/third_party/darts_clone
-		third_party/shell-encryption
-		third_party/simdutf
-		third_party/simplejson
-		third_party/six
-		third_party/skia
-		third_party/skia/include/third_party/vulkan
-		third_party/skia/third_party/vulkan
-		third_party/smhasher
-		third_party/snappy
-		third_party/spirv-tools
-		third_party/spirv-headers
-		third_party/sqlite
-		third_party/swiftshader
-		third_party/swiftshader/third_party/astc-encoder
-		third_party/swiftshader/third_party/llvm-subzero
-		third_party/swiftshader/third_party/marl
-		third_party/swiftshader/third_party/subzero
-		third_party/swiftshader/third_party/SPIRV-Headers
-		third_party/swiftshader/third_party/SPIRV-Tools
-		third_party/tensorflow-text
-		third_party/tensorflow_models
-		third_party/tflite
-		third_party/tflite/src/third_party/xla
-		third_party/tflite/src/third_party/xla/third_party/tsl
-		third_party/tflite/src/third_party/eigen3
-		third_party/tflite/src/third_party/fft2d
-		third_party/ruy
-		third_party/six
-		third_party/ukey2
-		third_party/unrar
-		third_party/utf
-		third_party/vulkan
-		third_party/wasm_tts_engine
-		third_party/wayland
-		third_party/webdriver
-		third_party/webgpu-cts
-		third_party/webrtc
-		third_party/webrtc/common_audio/third_party/ooura
-		third_party/webrtc/common_audio/third_party/spl_sqrt_floor
-		third_party/webrtc/modules/third_party/fft
-		third_party/webrtc/modules/third_party/g711
-		third_party/webrtc/modules/third_party/g722
-		third_party/webrtc/rtc_base/third_party/base64
-		third_party/webrtc/rtc_base/third_party/sigslot
-		third_party/widevine
-		third_party/woff2
-		third_party/wuffs
-		third_party/x11proto
-		third_party/xcbproto
-		third_party/xnnpack
-		third_party/zxcvbn-cpp
-		third_party/zlib/contrib/minizip
-		third_party/zlib/google
-		third_party/zstd
-		url/third_party/mozilla
-		v8/third_party/siphash
-		v8/third_party/utf8-decoder
-		v8/third_party/valgrind
-		v8/third_party/glibc
-		v8/third_party/inspector_protocol
-		v8/third_party/rapidhash-v8
-		v8/third_party/v8
-
-		# gyp -> gn leftovers
-		third_party/speech-dispatcher
-		third_party/usb_ids
-		third_party/xdg-utils
-	)
-	if ! use system-ffmpeg; then
-		keeplibs+=( third_party/ffmpeg third_party/opus )
-	fi
-	if ! use system-icu; then
-		keeplibs+=( third_party/icu )
-	fi
-	if ! use system-png; then
-		keeplibs+=( third_party/libpng )
-	fi
-	if ! use system-av1; then
-		keeplibs+=(
-			third_party/dav1d
-			third_party/libaom
-			third_party/libaom/source/libaom/third_party/fastfeat
-			third_party/libaom/source/libaom/third_party/SVT-AV1
-			third_party/libaom/source/libaom/third_party/vector
-			third_party/libaom/source/libaom/third_party/x86inc
-		)
-	fi
-	if ! use system-harfbuzz; then
-		keeplibs+=( third_party/harfbuzz-ng )
-	fi
-	if true || use libcxx; then
-		keeplibs+=( third_party/re2 )
-		keeplibs+=( third_party/libc++ )
-	fi
-	if use arm64 || use ppc64 ; then
-		keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 )
-	fi
-	# we need to generate ppc64 stuff because upstream does not ship it yet
-	# it has to be done before unbundling.
-	if use ppc64; then
-		pushd third_party/libvpx >/dev/null || die
-		mkdir -p source/config/linux/ppc64 || die
-		# requires git and clang, bug #832803
-		sed -i -e "s|^update_readme||g; s|clang-format|${EPREFIX}/bin/true|g" \
-			generate_gni.sh || die
-		./generate_gni.sh || die
-		popd >/dev/null || die
-
-		pushd third_party/ffmpeg >/dev/null || die
-		cp libavcodec/ppc/h264dsp.c libavcodec/ppc/h264dsp_ppc.c || die
-		cp libavcodec/ppc/h264qpel.c libavcodec/ppc/h264qpel_ppc.c || die
-		popd >/dev/null || die
-	fi
-
-	# Remove most bundled libraries. Some are still needed.
-	build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
-
-	# bundled eu-strip is for amd64 only and we don't want to pre-stripped binaries
-	mkdir -p buildtools/third_party/eu-strip/bin || die
-	ln -s "${EPREFIX}"/bin/true buildtools/third_party/eu-strip/bin/eu-strip || die
-}
-
-chromium_rust_version_check() {
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	echo $rustc_version
-}
-
-chromium_configure() {
-	# Calling this here supports resumption via FEATURES=keepwork
-	python_setup
-
-	local myconf_gn=""
-
-	# Make sure the build system will use the right tools, bug #340795.
-	tc-export AR CC CXX NM
-
-	if needs_clang && ! tc-is-clang; then
-		# Force clang since gcc is either broken or build is using libcxx.
-		if tc-is-cross-compiler; then
-			CC="${CBUILD}-clang -target ${CHOST} --sysroot ${ESYSROOT}"
-			CXX="${CBUILD}-clang++ -target ${CHOST} --sysroot ${ESYSROOT}"
-			BUILD_CC=${CBUILD}-clang
-			BUILD_CXX=${CBUILD}-clang++
-		else
-			CC=${CHOST}-clang
-			CXX=${CHOST}-clang++
-		fi
-		strip-unsupported-flags
-	fi
-
-	if tc-is-clang; then
-		myconf_gn+=" is_clang=true clang_use_chrome_plugins=false"
-	else
-		myconf_gn+=" is_clang=false"
-	fi
-
-	# Force lld for lto or pgo builds only, otherwise disable, bug 641556
-	if use lto || use pgo; then
-		myconf_gn+=" use_lld=true"
-	else
-		myconf_gn+=" use_lld=false"
-	fi
-
-	if use lto || use pgo; then
-		AR=llvm-ar
-		NM=llvm-nm
-		if tc-is-cross-compiler; then
-			BUILD_AR=llvm-ar
-			BUILD_NM=llvm-nm
-		fi
-	fi
-
-	# Define a custom toolchain for GN
-	myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
-
-	if tc-is-cross-compiler; then
-		tc-export BUILD_{AR,CC,CXX,NM}
-		myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\""
-		myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\""
-		myconf_gn+=" pkg_config=\"$(tc-getPKG_CONFIG)\""
-		myconf_gn+=" host_pkg_config=\"$(tc-getBUILD_PKG_CONFIG)\""
-
-		# setup cups-config, build system only uses --libs option
-		if use cups; then
-			mkdir "${T}/cups-config" || die
-			cp "${ESYSROOT}/usr/bin/${CHOST}-cups-config" "${T}/cups-config/cups-config" || die
-			export PATH="${PATH}:${T}/cups-config"
-		fi
-
-		# Don't inherit PKG_CONFIG_PATH from environment
-		local -x PKG_CONFIG_PATH=
-	else
-		myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
-	fi
-
-	local rustc_ver
-		rustc_ver=$(chromium_rust_version_check)
-		if ver_test "${rustc_ver}" -lt "${RUST_MIN_VER}"; then
-			eerror "Rust >=${RUST_MIN_VER} is required"
-			eerror "Please run 'eselect rust' and select the correct rust version"
-			die "Selected rust version is too old"
-		else
-			einfo "Using rust ${rustc_ver} to build"
-		fi
-		myconf_gn+=" rust_sysroot_absolute=\"${EPREFIX}/usr/lib/rust/${rustc_ver}/\""
-		myconf_gn+=" rustc_version=\"${rustc_ver}\""
-
-	# Create dummy pkg-config file for libsystemd, only dependency of installer
-	mkdir "${T}/libsystemd" || die
-	cat <<- EOF > "${T}/libsystemd/libsystemd.pc"
-		Name:
-		Description:
-		Version:
-	EOF
-	local -x PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+"${PKG_CONFIG_PATH}:"}${T}/libsystemd"
-
-	# GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
-	myconf_gn+=" is_debug=false"
-
-	myconf_gn+=" rust_sysroot_absolute=\"$(get_rust_prefix)\""
-	myconf_gn+=" rustc_version=\"${RUST_SLOT}\""
-
-	# enable DCHECK with USE=debug only, increases chrome binary size by 30%, bug #811138.
-	# DCHECK is fatal by default, make it configurable at runtime, #bug 807881.
-	myconf_gn+=" dcheck_always_on=$(usex debug true false)"
-	myconf_gn+=" dcheck_is_configurable=$(usex debug true false)"
-
-	# Component build isn't generally intended for use by end users. It's mostly useful
-	# for development and debugging.
-	myconf_gn+=" is_component_build=$(usex component-build true false)"
-
-	# Disable nacl, we can't build without pnacl (http://crbug.com/269560).
-	myconf_gn+=" enable_nacl=false"
-
-	# Use system-provided libraries.
-	# TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733).
-	# TODO: use_system_hunspell (upstream changes needed).
-	# TODO: use_system_protobuf (bug #525560).
-	# TODO: use_system_sqlite (http://crbug.com/22208).
-
-	# libevent: https://bugs.gentoo.org/593458
-	local gn_system_libraries=(
-		flac
-		fontconfig
-		freetype
-		# Need harfbuzz_from_pkgconfig target
-		#harfbuzz-ng
-		#132: system libdrm is not supported???
-		#libdrm
-		libjpeg
-		# libwebp
-		libxml
-		libxslt
-		#133: libva shit depends on vendored openh264 now
-		#openh264
-		zlib
-	)
-	if use system-ffmpeg; then
-		gn_system_libraries+=( ffmpeg opus )
-	fi
-	if use system-icu; then
-		gn_system_libraries+=( icu )
-	fi
-	if use system-png; then
-		gn_system_libraries+=( libpng )
-	fi
-	if use system-av1; then
-		gn_system_libraries+=( dav1d libaom )
-	fi
-	# re2 library interface relies on std::string and std::vector
-	if false && ! use libcxx; then
-		gn_system_libraries+=( re2 )
-	fi
-	build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die
-
-	# See dependency logic in third_party/BUILD.gn
-	myconf_gn+=" use_system_harfbuzz=$(usex system-harfbuzz true false)"
-
-	# Disable deprecated libgnome-keyring dependency, bug #713012
-	myconf_gn+=" use_gnome_keyring=false"
-
-	# Optional dependencies.
-	myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)"
-	myconf_gn+=" enable_widevine=$(usex widevine true false)"
-
-	if use headless; then
-		myconf_gn+=" use_cups=false"
-		myconf_gn+=" use_kerberos=false"
-		myconf_gn+=" use_pulseaudio=false"
-		myconf_gn+=" use_vaapi=false"
-		myconf_gn+=" rtc_use_pipewire=false"
-	else
-		myconf_gn+=" use_cups=$(usex cups true false)"
-		myconf_gn+=" use_kerberos=$(usex kerberos true false)"
-		myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)"
-		myconf_gn+=" use_vaapi=$(usex vaapi true false)"
-		myconf_gn+=" rtc_use_pipewire=$(usex screencast true false)"
-		myconf_gn+=" gtk_version=$(usex gtk4 4 3)"
-	fi
-
-	# TODO: link_pulseaudio=true for GN.
-
-	myconf_gn+=" disable_fieldtrial_testing_config=true"
-
-	# Never use bundled gold binary. Disable gold linker flags for now.
-	# Do not use bundled clang.
-	# Trying to use gold results in linker crash.
-	myconf_gn+=" use_gold=false use_sysroot=false"
-	myconf_gn+=" use_custom_libcxx=$(usex libcxx true false)"
-
-	# Disable pseudolocales, only used for testing
-	myconf_gn+=" enable_pseudolocales=false"
-
-	# Disable code formating of generated files
-	myconf_gn+=" blink_enable_generated_code_formatting=false"
-
-	ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)"
-	myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)"
-	myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\""
-
-	# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys .
-	# Note: these are for Gentoo use ONLY. For your own distribution,
-	# please get your own set of keys. Feel free to contact chromium@gentoo.org
-	# for more info. The OAuth2 credentials, however, have been left out.
-	# Those OAuth2 credentials have been broken for quite some time anyway.
-	# Instead we apply a patch to use the --oauth2-client-id= and
-	# --oauth2-client-secret= switches for setting GOOGLE_DEFAULT_CLIENT_ID and
-	# GOOGLE_DEFAULT_CLIENT_SECRET at runtime. This allows signing into
-	# Chromium without baked-in values.
-	local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc"
-	myconf_gn+=" google_api_key=\"${google_api_key}\""
-	local myarch="$(tc-arch)"
-
-	# Avoid CFLAGS problems, bug #352457, bug #390147.
-	if ! use custom-cflags; then
-		replace-flags "-Os" "-O2"
-		strip-flags
-
-		# Debug info section overflows without component build
-		# Prevent linker from running out of address space, bug #471810 .
-		if ! use component-build || use x86; then
-			filter-flags "-g*"
-		fi
-
-		# Prevent libvpx/xnnpack build failures. Bug 530248, 544702, 546984, 853646.
-		if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then
-			filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 -mno-xop -mno-sse4a
-		fi
-	fi
-
-	if [[ $myarch = amd64 ]] ; then
-		myconf_gn+=" target_cpu=\"x64\""
-		ffmpeg_target_arch=x64
-	elif [[ $myarch = x86 ]] ; then
-		myconf_gn+=" target_cpu=\"x86\""
-		ffmpeg_target_arch=ia32
-
-		# This is normally defined by compiler_cpu_abi in
-		# build/config/compiler/BUILD.gn, but we patch that part out.
-		append-flags -msse2 -mfpmath=sse -mmmx
-	elif [[ $myarch = arm64 ]] ; then
-		myconf_gn+=" target_cpu=\"arm64\""
-		ffmpeg_target_arch=arm64
-	elif [[ $myarch = arm ]] ; then
-		myconf_gn+=" target_cpu=\"arm\""
-		ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm)
-	elif [[ $myarch = ppc64 ]] ; then
-		myconf_gn+=" target_cpu=\"ppc64\""
-		ffmpeg_target_arch=ppc64
-	else
-		die "Failed to determine target arch, got '$myarch'."
-	fi
-
-	# Make sure that -Werror doesn't get added to CFLAGS by the build system.
-	# Depending on GCC version the warnings are different and we don't want
-	# the build to fail because of that.
-	myconf_gn+=" treat_warnings_as_errors=false"
-
-	# Disable fatal linker warnings, bug 506268.
-	myconf_gn+=" fatal_linker_warnings=false"
-
-	# Disable external code space for V8 for ppc64. It is disabled for ppc64
-	# by default, but cross-compiling on amd64 enables it again.
-	if tc-is-cross-compiler; then
-		if ! use amd64 && ! use arm64; then
-			myconf_gn+=" v8_enable_external_code_space=false"
-		fi
-	fi
-
-	# Only enabled for clang, but gcc has endian macros too
-	myconf_gn+=" v8_use_libm_trig_functions=true"
-
-	# Bug 491582.
-	export TMPDIR="${WORKDIR}/temp"
-	mkdir -p -m 755 "${TMPDIR}" || die
-
-	# https://bugs.gentoo.org/654216
-	addpredict /dev/dri/ #nowarn
-
-	#if ! use system-ffmpeg; then
-	if false; then
-		local build_ffmpeg_args=""
-		if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then
-			build_ffmpeg_args+=" --disable-asm"
-		fi
-
-		# Re-configure bundled ffmpeg. See bug #491378 for example reasons.
-		einfo "Configuring bundled ffmpeg..."
-		pushd third_party/ffmpeg > /dev/null || die
-		chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \
-			--branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die
-		chromium/scripts/copy_config.sh || die
-		chromium/scripts/generate_gn.py || die
-		popd > /dev/null || die
-	fi
-
-	# Disable unknown warning message from clang.
-	if tc-is-clang; then
-		append-flags -Wno-unknown-warning-option
-		if tc-is-cross-compiler; then
-			export BUILD_CXXFLAGS+=" -Wno-unknown-warning-option"
-			export BUILD_CFLAGS+=" -Wno-unknown-warning-option"
-		fi
-	fi
-
-	# Explicitly disable ICU data file support for system-icu/headless builds.
-	if use system-icu || use headless; then
-		myconf_gn+=" icu_use_data_file=false"
-	fi
-
-	# Enable ozone wayland and/or headless support
-	myconf_gn+=" use_ozone=true ozone_auto_platforms=false"
-	myconf_gn+=" ozone_platform_headless=true"
-	myconf_gn+=" enable_remoting=false"
-	if use headless; then
-		myconf_gn+=" ozone_platform=\"headless\""
-		myconf_gn+=" use_xkbcommon=false use_gtk=false use_qt=false"
-		myconf_gn+=" use_glib=false use_gio=false"
-		myconf_gn+=" use_pangocairo=false use_alsa=false"
-		myconf_gn+=" use_libpci=false use_udev=false"
-		myconf_gn+=" enable_print_preview=false"
-	else
-		# myconf_gn+=" use_system_libdrm=true"
-		myconf_gn+=" use_system_minigbm=true"
-		myconf_gn+=" use_xkbcommon=true"
-		if use qt5; then
-			local moc_dir="$(qt5_get_bindir)"
-			if tc-is-cross-compiler; then
-				# Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
-				local cbuild_libdir=$($(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libxslt)
-				cbuild_libdir=${cbuild_libdir:2}
-				moc_dir="${EPREFIX}"/${cbuild_libdir/% }/qt5/bin
-			fi
-			export PATH="${PATH}:${moc_dir}"
-		fi
-		myconf_gn+=" use_qt=$(usex qt5 true false)"
-		myconf_gn+=" ozone_platform_x11=$(usex X true false)"
-		myconf_gn+=" ozone_platform_wayland=$(usex wayland true false)"
-		myconf_gn+=" ozone_platform=$(usex wayland \"wayland\" \"x11\")"
-		use wayland && myconf_gn+=" use_system_libffi=true"
-	fi
-
-	# Results in undefined references in chrome linking, may require CFI to work
-	if use arm64; then
-		myconf_gn+=" arm_control_flow_integrity=\"none\""
-	fi
-
-	# Enable official builds
-	myconf_gn+=" is_official_build=$(usex official true false)"
-	myconf_gn+=" use_thin_lto=$(usex lto true false)"
-	myconf_gn+=" thin_lto_enable_optimizations=$(usex lto true false)"
-	if use official; then
-		# Allow building against system libraries in official builds
-		sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
-			tools/generate_shim_headers/generate_shim_headers.py || die
-		# Disable CFI: unsupported for GCC, requires clang+lto+lld
-		myconf_gn+=" is_cfi=false"
-		# Don't add symbols to build
-		myconf_gn+=" symbol_level=0"
-	fi
-
-	if use pgo; then
-		myconf_gn+=" chrome_pgo_phase=${1}"
-		if [[ "$1" == "2" ]]; then
-			myconf_gn+=" pgo_data_path=\"${2}\""
-		fi
-	else
-		# Disable PGO, because profile data is only compatible with >=clang-11
-		myconf_gn+=" chrome_pgo_phase=0"
-	fi
-
-	# user CXXFLAGS might overwrite -march=armv8-a+crc+crypto, bug #851639
-	if use arm64 && tc-is-gcc; then
-		sed -i '/^#if HAVE_ARM64_CRC32C/a #pragma GCC target ("+crc+crypto")' \
-			third_party/crc32c/src/src/crc32c_arm64.cc || die
-	fi
-
-	# skipping typecheck is only supported on amd64, bug #876157
-	if ! use amd64; then
-		myconf_gn+=" devtools_skip_typecheck=false"
-	fi
-
-	# broken in 119
-	myconf_gn+=" enable_nocompile_tests=false"
-
-	einfo "Configuring Chromium..."
-	set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release
-	echo "$@"
-	"$@" || die
-}
-
-src_configure() {
-	chromium_configure $(usex pgo 1 0)
-}
-
-chromium_compile() {
-	# Final link uses lots of file descriptors.
-	ulimit -n 2048
-
-	# Calling this here supports resumption via FEATURES=keepwork
-	python_setup
-
-	# Don't inherit PYTHONPATH from environment, bug #789021, #812689
-	local -x PYTHONPATH=
-
-	# Build mksnapshot and pax-mark it.
-	local x
-	for x in mksnapshot v8_context_snapshot_generator; do
-		if tc-is-cross-compiler; then
-			eninja -C out/Release "host/${x}"
-			pax-mark m "out/Release/host/${x}"
-		else
-			eninja -C out/Release "${x}"
-			pax-mark m "out/Release/${x}"
-		fi
-	done
-
-	# Even though ninja autodetects number of CPUs, we respect
-	# user's options, for debugging with -j 1 or any other reason.
-	eninja -C out/Release chrome chromedriver
-	use suid && eninja -C out/Release chrome_sandbox
-
-	pax-mark m out/Release/chrome
-}
-
-# This function is called from virtx, and must always return so that Xvfb
-# session isn't left running. If we return 1, virtx will call die().
-chromium_profile() {
-	einfo "Profiling for PGO"
-
-	pushd "${WORKDIR}/chromium-profiler-"* >/dev/null || return 1
-
-	# Remove old profdata in case profiling was interrupted.
-	rm -rf "${1}" || return 1
-
-	if ! "${EPYTHON}" ./chromium_profiler.py \
-		--chrome-executable "${S}/out/Release/chrome" \
-		--chromedriver-executable "${S}/out/Release/chromedriver.unstripped" \
-		--add-arg no-sandbox --add-arg disable-dev-shm-usage \
-		--profile-output "${1}"; then
-		eerror "Profiling failed"
-		return 1
-	fi
-
-	popd >/dev/null || return 1
-}
-
-src_compile() {
-	if use pgo; then
-		local profdata
-
-		profdata="${WORKDIR}/chromium.profdata"
-
-		if [[ ! -e "${WORKDIR}/.pgo-profiled" ]]; then
-			chromium_compile
-			virtx chromium_profile "$profdata"
-
-			touch "${WORKDIR}/.pgo-profiled" || die
-		fi
-
-		if [[ ! -e "${WORKDIR}/.pgo-phase-2-configured" ]]; then
-			# Remove phase 1 output
-			rm -r out/Release || die
-
-			chromium_configure 2 "$profdata"
-
-			touch "${WORKDIR}/.pgo-phase-2-configured" || die
-		fi
-
-		if [[ ! -e "${WORKDIR}/.pgo-phase-2-compiled" ]]; then
-			chromium_compile
-			touch "${WORKDIR}/.pgo-phase-2-compiled" || die
-		fi
-	else
-		chromium_compile
-	fi
-
-	mv out/Release/chromedriver{.unstripped,} || die
-
-	rm -f out/Release/locales/*.pak.info || die
-
-	# Build manpage; bug #684550
-	sed -e 's|@@PACKAGE@@|chromium-browser|g;
-		s|@@MENUNAME@@|Chromium|g;' \
-		chrome/app/resources/manpage.1.in > \
-		out/Release/chromium-browser.1 || die
-
-	# Build desktop file; bug #706786
-	sed -e 's|@@MENUNAME@@|Chromium|g;
-		s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g;
-		s|@@PACKAGE@@|chromium-browser|g;
-		s|\(^Exec=\)/usr/bin/|\1|g;' \
-		chrome/installer/linux/common/desktop.template > \
-		out/Release/chromium-browser-chromium.desktop || die
-
-	# Build vk_swiftshader_icd.json; bug #827861
-	sed -e 's|${ICD_LIBRARY_PATH}|./libvk_swiftshader.so|g' \
-		third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl > \
-		out/Release/vk_swiftshader_icd.json || die
-}
-
-src_install() {
-	local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser"
-	exeinto "${CHROMIUM_HOME}"
-	doexe out/Release/chrome
-
-	if use suid; then
-		newexe out/Release/chrome_sandbox chrome-sandbox
-		fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox"
-	fi
-
-	doexe out/Release/chromedriver
-	doexe out/Release/chrome_crashpad_handler
-
-	ozone_auto_session () {
-		use X && use wayland && ! use headless && echo true || echo false
-	}
-	local sedargs=( -e
-			"s:/usr/lib/:/usr/$(get_libdir)/:g;
-			s:@@OZONE_AUTO_SESSION@@:$(ozone_auto_session):g"
-	)
-	sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r7.sh" > chromium-launcher.sh || die
-	doexe chromium-launcher.sh
-
-	# It is important that we name the target "chromium-browser",
-	# xdg-utils expect it; bug #355517.
-	dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser
-	# keep the old symlink around for consistency
-	dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium
-
-	dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver
-
-	# Allow users to override command-line options, bug #357629.
-	insinto /etc/chromium
-	newins "${FILESDIR}/chromium.default" "default"
-
-	pushd out/Release/locales > /dev/null || die
-	chromium_remove_language_paks
-	popd
-
-	insinto "${CHROMIUM_HOME}"
-	doins out/Release/*.bin
-	doins out/Release/*.pak
-	(
-		shopt -s nullglob
-		local files=(out/Release/*.so out/Release/*.so.[0-9])
-		[[ ${#files[@]} -gt 0 ]] && doins "${files[@]}"
-	)
-
-	# Install bundled xdg-utils, avoids installing X11 libraries with USE="-X wayland"
-	doins out/Release/xdg-{settings,mime}
-
-	if ! use system-icu && ! use headless; then
-		doins out/Release/icudtl.dat
-	fi
-
-	doins -r out/Release/locales
-	doins -r out/Release/MEIPreload
-
-	# Install vk_swiftshader_icd.json; bug #827861
-	doins out/Release/vk_swiftshader_icd.json
-
-	if [[ -d out/Release/swiftshader ]]; then
-		insinto "${CHROMIUM_HOME}/swiftshader"
-		doins out/Release/swiftshader/*.so
-	fi
-
-	# Install icons
-	local branding size
-	for size in 16 24 32 48 64 128 256 ; do
-		case ${size} in
-			16|32) branding="chrome/app/theme/default_100_percent/chromium" ;;
-				*) branding="chrome/app/theme/chromium" ;;
-		esac
-		newicon -s ${size} "${branding}/product_logo_${size}.png" \
-			chromium-browser.png
-	done
-
-	# Install desktop entry
-	domenu out/Release/chromium-browser-chromium.desktop
-
-	# Install GNOME default application entry (bug #303100).
-	insinto /usr/share/gnome-control-center/default-apps
-	newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml
-
-	# Install manpage; bug #684550
-	doman out/Release/chromium-browser.1
-	dosym chromium-browser.1 /usr/share/man/man1/chromium.1
-
-	readme.gentoo_create_doc
-}
-
-pkg_postrm() {
-	xdg_icon_cache_update
-	xdg_desktop_database_update
-}
-
-pkg_postinst() {
-	xdg_icon_cache_update
-	xdg_desktop_database_update
-	readme.gentoo_print_elog
-
-	if ! use headless; then
-		if use vaapi; then
-			elog "VA-API is disabled by default at runtime. You have to enable it"
-			elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS"
-			elog "in /etc/chromium/default."
-		fi
-		if use screencast; then
-			elog "Screencast is disabled by default at runtime. Either enable it"
-			elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer"
-			elog "inside Chromium or add --enable-features=WebRTCPipeWireCapturer"
-			elog "to CHROMIUM_FLAGS in /etc/chromium/default."
-		fi
-		if use gtk4; then
-			elog "Chromium prefers GTK3 over GTK4 at runtime. To override this"
-			elog "behavior you need to pass --gtk-version=4, e.g. by adding it"
-			elog "to CHROMIUM_FLAGS in /etc/chromium/default."
-		fi
-	fi
-}
diff --git a/www-client/chromium/chromium-138.0.7166.2.ebuild b/www-client/chromium/chromium-138.0.7166.2.ebuild
new file mode 100644
index 0000000..48849c8
--- /dev/null
+++ b/www-client/chromium/chromium-138.0.7166.2.ebuild
@@ -0,0 +1,1293 @@
+# Copyright 2009-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{9..12} )
+PYTHON_REQ_USE="xml(+)"
+LLVM_COMPAT=( 19 )
+RUST_MIN_VER=1.78.0
+RUST_NEEDS_LLVM="yes please"
+
+CHROMIUM_LANGS="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
+	hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr
+	sv sw ta te th tr uk ur vi zh-CN zh-TW"
+
+VIRTUALX_REQUIRED="pgo"
+
+inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 ninja-utils pax-utils
+inherit python-any-r1 qmake-utils readme.gentoo-r1 rust toolchain-funcs virtualx xdg-utils
+
+DESCRIPTION="Open-source version of Google Chrome web browser"
+HOMEPAGE="https://chromium.org/"
+SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
+	pgo? ( https://github.com/elkablo/chromium-profiler/releases/download/v0.2/chromium-profiler-0.2.tar )"
+
+LICENSE="BSD"
+SLOT="0/dev"
+KEYWORDS="~amd64 ~arm64"
+IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless kerberos libcxx lto +official pgo pic +proprietary-codecs pulseaudio qt5 screencast selinux +suid +system-av1 +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine"
+REQUIRED_USE="
+	component-build? ( !suid !libcxx )
+	screencast? ( wayland )
+	!headless? ( || ( X wayland ) )
+	pgo? ( X !wayland )
+"
+
+COMMON_X_DEPEND="
+	x11-libs/libXcomposite:=
+	x11-libs/libXcursor:=
+	x11-libs/libXdamage:=
+	x11-libs/libXfixes:=
+	>=x11-libs/libXi-1.6.0:=
+	x11-libs/libXrandr:=
+	x11-libs/libXrender:=
+	x11-libs/libXtst:=
+	x11-libs/libxshmfence:=
+"
+
+COMMON_SNAPSHOT_DEPEND="
+	system-icu? ( >=dev-libs/icu-71.1:= )
+	>=dev-libs/libxml2-2.9.4-r3:=[icu]
+	dev-libs/nspr:=
+	>=dev-libs/nss-3.26:=
+	!libcxx? ( >=dev-libs/re2-0.2019.08.01:= )
+	dev-libs/libxslt:=
+	media-libs/fontconfig:=
+	>=media-libs/freetype-2.11.0-r1:=
+	system-harfbuzz? ( >=media-libs/harfbuzz-3:0=[icu(-)] )
+	media-libs/libjpeg-turbo:=
+	system-png? ( media-libs/libpng:=[-apng(-)] )
+	>=media-libs/libwebp-0.4.0:=
+	media-libs/mesa:=[gbm(+)]
+	>=media-libs/openh264-1.6.0:=
+	system-av1? (
+		>=media-libs/dav1d-1.0.0:=
+		>=media-libs/libaom-3.4.0:=
+	)
+	sys-libs/zlib:=
+	!headless? (
+		dev-libs/glib:2
+		>=media-libs/alsa-lib-1.0.19:=
+		pulseaudio? ( media-sound/pulseaudio:= )
+		sys-apps/pciutils:=
+		kerberos? ( virtual/krb5 )
+		vaapi? ( >=media-libs/libva-2.7:=[X?,wayland?] )
+		X? (
+			x11-libs/libX11:=
+			x11-libs/libXext:=
+			x11-libs/libxcb:=
+		)
+		x11-libs/libxkbcommon:=
+		wayland? (
+			dev-libs/libffi:=
+			screencast? ( media-video/pipewire:= )
+		)
+	)
+"
+
+COMMON_DEPEND="
+	${COMMON_SNAPSHOT_DEPEND}
+	app-arch/bzip2:=
+	dev-libs/expat:=
+	system-ffmpeg? (
+		>=media-video/ffmpeg-4.3:=
+		|| (
+			media-video/ffmpeg[-samba]
+			>=net-fs/samba-4.5.10-r1[-debug(-)]
+		)
+		>=media-libs/opus-1.3.1:=
+	)
+	net-misc/curl[ssl]
+	sys-apps/dbus:=
+	media-libs/flac:=
+	sys-libs/zlib:=[minizip]
+	!headless? (
+		X? ( ${COMMON_X_DEPEND} )
+		>=app-accessibility/at-spi2-core-2.46.0:2
+		media-libs/mesa:=[X?,wayland?]
+		cups? ( >=net-print/cups-1.3.11:= )
+		virtual/udev
+		x11-libs/cairo:=
+		x11-libs/gdk-pixbuf:2
+		x11-libs/pango:=
+		qt5? (
+			dev-qt/qtcore:5
+			dev-qt/qtwidgets:5
+		)
+	)
+"
+RDEPEND="${COMMON_DEPEND}
+	!headless? (
+		|| (
+			x11-libs/gtk+:3[X?,wayland?]
+			gui-libs/gtk:4[X?,wayland?]
+		)
+		qt5? ( dev-qt/qtgui:5[X?,wayland?] )
+	)
+	virtual/ttf-fonts
+	selinux? ( sec-policy/selinux-chromium )
+"
+DEPEND="${COMMON_DEPEND}
+	!headless? (
+		gtk4? ( gui-libs/gtk:4[X?,wayland?] )
+		!gtk4? ( x11-libs/gtk+:3[X?,wayland?] )
+	)
+"
+
+depend_clang_llvm_version() {
+	echo "llvm-core/clang:$1"
+	echo "llvm-core/llvm:$1"
+	echo "=llvm-core/lld-$1*"
+}
+
+depend_clang_llvm_versions() {
+	local _v
+	if [[ $# -gt 1 ]]; then
+		echo "|| ("
+		for _v in "$@"; do
+			echo "("
+			depend_clang_llvm_version "${_v}"
+			echo ")"
+		done
+		echo ")"
+	elif [[ $# -eq 1 ]]; then
+		depend_clang_llvm_version "$1"
+	fi
+}
+
+BDEPEND="
+	${COMMON_SNAPSHOT_DEPEND}
+	${PYTHON_DEPS}
+	$(python_gen_any_dep '
+		dev-python/setuptools[${PYTHON_USEDEP}]
+	')
+	>=app-arch/gzip-1.7
+	!headless? (
+		qt5? ( dev-qt/qtcore:5 )
+	)
+	libcxx? ( >=llvm-core/clang-13 )
+	lto? ( $(depend_clang_llvm_versions 19) )
+	pgo? (
+		>=dev-python/selenium-3.141.0
+		>=dev-util/web_page_replay_go-20220314
+		$(depend_clang_llvm_versions 19)
+	)
+	dev-util/bindgen
+	dev-lang/perl
+	>=dev-build/gn-0.2122
+	>=dev-util/gperf-3.0.3
+	>=dev-build/ninja-1.7.2
+	dev-vcs/git
+	>=net-libs/nodejs-7.6.0[inspector]
+	>=sys-devel/bison-2.4.3
+	sys-devel/flex
+	virtual/pkgconfig
+"
+
+# These are intended for ebuild maintainer use to force clang if GCC is broken.
+: ${CHROMIUM_FORCE_CLANG=yes}
+
+if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then
+	BDEPEND+=" >=llvm-core/clang-13"
+fi
+
+if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then
+	EBUILD_DEATH_HOOKS+=" chromium_pkg_die";
+fi
+
+DISABLE_AUTOFORMATTING="yes"
+DOC_CONTENTS="
+Some web pages may require additional fonts to display properly.
+Try installing some of the following packages if some characters
+are not displayed properly:
+- media-fonts/arphicfonts
+- media-fonts/droid
+- media-fonts/ipamonafont
+- media-fonts/noto
+- media-fonts/ja-ipafonts
+- media-fonts/takao-fonts
+- media-fonts/wqy-microhei
+- media-fonts/wqy-zenhei
+
+To fix broken icons on the Downloads page, you should install an icon
+theme that covers the appropriate MIME types, and configure this as your
+GTK+ icon theme.
+
+For native file dialogs in KDE, install kde-apps/kdialog.
+
+To make password storage work with your desktop environment you may
+have install one of the supported credentials management applications:
+- app-crypt/libsecret (GNOME)
+- kde-frameworks/kwallet (KDE)
+If you have one of above packages installed, but don't want to use
+them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS
+in /etc/chromium/default.
+"
+
+python_check_deps() {
+	python_has_version "dev-python/setuptools[${PYTHON_USEDEP}]"
+}
+
+needs_clang() {
+	[[ ${CHROMIUM_FORCE_CLANG} == yes ]] || use libcxx || use lto || use pgo
+}
+
+llvm_check_deps() {
+	if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
+		einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+		return 1
+	fi
+
+	if ( use lto || use pgo ) && ! has_version -b "=llvm-core/lld-${LLVM_SLOT}*" ; then
+		einfo "=llvm-core/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+		return 1
+	fi
+
+	einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+pre_build_checks() {
+	if [[ ${MERGE_TYPE} != binary ]]; then
+		[[ ${EBUILD_PHASE_FUNC} == pkg_setup ]] && ( use lto || use pgo ) && llvm-r1_pkg_setup
+
+		local -x CPP="$(tc-getCXX) -E"
+		if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 10.4; then
+			die "At least gcc 10.4 is required"
+		fi
+		if use pgo && tc-is-cross-compiler; then
+			die "The pgo USE flag cannot be used when cross-compiling"
+		fi
+		if needs_clang || tc-is-clang; then
+			tc-is-cross-compiler && CPP=${CBUILD}-clang++ || CPP=${CHOST}-clang++
+			CPP+=" -E"
+		fi
+	fi
+
+	# Check build requirements, bug #541816 and bug #471810 .
+	CHECKREQS_MEMORY="4G"
+	CHECKREQS_DISK_BUILD="12G"
+	tc-is-cross-compiler && CHECKREQS_DISK_BUILD="14G"
+	if use lto || use pgo; then
+		CHECKREQS_MEMORY="9G"
+		CHECKREQS_DISK_BUILD="13G"
+		tc-is-cross-compiler && CHECKREQS_DISK_BUILD="16G"
+		use pgo && CHECKREQS_DISK_BUILD="20G"
+	fi
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		if use custom-cflags || use component-build; then
+			CHECKREQS_DISK_BUILD="25G"
+		fi
+		if ! use component-build; then
+			CHECKREQS_MEMORY="16G"
+		fi
+	fi
+	check-reqs_${EBUILD_PHASE_FUNC}
+}
+
+pkg_pretend() {
+	pre_build_checks
+
+	if use headless; then
+		local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt5" "vaapi" "wayland")
+		for myiuse in ${headless_unused_flags[@]}; do
+			use ${myiuse} && ewarn "Ignoring USE=${myiuse} since USE=headless is set."
+		done
+	fi
+}
+
+pkg_setup() {
+	pre_build_checks
+
+	chromium_suid_sandbox_check_kernel_config
+
+	# nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams
+	if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then
+		ewarn "Proprietary nVidia driver does not work with Wayland. You can disable"
+		ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default."
+	fi
+
+	llvm-r1_pkg_setup
+	rust_pkg_setup
+}
+
+src_prepare() {
+	# Calling this here supports resumption via FEATURES=keepwork
+	python_setup
+
+	local PATCHES=(
+		"${FILESDIR}/chromium-135-protobuf-RepeatedPtrField-export.patch"
+		"${FILESDIR}/chromium-138-compiler.patch"
+		"${FILESDIR}/chromium-119-minizip.patch"
+		"${FILESDIR}/chromium-118-material-color-utils.patch"
+		"${FILESDIR}/chromium-126-freetype-blink.patch"
+		"${FILESDIR}/chromium-124-metrics-histograms-nodepotbin.patch"
+		"${FILESDIR}/chromium-138-gn-exec_script_allowlist.patch"
+		"${FILESDIR}/chromium-137-pdfium-png-decoder-fieldname.patch"
+		"${FILESDIR}/chromium-138-mv2-ungoogled.patch"
+
+		"${FILESDIR}/chromium-111-InkDropHost-crash.patch"
+		"${FILESDIR}/chromium-134-EnumTable-crash.patch"
+		"${FILESDIR}/chromium-cross-compile.patch"
+	)
+
+	sed -i -e \
+			"/if (is_clang && toolchain_has_rust) {/,+2d" \
+			build/config/compiler/BUILD.gn || die "Failed to disable bundled compiler builtins"
+	sed -i -e \
+			"/\`--sysroot\` flag/i\ \ \ \ args += [ \"-I\" + rebase_path(sysroot + \"/usr/lib/clang/${LLVM_SLOT}/include/\", root_build_dir) ]" \
+			-e \
+			"/clang_resource_dir =/,+2d" \
+			-e \
+			"s/clang_resource_dir,/rebase_path(sysroot + \"\/usr\/lib\/clang\/${LLVM_SLOT}\/\", root_build_dir)/" \
+			build/rust/rust_bindgen.gni || die "Failed to append include dir for bindgen"
+
+	default
+
+	#mkdir -p third_party/node/linux/node-linux-x64/bin || die
+	#ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die
+
+	# I don't know how to do this properly
+	rm -r third_party/rust-toolchain || die
+	mkdir -p third_party/rust-toolchain/bin || die
+	ln -s "${EPREFIX}"/usr/bin/bindgen third_party/rust-toolchain/bin/bindgen || die
+	ln -s "${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/lib64" third_party/rust-toolchain/lib || die
+
+	# adjust python interpreter version
+	sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
+	sed -i -e "s|vpython3|${EPYTHON}|g" testing/xvfb.py || die
+
+	local keeplibs=(
+		base/third_party/cityhash
+		base/third_party/double_conversion
+		base/third_party/icu
+		base/third_party/nspr
+		base/third_party/superfasthash
+		base/third_party/symbolize
+		base/third_party/xdg_user_dirs
+		buildtools/third_party/libc++
+		buildtools/third_party/libc++abi
+		chrome/third_party/mozilla_security_manager
+		net/third_party/mozilla_security_manager
+		net/third_party/nss
+		net/third_party/quic
+		net/third_party/uri_template
+		third_party/abseil-cpp
+		third_party/angle
+		third_party/angle/src/common/third_party/xxhash
+		third_party/angle/src/third_party/ceval
+		third_party/angle/src/third_party/libXNVCtrl
+		third_party/angle/src/third_party/volk
+		third_party/anonymous_tokens
+		third_party/apple_apsl
+		third_party/axe-core
+		third_party/bidimapper
+		third_party/blink
+		third_party/boringssl
+		third_party/boringssl/src/third_party/fiat
+		third_party/breakpad
+		third_party/breakpad/breakpad/src/third_party/curl
+		third_party/brotli
+		third_party/catapult
+		third_party/catapult/common/py_vulcanize/third_party/rcssmin
+		third_party/catapult/common/py_vulcanize/third_party/rjsmin
+		third_party/catapult/third_party/beautifulsoup4-4.9.3
+		third_party/catapult/third_party/html5lib-1.1
+		third_party/catapult/third_party/polymer
+		third_party/catapult/third_party/six
+		third_party/catapult/tracing/third_party/d3
+		third_party/catapult/tracing/third_party/gl-matrix
+		third_party/catapult/tracing/third_party/jpeg-js
+		third_party/catapult/tracing/third_party/jszip
+		third_party/catapult/tracing/third_party/mannwhitneyu
+		third_party/catapult/tracing/third_party/oboe
+		third_party/catapult/tracing/third_party/pako
+		third_party/ced
+		third_party/compiler-rt
+		third_party/content_analysis_sdk
+		third_party/cld_3
+		third_party/closure_compiler
+		third_party/cpuinfo
+		third_party/crabbyavif
+		third_party/crashpad
+		third_party/crashpad/crashpad/third_party/lss
+		third_party/crashpad/crashpad/third_party/zlib
+		third_party/crc32c
+		third_party/cros_system_api
+		third_party/d3
+		third_party/dawn
+		third_party/dawn/third_party/gn/webgpu-cts
+		third_party/dawn/third_party/khronos
+		third_party/depot_tools
+		third_party/devscripts
+		third_party/devtools-frontend
+		third_party/devtools-frontend/src/front_end/third_party/acorn
+		third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json
+		third_party/devtools-frontend/src/front_end/third_party/axe-core
+		third_party/devtools-frontend/src/front_end/third_party/chromium
+		third_party/devtools-frontend/src/front_end/third_party/codemirror
+		third_party/devtools-frontend/src/front_end/third_party/csp_evaluator
+		third_party/devtools-frontend/src/front_end/third_party/diff
+		third_party/devtools-frontend/src/front_end/third_party/i18n
+		third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
+		third_party/devtools-frontend/src/front_end/third_party/json5
+		third_party/devtools-frontend/src/front_end/third_party/legacy-javascript
+		third_party/devtools-frontend/src/front_end/third_party/lighthouse
+		third_party/devtools-frontend/src/front_end/third_party/lit
+		third_party/devtools-frontend/src/front_end/third_party/marked
+		third_party/devtools-frontend/src/front_end/third_party/puppeteer
+		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/mitt
+		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/parsel-js
+		third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/esm/third_party/rxjs
+		third_party/devtools-frontend/src/front_end/third_party/third-party-web
+		third_party/devtools-frontend/src/front_end/third_party/vscode.web-custom-data
+		third_party/devtools-frontend/src/front_end/third_party/wasmparser
+		third_party/devtools-frontend/src/front_end/third_party/web-vitals
+		third_party/devtools-frontend/src/third_party
+		third_party/distributed_point_functions
+		third_party/dom_distiller_js
+		third_party/eigen3
+		third_party/emoji-segmenter
+		third_party/fast_float
+		third_party/farmhash
+		third_party/fdlibm
+		third_party/fft2d
+		third_party/flatbuffers
+		third_party/fp16
+		third_party/freetype
+		third_party/fusejs
+		third_party/fxdiv
+		third_party/highway
+		third_party/liburlpattern
+		third_party/libzip
+		third_party/gemmlowp
+		third_party/google_input_tools
+		third_party/google_input_tools/third_party/closure_library
+		third_party/google_input_tools/third_party/closure_library/third_party/closure
+		third_party/googletest
+		third_party/harfbuzz-ng
+		third_party/hunspell
+		third_party/ink
+		third_party/inspector_protocol
+		third_party/ipcz
+		third_party/jinja2
+		third_party/jsoncpp
+		third_party/khronos
+		third_party/leveldatabase
+		third_party/lens_server_proto
+		third_party/libaddressinput
+		third_party/libdrm
+		third_party/libgav1
+		third_party/libjingle
+		third_party/libphonenumber
+		third_party/libsecret
+		third_party/libsrtp
+		third_party/libsync
+		third_party/libtess2
+		third_party/libva_protected_content
+		third_party/libvpx
+		third_party/libvpx/source/libvpx/third_party/x86inc
+		third_party/libwebm
+		third_party/libwebp
+		third_party/libx11
+		third_party/libxcb-keysyms
+		third_party/libxml/chromium
+		third_party/libyuv
+		third_party/lit
+		third_party/llvm
+		third_party/lottie
+		third_party/lss
+		third_party/lzma_sdk
+		third_party/mako
+		third_party/markupsafe
+		third_party/material_color_utilities
+		third_party/mesa
+		third_party/metrics_proto
+		third_party/minigbm
+		third_party/modp_b64
+		third_party/nasm
+		third_party/nearby
+		third_party/neon_2_sse
+		third_party/node
+		third_party/omnibox_proto
+		third_party/one_euro_filter
+		third_party/openh264
+		third_party/openscreen
+		third_party/openscreen/src/third_party/tinycbor/src/src
+		third_party/ots
+		third_party/pdfium
+		third_party/pdfium/third_party/agg23
+		third_party/pdfium/third_party/bigint
+		third_party/pdfium/third_party/freetype
+		third_party/pdfium/third_party/lcms
+		third_party/pdfium/third_party/libopenjpeg
+		third_party/pdfium/third_party/libtiff
+		third_party/perfetto
+		third_party/perfetto/protos/third_party/chromium
+		third_party/perfetto/protos/third_party/simpleperf
+		third_party/pffft
+		third_party/ply
+		third_party/polymer
+		third_party/private-join-and-compute
+		third_party/private_membership
+		third_party/protobuf
+		third_party/protobuf/third_party/utf8_range
+		third_party/pthreadpool
+		third_party/puffin
+		third_party/pyjson5
+		third_party/pyyaml
+		third_party/rapidhash
+		third_party/rnnoise
+		third_party/rust
+		third_party/s2cellid
+		third_party/search_engines_data
+		third_party/securemessage
+		third_party/selenium-atoms
+		third_party/sentencepiece
+		third_party/sentencepiece/src/third_party/darts_clone
+		third_party/shell-encryption
+		third_party/simdutf
+		third_party/simplejson
+		third_party/six
+		third_party/skia
+		third_party/skia/include/third_party/vulkan
+		third_party/skia/third_party/vulkan
+		third_party/smhasher
+		third_party/snappy
+		third_party/spirv-tools
+		third_party/spirv-headers
+		third_party/sqlite
+		third_party/swiftshader
+		third_party/swiftshader/third_party/astc-encoder
+		third_party/swiftshader/third_party/llvm-subzero
+		third_party/swiftshader/third_party/marl
+		third_party/swiftshader/third_party/subzero
+		third_party/swiftshader/third_party/SPIRV-Headers
+		third_party/swiftshader/third_party/SPIRV-Tools
+		third_party/tensorflow-text
+		third_party/tensorflow_models
+		third_party/tflite
+		third_party/tflite/src/third_party/xla
+		third_party/tflite/src/third_party/xla/third_party/tsl
+		third_party/tflite/src/third_party/eigen3
+		third_party/tflite/src/third_party/fft2d
+		third_party/ruy
+		third_party/six
+		third_party/ukey2
+		third_party/unrar
+		third_party/utf
+		third_party/vulkan
+		third_party/wasm_tts_engine
+		third_party/wayland
+		third_party/webdriver
+		third_party/webgpu-cts
+		third_party/webrtc
+		third_party/webrtc/common_audio/third_party/ooura
+		third_party/webrtc/common_audio/third_party/spl_sqrt_floor
+		third_party/webrtc/modules/third_party/fft
+		third_party/webrtc/modules/third_party/g711
+		third_party/webrtc/modules/third_party/g722
+		third_party/webrtc/rtc_base/third_party/base64
+		third_party/webrtc/rtc_base/third_party/sigslot
+		third_party/widevine
+		third_party/woff2
+		third_party/wuffs
+		third_party/x11proto
+		third_party/xcbproto
+		third_party/xnnpack
+		third_party/zxcvbn-cpp
+		third_party/zlib/contrib/minizip
+		third_party/zlib/google
+		third_party/zstd
+		url/third_party/mozilla
+		v8/third_party/siphash
+		v8/third_party/utf8-decoder
+		v8/third_party/valgrind
+		v8/third_party/glibc
+		v8/third_party/inspector_protocol
+		v8/third_party/rapidhash-v8
+		v8/third_party/v8
+
+		# gyp -> gn leftovers
+		third_party/speech-dispatcher
+		third_party/usb_ids
+		third_party/xdg-utils
+	)
+	if ! use system-ffmpeg; then
+		keeplibs+=( third_party/ffmpeg third_party/opus )
+	fi
+	if ! use system-icu; then
+		keeplibs+=( third_party/icu )
+	fi
+	if ! use system-png; then
+		keeplibs+=( third_party/libpng )
+	fi
+	if ! use system-av1; then
+		keeplibs+=(
+			third_party/dav1d
+			third_party/libaom
+			third_party/libaom/source/libaom/third_party/fastfeat
+			third_party/libaom/source/libaom/third_party/SVT-AV1
+			third_party/libaom/source/libaom/third_party/vector
+			third_party/libaom/source/libaom/third_party/x86inc
+		)
+	fi
+	if ! use system-harfbuzz; then
+		keeplibs+=( third_party/harfbuzz-ng )
+	fi
+	if true || use libcxx; then
+		keeplibs+=( third_party/re2 )
+		keeplibs+=( third_party/libc++ )
+	fi
+	if use arm64 || use ppc64 ; then
+		keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 )
+	fi
+	# we need to generate ppc64 stuff because upstream does not ship it yet
+	# it has to be done before unbundling.
+	if use ppc64; then
+		pushd third_party/libvpx >/dev/null || die
+		mkdir -p source/config/linux/ppc64 || die
+		# requires git and clang, bug #832803
+		sed -i -e "s|^update_readme||g; s|clang-format|${EPREFIX}/bin/true|g" \
+			generate_gni.sh || die
+		./generate_gni.sh || die
+		popd >/dev/null || die
+
+		pushd third_party/ffmpeg >/dev/null || die
+		cp libavcodec/ppc/h264dsp.c libavcodec/ppc/h264dsp_ppc.c || die
+		cp libavcodec/ppc/h264qpel.c libavcodec/ppc/h264qpel_ppc.c || die
+		popd >/dev/null || die
+	fi
+
+	# Remove most bundled libraries. Some are still needed.
+	build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
+
+	# bundled eu-strip is for amd64 only and we don't want to pre-stripped binaries
+	mkdir -p buildtools/third_party/eu-strip/bin || die
+	ln -s "${EPREFIX}"/bin/true buildtools/third_party/eu-strip/bin/eu-strip || die
+}
+
+chromium_rust_version_check() {
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	echo $rustc_version
+}
+
+chromium_configure() {
+	# Calling this here supports resumption via FEATURES=keepwork
+	python_setup
+
+	local myconf_gn=""
+
+	# Make sure the build system will use the right tools, bug #340795.
+	tc-export AR CC CXX NM
+
+	if needs_clang && ! tc-is-clang; then
+		# Force clang since gcc is either broken or build is using libcxx.
+		if tc-is-cross-compiler; then
+			CC="${CBUILD}-clang -target ${CHOST} --sysroot ${ESYSROOT}"
+			CXX="${CBUILD}-clang++ -target ${CHOST} --sysroot ${ESYSROOT}"
+			BUILD_CC=${CBUILD}-clang
+			BUILD_CXX=${CBUILD}-clang++
+		else
+			CC=${CHOST}-clang
+			CXX=${CHOST}-clang++
+		fi
+		strip-unsupported-flags
+	fi
+
+	if tc-is-clang; then
+		myconf_gn+=" is_clang=true clang_use_chrome_plugins=false"
+	else
+		myconf_gn+=" is_clang=false"
+	fi
+
+	# Force lld for lto or pgo builds only, otherwise disable, bug 641556
+	if use lto || use pgo; then
+		myconf_gn+=" use_lld=true"
+	else
+		myconf_gn+=" use_lld=false"
+	fi
+
+	if use lto || use pgo; then
+		AR=llvm-ar
+		NM=llvm-nm
+		if tc-is-cross-compiler; then
+			BUILD_AR=llvm-ar
+			BUILD_NM=llvm-nm
+		fi
+	fi
+
+	# Define a custom toolchain for GN
+	myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
+
+	if tc-is-cross-compiler; then
+		tc-export BUILD_{AR,CC,CXX,NM}
+		myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\""
+		myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\""
+		myconf_gn+=" pkg_config=\"$(tc-getPKG_CONFIG)\""
+		myconf_gn+=" host_pkg_config=\"$(tc-getBUILD_PKG_CONFIG)\""
+
+		# setup cups-config, build system only uses --libs option
+		if use cups; then
+			mkdir "${T}/cups-config" || die
+			cp "${ESYSROOT}/usr/bin/${CHOST}-cups-config" "${T}/cups-config/cups-config" || die
+			export PATH="${PATH}:${T}/cups-config"
+		fi
+
+		# Don't inherit PKG_CONFIG_PATH from environment
+		local -x PKG_CONFIG_PATH=
+	else
+		myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+	fi
+
+	local rustc_ver
+		rustc_ver=$(chromium_rust_version_check)
+		if ver_test "${rustc_ver}" -lt "${RUST_MIN_VER}"; then
+			eerror "Rust >=${RUST_MIN_VER} is required"
+			eerror "Please run 'eselect rust' and select the correct rust version"
+			die "Selected rust version is too old"
+		else
+			einfo "Using rust ${rustc_ver} to build"
+		fi
+		myconf_gn+=" rust_sysroot_absolute=\"${EPREFIX}/usr/lib/rust/${rustc_ver}/\""
+		myconf_gn+=" rustc_version=\"${rustc_ver}\""
+
+	# Create dummy pkg-config file for libsystemd, only dependency of installer
+	mkdir "${T}/libsystemd" || die
+	cat <<- EOF > "${T}/libsystemd/libsystemd.pc"
+		Name:
+		Description:
+		Version:
+	EOF
+	local -x PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+"${PKG_CONFIG_PATH}:"}${T}/libsystemd"
+
+	# GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
+	myconf_gn+=" is_debug=false"
+
+	myconf_gn+=" rust_sysroot_absolute=\"$(get_rust_prefix)\""
+	myconf_gn+=" rustc_version=\"${RUST_SLOT}\""
+
+	# enable DCHECK with USE=debug only, increases chrome binary size by 30%, bug #811138.
+	# DCHECK is fatal by default, make it configurable at runtime, #bug 807881.
+	myconf_gn+=" dcheck_always_on=$(usex debug true false)"
+	myconf_gn+=" dcheck_is_configurable=$(usex debug true false)"
+
+	# Component build isn't generally intended for use by end users. It's mostly useful
+	# for development and debugging.
+	myconf_gn+=" is_component_build=$(usex component-build true false)"
+
+	# Disable nacl, we can't build without pnacl (http://crbug.com/269560).
+	myconf_gn+=" enable_nacl=false"
+
+	# Use system-provided libraries.
+	# TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733).
+	# TODO: use_system_hunspell (upstream changes needed).
+	# TODO: use_system_protobuf (bug #525560).
+	# TODO: use_system_sqlite (http://crbug.com/22208).
+
+	# libevent: https://bugs.gentoo.org/593458
+	local gn_system_libraries=(
+		flac
+		fontconfig
+		freetype
+		# Need harfbuzz_from_pkgconfig target
+		#harfbuzz-ng
+		#132: system libdrm is not supported???
+		#libdrm
+		libjpeg
+		# libwebp
+		libxml
+		libxslt
+		#133: libva shit depends on vendored openh264 now
+		#openh264
+		zlib
+	)
+	if use system-ffmpeg; then
+		gn_system_libraries+=( ffmpeg opus )
+	fi
+	if use system-icu; then
+		gn_system_libraries+=( icu )
+	fi
+	if use system-png; then
+		gn_system_libraries+=( libpng )
+	fi
+	if use system-av1; then
+		gn_system_libraries+=( dav1d libaom )
+	fi
+	# re2 library interface relies on std::string and std::vector
+	if false && ! use libcxx; then
+		gn_system_libraries+=( re2 )
+	fi
+	build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die
+
+	# See dependency logic in third_party/BUILD.gn
+	myconf_gn+=" use_system_harfbuzz=$(usex system-harfbuzz true false)"
+
+	# Disable deprecated libgnome-keyring dependency, bug #713012
+	myconf_gn+=" use_gnome_keyring=false"
+
+	# Optional dependencies.
+	myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)"
+	myconf_gn+=" enable_widevine=$(usex widevine true false)"
+
+	if use headless; then
+		myconf_gn+=" use_cups=false"
+		myconf_gn+=" use_kerberos=false"
+		myconf_gn+=" use_pulseaudio=false"
+		myconf_gn+=" use_vaapi=false"
+		myconf_gn+=" rtc_use_pipewire=false"
+	else
+		myconf_gn+=" use_cups=$(usex cups true false)"
+		myconf_gn+=" use_kerberos=$(usex kerberos true false)"
+		myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)"
+		myconf_gn+=" use_vaapi=$(usex vaapi true false)"
+		myconf_gn+=" rtc_use_pipewire=$(usex screencast true false)"
+		myconf_gn+=" gtk_version=$(usex gtk4 4 3)"
+	fi
+
+	# TODO: link_pulseaudio=true for GN.
+
+	myconf_gn+=" disable_fieldtrial_testing_config=true"
+
+	# Never use bundled gold binary. Disable gold linker flags for now.
+	# Do not use bundled clang.
+	# Trying to use gold results in linker crash.
+	myconf_gn+=" use_gold=false use_sysroot=false"
+	myconf_gn+=" use_custom_libcxx=$(usex libcxx true false)"
+
+	# Disable pseudolocales, only used for testing
+	myconf_gn+=" enable_pseudolocales=false"
+
+	# Disable code formating of generated files
+	myconf_gn+=" blink_enable_generated_code_formatting=false"
+
+	ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)"
+	myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)"
+	myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\""
+
+	# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys .
+	# Note: these are for Gentoo use ONLY. For your own distribution,
+	# please get your own set of keys. Feel free to contact chromium@gentoo.org
+	# for more info. The OAuth2 credentials, however, have been left out.
+	# Those OAuth2 credentials have been broken for quite some time anyway.
+	# Instead we apply a patch to use the --oauth2-client-id= and
+	# --oauth2-client-secret= switches for setting GOOGLE_DEFAULT_CLIENT_ID and
+	# GOOGLE_DEFAULT_CLIENT_SECRET at runtime. This allows signing into
+	# Chromium without baked-in values.
+	local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc"
+	myconf_gn+=" google_api_key=\"${google_api_key}\""
+	local myarch="$(tc-arch)"
+
+	# Avoid CFLAGS problems, bug #352457, bug #390147.
+	if ! use custom-cflags; then
+		replace-flags "-Os" "-O2"
+		strip-flags
+
+		# Debug info section overflows without component build
+		# Prevent linker from running out of address space, bug #471810 .
+		if ! use component-build || use x86; then
+			filter-flags "-g*"
+		fi
+
+		# Prevent libvpx/xnnpack build failures. Bug 530248, 544702, 546984, 853646.
+		if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then
+			filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 -mno-xop -mno-sse4a
+		fi
+	fi
+
+	if [[ $myarch = amd64 ]] ; then
+		myconf_gn+=" target_cpu=\"x64\""
+		ffmpeg_target_arch=x64
+	elif [[ $myarch = x86 ]] ; then
+		myconf_gn+=" target_cpu=\"x86\""
+		ffmpeg_target_arch=ia32
+
+		# This is normally defined by compiler_cpu_abi in
+		# build/config/compiler/BUILD.gn, but we patch that part out.
+		append-flags -msse2 -mfpmath=sse -mmmx
+	elif [[ $myarch = arm64 ]] ; then
+		myconf_gn+=" target_cpu=\"arm64\""
+		ffmpeg_target_arch=arm64
+	elif [[ $myarch = arm ]] ; then
+		myconf_gn+=" target_cpu=\"arm\""
+		ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm)
+	elif [[ $myarch = ppc64 ]] ; then
+		myconf_gn+=" target_cpu=\"ppc64\""
+		ffmpeg_target_arch=ppc64
+	else
+		die "Failed to determine target arch, got '$myarch'."
+	fi
+
+	# Make sure that -Werror doesn't get added to CFLAGS by the build system.
+	# Depending on GCC version the warnings are different and we don't want
+	# the build to fail because of that.
+	myconf_gn+=" treat_warnings_as_errors=false"
+
+	# Disable fatal linker warnings, bug 506268.
+	myconf_gn+=" fatal_linker_warnings=false"
+
+	# Disable external code space for V8 for ppc64. It is disabled for ppc64
+	# by default, but cross-compiling on amd64 enables it again.
+	if tc-is-cross-compiler; then
+		if ! use amd64 && ! use arm64; then
+			myconf_gn+=" v8_enable_external_code_space=false"
+		fi
+	fi
+
+	# Only enabled for clang, but gcc has endian macros too
+	myconf_gn+=" v8_use_libm_trig_functions=true"
+
+	# Bug 491582.
+	export TMPDIR="${WORKDIR}/temp"
+	mkdir -p -m 755 "${TMPDIR}" || die
+
+	# https://bugs.gentoo.org/654216
+	addpredict /dev/dri/ #nowarn
+
+	#if ! use system-ffmpeg; then
+	if false; then
+		local build_ffmpeg_args=""
+		if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then
+			build_ffmpeg_args+=" --disable-asm"
+		fi
+
+		# Re-configure bundled ffmpeg. See bug #491378 for example reasons.
+		einfo "Configuring bundled ffmpeg..."
+		pushd third_party/ffmpeg > /dev/null || die
+		chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \
+			--branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die
+		chromium/scripts/copy_config.sh || die
+		chromium/scripts/generate_gn.py || die
+		popd > /dev/null || die
+	fi
+
+	# Disable unknown warning message from clang.
+	if tc-is-clang; then
+		append-flags -Wno-unknown-warning-option
+		if tc-is-cross-compiler; then
+			export BUILD_CXXFLAGS+=" -Wno-unknown-warning-option"
+			export BUILD_CFLAGS+=" -Wno-unknown-warning-option"
+		fi
+	fi
+
+	# Explicitly disable ICU data file support for system-icu/headless builds.
+	if use system-icu || use headless; then
+		myconf_gn+=" icu_use_data_file=false"
+	fi
+
+	# Enable ozone wayland and/or headless support
+	myconf_gn+=" use_ozone=true ozone_auto_platforms=false"
+	myconf_gn+=" ozone_platform_headless=true"
+	myconf_gn+=" enable_remoting=false"
+	if use headless; then
+		myconf_gn+=" ozone_platform=\"headless\""
+		myconf_gn+=" use_xkbcommon=false use_gtk=false use_qt=false"
+		myconf_gn+=" use_glib=false use_gio=false"
+		myconf_gn+=" use_pangocairo=false use_alsa=false"
+		myconf_gn+=" use_libpci=false use_udev=false"
+		myconf_gn+=" enable_print_preview=false"
+	else
+		# myconf_gn+=" use_system_libdrm=true"
+		myconf_gn+=" use_system_minigbm=true"
+		myconf_gn+=" use_xkbcommon=true"
+		if use qt5; then
+			local moc_dir="$(qt5_get_bindir)"
+			if tc-is-cross-compiler; then
+				# Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
+				local cbuild_libdir=$($(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libxslt)
+				cbuild_libdir=${cbuild_libdir:2}
+				moc_dir="${EPREFIX}"/${cbuild_libdir/% }/qt5/bin
+			fi
+			export PATH="${PATH}:${moc_dir}"
+		fi
+		myconf_gn+=" use_qt=$(usex qt5 true false)"
+		myconf_gn+=" ozone_platform_x11=$(usex X true false)"
+		myconf_gn+=" ozone_platform_wayland=$(usex wayland true false)"
+		myconf_gn+=" ozone_platform=$(usex wayland \"wayland\" \"x11\")"
+		use wayland && myconf_gn+=" use_system_libffi=true"
+	fi
+
+	# Results in undefined references in chrome linking, may require CFI to work
+	if use arm64; then
+		myconf_gn+=" arm_control_flow_integrity=\"none\""
+	fi
+
+	# Enable official builds
+	myconf_gn+=" is_official_build=$(usex official true false)"
+	myconf_gn+=" use_thin_lto=$(usex lto true false)"
+	myconf_gn+=" thin_lto_enable_optimizations=$(usex lto true false)"
+	if use official; then
+		# Allow building against system libraries in official builds
+		sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+			tools/generate_shim_headers/generate_shim_headers.py || die
+		# Disable CFI: unsupported for GCC, requires clang+lto+lld
+		myconf_gn+=" is_cfi=false"
+		# Don't add symbols to build
+		myconf_gn+=" symbol_level=0"
+	fi
+
+	if use pgo; then
+		myconf_gn+=" chrome_pgo_phase=${1}"
+		if [[ "$1" == "2" ]]; then
+			myconf_gn+=" pgo_data_path=\"${2}\""
+		fi
+	else
+		# Disable PGO, because profile data is only compatible with >=clang-11
+		myconf_gn+=" chrome_pgo_phase=0"
+	fi
+
+	# user CXXFLAGS might overwrite -march=armv8-a+crc+crypto, bug #851639
+	if use arm64 && tc-is-gcc; then
+		sed -i '/^#if HAVE_ARM64_CRC32C/a #pragma GCC target ("+crc+crypto")' \
+			third_party/crc32c/src/src/crc32c_arm64.cc || die
+	fi
+
+	# skipping typecheck is only supported on amd64, bug #876157
+	if ! use amd64; then
+		myconf_gn+=" devtools_skip_typecheck=false"
+	fi
+
+	# broken in 119
+	myconf_gn+=" enable_nocompile_tests=false"
+
+	einfo "Configuring Chromium..."
+	set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release
+	echo "$@"
+	"$@" || die
+}
+
+src_configure() {
+	chromium_configure $(usex pgo 1 0)
+}
+
+chromium_compile() {
+	# Final link uses lots of file descriptors.
+	ulimit -n 2048
+
+	# Calling this here supports resumption via FEATURES=keepwork
+	python_setup
+
+	# Don't inherit PYTHONPATH from environment, bug #789021, #812689
+	local -x PYTHONPATH=
+
+	# Build mksnapshot and pax-mark it.
+	local x
+	for x in mksnapshot v8_context_snapshot_generator; do
+		if tc-is-cross-compiler; then
+			eninja -C out/Release "host/${x}"
+			pax-mark m "out/Release/host/${x}"
+		else
+			eninja -C out/Release "${x}"
+			pax-mark m "out/Release/${x}"
+		fi
+	done
+
+	# Even though ninja autodetects number of CPUs, we respect
+	# user's options, for debugging with -j 1 or any other reason.
+	eninja -C out/Release chrome chromedriver
+	use suid && eninja -C out/Release chrome_sandbox
+
+	pax-mark m out/Release/chrome
+}
+
+# This function is called from virtx, and must always return so that Xvfb
+# session isn't left running. If we return 1, virtx will call die().
+chromium_profile() {
+	einfo "Profiling for PGO"
+
+	pushd "${WORKDIR}/chromium-profiler-"* >/dev/null || return 1
+
+	# Remove old profdata in case profiling was interrupted.
+	rm -rf "${1}" || return 1
+
+	if ! "${EPYTHON}" ./chromium_profiler.py \
+		--chrome-executable "${S}/out/Release/chrome" \
+		--chromedriver-executable "${S}/out/Release/chromedriver.unstripped" \
+		--add-arg no-sandbox --add-arg disable-dev-shm-usage \
+		--profile-output "${1}"; then
+		eerror "Profiling failed"
+		return 1
+	fi
+
+	popd >/dev/null || return 1
+}
+
+src_compile() {
+	if use pgo; then
+		local profdata
+
+		profdata="${WORKDIR}/chromium.profdata"
+
+		if [[ ! -e "${WORKDIR}/.pgo-profiled" ]]; then
+			chromium_compile
+			virtx chromium_profile "$profdata"
+
+			touch "${WORKDIR}/.pgo-profiled" || die
+		fi
+
+		if [[ ! -e "${WORKDIR}/.pgo-phase-2-configured" ]]; then
+			# Remove phase 1 output
+			rm -r out/Release || die
+
+			chromium_configure 2 "$profdata"
+
+			touch "${WORKDIR}/.pgo-phase-2-configured" || die
+		fi
+
+		if [[ ! -e "${WORKDIR}/.pgo-phase-2-compiled" ]]; then
+			chromium_compile
+			touch "${WORKDIR}/.pgo-phase-2-compiled" || die
+		fi
+	else
+		chromium_compile
+	fi
+
+	mv out/Release/chromedriver{.unstripped,} || die
+
+	rm -f out/Release/locales/*.pak.info || die
+
+	# Build manpage; bug #684550
+	sed -e 's|@@PACKAGE@@|chromium-browser|g;
+		s|@@MENUNAME@@|Chromium|g;' \
+		chrome/app/resources/manpage.1.in > \
+		out/Release/chromium-browser.1 || die
+
+	# Build desktop file; bug #706786
+	sed -e 's|@@MENUNAME@@|Chromium|g;
+		s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g;
+		s|@@PACKAGE@@|chromium-browser|g;
+		s|\(^Exec=\)/usr/bin/|\1|g;' \
+		chrome/installer/linux/common/desktop.template > \
+		out/Release/chromium-browser-chromium.desktop || die
+
+	# Build vk_swiftshader_icd.json; bug #827861
+	sed -e 's|${ICD_LIBRARY_PATH}|./libvk_swiftshader.so|g' \
+		third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl > \
+		out/Release/vk_swiftshader_icd.json || die
+}
+
+src_install() {
+	local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser"
+	exeinto "${CHROMIUM_HOME}"
+	doexe out/Release/chrome
+
+	if use suid; then
+		newexe out/Release/chrome_sandbox chrome-sandbox
+		fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox"
+	fi
+
+	doexe out/Release/chromedriver
+	doexe out/Release/chrome_crashpad_handler
+
+	ozone_auto_session () {
+		use X && use wayland && ! use headless && echo true || echo false
+	}
+	local sedargs=( -e
+			"s:/usr/lib/:/usr/$(get_libdir)/:g;
+			s:@@OZONE_AUTO_SESSION@@:$(ozone_auto_session):g"
+	)
+	sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r7.sh" > chromium-launcher.sh || die
+	doexe chromium-launcher.sh
+
+	# It is important that we name the target "chromium-browser",
+	# xdg-utils expect it; bug #355517.
+	dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser
+	# keep the old symlink around for consistency
+	dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium
+
+	dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver
+
+	# Allow users to override command-line options, bug #357629.
+	insinto /etc/chromium
+	newins "${FILESDIR}/chromium.default" "default"
+
+	pushd out/Release/locales > /dev/null || die
+	chromium_remove_language_paks
+	popd
+
+	insinto "${CHROMIUM_HOME}"
+	doins out/Release/*.bin
+	doins out/Release/*.pak
+	(
+		shopt -s nullglob
+		local files=(out/Release/*.so out/Release/*.so.[0-9])
+		[[ ${#files[@]} -gt 0 ]] && doins "${files[@]}"
+	)
+
+	# Install bundled xdg-utils, avoids installing X11 libraries with USE="-X wayland"
+	doins out/Release/xdg-{settings,mime}
+
+	if ! use system-icu && ! use headless; then
+		doins out/Release/icudtl.dat
+	fi
+
+	doins -r out/Release/locales
+	doins -r out/Release/MEIPreload
+
+	# Install vk_swiftshader_icd.json; bug #827861
+	doins out/Release/vk_swiftshader_icd.json
+
+	if [[ -d out/Release/swiftshader ]]; then
+		insinto "${CHROMIUM_HOME}/swiftshader"
+		doins out/Release/swiftshader/*.so
+	fi
+
+	# Install icons
+	local branding size
+	for size in 16 24 32 48 64 128 256 ; do
+		case ${size} in
+			16|32) branding="chrome/app/theme/default_100_percent/chromium" ;;
+				*) branding="chrome/app/theme/chromium" ;;
+		esac
+		newicon -s ${size} "${branding}/product_logo_${size}.png" \
+			chromium-browser.png
+	done
+
+	# Install desktop entry
+	domenu out/Release/chromium-browser-chromium.desktop
+
+	# Install GNOME default application entry (bug #303100).
+	insinto /usr/share/gnome-control-center/default-apps
+	newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml
+
+	# Install manpage; bug #684550
+	doman out/Release/chromium-browser.1
+	dosym chromium-browser.1 /usr/share/man/man1/chromium.1
+
+	readme.gentoo_create_doc
+}
+
+pkg_postrm() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+}
+
+pkg_postinst() {
+	xdg_icon_cache_update
+	xdg_desktop_database_update
+	readme.gentoo_print_elog
+
+	if ! use headless; then
+		if use vaapi; then
+			elog "VA-API is disabled by default at runtime. You have to enable it"
+			elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS"
+			elog "in /etc/chromium/default."
+		fi
+		if use screencast; then
+			elog "Screencast is disabled by default at runtime. Either enable it"
+			elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer"
+			elog "inside Chromium or add --enable-features=WebRTCPipeWireCapturer"
+			elog "to CHROMIUM_FLAGS in /etc/chromium/default."
+		fi
+		if use gtk4; then
+			elog "Chromium prefers GTK3 over GTK4 at runtime. To override this"
+			elog "behavior you need to pass --gtk-version=4, e.g. by adding it"
+			elog "to CHROMIUM_FLAGS in /etc/chromium/default."
+		fi
+	fi
+}
diff --git a/www-client/chromium/files/chromium-138-compiler.patch b/www-client/chromium/files/chromium-138-compiler.patch
new file mode 100644
index 0000000..a46933c
--- /dev/null
+++ b/www-client/chromium/files/chromium-138-compiler.patch
@@ -0,0 +1,444 @@
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index 2fc8d82..4164b41 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -308,12 +308,8 @@ config("compiler") {
+ 
+   configs += [
+     # See the definitions below.
+-    ":clang_revision",
+-    ":rustc_revision",
+-    ":compiler_cpu_abi",
+     ":compiler_codegen",
+     ":compiler_deterministic",
+-    ":clang_warning_suppression",
+   ]
+ 
+   # Here we enable -fno-delete-null-pointer-checks, which makes various nullptr
+@@ -493,6 +489,9 @@ config("compiler") {
+     ldflags += [ "-fPIC" ]
+     rustflags += [ "-Crelocation-model=pic" ]
+ 
++    extra_rustflags = getenv("RUSTFLAGS")
++    rustflags += [ extra_rustflags ]
++
+     if (!is_clang) {
+       # Use pipes for communicating between sub-processes. Faster.
+       # (This flag doesn't do anything with Clang.)
+@@ -569,63 +568,6 @@ config("compiler") {
+     ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
+   }
+ 
+-  if (is_clang && !is_nacl) {
+-    cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
+-    if (save_reproducers_on_lld_crash && use_lld) {
+-      ldflags += [
+-        "-fcrash-diagnostics=all",
+-        "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
+-      ]
+-    }
+-
+-    # TODO(hans): Remove this once Clang generates better optimized debug info
+-    # by default. https://crbug.com/765793
+-    cflags += [
+-      "-mllvm",
+-      "-instcombine-lower-dbg-declare=0",
+-    ]
+-    if (!is_debug && use_thin_lto && is_a_target_toolchain) {
+-      if (is_win) {
+-        ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
+-      } else {
+-        ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
+-      }
+-    }
+-
+-    # TODO(crbug.com/40283598): This causes binary size growth and potentially
+-    # other problems.
+-    # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version.
+-    if (default_toolchain != "//build/toolchain/cros:target" &&
+-        !llvm_android_mainline) {
+-      cflags += [
+-        "-mllvm",
+-        "-split-threshold-for-reg-with-hint=0",
+-      ]
+-      if (use_thin_lto && is_a_target_toolchain) {
+-        if (is_win) {
+-          ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ]
+-        } else {
+-          ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ]
+-        }
+-      }
+-    }
+-
+-    # TODO(crbug.com/40192287): Investigate why/if this should be needed.
+-    if (is_win) {
+-      cflags += [ "/clang:-ffp-contract=off" ]
+-    } else {
+-      cflags += [ "-ffp-contract=off" ]
+-    }
+-
+-    # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF
+-    # (excluding toolchains that use an older version of LLVM).
+-    # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
+-    if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" &&
+-        default_toolchain != "//build/toolchain/cros:target") {
+-      cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
+-    }
+-  }
+-
+   # C11/C++11 compiler flags setup.
+   # ---------------------------
+   if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
+@@ -1036,20 +978,6 @@ config("compiler") {
+     # `-nodefaultlibs` from the linker invocation from Rust, which would be used
+     # to compile dylibs on Android, such as for constructing unit test APKs.
+     "-Cdefault-linker-libraries",
+-
+-    # To make Rust .d files compatible with ninja
+-    "-Zdep-info-omit-d-target",
+-
+-    # If a macro panics during compilation, show which macro and where it is
+-    # defined.
+-    "-Zmacro-backtrace",
+-
+-    # For deterministic builds, keep the local machine's current working
+-    # directory from appearing in build outputs.
+-    "-Zremap-cwd-prefix=.",
+-
+-    # We use clang-rt sanitizer runtimes.
+-    "-Zexternal-clangrt",
+   ]
+ 
+   if (!is_win || force_rustc_color_output) {
+@@ -1104,7 +1032,7 @@ config("compiler") {
+ # Don't allow unstable features to be enabled by `#![feature()]` without
+ # additional command line flags.
+ config("disallow_unstable_features") {
+-  rustflags = [ "-Zallow-features=" ]
++  #rustflags = [ "-Zallow-features=" ]
+ }
+ 
+ config("libcxx_hardening") {
+@@ -1563,52 +1491,6 @@ config("compiler_deterministic") {
+     }
+   }
+ 
+-  # Makes builds independent of absolute file path.
+-  if (is_clang && strip_absolute_paths_from_debug_symbols) {
+-    # If debug option is given, clang includes $cwd in debug info by default.
+-    # For such build, this flag generates reproducible obj files even we use
+-    # different build directory like "out/feature_a" and "out/feature_b" if
+-    # we build same files with same compile flag.
+-    # Other paths are already given in relative, no need to normalize them.
+-    if (is_nacl) {
+-      # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
+-      cflags += [
+-        "-Xclang",
+-        "-fdebug-compilation-dir",
+-        "-Xclang",
+-        ".",
+-      ]
+-    } else {
+-      # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
+-      # and -fcoverage-compilation-dir=.
+-      cflags += [ "-ffile-compilation-dir=." ]
+-
+-      # Convert absolute paths to relative paths. Expands to, for example:
+-      #   -file-prefix-map /path/to/chromium/src=../..
+-      swiftflags += [
+-        "-file-prefix-map",
+-        rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
+-      ]
+-    }
+-    if (!is_win) {
+-      # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+-      asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
+-    }
+-
+-    if (is_win && use_lld) {
+-      if (symbol_level == 2 || (is_clang && using_sanitizer)) {
+-        # Absolutize source file paths for PDB. Pass the real build directory
+-        # if the pdb contains source-level debug information and if linker
+-        # reproducibility is not critical.
+-        ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
+-      } else {
+-        # Use a fake fixed base directory for paths in the pdb to make the pdb
+-        # output fully deterministic and independent of the build directory.
+-        ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
+-      }
+-    }
+-  }
+-
+   # Tells the compiler not to use absolute paths when passing the default
+   # paths to the tools it invokes. We don't want this because we don't
+   # really need it and it can mess up the RBE cache entries.
+@@ -1627,124 +1509,6 @@ config("compiler_deterministic") {
+   }
+ }
+ 
+-config("clang_revision") {
+-  if (is_clang && clang_base_path == default_clang_base_path &&
+-      current_os != "zos") {
+-    _perform_consistency_checks = current_toolchain == default_toolchain
+-    if (llvm_force_head_revision) {
+-      _head_revision_stamp_path = "//third_party/llvm-build/force_head_revision"
+-      _head_revision = ""
+-      if (path_exists(_head_revision_stamp_path)) {
+-        _head_revision = read_file(_head_revision_stamp_path, "trim string")
+-      }
+-      assert(
+-          _head_revision != "",
+-          "llvm_force_head_revision=true, but no locally built version was detected.")
+-      _clang_revision = _head_revision
+-    } else {
+-      _clang_revision = read_file(
+-              "//third_party/llvm-build/Release+Asserts/cr_build_revision",
+-              "trim string")
+-
+-      # Ensure that the synced clang version matches what's in git.
+-      if (_perform_consistency_checks) {
+-        # Parse the clang version from the Python script.
+-        _clang_version_lines = filter_include(
+-                read_file("//tools/clang/scripts/update.py", "list lines"),
+-                [ "CLANG_*REVISION = *" ])
+-        _py_revision =
+-            string_replace(_clang_version_lines[0], "CLANG_REVISION = '", "")
+-        _py_revision = string_replace(_py_revision, "'", "")
+-        _py_subrevision =
+-            string_replace(_clang_version_lines[1], "CLANG_SUB_REVISION = ", "")
+-        _expected_clang_revision = "$_py_revision-$_py_subrevision"
+-
+-        # TODO(agrieve): Change filter_include to _clang_revision ==
+-        # _expected_clang_revision once angle & webrtc use a GCS DEPS entry
+-        # rather than a update.py runhook.
+-        assert(
+-            filter_include([ _clang_revision ],
+-                           [
+-                             _expected_clang_revision,
+-                             "$_expected_clang_revision,*",
+-                           ]) != [],
+-            "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?")
+-      }
+-    }
+-
+-    if (_perform_consistency_checks) {
+-      # Ensure that the revision matches the version major expected by GN.
+-      _versions_match = filter_include([ _clang_revision ],
+-                                       [ "llvmorg-$clang_version-*" ]) != []
+-      assert(
+-          _versions_match,
+-          "clang_revision=\"$_clang_revision\" but clang_version=\"$clang_version\". clang_version in build/toolchain/toolchain.gni is likely outdated.")
+-    }
+-
+-    if (toolchain_has_rust && _perform_consistency_checks) {
+-      # Ensure that the synced rust version matches what's in git.
+-      _rust_revision_lines =
+-          filter_include(read_file("//tools/rust/update_rust.py", "list lines"),
+-                         [ "RUST_*REVISION = *" ])
+-      _py_revision =
+-          string_replace(_rust_revision_lines[0], "RUST_REVISION = '", "")
+-      _py_revision = string_replace(_py_revision, "'", "")
+-      _py_subrevision =
+-          string_replace(_rust_revision_lines[1], "RUST_SUB_REVISION = ", "")
+-      _expected_rust_revision = "$_py_revision-$_py_subrevision"
+-
+-      # Ensure the rust version matches the clang version.
+-      assert(
+-          filter_include([ rustc_revision ],
+-                         [ "*-$_expected_rust_revision-*" ]) != [],
+-          "rustc_revision=\"$rustc_revision\" but update_rust.py expected \"$_expected_rust_revision\". Run \"gclient sync\"?")
+-    }
+-
+-    # This is here so that all files get recompiled after a clang roll and
+-    # when turning clang on or off. (defines are passed via the command line,
+-    # and build system rebuild things when their commandline changes). Nothing
+-    # should ever read this define.
+-    defines = [ "CR_CLANG_REVISION=\"$_clang_revision\"" ]
+-  }
+-}
+-
+-# Controls the usage of a warning suppression mapping (WSM) file to suppress
+-# warnings based on the path of the file they come from. It's controlled by the
+-# `clang_warning_suppression_file` gn argument , which points to a text file
+-# defining which warnings should be suppressed where.
+-# See //build/config/warning_suppression.txt for an example file; this is the
+-# file used by Chromium.
+-#
+-# To use a different file, or to use this functionality outside of chromium,
+-# set the `clang_warning_suppression_file` argument to point to the new file,
+-# e.g. by setting in the the project's .gn file.
+-config("clang_warning_suppression") {
+-  # Some build configs use older versions of clang that don't support WSMs
+-  if (!is_nacl && default_toolchain != "//build/toolchain/cros:target" &&
+-      !llvm_android_mainline && is_clang &&
+-      clang_warning_suppression_file != "") {
+-    from_build_root =
+-        rebase_path(clang_warning_suppression_file, root_build_dir)
+-    inputs = [ clang_warning_suppression_file ]
+-    cflags = [
+-      "-Xclang",
+-      "--warning-suppression-mappings=" + from_build_root,
+-    ]
+-  }
+-}
+-
+-config("rustc_revision") {
+-  if (rustc_revision != "") {
+-    # Similar to the above config, this is here so that all files get recompiled
+-    # after a rustc roll. Nothing should ever read this cfg. This will not be
+-    # set if a custom toolchain is used.
+-    rustflags = [
+-      "--cfg",
+-      "cr_rustc_revision=\"$rustc_revision\"",
+-    ]
+-  }
+-}
+-
+ config("compiler_arm_fpu") {
+   if (current_cpu == "arm" && !is_ios && !is_nacl) {
+     cflags = [ "-mfpu=$arm_fpu" ]
+@@ -2180,11 +1944,7 @@ config("chromium_code") {
+       defines = [ "_HAS_NODISCARD" ]
+     }
+   } else {
+-    cflags = [ "-Wall" ]
+-    if (is_clang) {
+-      # Enable extra warnings for chromium_code when we control the compiler.
+-      cflags += [ "-Wextra" ]
+-    }
++    cflags = [ ]
+ 
+     # In Chromium code, we define __STDC_foo_MACROS in order to get the
+     # C99 macros on Mac and Linux.
+@@ -2193,24 +1953,6 @@ config("chromium_code") {
+       "__STDC_FORMAT_MACROS",
+     ]
+ 
+-    if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
+-        current_cpu != "s390" && current_cpu != "ppc64" &&
+-        current_cpu != "mips" && current_cpu != "mips64" &&
+-        current_cpu != "riscv64" && current_cpu != "loong64") {
+-      # Non-chromium code is not guaranteed to compile cleanly with
+-      # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
+-      # disabled, so only do that for Release build.
+-      fortify_level = "2"
+-
+-      # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
+-      # implementation with a few custom glibc patches. Use that if it's
+-      # available.
+-      if (is_chromeos_device && !lacros_use_chromium_toolchain) {
+-        fortify_level = "3"
+-      }
+-      defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
+-    }
+-
+     if (is_apple) {
+       cflags_objc = [ "-Wimplicit-retain-self" ]
+       cflags_objcc = [ "-Wimplicit-retain-self" ]
+@@ -2626,7 +2368,8 @@ config("default_stack_frames") {
+ # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
+ # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
+ # [2]: https://crrev.com/c/5447532
+-config("optimize") {
++config("optimize") { }
++config("xoptimize") {
+   if (is_win) {
+     # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
+     # consistency with the other platforms.
+@@ -2675,7 +2418,8 @@ config("optimize") {
+ }
+ 
+ # Turn off optimizations.
+-config("no_optimize") {
++config("no_optimize") { }
++config("xno_optimize") {
+   if (is_win) {
+     cflags = [
+       "/Od",  # Disable optimization.
+@@ -2710,7 +2454,8 @@ config("no_optimize") {
+ # Turns up the optimization level. Used to explicitly enable -O2 instead of
+ # -Os for select targets on platforms that use optimize_for_size. No-op
+ # elsewhere.
+-config("optimize_max") {
++config("optimize_max") { }
++config("xoptimize_max") {
+   if (is_nacl && is_nacl_irt) {
+     # The NaCl IRT is a special case and always wants its own config.
+     # Various components do:
+@@ -2743,7 +2488,8 @@ config("optimize_max") {
+ #
+ # TODO(crbug.com/41259697) - rework how all of these configs are related
+ # so that we don't need this disclaimer.
+-config("optimize_speed") {
++config("optimize_speed") { }
++config("xoptimize_speed") {
+   if (is_nacl && is_nacl_irt) {
+     # The NaCl IRT is a special case and always wants its own config.
+     # Various components do:
+@@ -2772,7 +2518,8 @@ config("optimize_speed") {
+   }
+ }
+ 
+-config("optimize_fuzzing") {
++config("optimize_fuzzing") { }
++config("xoptimize_fuzzing") {
+   cflags = [ "-O1" ] + common_optimize_on_cflags
+   rustflags = [ "-Copt-level=1" ]
+   ldflags = common_optimize_on_ldflags
+@@ -2903,7 +2650,8 @@ config("win_pdbaltpath") {
+ }
+ 
+ # Full symbols.
+-config("symbols") {
++config("symbols") { }
++config("xsymbols") {
+   rustflags = []
+   configs = []
+   if (is_win) {
+@@ -3065,7 +2813,8 @@ config("symbols") {
+ # Minimal symbols.
+ # This config guarantees to hold symbol for stack trace which are shown to user
+ # when crash happens in unittests running on buildbot.
+-config("minimal_symbols") {
++config("minimal_symbols") { }
++config("xminimal_symbols") {
+   rustflags = []
+   if (is_win) {
+     # Functions, files, and line tables only.
+@@ -3150,7 +2899,8 @@ config("minimal_symbols") {
+ # This configuration contains function names only. That is, the compiler is
+ # told to not generate debug information and the linker then just puts function
+ # names in the final debug information.
+-config("no_symbols") {
++config("no_symbols") { }
++config("xno_symbols") {
+   if (is_win) {
+     ldflags = [ "/DEBUG" ]
+ 
+diff --git a/build/config/gcc/BUILD.gn b/build/config/gcc/BUILD.gn
+index a659210..bde0e1b 100644
+--- a/build/config/gcc/BUILD.gn
++++ b/build/config/gcc/BUILD.gn
+@@ -32,7 +32,7 @@ declare_args() {
+ # See http://gcc.gnu.org/wiki/Visibility
+ config("symbol_visibility_hidden") {
+   cflags = [ "-fvisibility=hidden" ]
+-  rustflags = [ "-Zdefault-visibility=hidden" ]
++  # rustflags = [ "-Zdefault-visibility=hidden" ]
+ 
+   # Visibility attribute is not supported on AIX.
+   if (current_os != "aix") {
+diff --git a/build/config/rust.gni b/build/config/rust.gni
+index 953935d..a8fec3f 100644
+--- a/build/config/rust.gni
++++ b/build/config/rust.gni
+@@ -77,7 +77,8 @@ declare_args() {
+   #
+   # TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
+   # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
+-  toolchain_supports_rust_thin_lto = !is_chromeos
++  # toolchain_supports_rust_thin_lto = !is_chromeos
++  toolchain_supports_rust_thin_lto = false
+ 
+   # Any extra std rlibs in your Rust toolchain, relative to the standard
+   # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch b/www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch
new file mode 100644
index 0000000..e5d6f15
--- /dev/null
+++ b/www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch
@@ -0,0 +1,52 @@
+diff --git a/.gn b/.gn
+index ae58a0b0a6..e34034d383 100644
+--- a/.gn
++++ b/.gn
+@@ -146,25 +146,25 @@ no_check_targets = [
+ #      this situation much easier to create. if the build always lists the
+ #      files and passes them to a script, it will always be correct.
+ 
+-exec_script_allowlist =
+-    build_dotfile_settings.exec_script_allowlist +
+-    angle_dotfile_settings.exec_script_allowlist +
+-    [
+-      # Allowlist entries for //build should go into
+-      # //build/dotfile_settings.gni instead, so that they can be shared
+-      # with other repos. The entries in this list should be only for files
+-      # in the Chromium repo outside of //build.
+-      "//build_overrides/build.gni",
+-
+-      "//chrome/version.gni",
+-
+-      "//google_apis/BUILD.gn",
+-      "//printing/BUILD.gn",
+-
+-      "//remoting/host/installer/linux/BUILD.gn",
+-      "//remoting/remoting_version.gni",
+-      "//remoting/host/installer/win/generate_clsids.gni",
+-
+-      "//tools/grit/grit_rule.gni",
+-      "//tools/gritsettings/BUILD.gn",
+-    ]
++#exec_script_allowlist =
++#    build_dotfile_settings.exec_script_allowlist +
++#    angle_dotfile_settings.exec_script_allowlist +
++#    [
++#      # Allowlist entries for //build should go into
++#      # //build/dotfile_settings.gni instead, so that they can be shared
++#      # with other repos. The entries in this list should be only for files
++#      # in the Chromium repo outside of //build.
++#      "//build_overrides/build.gni",
++#
++#      "//chrome/version.gni",
++#
++#      "//google_apis/BUILD.gn",
++#      "//printing/BUILD.gn",
++#
++#      "//remoting/host/installer/linux/BUILD.gn",
++#      "//remoting/remoting_version.gni",
++#      "//remoting/host/installer/win/generate_clsids.gni",
++#
++#      "//tools/grit/grit_rule.gni",
++#      "//tools/gritsettings/BUILD.gn",
++#    ]
diff --git a/www-client/chromium/files/chromium-138-mv2-ungoogled.patch b/www-client/chromium/files/chromium-138-mv2-ungoogled.patch
new file mode 100644
index 0000000..059b44d
--- /dev/null
+++ b/www-client/chromium/files/chromium-138-mv2-ungoogled.patch
@@ -0,0 +1,163 @@
+diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_desktop.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_desktop.cc
+index 72e902ffdc..f0559d2133 100644
+--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_desktop.cc
++++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_desktop.cc
+@@ -61,17 +61,6 @@ void ExtensionInfoGenerator::FillExtensionInfo(
+     info.controlled_info.emplace();
+     info.controlled_info->text =
+         l10n_util::GetStringUTF8(IDS_EXTENSIONS_INSTALL_LOCATION_ENTERPRISE);
+-  } else {
+-    // Create Safety Hub information for any non-enterprise extension.
+-    developer::SafetyCheckWarningReason warning_reason =
+-        ExtensionSafetyCheckUtils::GetSafetyCheckWarningReason(extension,
+-                                                               profile);
+-    if (warning_reason != developer::SafetyCheckWarningReason::kNone) {
+-      info.safety_check_warning_reason = warning_reason;
+-      info.safety_check_text =
+-          ExtensionSafetyCheckUtils::GetSafetyCheckWarningStrings(
+-              warning_reason, state);
+-    }
+   }
+ 
+   // Dependent extensions.
+diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
+index ae782891ad..b0b82002e2 100644
+--- a/chrome/browser/extensions/extension_management.cc
++++ b/chrome/browser/extensions/extension_management.cc
+@@ -322,31 +322,7 @@ bool ExtensionManagement::IsAllowedManifestVersion(
+     int manifest_version,
+     const std::string& extension_id,
+     Manifest::Type manifest_type) {
+-  bool enabled_by_default =
+-      !base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionsManifestV3Only) ||
+-      manifest_version >= 3;
+-
+-  // Manifest version policy only supports normal extensions and Chrome OS login
+-  // screen extension.
+-  if (manifest_type != Manifest::Type::TYPE_EXTENSION &&
+-      manifest_type != Manifest::Type::TYPE_LOGIN_SCREEN_EXTENSION) {
+-    return enabled_by_default;
+-  }
+-  switch (global_settings_->manifest_v2_setting) {
+-    case internal::GlobalSettings::ManifestV2Setting::kDefault:
+-      return enabled_by_default;
+-    case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+-      return manifest_version >= 3;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+       return true;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+-      auto installation_mode =
+-          GetInstallationMode(extension_id, /*update_url=*/std::string());
+-      return manifest_version >= 3 ||
+-             installation_mode == ManagedInstallationMode::kForced ||
+-             installation_mode == ManagedInstallationMode::kRecommended;
+-  }
+ }
+ 
+ bool ExtensionManagement::IsAllowedManifestVersion(const Extension* extension) {
+@@ -367,26 +343,8 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy(
+     return false;
+   }
+ 
+-  switch (global_settings_->manifest_v2_setting) {
+-    case internal::GlobalSettings::ManifestV2Setting::kDefault:
+-      // Default browser behavior. Not exempt.
+-      return false;
+-    case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+-      // All MV2 extensions are disallowed. Not exempt.
+-      return false;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+       // All MV2 extensions are allowed. Exempt.
+       return true;
+-    case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+-      // Force-installed MV2 extensions are allowed. Exempt if it's a force-
+-      // installed extension only.
+-      auto installation_mode =
+-          GetInstallationMode(extension_id, /*update_url=*/std::string());
+-      return installation_mode == ManagedInstallationMode::kForced ||
+-             installation_mode == ManagedInstallationMode::kRecommended;
+-  }
+-
+-  return false;
+ }
+ 
+ bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy(
+diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+index 08b7de6995..47ff0885ad 100644
+--- a/chrome/browser/extensions/manifest_v2_experiment_manager.cc
++++ b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+@@ -145,22 +145,6 @@ bool ManifestV2ExperimentManagerFactory::ServiceIsCreatedWithBrowserContext()
+ 
+ // Determines the current stage of the MV2 deprecation experiments.
+ MV2ExperimentStage CalculateCurrentExperimentStage() {
+-  // Return the "highest" stage that is currently active for the user.
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2Unsupported)) {
+-    return MV2ExperimentStage::kUnsupported;
+-  }
+-
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2Disabled)) {
+-    return MV2ExperimentStage::kDisableWithReEnable;
+-  }
+-
+-  if (base::FeatureList::IsEnabled(
+-          extensions_features::kExtensionManifestV2DeprecationWarning)) {
+-    return MV2ExperimentStage::kWarning;
+-  }
+-
+   return MV2ExperimentStage::kNone;
+ }
+ 
+@@ -200,19 +184,7 @@ PrefMap GetGlobalNoticeAcknowledgedPrefFor(
+ // Returns true if legacy extensions should be disabled, looking at both
+ // experiment stage and global state.
+ bool ShouldDisableLegacyExtensions(MV2ExperimentStage stage) {
+-  if (g_allow_mv2_for_testing) {
+-    // We allow legacy MV2 extensions for testing purposes.
+-    return false;
+-  }
+-
+-  switch (stage) {
+-    case MV2ExperimentStage::kNone:
+-    case MV2ExperimentStage::kWarning:
+       return false;
+-    case MV2ExperimentStage::kDisableWithReEnable:
+-    case MV2ExperimentStage::kUnsupported:
+-      return true;
+-  }
+ }
+ 
+ // Returns true if the given `stage` is one in which extension enablement should
+diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+index f769bdb059..f01ffd22ec 100644
+--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
++++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+@@ -490,7 +490,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
+           extensions_features::kExtensionsMenuAccessControlWithPermittedSites));
+   source->AddBoolean(
+       "safetyHubThreeDotDetails",
+-      base::FeatureList::IsEnabled(features::kSafetyHubThreeDotDetails));
++      false);
+ 
+ #if BUILDFLAG(IS_ANDROID)
+   source->AddResourcePath("images/product_logo.png",
+diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
+index 6563b56738..60045de76c 100644
+--- a/extensions/common/extension.cc
++++ b/extensions/common/extension.cc
+@@ -104,13 +104,6 @@ bool IsManifestSupported(int manifest_version,
+   // Supported versions are always safe.
+   if (manifest_version >= kMinimumSupportedManifestVersion &&
+       manifest_version <= kMaximumSupportedManifestVersion) {
+-    // Emit a warning for unpacked extensions on Manifest V2 warning that
+-    // MV2 is deprecated.
+-    if (type == Manifest::TYPE_EXTENSION && manifest_version == 2 &&
+-        Manifest::IsUnpackedLocation(location) &&
+-        !g_silence_deprecated_manifest_version_warnings) {
+-      *warning = errors::kManifestV2IsDeprecatedWarning;
+-    }
+     return true;
+   }
+ 
-- 
cgit v1.2.3