summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2021-12-08 18:16:38 -0500
committerGravatar Chris Xiong <chirs241097@gmail.com> 2021-12-08 18:16:38 -0500
commitf47ad9f0ff5f00da978f70c1c5000ac2d454aaa0 (patch)
tree3e7b6efaff7d29d58f3e6f610701a19d8215c27c
parentd1395ba5b51b99b1529a119fc54e5b22496e5cb0 (diff)
downloadppo-f47ad9f0ff5f00da978f70c1c5000ac2d454aaa0.tar.xz
chromium 98.0.4750.0 (test)
-rw-r--r--www-client/chromium/Manifest6
-rw-r--r--www-client/chromium/chromium-98.0.4750.0.ebuild963
-rw-r--r--www-client/chromium/files/chromium-98-MiraclePtr-gcc-ice.patch91
-rw-r--r--www-client/chromium/files/chromium-98-c++17-constexpr-1.patch65
-rw-r--r--www-client/chromium/files/chromium-98-compiler-r1.patch200
-rw-r--r--www-client/chromium/files/chromium-glibc-2.34.patch50
6 files changed, 1375 insertions, 0 deletions
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index dd1095b..aa398bb 100644
--- a/www-client/chromium/Manifest
+++ b/www-client/chromium/Manifest
@@ -140,7 +140,10 @@ AUX chromium-96-template-friend.patch 1257 BLAKE2B 2b413e3b5058cebcc86d8b0491dab
AUX chromium-97-ScrollView-reference.patch 863 BLAKE2B a8582ae78c1e28e30490b765c841462ac4fa9b4a76940497a1ed593e1b25ff6cd70082015b4c61d2e65f6a0668490315a0e941ad493e41ba015d88de1a67540c SHA512 fda58af99b97eb5a4f3ca5a19ec27107b23d03bc90c5386c18dbba4345ec217d785641d3e4530da23e8da0f1f229019e717a9344b5b5ab43d3d68745b1fe8895
AUX chromium-97-shared_element_res-include.patch 499 BLAKE2B 1df46cd87a6dd3703a63aabd7e846998ec79bba349d658c3ef98a22ee377de4feb063756ad3b9bc9e94563358b5d62adfd6fc294ffabea2d455a510b4b7af3bc SHA512 77358af9a02bb77df3911c69f4efb8b260c5bc8db20f50962028110cfac8a305e9f5b4bae96634f1c4f71d759c43683166d66d994b164bbce132ad06c6b8cf62
AUX chromium-98-EnumTable-crash.patch 2854 BLAKE2B 4478e14e7f0c0d251b659546c2e4b83b712b072317c35f63376d7d58e2fa3563f0518b4cc333c5902140cfcd333b5860737d4c7ccbb3680fee1b60de25ad0917 SHA512 a1b55b04da7218cda037a38a543032aa741a589d2f0691d69f28eb173ffeff284d2f4da2cab1708335ecfc0a3c12ecbd57c4c48dee3eca44d659d9a3f9a7dff6
+AUX chromium-98-MiraclePtr-gcc-ice.patch 3326 BLAKE2B 997e9b8f0526267b19df1a46628dc3fd6eb6a7451227418004b91c62c1b426c6902d71bed85b6939f19709a73e6294bd2675f70090de7d5f7a96ed0e9972a499 SHA512 70c8fdafc9e074be1c32210983badf7f4402b292c62f828603960aed76f81ccb31ae59fba0407dd281d68b605f535b2ba0ec015f67ae581077a8695fffcbaa50
AUX chromium-98-breakpad-max.patch 850 BLAKE2B 67707794e22b5d18644bf6e1ad1872933f3224e7169cd1894843fa0361c21ef4e23a02147640ad1e1e0f9736a99bc5716b8424bb2cebd779c71d6df437fc4f25 SHA512 ad1d7f557ce3b118463cab4b54dc95421e2982aec8856e163b7d59e4c3cf5bd2c3e54eaa8010df0f95d4341d95279080dac2fb20b021a2f332664cb65686dbc6
+AUX chromium-98-c++17-constexpr-1.patch 3077 BLAKE2B 431d325d30777d775301c229b361bfd4b6572f85d26ff4224d1d93ecb8c3ab5a4896785b61c1f1e7ae876020dbd7ee0e3926ee3e9e718f5ecb501ebb2ad379dd SHA512 c02bdfd1d526bd2a99fc9048029a3ad5b278a25672b6c6de59caae1bc4111eaf7028187cf50c4a5582d31ab0d4df0ab26cc0c0d910907397fa3fb610286b9bcd
+AUX chromium-98-compiler-r1.patch 7025 BLAKE2B 153ffc60f745beeaf85978f4bb32bdfcefdf91de28fe6c8d4b8ebd4b920e89d047a72161190dae01d7f4bac66edf5f6bb2cae8caf8d18a96982d35ed2808787c SHA512 feb69ef71ff84c5ea72035e889bb6180a0c0aa2d87a2570b3da0afe61466f79148597baa7687b3931e04f3ca68baff5caecb27593fef884a05a64c31f783e0e5
AUX chromium-98-compiler.patch 7368 BLAKE2B 6157fe6f8b539dde64e7c76cec5924cbecee3e1e3accf70926bffa95d43475234eae78a14955182f9945af0dac3327fe6a8a975afbcd7d65ad2892b1072b3e52 SHA512 c288f9da7d5d0355175d114b11268ee2e6a135d2337cd021335d0d678c0eef53376ad7d1aeeaebaa3206fb7357868407e10431ad851a2ed23ac1dfb4fdb45953
AUX chromium-98-system-libdrm.patch 1018 BLAKE2B 0d3a3b20846569fc52199cbdb003a015415c0d7fdda65fb159b007063fa817c22ed676b1e5531026a7b450145071d72b249b1ec56e51a757e1bef1e55adaec0c SHA512 22c5fc39859b6a9c000111b8b2a5875b5cdd278ba55cd22f95d3e8baf59e2c92c1a8c9df83f5ae8f83d6a63df7ba397f1253a878e2d11362b3b72ebc5081bdca
AUX chromium-angle-inline.patch 4775 BLAKE2B a4021ec1e11309bf901b09e6925d7bc90f1b30c4db08dae7d80d97a9ca4111f1f34c169465017b50f459f2c638b0ba8696fd8ddf01aa27bad3c2b3bfbf22ebb9 SHA512 ad413e8178b6004ec03887132d77d8648e5a0c9bf48552c8665f0782c8cb342d4ea417caabbae3a1e62d32046afaab0033574aff2399b0b74a721d44fcd257e3
@@ -185,6 +188,7 @@ AUX chromium-fix-char_traits.patch 355 BLAKE2B 5269c43c4d36dc1cd190aedc04e3172fb
AUX chromium-gamepad-include-84.patch 357 BLAKE2B 3295dc05f9718d88facdcb867ba59d8bfcc0fd2d9eedc4e78eaf630a69074a1767373127f9ed555cbdc154562b8214912e788704db553610720ff80d458330c3 SHA512 667af18a9650c55f1764e61c7c5d87976d62fffe273934b2f8deaac97bc04b1b319bc3a714e0b79e54b2d21e5c98e5f25cc9b535ab7042c9e41c7f02f861afe6
AUX chromium-gcc-89311.patch 4280 BLAKE2B 3a1705033464f6421698d281d43aa68903fda2d268aae54295b94c75343facb87b67e5b6570e8ab28759cf478abb0ce44be47b6ad36c86ed32a275bb03974496 SHA512 869b694928ee2255cabb24f4be26e8a174395f36560835229d6381aee02ac95b4f9dbcd2c5c67c7e0c50a27bc7ee005370bd18919ac6c48048e9ae0762856fe8
AUX chromium-gcc-initlist.patch 923 BLAKE2B cbe7020ef5c1f738a02e4e064fb7ff23e6aac6dcf659a06e7d3a47014a864e2fcf7afa9598dfdc9dd3a29c411b9136c0b902f68f427ff4715cbb2b425cb6d18d SHA512 a3365245184953cbd927e222cce7fcf6b36f2b6bd111cc31311fdc2852c6649bbaa37ddadc43ed401b23f79833f48c5ce4931f50e32d8763825254b63d5f9fc7
+AUX chromium-glibc-2.34.patch 2089 BLAKE2B 637acb95df4efebd2cda65e4780dd2b042e67e2fa52bd9f8786ca250627b90f1b3b171d1e114d7fec616fc985881816b21efd8ac8fd80d124e997214edd2087d SHA512 85cf5f24f8c1cccc919bd5264cea7d3e46391084bc58c889d7236677f925251d0323ba4b312c363484d48d0158376b6a93e1d0c3d015a38f48031244a1676b76
AUX chromium-gpu-vp9-include-84.patch 373 BLAKE2B e572af184c5c63c1da8d85b706f62144418450f807f5a2245acb859488d0e625bbbec04a7f0303fcc91286d3ef5983512af23777bd154b902d3915a0c294588e SHA512 e9a6b3023418f36c629202ab2d2ee1d34cb72951b2e3a2d324b1cd6805ff8f36f7612ebcb6c0958782e82c6ebe53f450e54ff24486ea2cd5d0e114fcbf4be94b
AUX chromium-harfbuzz-r0.patch 4173 BLAKE2B 5c74627b52d004a6b108c69a87ecf7472a7d1c213cba3801d28e83806df5604de55831ac348561a3cd9471b3b3a69c6e08a2b1271b980478c1b815f14435c575 SHA512 174b1fbaec1b8a88f41a06855f0475ca18f40ee5c0a9ac8a9223c7d06fcc1173f36c85d90a332dbf48bd315bf646ca1d4943d351ba510f3045500264e82c037c
AUX chromium-hashtable-iterator-cat-83.patch 2767 BLAKE2B 5af4d1ed4e3af95c6f7d77f44c3432d3783ad11075b00fac0b15d79150f271aec374ab6d6ce8db586662b534e708b67992ad78cc3b627c7f89cdf949ee652f37 SHA512 c2527b6f59999bb883418a1c62efa30895bdd939fb7e720826354f525c4fde3ae8ec7ff72f356a3e0632e0cd6883566bf798d81fc42172294065144509dd3adc
@@ -303,6 +307,7 @@ DIST chromium-96.0.4664.18.tar.xz 1221703620 BLAKE2B b684677298f843733d7aeb28a8c
DIST chromium-97.0.4682.3.tar.xz 1221976628 BLAKE2B 7b1e753568d806a03ed130cfde91032234f5fc7ae3e45ab247ebc76b8804dfa4b645a8668514bd0e6fe4bff1a779de30836fb557a2b4eaaaae310b41442ce17d SHA512 39b379ddfe59b8b4b2a9f4d4e502ac4450580da72bf9f59b4b185d4ac3b81ab1a1077c270b1ba65a32d80702f7b0fbe38059014bada9dc5a68160aea3e162e04
DIST chromium-97.0.4688.2.tar.xz 1223299644 BLAKE2B e1363e0c8425b9689168a05fae51e190a5d67a6ce7e817c0b8edce5be721789729ec62b98f4005a8b36bbedb44eb39a7dc2cd0cfdcb788c7837ee8a38c2a77bf SHA512 980aac2e3a73704a3df16a8a79409c890b21fd465978afda445af2b2ac7caceed8355600687bb854b7010f5aaab4a7e30d20d02d0eefd5d82c7e8cf5c1098a45
DIST chromium-98.0.4710.4.tar.xz 1222819976 BLAKE2B 1af16bcecf4be8f53b4c8f41c9fca18014a72a69fe2703aa7119c2228338ba75c76e4fc2eefa098279228ea4c13e16235bc8f642cd6597e424830fb9774cace3 SHA512 256b695d41a7810beb3f75e23ab0aead25f10dd60af0cc5b3379c0f821e9161e08b5bac3633d38afd36f110342698263d0c5de36c84bb6de8747b35f3c546180
+DIST chromium-98.0.4750.0.tar.xz 1230864580 BLAKE2B b8b5d05bf15a9429f3f5fa851415d21f6e757a99fce9ac47bdeb7f534f9eefc77d13c5f8ba93bfa140bdb536c13e1b6141ac4d7e0f17b742039c403044789c56 SHA512 7f8cc349aa50af0d149ba08e5ed60171e94943bbd52cb0f820f3c7d56749d9e2fd6d71761262ac012cfcad1f7e4f63c0404f39f044df531e776ae6fce951544f
DIST setuptools-44.1.0.zip 858569 BLAKE2B f59f154e121502a731e51294ccd293d60ffccadacf51e23b53bf7ceba38858948b86783238061136c827ac3373ea7ea8e6253d4bb53f3f1dd69284568ec65a68 SHA512 4dfb0f42d334b835758e865a26ecd1e725711fa2b9c38ddc273b8b3849fba04527bc97436d11ba1e98f1a42922aa0f0b9032e32998273c705fac6e10735eacbf
EBUILD chromium-73.0.3683.10.ebuild 22130 BLAKE2B 0807f35a843542fc85c2becb60c4962e6c6331596194f23bf6e3580623d56b40875dc0885848041568aae50ef5c4280b8410c86f2bd4e4470583cc3e59ead9bc SHA512 40936fc2a0dfb00e728ee2d75c87be59bb5edcd5e019a05e9b22010e1e0cd6c2d6198809de5e996e11b71ed41aa1a4f6cf2edecfb114eb8c19d0e913f405dccf
EBUILD chromium-74.0.3702.0.ebuild 22298 BLAKE2B c9bfe7c15521cc0bf9a3dfc396fb328b85d504d11f6bb8aa5e793ba29b40488e1c60cde4572b1ab5110faf01614aec3aba55730b8af40c73763ee5db528f69ac SHA512 4247220d728f2d5627d0e5e3888c032d152796b6ce837927aca93122bf6f7aea1b1785f0412ce6bd7444ecba53980f6cdb2af4039b9e8660d1eecb97f41e9cd6
@@ -352,3 +357,4 @@ EBUILD chromium-96.0.4664.18.ebuild 30225 BLAKE2B 07baa56a34a51732baa5066644ddb0
EBUILD chromium-97.0.4682.3.ebuild 30029 BLAKE2B 7496aa27ae2102bd20d1bfa9f662576f120922761a7eaed67c2436a95d1a79139de8dc197ab44e271094fee362f28f3881d6d5fb28ce71533d82829bfa7b524d SHA512 a7b261dc488f59c50aa5fb222cf92fa663186bf5b6679578eb6f06a6f74ad6acba34ce01de5da67751a47fc7619fabfa9d8e219ecba39cbb075c8801d4f792cb
EBUILD chromium-97.0.4688.2.ebuild 29968 BLAKE2B 1b5c25240802a07472ffdb99375a0659239490b99fb327d413222b30da803e0e702e298536615a1183ae5abd9b8aacf8b75aad3e0cee52f5a061cb9d5be46795 SHA512 7c27202e029aafaaea398d1488d494a21b50843fcc87aa9424780ac86d5fbe21de353d730446ef3b78b833f74a05698058aa17feb5e5869483552ea213915067
EBUILD chromium-98.0.4710.4.ebuild 30251 BLAKE2B cbee90dd1610459c80e323aa3747fea306ac86cbfb3509ddf303de0a46b8a46fc03df2dc7aba54e4b4a70bb36766d430012b4ca12db697bb282e40b5f953fcac SHA512 89fc407a839fc4487d3295e6d4f8cc0ec4f2aa5e97555c4f64d446b4879f68d4921f2d5f57ee95b95bf2861561b5bd7638cf1798daf0721d9c6926e621579b7c
+EBUILD chromium-98.0.4750.0.ebuild 30606 BLAKE2B 36851269a4e6c5c41468417824c8adcfa9a41736043b47d18c5931dbdde97b6413c51d0d94a8403fb61966e5847bb6b92f461681494637ad134dfa5fe414caea SHA512 3a8299f4596081794ca69fd0615d7fea74162b3d85770df859ad1c86c4fdc1296b7dd49060a2f0a570af0cf301dbc940eda9b134b5043ed09320498006c11d67
diff --git a/www-client/chromium/chromium-98.0.4750.0.ebuild b/www-client/chromium/chromium-98.0.4750.0.ebuild
new file mode 100644
index 0000000..d3daae1
--- /dev/null
+++ b/www-client/chromium/chromium-98.0.4750.0.ebuild
@@ -0,0 +1,963 @@
+# Copyright 2009-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{8..10} )
+PYTHON_REQ_USE="xml"
+
+CHROMIUM_LANGS="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 vi zh-CN zh-TW"
+
+inherit check-reqs chromium-2 desktop flag-o-matic ninja-utils pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs 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"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="component-build cups cpu_flags_arm_neon debug +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine"
+REQUIRED_USE="
+ component-build? ( !suid )
+ screencast? ( wayland )
+"
+
+COMMON_X_DEPEND="
+ media-libs/mesa:=[gbm(+)]
+ x11-libs/libX11:=
+ x11-libs/libXcomposite:=
+ x11-libs/libXcursor:=
+ x11-libs/libXdamage:=
+ x11-libs/libXext:=
+ x11-libs/libXfixes:=
+ >=x11-libs/libXi-1.6.0:=
+ x11-libs/libXrandr:=
+ x11-libs/libXrender:=
+ x11-libs/libXtst:=
+ x11-libs/libxcb:=
+ x11-libs/libxshmfence:=
+ vaapi? ( >=x11-libs/libva-2.7:=[X,drm] )
+"
+
+COMMON_DEPEND="
+ app-arch/bzip2:=
+ cups? ( >=net-print/cups-1.3.11:= )
+ dev-libs/expat:=
+ dev-libs/glib:2
+ >=dev-libs/libxml2-2.9.4-r3:=[icu]
+ dev-libs/nspr:=
+ >=dev-libs/nss-3.26:=
+ >=media-libs/alsa-lib-1.0.19:=
+ media-libs/fontconfig:=
+ >=media-libs/freetype-2.11.0-r1:=
+ system-harfbuzz? ( >=media-libs/harfbuzz-2.9.0:0=[icu(-)] )
+ media-libs/libjpeg-turbo:=
+ system-png? ( media-libs/libpng:=[-apng] )
+ pulseaudio? ( media-sound/pulseaudio:= )
+ 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:=
+ sys-apps/pciutils:=
+ virtual/udev
+ x11-libs/cairo:=
+ x11-libs/gdk-pixbuf:2
+ x11-libs/libxkbcommon:=
+ x11-libs/pango:=
+ media-libs/flac:=
+ >=media-libs/libwebp-0.4.0:=
+ sys-libs/zlib:=[minizip]
+ kerberos? ( virtual/krb5 )
+ !headless? (
+ ${COMMON_X_DEPEND}
+ >=app-accessibility/at-spi2-atk-2.26:2
+ >=app-accessibility/at-spi2-core-2.26:2
+ >=dev-libs/atk-2.26
+ x11-libs/gtk+:3[X]
+ wayland? (
+ dev-libs/wayland:=
+ screencast? ( media-video/pipewire:0/0.3 )
+ x11-libs/gtk+:3[wayland,X]
+ x11-libs/libdrm:=
+ )
+ )
+"
+RDEPEND="${COMMON_DEPEND}
+ x11-misc/xdg-utils
+ virtual/opengl
+ virtual/ttf-fonts
+ selinux? ( sec-policy/selinux-chromium )
+"
+DEPEND="${COMMON_DEPEND}
+"
+# dev-vcs/git - https://bugs.gentoo.org/593476
+BDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep '
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ')
+ >=app-arch/gzip-1.7
+ dev-lang/perl
+ >=dev-util/gn-0.1807
+ dev-vcs/git
+ >=dev-util/gperf-3.0.3
+ >=dev-util/ninja-1.7.2
+ >=net-libs/nodejs-7.6.0[inspector]
+ >=sys-devel/bison-2.4.3
+ sys-devel/flex
+ virtual/pkgconfig
+ js-type-check? ( virtual/jre )
+"
+
+# These are intended for ebuild maintainer use to force clang if GCC is broken.
+: ${CHROMIUM_FORCE_CLANG=no}
+: ${CHROMIUM_FORCE_LIBCXX=no}
+
+if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then
+ BDEPEND+=" >=sys-devel/clang-12"
+fi
+
+if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
+ RDEPEND+=" >=sys-libs/libcxx-12"
+ DEPEND+=" >=sys-libs/libcxx-12"
+else
+ COMMON_DEPEND="
+ dev-libs/libxslt:=
+ >=dev-libs/re2-0.2019.08.01:=
+ >=media-libs/openh264-1.6.0:=
+ system-icu? ( >=dev-libs/icu-69.1:= )
+ "
+ RDEPEND+="${COMMON_DEPEND}"
+ DEPEND+="${COMMON_DEPEND}"
+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() {
+ has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]"
+}
+
+pre_build_checks() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ local -x CPP="$(tc-getCXX) -E"
+ if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then
+ die "At least gcc 9.2 is required"
+ fi
+ if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then
+ CPP="${CHOST}-clang++ -E"
+ if ! ver_test "$(clang-major-version)" -ge 12; then
+ die "At least clang 12 is required"
+ fi
+ fi
+ fi
+
+ # Check build requirements, bug #541816 and bug #471810 .
+ CHECKREQS_MEMORY="4G"
+ CHECKREQS_DISK_BUILD="9G"
+ if ( shopt -s extglob; 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_pkg_setup
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+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
+}
+
+src_prepare() {
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ local PATCHES=(
+ "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch"
+ "${FILESDIR}/chromium-95-libyuv-arm.patch"
+ "${FILESDIR}/chromium-98-compiler-r1.patch"
+ "${FILESDIR}/chromium-98-MiraclePtr-gcc-ice.patch"
+ "${FILESDIR}/chromium-98-c++17-constexpr-1.patch"
+
+ "${FILESDIR}/chromium-93-InkDropHost-crash.patch"
+ "${FILESDIR}/chromium-98-EnumTable-crash.patch"
+ "${FILESDIR}/chromium-98-system-libdrm.patch"
+ "${FILESDIR}/chromium-glibc-2.34.patch"
+ "${FILESDIR}/chromium-use-oauth2-client-switches-as-default.patch"
+ "${FILESDIR}/chromium-shim_headers.patch"
+ )
+
+ 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
+
+ # adjust python interpreter version
+ sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
+
+ local keeplibs=(
+ base/third_party/cityhash
+ base/third_party/double_conversion
+ base/third_party/dynamic_annotations
+ base/third_party/icu
+ base/third_party/nspr
+ base/third_party/superfasthash
+ base/third_party/symbolize
+ base/third_party/valgrind
+ base/third_party/xdg_mime
+ base/third_party/xdg_user_dirs
+ buildtools/third_party/libc++
+ buildtools/third_party/libc++abi
+ chrome/third_party/mozilla_security_manager
+ courgette/third_party
+ 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/base
+ third_party/angle/src/common/third_party/smhasher
+ third_party/angle/src/common/third_party/xxhash
+ third_party/angle/src/third_party/libXNVCtrl
+ third_party/angle/src/third_party/trace_event
+ third_party/angle/src/third_party/volk
+ third_party/apple_apsl
+ third_party/axe-core
+ 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/cld_3
+ third_party/closure_compiler
+ 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/dav1d
+ third_party/dawn
+ third_party/dawn/third_party/khronos
+ third_party/dawn/third_party/tint
+ 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/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/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/lighthouse
+ third_party/devtools-frontend/src/front_end/third_party/lit-html
+ third_party/devtools-frontend/src/front_end/third_party/lodash-isequal
+ 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/wasmparser
+ third_party/devtools-frontend/src/test/unittests/front_end/third_party/i18n
+ 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/farmhash
+ third_party/fdlibm
+ third_party/fft2d
+ third_party/flatbuffers
+ third_party/freetype
+ third_party/fusejs
+ third_party/highway
+ third_party/libgifcodec
+ 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/hunspell
+ third_party/iccjpeg
+ third_party/inspector_protocol
+ third_party/jinja2
+ third_party/jsoncpp
+ third_party/jstemplate
+ third_party/khronos
+ third_party/leveldatabase
+ third_party/libXNVCtrl
+ third_party/libaddressinput
+ third_party/libaom
+ third_party/libaom/source/libaom/third_party/fastfeat
+ third_party/libaom/source/libaom/third_party/vector
+ third_party/libaom/source/libaom/third_party/x86inc
+ third_party/libavif
+ third_party/libgav1
+ third_party/libjingle
+ third_party/libjxl
+ third_party/libphonenumber
+ third_party/libsecret
+ third_party/libsrtp
+ third_party/libsync
+ third_party/libudev
+ third_party/libva_protected_content
+ third_party/libvpx
+ third_party/libvpx/source/libvpx/third_party/x86inc
+ third_party/libwebm
+ third_party/libx11
+ third_party/libxcb-keysyms
+ third_party/libxml/chromium
+ third_party/libyuv
+ third_party/llvm
+ third_party/lottie
+ third_party/lss
+ third_party/lzma_sdk
+ third_party/mako
+ third_party/maldoca
+ third_party/maldoca/src/third_party/tensorflow_protos
+ third_party/maldoca/src/third_party/zlibwrapper
+ third_party/markupsafe
+ 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/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2
+ third_party/one_euro_filter
+ third_party/opencv
+ third_party/openscreen
+ third_party/openscreen/src/third_party/mozilla
+ 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/base
+ third_party/pdfium/third_party/bigint
+ third_party/pdfium/third_party/freetype
+ third_party/pdfium/third_party/lcms
+ third_party/pdfium/third_party/libopenjpeg20
+ third_party/pdfium/third_party/libpng16
+ third_party/pdfium/third_party/libtiff
+ third_party/pdfium/third_party/skia_shared
+ third_party/perfetto
+ third_party/perfetto/protos/third_party/chromium
+ 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/six
+ third_party/pyjson5
+ third_party/qcms
+ third_party/rnnoise
+ third_party/s2cellid
+ third_party/securemessage
+ third_party/shell-encryption
+ third_party/simplejson
+ third_party/six
+ third_party/skia
+ third_party/skia/include/third_party/skcms
+ third_party/skia/include/third_party/vulkan
+ third_party/skia/third_party/skcms
+ third_party/skia/third_party/vulkan
+ third_party/smhasher
+ third_party/snappy
+ 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/include/spirv/unified1
+ third_party/tcmalloc
+ third_party/tensorflow-text
+ third_party/tflite
+ third_party/tflite/src/third_party/eigen3
+ third_party/tflite/src/third_party/fft2d
+ third_party/ruy
+ third_party/ukey2
+ third_party/unrar
+ third_party/usrsctp
+ third_party/utf
+ third_party/vulkan
+ third_party/web-animations-js
+ 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/zxcvbn-cpp
+ third_party/zlib/google
+ url/third_party/mozilla
+ v8/src/third_party/siphash
+ v8/src/third_party/valgrind
+ v8/src/third_party/utf8-decoder
+ v8/third_party/inspector_protocol
+ v8/third_party/v8
+
+ # gyp -> gn leftovers
+ base/third_party/libevent
+ 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-harfbuzz; then
+ keeplibs+=( third_party/harfbuzz-ng/utils )
+ else
+ keeplibs+=( third_party/harfbuzz-ng )
+ fi
+ if use wayland && ! use headless ; then
+ keeplibs+=( third_party/wayland )
+ fi
+ if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
+ keeplibs+=( third_party/libxml )
+ keeplibs+=( third_party/libxslt )
+ keeplibs+=( third_party/openh264 )
+ keeplibs+=( third_party/re2 )
+ if use system-icu; then
+ keeplibs+=( third_party/icu )
+ fi
+ 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
+ ./generate_gni.sh || 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
+
+ if use js-type-check; then
+ ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die
+ fi
+
+ # 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
+}
+
+src_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 [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then
+ # Force clang since gcc is pretty broken at the moment.
+ CC=${CHOST}-clang
+ CXX=${CHOST}-clang++
+ strip-unsupported-flags
+ fi
+
+ if tc-is-clang; then
+ myconf_gn+=" is_clang=true clang_use_chrome_plugins=false"
+ else
+ if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
+ die "Compiling with sys-libs/libcxx requires clang."
+ fi
+ myconf_gn+=" is_clang=false"
+ 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\""
+ else
+ myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+ fi
+
+ # GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
+ myconf_gn+=" is_debug=false"
+
+ # 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
+ libdrm
+ libjpeg
+ libwebp
+ 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 [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then
+ # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++
+ gn_system_libraries+=( libxml )
+ gn_system_libraries+=( libxslt )
+ gn_system_libraries+=( openh264 )
+ 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_js_type_check=$(usex js-type-check true false)"
+ myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)"
+ myconf_gn+=" enable_widevine=$(usex widevine true false)"
+ 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)"
+
+ # 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 use_custom_libcxx=false"
+
+ # Disable forced lld, bug 641556
+ myconf_gn+=" use_lld=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 build failures. Bug 530248, 544702, 546984.
+ 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
+ fi
+ fi
+
+ if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
+ append-flags -stdlib=libc++
+ append-ldflags -stdlib=libc++
+ 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"
+
+ # 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
+
+ # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470
+ append-cxxflags $(test-flags-CXX -flax-vector-conversions=all)
+
+ # Disable unknown warning message from clang.
+ tc-is-clang && append-flags -Wno-unknown-warning-option
+
+ # Explicitly disable ICU data file support for system-icu builds.
+ if use system-icu; 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+=" ozone_platform_x11=$(usex headless false true)"
+ if use wayland || use headless; then
+ if use headless; then
+ myconf_gn+=" ozone_platform=\"headless\""
+ myconf_gn+=" use_x11=false"
+ else
+ myconf_gn+=" ozone_platform_wayland=true"
+ myconf_gn+=" use_system_libdrm=true"
+ myconf_gn+=" use_system_minigbm=true"
+ myconf_gn+=" use_xkbcommon=true"
+ myconf_gn+=" ozone_platform=\"wayland\""
+ fi
+ else
+ myconf_gn+=" ozone_platform=\"x11\""
+ fi
+
+ # Enable official builds
+ myconf_gn+=" is_official_build=$(usex official true false)"
+ myconf_gn+=" use_thin_lto=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"
+ # Disable PGO, because profile data is only compatible with >=clang-11
+ myconf_gn+=" chrome_pgo_phase=0"
+ fi
+
+ einfo "Configuring Chromium..."
+ set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release
+ echo "$@"
+ "$@" || die
+}
+
+src_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=
+
+ #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die
+
+ # 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
+
+ mv out/Release/chromedriver{.unstripped,} || 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 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[@]}"
+ )
+
+ if ! use system-icu; then
+ doins out/Release/icudtl.dat
+ fi
+
+ doins -r out/Release/locales
+ doins -r out/Release/resources
+ 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 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-webrtc-pipewire-capturer"
+ elog "to CHROMIUM_FLAGS in /etc/chromium/default."
+ fi
+}
diff --git a/www-client/chromium/files/chromium-98-MiraclePtr-gcc-ice.patch b/www-client/chromium/files/chromium-98-MiraclePtr-gcc-ice.patch
new file mode 100644
index 0000000..c538bef
--- /dev/null
+++ b/www-client/chromium/files/chromium-98-MiraclePtr-gcc-ice.patch
@@ -0,0 +1,91 @@
+Workaround GCC ICE with MiraclePtr, see https://gcc.gnu.org/PR103455
+
+--- a/gpu/command_buffer/client/gl_helper.h
++++ b/gpu/command_buffer/client/gl_helper.h
+@@ -34,7 +34,7 @@ class ScopedGLuint {
+ GenFunc gen_func,
+ DeleteFunc delete_func)
+ : gl_(gl), id_(0u), delete_func_(delete_func) {
+- (gl_->*gen_func)(1, &id_);
++ (gl_.get()->*gen_func)(1, &id_);
+ }
+
+ operator GLuint() const { return id_; }
+@@ -46,7 +46,7 @@ class ScopedGLuint {
+
+ ~ScopedGLuint() {
+ if (id_ != 0) {
+- (gl_->*delete_func_)(1, &id_);
++ (gl_.get()->*delete_func_)(1, &id_);
+ }
+ }
+
+@@ -86,13 +86,13 @@ class ScopedBinder {
+ typedef void (gles2::GLES2Interface::*BindFunc)(GLenum target, GLuint id);
+ ScopedBinder(gles2::GLES2Interface* gl, GLuint id, BindFunc bind_func)
+ : gl_(gl), bind_func_(bind_func) {
+- (gl_->*bind_func_)(Target, id);
++ (gl_.get()->*bind_func_)(Target, id);
+ }
+
+ ScopedBinder(const ScopedBinder&) = delete;
+ ScopedBinder& operator=(const ScopedBinder&) = delete;
+
+- virtual ~ScopedBinder() { (gl_->*bind_func_)(Target, 0); }
++ virtual ~ScopedBinder() { (gl_.get()->*bind_func_)(Target, 0); }
+
+ private:
+ raw_ptr<gles2::GLES2Interface> gl_;
+--- a/ui/accessibility/ax_node.h
++++ b/ui/accessibility/ax_node.h
+@@ -822,10 +822,10 @@ AXNode::ChildIteratorBase<NodeType,
+ // increment the iterator past the end, we remain at the past-the-end iterator
+ // condition.
+ if (child_ && parent_) {
+- if (child_ == (parent_->*LastChild)())
++ if (child_ == (parent_.get()->*LastChild)())
+ child_ = nullptr;
+ else
+- child_ = (child_->*NextSibling)();
++ child_ = (child_.get()->*NextSibling)();
+ }
+
+ return *this;
+@@ -850,12 +850,12 @@ AXNode::ChildIteratorBase<NodeType,
+ // If the iterator is past the end, |child_=nullptr|, decrement the iterator
+ // gives us the last iterator element.
+ if (!child_)
+- child_ = (parent_->*LastChild)();
++ child_ = (parent_.get()->*LastChild)();
+ // Decrement the iterator gives us the previous element, except when the
+ // iterator is at the beginning; in which case, decrementing the iterator
+ // remains at the beginning.
+- else if (child_ != (parent_->*FirstChild)())
+- child_ = (child_->*PreviousSibling)();
++ else if (child_ != (parent_.get()->*FirstChild)())
++ child_ = (child_.get()->*PreviousSibling)();
+ }
+
+ return *this;
+--- a/ui/views/layout/flex_layout_types.cc
++++ b/ui/views/layout/flex_layout_types.cc
+@@ -59,7 +59,7 @@ class LazySize {
+ const gfx::Size& operator*() const { return *get(); }
+ const gfx::Size* get() const {
+ if (!size_)
+- size_ = (view_->*size_func_)();
++ size_ = (view_.get()->*size_func_)();
+ return &size_.value();
+ }
+ LazyDimension width() const {
+--- a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc
++++ b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc
+@@ -37,7 +37,7 @@ AutoSigninFirstRunDialogView::AutoSigninFirstRunDialogView(
+ auto call_controller = [](AutoSigninFirstRunDialogView* dialog,
+ ControllerCallbackFn func) {
+ if (dialog->controller_) {
+- (dialog->controller_->*func)();
++ (dialog->controller_.get()->*func)();
+ }
+ };
+ SetAcceptCallback(
diff --git a/www-client/chromium/files/chromium-98-c++17-constexpr-1.patch b/www-client/chromium/files/chromium-98-c++17-constexpr-1.patch
new file mode 100644
index 0000000..d368b36
--- /dev/null
+++ b/www-client/chromium/files/chromium-98-c++17-constexpr-1.patch
@@ -0,0 +1,65 @@
+From a5935eff52dcc65b02a49fb89aa2c9ec5ad3e4a6 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 1 Dec 2021 08:47:30 +0000
+Subject: [PATCH] GCC: remove constexpr to fix linker error
+
+---
+ .../allocator_shim_default_dispatch_to_partition_alloc.cc | 2 +-
+ components/services/app_service/public/cpp/icon_types.cc | 2 +-
+ content/browser/web_package/signed_exchange_prologue.cc | 2 +-
+ device/bluetooth/bluetooth_adapter.cc | 2 +-
+ 4 files changed, 4 insertion(+), 4 deletion(-)
+
+diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
+index 80eb4b8..4707224 100644
+--- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
++++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
+@@ -605,7 +605,7 @@ void ConfigurePartitionAlloc() {
+ } // namespace allocator
+ } // namespace base
+
+-constexpr AllocatorDispatch AllocatorDispatch::default_dispatch = {
++const AllocatorDispatch AllocatorDispatch::default_dispatch = {
+ &base::internal::PartitionMalloc, // alloc_function
+ &base::internal::PartitionMallocUnchecked, // alloc_unchecked_function
+ &base::internal::PartitionCalloc, // alloc_zero_initialized_function
+diff --git a/components/services/app_service/public/cpp/icon_types.cc b/components/services/app_service/public/cpp/icon_types.cc
+index c857d15..292232e 100644
+--- a/components/services/app_service/public/cpp/icon_types.cc
++++ b/components/services/app_service/public/cpp/icon_types.cc
+@@ -21,7 +21,7 @@ bool IconKey::operator==(const IconKey& other) const {
+ }
+
+ constexpr uint64_t IconKey::kDoesNotChangeOverTime = 0;
+-constexpr int32_t IconKey::kInvalidResourceId = 0;
++const int32_t IconKey::kInvalidResourceId = 0;
+
+ IconValue::IconValue() = default;
+ IconValue::~IconValue() = default;
+diff --git a/content/browser/web_package/signed_exchange_prologue.cc b/content/browser/web_package/signed_exchange_prologue.cc
+index 9dfb4ac..a1f99eb 100644
+--- a/content/browser/web_package/signed_exchange_prologue.cc
++++ b/content/browser/web_package/signed_exchange_prologue.cc
+@@ -30,7 +30,7 @@ constexpr size_t kMaximumCBORHeaderLength = 512 * 1024;
+
+ namespace signed_exchange_prologue {
+
+-constexpr size_t BeforeFallbackUrl::kEncodedSizeInBytes =
++const size_t BeforeFallbackUrl::kEncodedSizeInBytes =
+ sizeof(kSignedExchangeMagic) + kFallbackUrlLengthFieldSizeInBytes;
+
+ size_t Parse2BytesEncodedLength(base::span<const uint8_t> input) {
+diff --git a/device/bluetooth/bluetooth_adapter.cc b/device/bluetooth/bluetooth_adapter.cc
+index ddde285..9c794c9 100644
+--- a/device/bluetooth/bluetooth_adapter.cc
++++ b/device/bluetooth/bluetooth_adapter.cc
+@@ -674,6 +674,6 @@ void BluetoothAdapter::RemoveTimedOutDevices() {
+ }
+
+ // static
+-constexpr base::TimeDelta BluetoothAdapter::timeoutSec = base::Seconds(180);
++const base::TimeDelta BluetoothAdapter::timeoutSec = base::Seconds(180);
+
+ } // namespace device
+--
+2.32.0
diff --git a/www-client/chromium/files/chromium-98-compiler-r1.patch b/www-client/chromium/files/chromium-98-compiler-r1.patch
new file mode 100644
index 0000000..9d39d24
--- /dev/null
+++ b/www-client/chromium/files/chromium-98-compiler-r1.patch
@@ -0,0 +1,200 @@
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index 8048ec5e8..bd68c4f78 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -291,9 +291,7 @@ config("compiler") {
+
+ configs += [
+ # See the definitions below.
+- ":clang_revision",
+ ":rustc_revision",
+- ":compiler_cpu_abi",
+ ":compiler_codegen",
+ ":compiler_deterministic",
+ ]
+@@ -534,23 +532,6 @@ config("compiler") {
+ ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
+ }
+
+- if (is_clang && !is_nacl && current_os != "zos") {
+- cflags += [ "-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/1235145): Investigate why/if this should be needed.
+ if (is_win) {
+ cflags += [ "/clang:-ffp-contract=off" ]
+@@ -1231,45 +1212,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=." ]
+- }
+- 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 goma cache entries.
+@@ -1556,7 +1498,7 @@ config("chromium_code") {
+ defines = [ "_HAS_NODISCARD" ]
+ }
+ } else {
+- cflags = [ "-Wall" ]
++ cflags = []
+ if (treat_warnings_as_errors) {
+ cflags += [ "-Werror" ]
+
+@@ -1565,10 +1507,6 @@ config("chromium_code") {
+ # well.
+ ldflags = [ "-Werror" ]
+ }
+- if (is_clang) {
+- # Enable extra warnings for chromium_code when we control the compiler.
+- cflags += [ "-Wextra" ]
+- }
+
+ # In Chromium code, we define __STDC_foo_MACROS in order to get the
+ # C99 macros on Mac and Linux.
+@@ -1577,15 +1515,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") {
+- # 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.
+- defines += [ "_FORTIFY_SOURCE=2" ]
+- }
+-
+ if (is_mac) {
+ cflags_objc = [ "-Wobjc-missing-property-synthesis" ]
+ cflags_objcc = [ "-Wobjc-missing-property-synthesis" ]
+@@ -1988,7 +1917,8 @@ config("default_stack_frames") {
+ }
+
+ # Default "optimization on" config.
+-config("optimize") {
++config("optimize") { }
++config("xoptimize") {
+ if (is_win) {
+ if (chrome_pgo_phase != 2) {
+ # Favor size over speed, /O1 must be before the common flags.
+@@ -2026,7 +1956,8 @@ config("optimize") {
+ }
+
+ # Turn off optimizations.
+-config("no_optimize") {
++config("no_optimize") { }
++config("xno_optimize") {
+ if (is_win) {
+ cflags = [
+ "/Od", # Disable optimization.
+@@ -2066,7 +1997,8 @@ config("no_optimize") {
+ # Turns up the optimization level. On Windows, this implies whole program
+ # optimization and link-time code generation which is very expensive and should
+ # be used sparingly.
+-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:
+@@ -2099,7 +2031,8 @@ config("optimize_max") {
+ #
+ # TODO(crbug.com/621335) - 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:
+@@ -2125,7 +2058,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
+@@ -2245,7 +2179,8 @@ config("win_pdbaltpath") {
+ }
+
+ # Full symbols.
+-config("symbols") {
++config("symbols") { }
++config("xsymbols") {
+ if (is_win) {
+ if (is_clang) {
+ cflags = [ "/Z7" ] # Debug information in the .obj files.
+@@ -2369,7 +2304,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") {
+ if (is_win) {
+ # Functions, files, and line tables only.
+ cflags = []
+@@ -2438,7 +2374,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/www-client/chromium/files/chromium-glibc-2.34.patch b/www-client/chromium/files/chromium-glibc-2.34.patch
new file mode 100644
index 0000000..64c03a6
--- /dev/null
+++ b/www-client/chromium/files/chromium-glibc-2.34.patch
@@ -0,0 +1,50 @@
+From 600d63c2c59a9892dbc5423d7d8bb1565a9f91e7 Mon Sep 17 00:00:00 2001
+From: Michel Salim <michel@fb.com>
+Date: Thu, 04 Nov 2021 14:22:40 -0700
+Subject: [PATCH] Handle long SIGSTKSZ in glibc > 2.33
+
+`SIGSTKSZ` is no longer constant in glibc > 2.33 but a function
+returning a long. Cast before taking `max`.
+
+See https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=85e84fe53699fe9e392edffa993612ce08b2954a;hb=HEAD
+
+Signed-off-by: Michel Salim <michel@fb.com>
+Change-Id: I197f8ff3053eede80d6aed096be4f0113dd43241
+(relocated to chromium repo, removed static)
+---
+
+diff --git a/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc b/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+index ca353c4..5cdabcf 100644
+--- a/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
++++ b/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+@@ -138,7 +138,7 @@
+ // SIGSTKSZ may be too small to prevent the signal handlers from overrunning
+ // the alternative stack. Ensure that the size of the alternative stack is
+ // large enough.
+- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
++ const unsigned kSigStackSize = std::max(16384U, (unsigned)SIGSTKSZ);
+
+ // Only set an alternative stack if there isn't already one, or if the current
+ // one is too small.
+diff --git a/sandbox/linux/services/credentials.cc b/sandbox/linux/services/credentials.cc
+index ca6b595..1c1ee42 100644
+--- a/sandbox/linux/services/credentials.cc
++++ b/sandbox/linux/services/credentials.cc
+@@ -11,6 +11,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
++#include <string.h>
+ #include <sys/syscall.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
+@@ -100,7 +101,8 @@ bool ChrootToSafeEmptyDir() {
+ // TODO(crbug.com/1247458) Broken in MSan builds after LLVM f1bb30a4956f.
+ clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS;
+
+- char tls_buf[PTHREAD_STACK_MIN] = {0};
++ char tls_buf[PTHREAD_STACK_MIN];
++ memset(tls_buf, 0, PTHREAD_STACK_MIN);
+ tls = tls_buf;
+ #endif
+