diff options
Diffstat (limited to 'www-client')
24 files changed, 3144 insertions, 118 deletions
diff --git a/www-client/Manifest.gz b/www-client/Manifest.gz Binary files differindex 17fb8698e13a..18534e3efd62 100644 --- a/www-client/Manifest.gz +++ b/www-client/Manifest.gz diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest index 1ce70dec2b4a..f4ce8f31fdd5 100644 --- a/www-client/chromium/Manifest +++ b/www-client/chromium/Manifest @@ -10,6 +10,7 @@ AUX chromium-134-qt5-optional.patch 4140 BLAKE2B 2a5879384a95fa0a9edf2e6506b2f37 AUX chromium-135-fix-non-wayland-build.patch 1274 BLAKE2B 9171ae97a91844bf4777dc8106ff2bbe75af1bfadba03ea4902d5884b0d09bb739c00250f6cf373e4c006a54031f4b5104360a83ab2a7edec7730d492dc82a49 SHA512 b11778f41371d19d8dd40f0eb9c0a023a7b9bb2e8d177ddee0345ae7c9d99dc99c05e017f5625d0edf34a2e1ccf524ea4c810e47977bd70f240f7016fd31d769 AUX chromium-135-map_droppable-glibc.patch 1395 BLAKE2B a099ecaccd2cdefc3f4f7f4dbd8f0d1cf2bcc0d97230aabeb0a89d7f45a34b05926b39515965356fbb6e6fb97f8d3171c587e455abb7ffe534cce996c4bc35bc SHA512 fa741270a22a87cee56baef38fa44276543de3bcac495695550dbeada38dec655076f758c8dc0a3a1e290b49fa4c5c8dc4f2541f1574adf441d8d3fd6a5c902e AUX chromium-135-oauth2-client-switches.patch 2086 BLAKE2B 630dd4d14264b5ef204afed9fe1548e559b2d9319f49e1eae0ccdfb254035212f58f507b68a0365dfcc6972856652a44f29a64be22b5930180ae4e314d7ea448 SHA512 23735898a5ebbb952f775b50251e1bcef6ca865fcdbb5559bd5f79d1ce7d394b52382ed0a0125b8e0db1c3ad6eb3aba50616dbdac6d79786dea91ea1f663d58b +AUX chromium-135-webrtc-pipewire.patch 1048 BLAKE2B bdd9ea32ddb322ef801120fb6b01702a4096b2463bd82c99c12cb4cf6aa10cad4458d27759f59f934c3e98b306d30e5cc2338a7738ed6a919577eedf28ff0426 SHA512 a8ac9c3b47e08dd2f02b03087a69674bd50d4c9d9aca0b536a48f19eb3505c0d649a2404acfb07713e736aebab25772cb2f9dbb621a44b6d90b771913a2c17ae AUX chromium-136-drop-nodejs-ver-check.patch 1507 BLAKE2B 025e3432d4ad05fe400cdecdf2cf968dd73c66dbb36352deff23235c614769cb635b5f99a881da977dea70eef0e315d324bdd2d0afa17d363e11b01e408e3e7b SHA512 e3e67394182c4f256973407c7682196825412d0b3fbf556fa0f4af05ccb2cfa9f2e53aea6bb7eef08e47d3342f6f43f7f62c36e8db9f7fb4e6adbd50cda9d7ca AUX chromium-browser.xml 407 BLAKE2B 168d78b0855546ca559cfb51aff0bc85d5e6ae974c25eb76e4a02f6d11659489c6e40397a0b2f7bc1fda336fd2c6dd8c863fccc3340719210b41c7fef51927f4 SHA512 b767fb4fd1925029d95560fc14cb7ab12ae43b2fe923e92d75e733b9723cbe1dcdf6df041a2b62554e98b79b47ef3f6028c773e72e6fd53166a021d49657aeca AUX chromium-cross-compile.patch 323 BLAKE2B 8d5091ce5287422c9688ede2563360a96b8bd34b9750dc1c8f0b6ca9aeff2c066fac2da169396baa131d971c087c78f9af53999df0e102d1f57176f5e8d3dd57 SHA512 06d3afc1aa19e57daac0e4bad37e1f365a68408240430e5e818e5a4f12e3b7519214eafa463633e447e7029f4ae13ea864ca347ad1fac117702a0be88718a954 @@ -21,8 +22,12 @@ DIST chromium-135.0.7049.41-linux-testdata.tar.xz 646342784 BLAKE2B b7261f269848 DIST chromium-135.0.7049.41-linux.tar.xz 1439668336 BLAKE2B 28239d1fb2047370ba6bacaac9fee4acc2d73f477e700e1ecde100b53cc409ba5bb74a575ee30a969f68faf92b000d8836fb985c4f2db3dcd0f08a6ad66426c7 SHA512 b99eaa191b5c57bd3c1a3749025b6c341c2ea7f4e94d0dee665f910919d920303ad0b223720df0c5b4fbfe3180266e71957231c80428250e09075e3740bdb8a7 DIST chromium-135.0.7049.52-linux-testdata.tar.xz 646356936 BLAKE2B 0caacf3b9723c967abf1a254fd16673ebf37c959994e9136437ba4c3f2ca3961f9bd23c31113a0dca1293d017e3a33ec905ffdd3b38d72bf6ecb6c15ad7ccf0a SHA512 5eb4aba73a2bddf325217f7e4ae89aab46511777e2e4d327bdff9fb1f995e6319f912abfdaf3fefa870cd8f938fd9c33b81d627619bae835ebc8f4f9300180fa DIST chromium-135.0.7049.52-linux.tar.xz 1439720440 BLAKE2B d67c80a17e648b5a65a5e30a7cd3c534dbc780bd0b829a824316ae43e5b71d819383193474c84d57395045f6e4e4c77c7142b3865e7cce8ba696bbbbe5316b29 SHA512 43bd59b3c29c987503b395e975c42883fc9bae680a0ed9bbba385d74c87e686ed7c538282cdba8ac6b64e867a68c6aadfefc1eea120ae8ed76a1e3a21640c916 +DIST chromium-135.0.7049.84-linux-testdata.tar.xz 646330872 BLAKE2B 9b0f837891e08ab628dcdd607c736d68d8f5b9966f2fc52fe6860ac8753dfca52b76ca673a0b3fc7bb4b9fd3be2e035fa5c5b9bc4d8aaa511e48efb30cc73a62 SHA512 0909954ef204cb032bf447526c7ca0f8d6f32580f54ca192c1ebae82891f44381c8a825e1c975d9f386143eb365a624b8b85d6e18f8938f58a453adbd2899ea5 +DIST chromium-135.0.7049.84-linux.tar.xz 1439815008 BLAKE2B 74142b8fcd56cab1d5fd8b2e176985985b4abf3c5ab19d841dae1b79bf247c8e4807cd670dc2a930864b698ae212d2c188c425e5f6dbdfe181901b580c2241a8 SHA512 8f6bf8d41b12bdaad67608083eac5a5ca69d879dd0206c221a3a6bb23fe50561936f176f68f34ff6f96985b4c98caa4d3248dabf4c8d378ea5ddc7b9314695f0 DIST chromium-136.0.7081.2-linux-testdata.tar.xz 651692500 BLAKE2B dcb8fcfa1060e2ebeaf44cbbe7dbf05318d398ee61f70ee30296dddc11ad8e73e7e6069c548e1897c8521a15548833b8bb23ed48be55ad1df9a034903b69ed84 SHA512 a44900d654d42df2626d4912797ef2090d1840c5c025f5e0be88229c6e3c2b70a8405ae936c280ebc8166067f0577270881e9eb7ab78f50031efa64cd7127ee5 DIST chromium-136.0.7081.2-linux.tar.xz 1540597124 BLAKE2B e46d1a707cfbbd39c1f7fee4330405b03e87e94f7e300ee6095ac22db5be8a88ad29299d82f8af470d4e5664e2b124b88a395c2aed07ad5d45bcdc753a1036e3 SHA512 949383bfc9641281b359dcc7d70bcfe159a1e758266f6ef2ab5c8254dedd047d12a9912aa804170fc7cbe36d3d72790411ba4ab24f4b3115543012b9366ff13a +DIST chromium-136.0.7103.17-linux-testdata.tar.xz 651341644 BLAKE2B 9f0d70ca08bd28244b7650cfcedf1b8daf11c594afffab3035f5b17bb854396def75e18995e182455744f081505f2aec36a265c095af0bfb80c35bea235f7c94 SHA512 f76bf823885de08ce2496f8cc8fca2db8ac6f20256d1e46b314f36afde049756475e9569da656a66639af04263b6986d7c627db84c685cd3f5998c480ddf14c2 +DIST chromium-136.0.7103.17-linux.tar.xz 1561925604 BLAKE2B 9d9e9132b12c65cc626c2d0ef4cf0a5cf00e6356cfa87e234cb936ab4490ed9881d80f8a6408f19c6eb4764ce2e64f2bd1ac62136f5478ed517561cc90886ea7 SHA512 b5691028e3b386eab8b7d105c495999b341296a88eb55ff9affedbc4833c16ac048dd55954d77e4de4a3c1c9dd396c6172f5d07b5ca4b40f57ee85cbdef2536a DIST chromium-clang-llvmorg-20-init-17108-g29ed6000-3.tar.xz 54170388 BLAKE2B 1383726ef2977ddb6ca9cef7eb7f5730e9635c570c1e20c3103922242e012579b87cf7ada668a6dedec375fa821115e5c79c32b12ab486a9e427f2e00344cfdc SHA512 a2aee165ee5581f442af222b23182370349a3b0b5412d05600c2d2258f31449e986bb7e88601b26049b4a926b15938238bfe8abd01ff6eaf2df84a64812007a1 DIST chromium-clang-llvmorg-21-init-5118-g52cd27e6-4.tar.xz 54532476 BLAKE2B 743acca818593744d106d407c35ce14a3c9751a07a4e14f166abb3c2119750768b955ebce3ad0e461b67ea085d385ae8f962f9bfe9d5492131ec68801d22b072 SHA512 d5e0d3f99d0141e705a069e7556f1f819c5a687c69c09f31cdf28228ec25fff0177bcea4567ad36e9b6bd0a64f3ee9e103a5d9903a324213a262a49c03741fbf DIST chromium-openpower-7d1ac28278.tar.bz2 390422 BLAKE2B b2e135ca43a0605ef5aa1bc46a2794a1bb8fb0e74dec6172d022453dc680ecec4d2cf6b23035634bfa0891b19e3dfdb980da73205c0c6d2e92179d154014feeb SHA512 c684bab2fe1857164d007a5e3e7b3892cab2c94214ff4395149d327bdb85f1d5196a91b8b4bd0da04c5ba32a86dfad42674c6cca743f4e02a6b7213d7514c1b3 @@ -30,12 +35,15 @@ DIST chromium-openpower-a85b64f07b.tar.bz2 387899 BLAKE2B b01fda2d64ce73068d1536 DIST chromium-patches-134-1.tar.bz2 10440 BLAKE2B 5755ed6a20b141d33015a3959b273ca0df079f891513e4d83f356a882d51702dbba697c950b3fd9c68e37500240d18abfa99d0246b1b847a8d8109dbe7d4dd05 SHA512 294276f13c1f3e46a552ea856237fa028568bef1e72d1600ba63a3d17365385f6a6073367a7d4fde99202272d906894a2208390682576392fe40a3489d58851b DIST chromium-patches-135.tar.bz2 10424 BLAKE2B 89d265be9e099000dd75b2073e5f175002632c1e41625cb93d80045235c631e39765a9952e1252652f8ff7dd878ed5f5b99a6b3f4a2796957d5f28bcc8daa531 SHA512 6aa2ae6b39eecff535356623bded267fa257f3e5390a9d59d65aab7f34e5b812e50e5fa9f20cb2dcbea51856f86dd1f5cd19e0e144691ef96aee28525c9abd3b DIST chromium-patches-136-1.tar.bz2 10507 BLAKE2B 38422bf8bfeab977c5ae4217e90dac85772323002e49932602b018b2e979e8bb7a7897249977cd7580cabc14a9cb6b694645dd1121589de6906cddc16cdc94a9 SHA512 d2bc2f7eea79fd21392f0d34c1eb63873085cd8f5ba9cc7a447a32cc3d477834362b21be15871aaab0a82820e50d67ba1a272755b4c37d3d15bb7d658ee3ff39 +DIST chromium-patches-136-2.tar.bz2 10500 BLAKE2B d943a397059d4d55871bc4f2191e40b55d92aeab8c954c24604a558149d0df3cc8590c147a685d2e21253728918d47fdf46c24363085be364bf35ab4f3938349 SHA512 f9ff50891ef23c2d129170389c56fa3cd629e8a473dc220008dcc7cdbe86284b3f522f507d1276f0adc1c457e95b33c614a54abdea13cb23cbc7a8c0f777a291 DIST chromium-profiler-0.2.tar 259952640 BLAKE2B 5e82389fce00b267280d633b26551231c558b80f0c92cd7d60271095a3503365ab673e7a46dc5f74f8a82db1f21262cb24dcc0531d954bab5fb3b175dab3394d SHA512 9fa89a5ab728419683e7495ae676567480987d68a2d589f2aa97bfcbcf123f3c8f97f8bca5f65e5e3f6e41475535add473ded83b9c7a33bb4746a9d05b298a6c DIST chromium-rust-toolchain-ad211ced81-1-llvmorg-20-init-17108-g29ed6000.tar.xz 124591376 BLAKE2B c062e7283994ef15055a37f66a1c01dfcbcf03d16b7de48e7d017cec479f306999112dcd0f016157cfd0334349b55ae29512be3063dc6c3de90311520e90a5c1 SHA512 09be07ff0adfcc2928b28f5763a7e18bb7ef1f0cbf4a2475e3e6ae19a0a310a4a8f323375b947a48247853412119781bc9fa1422e24b96423c071f68337d6766 DIST chromium-rust-toolchain-f7b4354283-1-llvmorg-21-init-5118-g52cd27e6.tar.xz 118223072 BLAKE2B 2173e53df32fa697932ed55b6cef016ee8e1e7202ee47d947caef82f727b75dee1b466c7dcae0210225b23cfa94acf46af2ae4db10358189f3f32f7f0d84b685 SHA512 36d686342d5e0d984cc147e0a8ce06f665759b5480b086551158e69642cf903dbbbce85484eb8e5314cd1f0aa0e869f47d74cbf33fb125d4bd09586d22b0e3a5 DIST chromium-testfonts-f26f29c9d3.tar.gz 32750602 BLAKE2B 498f8b2e0811c98dc3d4aaa75559e69c782afb4bd12328cfdb7244ddba5cae7ee47becd27b2549d7b36bed417601f70f4c192934b0f08496cef1547d0502d93c SHA512 96b090446862997c8134e2971f0e38793ecc1208d547e554c9b651ccfb4127c4de86754903fea57a7292a2823c45117bae0ec13ed87aed20c248fb779579fbde EBUILD chromium-134.0.6998.117.ebuild 54446 BLAKE2B 7ae39f98f2738d63ff429da1cf1e3f6891e44e7c4f5b9f4bc8b1c5b5a0aa8f919f1a686717ee7294f223010a308f128236905c3fe5045e714f4395cfdce6af13 SHA512 6246c75e05a073724aac71052a90b73ad27ce9a91f6a5cdfb39c6bfa4600410ab5e6716f105906fb7017b8aedf3acbf86a7ed9e4770e093c9f67f396d1b835fc EBUILD chromium-135.0.7049.41.ebuild 54404 BLAKE2B dce7a3f93963d2b1a69285182dc2e1aa651a161c3867a1d241940cd1659a02d0d7db35ac9d1a94ad013f5eeba2306f530c58a03e2084e12ccc050fbd76c074a9 SHA512 e38829cb97f8ee673287d4347431179145124b5e1f78b6abc695621f7b811882efea27648bc7a76fc1c9e4b961c0b970570c8b612159c6e7c760fa5ad19145ce -EBUILD chromium-135.0.7049.52.ebuild 54405 BLAKE2B 09b09708b8d87378fc40e640455ede212f69de1ac4caa960f94d05a8cb85af2b67e284dc08e00ac3b46d71c377036a8be7eab3a1d4c5dfe192967e41fb137fa8 SHA512 a6c79dbb714cdf663003cacd6038b85f7301b3f312ae52deaaadf55053378889e156a281c26957136a0bc21bc61c8311578ae19b49f3513de2aa3208e6e20c43 +EBUILD chromium-135.0.7049.52.ebuild 54456 BLAKE2B 4bfd9a551290fa90951b2af7513fc912404b908fe206a4c7e677960d394136e0880c063df1d401a8ef7fb826747cdea7285d6421de7934130955f65e8b2373e8 SHA512 6dfaaaa5af88a02d163fb8ab56fac871c4c82610fc00ff5119c43a121ddbe35f5348bdfaecde2cfa26e35b2d6dcc1d343bdfda1fa53f2dd22f8f13add8191d4c +EBUILD chromium-135.0.7049.84.ebuild 54945 BLAKE2B ed4443d2009ec2fe9ea2721646306022b93a7640be4c8b2d8dc1dbd7a0e484db78d0c71c55e5e981c843e547f7778c61c6a852a77c3baa67383aa38827ed7a4d SHA512 cf98f09ea1694132877a9a8ece52483fe1506727b55c32bba60c5a3b047b7522db9370e5d41fb2e7b5ff252135fdf4773e05d96891840eb8fa6b780ae6171f2b EBUILD chromium-136.0.7081.2.ebuild 54502 BLAKE2B 943d25a44e94a9d20d6d3c497e56e2994f6a6704b083c3d6a602ccca4d399261a20800f49d0f7ca6a948d3a0480a3426946b63ad4e8b734e7ea19031dee7e585 SHA512 286a2e83b8f5308994efd29ddc2fa06a8ac23c10e03de7bae856d15ac4b6f134c8739c2ca163d71ca218ff308882d6d6dfa65c50d4cd29657250bb9a03b0e3d0 +EBUILD chromium-136.0.7103.17.ebuild 55373 BLAKE2B bf6e87d0c92ceec5d6eb29f9695e93ad5c72dc47ea4b94e816a0544ee83a4f8213e193a2eb56f1aa9580e9bd047aa8a49a726571160c593d829ff7accf958036 SHA512 4a10b1a1a7c96a917a94af6bc2c79c38dec3a0e8d84755bac2be2c9a2f3fd2e3eba05e245db1ea68aefc90860ea3034b234cb78cad735c1bebda41921f1baaf6 MISC metadata.xml 2090 BLAKE2B 1dc2cb3c8aad13022f4ec8ccae5f87635a5a7846f5a06c797e816322ab33d9ef2629a3409612020e42f981391d41bb501297360d9f777afc81c9fe65078ef059 SHA512 d543d25b779ea63edc5f94e564c2e2c40760b76b933e6e090a6c8c70f71720cf2f764a1fdba3c75efabff8cb0119348665c06657fc38fae615bd20882a06e2e9 diff --git a/www-client/chromium/chromium-135.0.7049.52.ebuild b/www-client/chromium/chromium-135.0.7049.52.ebuild index 00bcbe0f5e29..cc7b2ccbfc8e 100644 --- a/www-client/chromium/chromium-135.0.7049.52.ebuild +++ b/www-client/chromium/chromium-135.0.7049.52.ebuild @@ -411,6 +411,7 @@ src_prepare() { "${FILESDIR}/chromium-134-bindgen-custom-toolchain.patch" "${FILESDIR}/chromium-135-oauth2-client-switches.patch" "${FILESDIR}/chromium-135-map_droppable-glibc.patch" + "${FILESDIR}/chromium-135-webrtc-pipewire.patch" ) if use bundled-toolchain; then diff --git a/www-client/chromium/chromium-135.0.7049.84.ebuild b/www-client/chromium/chromium-135.0.7049.84.ebuild new file mode 100644 index 000000000000..1b3e06319754 --- /dev/null +++ b/www-client/chromium/chromium-135.0.7049.84.ebuild @@ -0,0 +1,1539 @@ +# Copyright 2009-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# PACKAGING NOTES + +# Upstream roll their bundled Clang every two weeks, and the bundled Rust +# is rolled regularly and depends on that. While we do our best to build +# with system Clang, we may eventually hit the point where we need to use +# the bundled Clang due to the use of prerelease features. + +# USE=bundled-toolchain is intended for users who want to use the same toolchain +# as the upstream releases. It's also a good fallback in case we fall behind +# and need to get a release out quickly (less likely with `dev` in-tree). + +# Since m133 we are using CI-generated tarballs from +# https://github.com/chromium-linux-tarballs/chromium-tarballs/ (uploaded to S3 +# and made available via https://chromium-tarballs.distfiles.gentoo.org/). + +# We do this because upstream tarballs weigh in at about 3.5x the size of our +# new "Distro tarballs" and include binaries (etc) that are not useful for +# downstream consumers (like distributions). + +GN_MIN_VER=0.2217 +# chromium-tools/get-chromium-toolchain-strings.py +TEST_FONT=f26f29c9d3bfae588207bbc9762de8d142e58935c62a86f67332819b15203b35 +BUNDLED_CLANG_VER=llvmorg-20-init-17108-g29ed6000-3 +BUNDLED_RUST_VER=ad211ced81509462cdfe4c29ed10f97279a0acae-1 +RUST_SHORT_HASH=${BUNDLED_RUST_VER:0:10}-${BUNDLED_RUST_VER##*-} + +VIRTUALX_REQUIRED="pgo" + +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" + +LLVM_COMPAT=( 19 20 ) +PYTHON_COMPAT=( python3_{11..13} ) +PYTHON_REQ_USE="xml(+)" +RUST_MIN_VER=1.78.0 +RUST_NEEDS_LLVM="yes please" +RUST_OPTIONAL="yes" # Not actually optional, but we don't need system Rust (or LLVM) with USE=bundled-toolchain + +inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 multiprocessing ninja-utils pax-utils +inherit python-any-r1 readme.gentoo-r1 rust systemd toolchain-funcs virtualx xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://www.chromium.org/" +PPC64_HASH="a85b64f07b489b8c6fdb13ecf79c16c56c560fc6" +PATCH_V="${PV%%\.*}" +SRC_URI="https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/${PV}/chromium-${PV}-linux.tar.xz + !bundled-toolchain? ( + https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${PATCH_V}/chromium-patches-${PATCH_V}.tar.bz2 + ) + bundled-toolchain? ( + https://gsdview.appspot.com/chromium-browser-clang/Linux_x64/clang-${BUNDLED_CLANG_VER}.tar.xz + -> chromium-clang-${BUNDLED_CLANG_VER}.tar.xz + https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-${BUNDLED_RUST_VER}-${BUNDLED_CLANG_VER%-*}.tar.xz + -> chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz + ) + test? ( + https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/${PV}/chromium-${PV}-linux-testdata.tar.xz + https://chromium-fonts.storage.googleapis.com/${TEST_FONT} -> chromium-testfonts-${TEST_FONT:0:10}.tar.gz + ) + ppc64? ( + https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches/-/archive/${PPC64_HASH}/openpower-patches-${PPC64_HASH}.tar.bz2 -> chromium-openpower-${PPC64_HASH:0:10}.tar.bz2 + ) + pgo? ( https://github.com/elkablo/chromium-profiler/releases/download/v0.2/chromium-profiler-0.2.tar )" + +LICENSE="BSD" +SLOT="0/stable" +# Dev exists mostly to give devs some breathing room for beta/stable releases; +# it shouldn't be keyworded but adventurous users can select it. +# Do _not_ drop stable keywords for amd64 on patch releases. aarch64 still needs to go through the stablereq process. +if [[ ${SLOT} != "0/dev" ]]; then + KEYWORDS="amd64 ~arm64" +fi + +IUSE_SYSTEM_LIBS="+system-harfbuzz +system-icu +system-png +system-zstd" +IUSE="+X ${IUSE_SYSTEM_LIBS} bindist bundled-toolchain cups debug ffmpeg-chromium gtk4 +hangouts headless kerberos +official pax-kernel pgo" +IUSE+=" +proprietary-codecs pulseaudio qt6 +screencast selinux test +vaapi +wayland +widevine cpu_flags_ppc_vsx3" +RESTRICT=" + !bindist? ( bindist ) + !test? ( test ) +" + +REQUIRED_USE=" + !headless? ( || ( X wayland ) ) + pgo? ( X !wayland ) + screencast? ( wayland ) + ffmpeg-chromium? ( bindist proprietary-codecs ) +" + +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-73.0:= ) + >=dev-libs/libxml2-2.12.4:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + 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(-)] ) + system-zstd? ( >=app-arch/zstd-1.5.5:= ) + >=media-libs/libwebp-0.4.0:= + media-libs/mesa:=[gbm(+)] + >=media-libs/openh264-1.6.0:= + sys-libs/zlib:= + !headless? ( + dev-libs/glib:2 + >=media-libs/alsa-lib-1.0.19:= + pulseaudio? ( media-libs/libpulse:= ) + sys-apps/pciutils:= + kerberos? ( virtual/krb5 ) + vaapi? ( >=media-libs/libva-2.7:=[X?,wayland?] ) + X? ( + x11-base/xorg-proto:= + x11-libs/libX11:= + x11-libs/libxcb:= + x11-libs/libXext:= + ) + x11-libs/libxkbcommon:= + wayland? ( + dev-libs/libffi:= + dev-libs/wayland:= + screencast? ( media-video/pipewire:= ) + ) + ) +" + +COMMON_DEPEND=" + ${COMMON_SNAPSHOT_DEPEND} + app-arch/bzip2:= + dev-libs/expat:= + net-misc/curl[ssl] + sys-apps/dbus:= + media-libs/flac:= + sys-libs/zlib:=[minizip] + !headless? ( + >=app-accessibility/at-spi2-core-2.46.0:2 + media-libs/mesa:=[X?,wayland?] + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + cups? ( >=net-print/cups-1.3.11:= ) + qt6? ( dev-qt/qtbase:6[gui,widgets] ) + X? ( ${COMMON_X_DEPEND} ) + ) +" +RDEPEND="${COMMON_DEPEND} + !headless? ( + || ( + x11-libs/gtk+:3[X?,wayland?] + gui-libs/gtk:4[X?,wayland?] + ) + qt6? ( dev-qt/qtbase:6[X?,wayland?] ) + ) + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + bindist? ( + !ffmpeg-chromium? ( >=media-video/ffmpeg-6.1-r1:0/58.60.60[chromium] ) + ffmpeg-chromium? ( media-video/ffmpeg-chromium:${PV%%\.*} ) + ) +" +DEPEND="${COMMON_DEPEND} + !headless? ( + gtk4? ( gui-libs/gtk:4[X?,wayland?] ) + !gtk4? ( x11-libs/gtk+:3[X?,wayland?] ) + ) +" + +BDEPEND=" + ${COMMON_SNAPSHOT_DEPEND} + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + >=app-arch/gzip-1.7 + !headless? ( + qt6? ( dev-qt/qtbase:6 ) + ) + !bundled-toolchain? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + llvm-core/lld:${LLVM_SLOT} + official? ( + !ppc64? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[cfi] ) + ) ') + ${RUST_DEPEND} + ) + pgo? ( + >=dev-python/selenium-3.141.0 + >=dev-util/web_page_replay_go-20220314 + ) + >=dev-util/bindgen-0.68.0 + >=dev-build/gn-${GN_MIN_VER} + app-alternatives/ninja + dev-lang/perl + >=dev-util/gperf-3.0.3 + dev-vcs/git + >=net-libs/nodejs-7.6.0[inspector] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig +" + +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}]" +} + +pre_build_checks() { + # Check build requirements: bugs #471810, #541816, #914220 + # We're going to start doing maths here on the size of an unpacked source tarball, + # this should make updates easier as chromium continues to balloon in size. + # xz -l /var/cache/distfiles/chromium-${PV}*.tar.xz + local base_disk=9 # Round up + use test && base_disk=$((base_disk + 5)) + local extra_disk=1 # Always include a little extra space + local memory=4 + tc-is-cross-compiler && extra_disk=$((extra_disk * 2)) + if tc-is-lto || use pgo; then + memory=$((memory * 2 + 1)) + tc-is-cross-compiler && extra_disk=$((extra_disk * 2)) # Double the requirements + use pgo && extra_disk=$((extra_disk + 4)) + fi + if is-flagq '-g?(gdb)?([1-9])'; then + if use custom-cflags; then + extra_disk=$((extra_disk + 5)) + fi + memory=$((memory * 2)) + fi + local CHECKREQS_MEMORY="${memory}G" + local CHECKREQS_DISK_BUILD="$((base_disk + extra_disk))G" + check-reqs_${EBUILD_PHASE_FUNC} +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]]; then + # The pre_build_checks are all about compilation resources, no need to run it for a binpkg + pre_build_checks + fi + + if use headless; then + local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt6" "vaapi" "wayland") + for myiuse in ${headless_unused_flags[@]}; do + use ${myiuse} && ewarn "Ignoring USE=${myiuse}, USE=headless is set." + done + fi + + if ! use bindist && use ffmpeg-chromium; then + ewarn "Ignoring USE=ffmpeg-chromium, USE=bindist is not set." + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + # The pre_build_checks are all about compilation resources, no need to run it for a binpkg + pre_build_checks + + # The linux:unbundle toolchain in GN grabs CC, CXX, CPP (etc) from the environment + # We'll set these to clang here then use llvm-utils functions to very explicitly set these + # to a sane value. + # This is effectively the 'force-clang' path if GCC support is re-added. + # TODO: check if the user has already selected a specific impl via make.conf and respect that. + use_lto="false" + if tc-is-lto; then + use_lto="true" + # We can rely on GN to do this for us; anecdotally without this builds + # take significantly longer with LTO enabled and it doesn't hurt anything. + filter-lto + fi + + if [ "$use_lto" = "false" ] && use official; then + einfo "USE=official selected and LTO not detected." + einfo "It is _highly_ recommended that LTO be enabled for performance reasons" + einfo "and to be consistent with the upstream \"official\" build optimisations." + fi + + if [ "$use_lto" = "false" ] && use test; then + die "Tests require CFI which requires LTO" + fi + + export use_lto + + # 936858 + if tc-ld-is-mold; then + eerror "Your toolchain is using the mold linker." + eerror "This is not supported by Chromium." + die "Please switch to a different linker." + fi + + if use !bundled-toolchain; then + llvm-r1_pkg_setup + rust_pkg_setup + fi + + # Forcing clang; respect llvm_slot_x to enable selection of impl from LLVM_COMPAT + AR=llvm-ar + CPP="${CHOST}-clang++-${LLVM_SLOT} -E" + NM=llvm-nm + CC="${CHOST}-clang-${LLVM_SLOT}" + CXX="${CHOST}-clang++-${LLVM_SLOT}" + + if tc-is-cross-compiler; then + use pgo && die "The pgo USE flag cannot be used when cross-compiling" + CPP="${CBUILD}-clang++-${LLVM_SLOT} -E" + fi + + # I hate doing this but upstream Rust have yet to come up with a better solution for + # us poor packagers. Required for Split LTO units, which are required for CFI. + export RUSTC_BOOTSTRAP=1 + + # Users should never hit this, it's purely a development convenience + if ver_test $(gn --version || die) -lt ${GN_MIN_VER}; then + die "dev-build/gn >= ${GN_MIN_VER} is required to build this Chromium" + fi + fi + + chromium_suid_sandbox_check_kernel_config +} + +src_unpack() { + unpack ${P}-linux.tar.xz + # These should only be required when we're not using the official toolchain + use !bundled-toolchain && unpack chromium-patches-${PATCH_V}.tar.bz2 + + use pgo && unpack chromium-profiler-0.2.tar + + if use test; then + # A new testdata tarball is available for each release; but testfonts tend to remain stable + # for the duration of a release. + # This unpacks directly into/over ${WORKDIR}/${P} so we can just use `unpack`. + unpack ${P}-linux-testdata.tar.xz + # This just contains a bunch of font files that need to be unpacked (or moved) to the correct location. + local testfonts_dir="${WORKDIR}/${P}/third_party/test_fonts" + local testfonts_tar="${DISTDIR}/chromium-testfonts-${TEST_FONT:0:10}.tar.gz" + tar xf "${testfonts_tar}" -C "${testfonts_dir}" || die "Failed to unpack testfonts" + fi + + # We need to manually unpack this since M126 else we'd unpack one toolchain over the other. + # Since we're doing that anyway let's unpack to sensible locations to make symlink creation easier. + if use bundled-toolchain; then + einfo "Unpacking bundled Clang ..." + mkdir -p "${WORKDIR}"/clang || die "Failed to create clang directory" + tar xf "${DISTDIR}/chromium-clang-${BUNDLED_CLANG_VER}.tar.xz" -C "${WORKDIR}/clang" || die "Failed to unpack Clang" + einfo "Unpacking bundled Rust ..." + local rust_dir="${WORKDIR}/rust-toolchain" + mkdir -p "${rust_dir}" || die "Failed to create rust toolchain directory" + tar xf "${DISTDIR}/chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz" -C "${rust_dir}" || + die "Failed to unpack Rust" + fi + + if use ppc64; then + unpack chromium-openpower-${PPC64_HASH:0:10}.tar.bz2 + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-cross-compile.patch" + "${FILESDIR}/chromium-109-system-zlib.patch" + "${FILESDIR}/chromium-111-InkDropHost-crash.patch" + "${FILESDIR}/chromium-131-unbundle-icu-target.patch" + "${FILESDIR}/chromium-134-bindgen-custom-toolchain.patch" + "${FILESDIR}/chromium-135-oauth2-client-switches.patch" + "${FILESDIR}/chromium-135-map_droppable-glibc.patch" + "${FILESDIR}/chromium-135-webrtc-pipewire.patch" + ) + + if use bundled-toolchain; then + # We need to symlink the toolchain into the expected location + einfo "Symlinking Clang toolchain to expected location ..." + mkdir -p third_party/llvm-build/ || die "Failed to create llvm-build directory" + # the 'Chromium Linux Tarballs' seem to already have 'Release+Asserts/{lib,bin}'; not sure if this is an + # upstream change - we're using the same scripts to build, theoretically. We'll still attempt to create + # llvm-build, but we'll rm Release+Asserts and symlink directly. + if [[ -d third_party/llvm-build/Release+Asserts ]]; then + rm -r third_party/llvm-build/Release+Asserts || die "Failed to remove third_party/llvm-build/Release+Asserts" + fi + ln -s "${WORKDIR}"/clang third_party/llvm-build/Release+Asserts || die "Failed to bundle Clang" + einfo "Symlinking Rust toolchain to expected location ..." + # As above, so below + if [[ -d third_party/rust-toolchain ]]; then + rm -r third_party/rust-toolchain || die "Failed to remove third_party/rust-toolchain" + fi + ln -s "${WORKDIR}"/rust-toolchain third_party/rust-toolchain || die "Failed to bundle rust" + cp "${WORKDIR}"/rust-toolchain/VERSION \ + "${WORKDIR}"/rust-toolchain/INSTALLED_VERSION || die "Failed to set rust version" + else + # We don't need our toolchain patches if we're using the official toolchain + shopt -s globstar nullglob + # 130: moved the PPC64 patches into the chromium-patches repo + local patch + for patch in "${WORKDIR}/chromium-patches-${PATCH_V}"/**/*.patch; do + if [[ ${patch} == *"ppc64le"* ]]; then + use ppc64 && PATCHES+=( "${patch}" ) + else + PATCHES+=( "${patch}" ) + fi + done + + shopt -u globstar nullglob + + # We can't use the bundled compiler builtins with the system toolchain + # `grep` is a development convenience to ensure we fail early when google changes something. + local builtins_match="if (is_clang && !is_nacl && !is_cronet_build) {" + grep -q "${builtins_match}" build/config/compiler/BUILD.gn || die "Failed to disable bundled compiler builtins" + sed -i -e "/${builtins_match}/,+2d" build/config/compiler/BUILD.gn + + # Strictly speaking this doesn't need to be gated (no bundled toolchain for ppc64); it keeps the logic together + if use ppc64; then + local patchset_dir="${WORKDIR}/openpower-patches-${PPC64_HASH}/patches" + # patch causes build errors on 4K page systems (https://bugs.gentoo.org/show_bug.cgi?id=940304) + local page_size_patch="ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch" + local isa_3_patch="ppc64le/core/baseline-isa-3-0.patch" + # Apply the OpenPOWER patches (check for page size and isa 3.0) + openpower_patches=( $(grep -E "^ppc64le|^upstream" "${patchset_dir}/series" | grep -v "${page_size_patch}" | + grep -v "${isa_3_patch}" || die) ) + for patch in "${openpower_patches[@]}"; do + PATCHES+=( "${patchset_dir}/${patch}" ) + done + if [[ $(getconf PAGESIZE) == 65536 ]]; then + PATCHES+=( "${patchset_dir}/${page_size_patch}" ) + fi + # We use vsx3 as a proxy for 'want isa3.0' (POWER9) + if use cpu_flags_ppc_vsx3 ; then + PATCHES+=( "${patchset_dir}/${isa_3_patch}" ) + fi + fi + + # Oxidised hacks, let's keep 'em all in one place + # This is a nightly option that does not exist in older releases + # https://github.com/rust-lang/rust/commit/389a399a501a626ebf891ae0bb076c25e325ae64 + if ver_test ${RUST_SLOT} -lt "1.83.0"; then + sed '/rustflags = \[ "-Zdefault-visibility=hidden" \]/d' -i build/config/gcc/BUILD.gn || + die "Failed to remove default visibility nightly option" + fi + + # Upstream Rust replaced adler with adler2, for older versions of Rust we still need + # to tell GN that we have the older lib when it tries to copy the Rust sysroot + # into the bulid directory. + if ver_test ${RUST_SLOT} -lt "1.86.0"; then + sed -i 's/adler2/adler/' build/rust/std/BUILD.gn || + die "Failed to tell GN that we have adler and not adler2" + fi + fi + + default + + # Not included in -lite tarballs, but we should check for it anyway. + if [[ -f third_party/node/linux/node-linux-x64/bin/node ]]; then + rm third_party/node/linux/node-linux-x64/bin/node || die + else + mkdir -p third_party/node/linux/node-linux-x64/bin || die + fi + 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 + + # remove_bundled_libraries.py walks the source tree and looks for paths containing the substring 'third_party' + # whitelist matches use the right-most matching path component, so we need to whitelist from that point down. + 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/cld_3 + third_party/closure_compiler + third_party/content_analysis_sdk + 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/dav1d + 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/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/farmhash + third_party/fast_float + third_party/fdlibm + third_party/ffmpeg + third_party/fft2d + third_party/flatbuffers + third_party/fp16 + third_party/freetype + third_party/fusejs + third_party/fxdiv + 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/highway + third_party/hunspell + third_party/ink_stroke_modeler/src/ink_stroke_modeler + third_party/ink_stroke_modeler/src/ink_stroke_modeler/internal + third_party/ink/src/ink/brush + third_party/ink/src/ink/color + third_party/ink/src/ink/geometry + third_party/ink/src/ink/rendering + third_party/ink/src/ink/rendering/skia/common_internal + third_party/ink/src/ink/rendering/skia/native + third_party/ink/src/ink/rendering/skia/native/internal + third_party/ink/src/ink/strokes + third_party/ink/src/ink/types + third_party/inspector_protocol + third_party/ipcz + third_party/jinja2 + third_party/jsoncpp + third_party/khronos + third_party/lens_server_proto + third_party/leveldatabase + third_party/libaddressinput + 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 + third_party/libc++ + third_party/libdrm + third_party/libgav1 + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libtess2/libtess2 + third_party/libtess2/src/Include + third_party/libtess2/src/Source + third_party/liburlpattern + 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/libzip + third_party/lit + third_party/llvm-libc + third_party/llvm-libc/src/shared/ + 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/openscreen + third_party/openscreen/src/third_party/ + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/opus + 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_membership + third_party/private-join-and-compute + 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/re2 + third_party/rnnoise + third_party/rust + third_party/ruy + 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-headers + third_party/spirv-tools + 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/SPIRV-Headers/include/spirv + third_party/swiftshader/third_party/SPIRV-Tools + third_party/swiftshader/third_party/subzero + third_party/tensorflow_models + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite/src/third_party/xla/third_party/tsl + third_party/tflite/src/third_party/xla/xla/tsl/framework + third_party/tflite/src/third_party/xla/xla/tsl/lib/random + third_party/tflite/src/third_party/xla/xla/tsl/protobuf + third_party/tflite/src/third_party/xla/xla/tsl/util + 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/zlib/google + third_party/zxcvbn-cpp + url/third_party/mozilla + v8/third_party/siphash + v8/third_party/utf8-decoder + v8/third_party/glibc + v8/third_party/inspector_protocol + v8/third_party/rapidhash-v8 + v8/third_party/v8 + v8/third_party/valgrind + + # gyp -> gn leftovers + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + + if use test; then + # tar tvf /var/cache/distfiles/${P}-testdata.tar.xz | grep '^d' | grep 'third_party' | awk '{print $NF}' + keeplibs+=( + third_party/breakpad/breakpad/src/processor + third_party/fuzztest + third_party/google_benchmark/src/include/benchmark + third_party/google_benchmark/src/src + third_party/perfetto/protos/third_party/pprof + third_party/test_fonts + third_party/test_fonts/fontconfig + ) + fi + + # USE=system-* + if ! use system-harfbuzz; then + keeplibs+=( third_party/harfbuzz-ng ) + fi + + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + + if ! use system-png; then + keeplibs+=( third_party/libpng ) + fi + + if ! use system-zstd; then + keeplibs+=( third_party/zstd ) + fi + + # Arch-specific + 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 + # Revert https://chromium.googlesource.com/chromium/src/+/b463d0f40b08b4e896e7f458d89ae58ce2a27165%5E%21/third_party/libvpx/generate_gni.sh + # and https://chromium.googlesource.com/chromium/src/+/71ebcbce867dd31da5f8b405a28fcb0de0657d91%5E%21/third_party/libvpx/generate_gni.sh + # since we're not in a git repo + sed -i -e "s|^update_readme||g; s|clang-format|${EPREFIX}/bin/true|g; /^git -C/d; /git cl/d; /cd \$BASE_DIR\/\$LIBVPX_SRC_DIR/ign format --in-place \$BASE_DIR\/BUILD.gn\ngn format --in-place \$BASE_DIR\/libvpx_srcs.gni" \ + 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 + + # Sanity check keeplibs, on major version bumps it is often necessary to update this list + # and this enables us to hit them all at once. + # There are some entries that need to be whitelisted (TODO: Why? The file is understandable, the rest seem odd) + whitelist_libs=( + net/third_party/quic + third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json + third_party/libjingle + third_party/mesa + third_party/skia/third_party/vulkan + third_party/vulkan + ) + local not_found_libs=() + for lib in "${keeplibs[@]}"; do + if [[ ! -d "${lib}" ]] && ! has "${lib}" "${whitelist_libs[@]}"; then + not_found_libs+=( "${lib}" ) + fi + done + + if [[ ${#not_found_libs[@]} -gt 0 ]]; then + eerror "The following \`keeplibs\` directories were not found in the source tree:" + for lib in "${not_found_libs[@]}"; do + eerror " ${lib}" + done + die "Please update the ebuild." + fi + + # Remove most bundled libraries. Some are still needed. + einfo "Unbundling third-party libraries ..." + 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_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + if use !bundled-toolchain; then + # We already forced the "correct" clang via pkg_setup + + if tc-is-cross-compiler; then + CC="${CC} -target ${CHOST} --sysroot ${ESYSROOT}" + CXX="${CXX} -target ${CHOST} --sysroot ${ESYSROOT}" + BUILD_AR=${AR} + BUILD_CC=${CC} + BUILD_CXX=${CXX} + BUILD_NM=${NM} + fi + + strip-unsupported-flags + + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + # https://bugs.gentoo.org/918897#c32 + append-ldflags -Wl,--undefined-version + myconf_gn+=" use_lld=true" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + 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 + + # bindgen settings + # From 127, to make bindgen work, we need to provide a location for libclang. + # We patch this in for gentoo - see chromium-*-bindgen-custom-toolchain.patch + # rust_bindgen_root = directory with `bin/bindgen` beneath it. + myconf_gn+=" rust_bindgen_root=\"${EPREFIX}/usr/\"" + + myconf_gn+=" bindgen_libclang_path=\"$(get_llvm_prefix)/$(get_libdir)\"" + # We don't need to set 'clang_base_bath' for anything in our build + # and it defaults to the google toolchain location. Instead provide a location + # to where system clang lives sot that bindgen can find system headers (e.g. stddef.h) + myconf_gn+=" clang_base_path=\"${EPREFIX}/usr/lib/clang/${LLVM_SLOT}/\"" + + myconf_gn+=" rust_sysroot_absolute=\"$(get_rust_prefix)\"" + myconf_gn+=" rustc_version=\"${RUST_SLOT}\"" + 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=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 + libjpeg + libwebp + libxml + libxslt + openh264 + zlib + ) + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-png; then + gn_system_libraries+=( libpng ) + fi + if use system-zstd; then + gn_system_libraries+=( zstd ) + fi + + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # TODO 131: The above call clobbers `enable_freetype = true` in the freetype gni file + # drop the last line, then append the freetype line and a new curly brace to end the block + local freetype_gni="build/config/freetype/freetype.gni" + sed -i -e '$d' ${freetype_gni} || die + echo " enable_freetype = true" >> ${freetype_gni} || die + echo "}" >> ${freetype_gni} || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=$(usex system-harfbuzz true 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 + + # Allows distributions to link pulseaudio directly (DT_NEEDED) instead of + # using dlopen. This helps with automated detection of ABI mismatches and + # prevents silent errors. + if use pulseaudio; then + myconf_gn+=" link_pulseaudio=true" + fi + + # Non-developer builds of Chromium (for example, non-Chrome browsers, or + # Chromium builds provided by Linux distros) should disable the testing config + myconf_gn+=" disable_fieldtrial_testing_config=true" + + # The sysroot is the oldest debian image that chromium supports, we don't need it + myconf_gn+=" use_sysroot=false" + + # Use in-tree libc++ (buildtools/third_party/libc++ and buildtools/third_party/libc++abi) + # instead of the system C++ library for C++ standard library support. + # default: true, but let's be explicit (forced since 120 ; USE removed 127). + myconf_gn+=" use_custom_libcxx=true" + + # 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" + + if use bindist ; then + # proprietary_codecs just forces Chromium to say that it can use h264/aac, + # the work is still done by ffmpeg. If this is set to no Chromium + # won't be able to load the codec even if the library can handle it + myconf_gn+=" proprietary_codecs=true" + myconf_gn+=" ffmpeg_branding=\"Chrome\"" + # build ffmpeg as an external component (libffmpeg.so) that we can remove / substitute + myconf_gn+=" is_component_ffmpeg=true" + else + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + fi + + # 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 . + filter-flags "-g*" + + # Prevent libvpx/xnnpack build failures. Bug 530248, 544702, 546984, 853646. + if [[ ${myarch} == amd64 ]]; 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 = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + 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 + + # We don't use the same clang version as upstream, and with -Werror + # we need to make sure that we don't get superfluous warnings. + 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 + + # 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 + + # Don't need nocompile checks and GN crashes with our config + myconf_gn+=" enable_nocompile_tests=false" + + # 131 began laying the groundwork for replacing freetype with + # "Rust-based Fontations set of libraries plus Skia path rendering" + # We now need to opt-in + myconf_gn+=" enable_freetype=true" + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + 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" + myconf_gn+=" enable_remoting=false" + else + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" use_qt5=false" + if use qt6; then + myconf_gn+=" use_qt6=true" + local cbuild_libdir=$(get_libdir) + 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} + cbuild_libdir=${cbuild_libdir/% } + fi + myconf_gn+=" moc_qt6_path=\"${EPREFIX}/usr/${cbuild_libdir}/qt6/libexec\"" + else + myconf_gn+=" use_qt6=false" + fi + 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 + + myconf_gn+=" use_thin_lto=${use_lto}" + myconf_gn+=" thin_lto_enable_optimizations=${use_lto}" + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official 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 + if use ppc64; then + myconf_gn+=" is_cfi=false" # requires llvm-runtimes/compiler-rt-sanitizers[cfi] + else + myconf_gn+=" is_cfi=${use_lto}" + fi + # 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 + myconf_gn+=" chrome_pgo_phase=0" + fi + + # skipping typecheck is only supported on amd64, bug #876157 + if ! use amd64; then + myconf_gn+=" devtools_skip_typecheck=false" + fi + + 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. + if use pax-kernel; then + 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 + fi + + # 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 chrome_sandbox $(use test && echo "base_unittests") + + pax-mark m out/Release/chrome + + # This codepath does minimal patching, so we're at the mercy of upstream + # CFLAGS. This is fine - we're not intending to force this on users + # and we do a lot of flag 'management' anyway. + if use bundled-toolchain; then + QA_FLAGS_IGNORED=" + usr/lib64/chromium-browser/chrome + usr/lib64/chromium-browser/chrome-sandbox + usr/lib64/chromium-browser/chromedriver + usr/lib64/chromium-browser/chrome_crashpad_handler + usr/lib64/chromium-browser/libEGL.so + usr/lib64/chromium-browser/libGLESv2.so + usr/lib64/chromium-browser/libVkICD_mock_icd.so + usr/lib64/chromium-browser/libVkLayer_khronos_validation.so + usr/lib64/chromium-browser/libqt6_shim.so + usr/lib64/chromium-browser/libvk_swiftshader.so + usr/lib64/chromium-browser/libvulkan.so.1 + " + fi +} + +# 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_test() { + # Initial list of tests to skip pulled from Alpine. Thanks Lauren! + # https://issues.chromium.org/issues/40939315 + local skip_tests=( + 'MessagePumpLibeventTest.NestedNotification*' + ClampTest.Death + OptionalTest.DereferencingNoValueCrashes + PlatformThreadTest.SetCurrentThreadTypeTest + RawPtrTest.TrivialRelocability + SafeNumerics.IntMaxOperations + StackTraceTest.TraceStackFramePointersFromBuffer + StringPieceTest.InvalidLengthDeath + StringPieceTest.OutOfBoundsDeath + ThreadPoolEnvironmentConfig.CanUseBackgroundPriorityForWorker + ValuesUtilTest.FilePath + # Gentoo-specific + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/0 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/1 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/2 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/3 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/0 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/1 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/2 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/3 + CharacterEncodingTest.GetCanonicalEncodingNameByAliasName + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGFPE + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGILL + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGSEGV + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGSEGVNonCanonicalAddress + FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe + FileTest.GetInfoForCreationTime + ICUStringConversionsTest.ConvertToUtf8AndNormalize + NumberFormattingTest.FormatPercent + PathServiceTest.CheckedGetFailure + PlatformThreadTest.CanChangeThreadType + RustLogIntegrationTest.CheckAllSeverity + StackCanary.ChangingStackCanaryCrashesOnReturn + StackTraceDeathTest.StackDumpSignalHandlerIsMallocFree + SysStrings.SysNativeMBAndWide + SysStrings.SysNativeMBToWide + SysStrings.SysWideToNativeMB + TestLauncherTools.TruncateSnippetFocusedMatchesFatalMessagesTest + ToolsSanityTest.BadVirtualCallNull + ToolsSanityTest.BadVirtualCallWrongType + CancelableEventTest.BothCancelFailureAndSucceedOccurUnderContention #new m133: TODO investigate + ) + local test_filter="-$(IFS=:; printf '%s' "${skip_tests[*]}")" + # test-launcher-bot-mode enables parallelism and plain output + ./out/Release/base_unittests --test-launcher-bot-mode \ + --test-launcher-jobs="$(makeopts_jobs)" \ + --gtest_filter="${test_filter}" || die "Tests failed!" +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + + 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 + + if use bindist; then + # We built libffmpeg as a component library, but we can't distribute it + # with proprietary codec support. Remove it and make a symlink to the requested + # system library. + rm -f out/Release/libffmpeg.so \ + || die "Failed to remove bundled libffmpeg.so (with proprietary codecs)" + # symlink the libffmpeg.so from either ffmpeg-chromium or ffmpeg[chromium]. + einfo "Creating symlink to libffmpeg.so from $(usex ffmpeg-chromium ffmpeg-chromium ffmpeg[chromium])..." + dosym ../chromium/libffmpeg.so$(usex ffmpeg-chromium .${PV%%\.*} "") \ + /usr/$(get_libdir)/chromium-browser/libffmpeg.so + fi + + ( + 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 + + if systemd_is_booted && ! [[ -f "/etc/machine-id" ]]; then + ewarn "The lack of an '/etc/machine-id' file on this system booted with systemd" + ewarn "indicates that the Gentoo handbook was not followed to completion." + ewarn "" + ewarn "Chromium is known to behave unpredictably with this system configuration;" + ewarn "please complete the configuration of this system before logging any bugs." + fi +} diff --git a/www-client/chromium/chromium-136.0.7103.17.ebuild b/www-client/chromium/chromium-136.0.7103.17.ebuild new file mode 100644 index 000000000000..6975ef9486fb --- /dev/null +++ b/www-client/chromium/chromium-136.0.7103.17.ebuild @@ -0,0 +1,1550 @@ +# Copyright 2009-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# PACKAGING NOTES + +# Upstream roll their bundled Clang every two weeks, and the bundled Rust +# is rolled regularly and depends on that. While we do our best to build +# with system Clang, we may eventually hit the point where we need to use +# the bundled Clang due to the use of prerelease features. + +# USE=bundled-toolchain is intended for users who want to use the same toolchain +# as the upstream releases. It's also a good fallback in case we fall behind +# and need to get a release out quickly (less likely with `dev` in-tree). + +# Since m133 we are using CI-generated tarballs from +# https://github.com/chromium-linux-tarballs/chromium-tarballs/ (uploaded to S3 +# and made available via https://chromium-tarballs.distfiles.gentoo.org/). + +# We do this because upstream tarballs weigh in at about 3.5x the size of our +# new "Distro tarballs" and include binaries (etc) that are not useful for +# downstream consumers (like distributions). + +GN_MIN_VER=0.2217 +# chromium-tools/get-chromium-toolchain-strings.py +TEST_FONT=f26f29c9d3bfae588207bbc9762de8d142e58935c62a86f67332819b15203b35 +BUNDLED_CLANG_VER=llvmorg-21-init-5118-g52cd27e6-4 +BUNDLED_RUST_VER=f7b43542838f0a4a6cfdb17fbeadf45002042a77-1 +RUST_SHORT_HASH=${BUNDLED_RUST_VER:0:10}-${BUNDLED_RUST_VER##*-} +NODE_VER=22.11.0 + +VIRTUALX_REQUIRED="pgo" + +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" + +LLVM_COMPAT=( 19 20 ) +PYTHON_COMPAT=( python3_{11..13} ) +PYTHON_REQ_USE="xml(+)" +RUST_MIN_VER=1.78.0 +RUST_NEEDS_LLVM="yes please" +RUST_OPTIONAL="yes" # Not actually optional, but we don't need system Rust (or LLVM) with USE=bundled-toolchain + +inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 multiprocessing ninja-utils pax-utils +inherit python-any-r1 readme.gentoo-r1 rust systemd toolchain-funcs virtualx xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://www.chromium.org/" +PPC64_HASH="a85b64f07b489b8c6fdb13ecf79c16c56c560fc6" +PATCH_V="${PV%%\.*}-2" +SRC_URI="https://chromium-tarballs.distfiles.gentoo.org/${P}-linux.tar.xz + !bundled-toolchain? ( + https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${PATCH_V}/chromium-patches-${PATCH_V}.tar.bz2 + ) + bundled-toolchain? ( + https://gsdview.appspot.com/chromium-browser-clang/Linux_x64/clang-${BUNDLED_CLANG_VER}.tar.xz + -> chromium-clang-${BUNDLED_CLANG_VER}.tar.xz + https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-${BUNDLED_RUST_VER}-${BUNDLED_CLANG_VER%-*}.tar.xz + -> chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz + ) + test? ( + https://chromium-tarballs.distfiles.gentoo.org/${P}-linux-testdata.tar.xz + https://chromium-fonts.storage.googleapis.com/${TEST_FONT} -> chromium-testfonts-${TEST_FONT:0:10}.tar.gz + ) + ppc64? ( + https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches/-/archive/${PPC64_HASH}/openpower-patches-${PPC64_HASH}.tar.bz2 -> chromium-openpower-${PPC64_HASH:0:10}.tar.bz2 + ) + pgo? ( https://github.com/elkablo/chromium-profiler/releases/download/v0.2/chromium-profiler-0.2.tar )" + +LICENSE="BSD" +SLOT="0/dev" +# Dev exists mostly to give devs some breathing room for beta/stable releases; +# it shouldn't be keyworded but adventurous users can select it. +if [[ ${SLOT} != "0/dev" ]]; then + KEYWORDS="~amd64 ~arm64" +fi + +IUSE_SYSTEM_LIBS="+system-harfbuzz +system-icu +system-png +system-zstd" +IUSE="+X ${IUSE_SYSTEM_LIBS} bindist bundled-toolchain cups debug ffmpeg-chromium gtk4 +hangouts headless kerberos +official pax-kernel pgo" +IUSE+=" +proprietary-codecs pulseaudio qt6 +screencast selinux test +vaapi +wayland +widevine cpu_flags_ppc_vsx3" +RESTRICT=" + !bindist? ( bindist ) + !test? ( test ) +" + +REQUIRED_USE=" + !headless? ( || ( X wayland ) ) + pgo? ( X !wayland ) + screencast? ( wayland ) + ffmpeg-chromium? ( bindist proprietary-codecs ) +" + +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-73.0:= ) + >=dev-libs/libxml2-2.12.4:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + 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(-)] ) + system-zstd? ( >=app-arch/zstd-1.5.5:= ) + >=media-libs/libwebp-0.4.0:= + media-libs/mesa:=[gbm(+)] + >=media-libs/openh264-1.6.0:= + sys-libs/zlib:= + !headless? ( + dev-libs/glib:2 + >=media-libs/alsa-lib-1.0.19:= + pulseaudio? ( media-libs/libpulse:= ) + sys-apps/pciutils:= + kerberos? ( virtual/krb5 ) + vaapi? ( >=media-libs/libva-2.7:=[X?,wayland?] ) + X? ( + x11-base/xorg-proto:= + x11-libs/libX11:= + x11-libs/libxcb:= + x11-libs/libXext:= + ) + x11-libs/libxkbcommon:= + wayland? ( + dev-libs/libffi:= + dev-libs/wayland:= + screencast? ( media-video/pipewire:= ) + ) + ) +" + +COMMON_DEPEND=" + ${COMMON_SNAPSHOT_DEPEND} + app-arch/bzip2:= + dev-libs/expat:= + net-misc/curl[ssl] + sys-apps/dbus:= + media-libs/flac:= + sys-libs/zlib:=[minizip] + !headless? ( + >=app-accessibility/at-spi2-core-2.46.0:2 + media-libs/mesa:=[X?,wayland?] + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + cups? ( >=net-print/cups-1.3.11:= ) + qt6? ( dev-qt/qtbase:6[gui,widgets] ) + X? ( ${COMMON_X_DEPEND} ) + ) +" +RDEPEND="${COMMON_DEPEND} + !headless? ( + || ( + x11-libs/gtk+:3[X?,wayland?] + gui-libs/gtk:4[X?,wayland?] + ) + qt6? ( dev-qt/qtbase:6[X?,wayland?] ) + ) + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + bindist? ( + !ffmpeg-chromium? ( >=media-video/ffmpeg-6.1-r1:0/58.60.60[chromium] ) + ffmpeg-chromium? ( media-video/ffmpeg-chromium:${PV%%\.*} ) + ) +" +DEPEND="${COMMON_DEPEND} + !headless? ( + gtk4? ( gui-libs/gtk:4[X?,wayland?] ) + !gtk4? ( x11-libs/gtk+:3[X?,wayland?] ) + ) +" + +BDEPEND=" + ${COMMON_SNAPSHOT_DEPEND} + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + >=app-arch/gzip-1.7 + !headless? ( + qt6? ( dev-qt/qtbase:6 ) + ) + !bundled-toolchain? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + llvm-core/lld:${LLVM_SLOT} + official? ( + !ppc64? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[cfi] ) + ) ') + ${RUST_DEPEND} + ) + pgo? ( + >=dev-python/selenium-3.141.0 + >=dev-util/web_page_replay_go-20220314 + ) + >=dev-util/bindgen-0.68.0 + >=dev-build/gn-${GN_MIN_VER} + app-alternatives/ninja + dev-lang/perl + >=dev-util/gperf-3.0.3 + dev-vcs/git + >=net-libs/nodejs-${NODE_VER}:0/${NODE_VER%%.*}[inspector] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig +" + +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}]" +} + +pre_build_checks() { + # Check build requirements: bugs #471810, #541816, #914220 + # We're going to start doing maths here on the size of an unpacked source tarball, + # this should make updates easier as chromium continues to balloon in size. + # xz -l /var/cache/distfiles/chromium-${PV}*.tar.xz + local base_disk=9 # Round up + use test && base_disk=$((base_disk + 5)) + local extra_disk=1 # Always include a little extra space + local memory=4 + tc-is-cross-compiler && extra_disk=$((extra_disk * 2)) + if tc-is-lto || use pgo; then + memory=$((memory * 2 + 1)) + tc-is-cross-compiler && extra_disk=$((extra_disk * 2)) # Double the requirements + use pgo && extra_disk=$((extra_disk + 4)) + fi + if is-flagq '-g?(gdb)?([1-9])'; then + if use custom-cflags; then + extra_disk=$((extra_disk + 5)) + fi + memory=$((memory * 2)) + fi + local CHECKREQS_MEMORY="${memory}G" + local CHECKREQS_DISK_BUILD="$((base_disk + extra_disk))G" + check-reqs_${EBUILD_PHASE_FUNC} +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]]; then + # The pre_build_checks are all about compilation resources, no need to run it for a binpkg + pre_build_checks + fi + + if use headless; then + local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt6" "vaapi" "wayland") + for myiuse in ${headless_unused_flags[@]}; do + use ${myiuse} && ewarn "Ignoring USE=${myiuse}, USE=headless is set." + done + fi + + if ! use bindist && use ffmpeg-chromium; then + ewarn "Ignoring USE=ffmpeg-chromium, USE=bindist is not set." + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + # The pre_build_checks are all about compilation resources, no need to run it for a binpkg + pre_build_checks + + # The linux:unbundle toolchain in GN grabs CC, CXX, CPP (etc) from the environment + # We'll set these to clang here then use llvm-utils functions to very explicitly set these + # to a sane value. + # This is effectively the 'force-clang' path if GCC support is re-added. + # TODO: check if the user has already selected a specific impl via make.conf and respect that. + use_lto="false" + if tc-is-lto; then + use_lto="true" + # We can rely on GN to do this for us; anecdotally without this builds + # take significantly longer with LTO enabled and it doesn't hurt anything. + filter-lto + fi + + if [ "$use_lto" = "false" ] && use official; then + einfo "USE=official selected and LTO not detected." + einfo "It is _highly_ recommended that LTO be enabled for performance reasons" + einfo "and to be consistent with the upstream \"official\" build optimisations." + fi + + if [ "$use_lto" = "false" ] && use test; then + die "Tests require CFI which requires LTO" + fi + + export use_lto + + # 936858 + if tc-ld-is-mold; then + eerror "Your toolchain is using the mold linker." + eerror "This is not supported by Chromium." + die "Please switch to a different linker." + fi + + if use !bundled-toolchain; then + llvm-r1_pkg_setup + rust_pkg_setup + fi + + # Forcing clang; respect llvm_slot_x to enable selection of impl from LLVM_COMPAT + AR=llvm-ar + CPP="${CHOST}-clang++-${LLVM_SLOT} -E" + NM=llvm-nm + CC="${CHOST}-clang-${LLVM_SLOT}" + CXX="${CHOST}-clang++-${LLVM_SLOT}" + + if tc-is-cross-compiler; then + use pgo && die "The pgo USE flag cannot be used when cross-compiling" + CPP="${CBUILD}-clang++-${LLVM_SLOT} -E" + fi + + # I hate doing this but upstream Rust have yet to come up with a better solution for + # us poor packagers. Required for Split LTO units, which are required for CFI. + export RUSTC_BOOTSTRAP=1 + + # Users should never hit this, it's purely a development convenience + if ver_test $(gn --version || die) -lt ${GN_MIN_VER}; then + die "dev-build/gn >= ${GN_MIN_VER} is required to build this Chromium" + fi + fi + + chromium_suid_sandbox_check_kernel_config +} + +src_unpack() { + unpack ${P}-linux.tar.xz + # These should only be required when we're not using the official toolchain + use !bundled-toolchain && unpack chromium-patches-${PATCH_V}.tar.bz2 + + use pgo && unpack chromium-profiler-0.2.tar + + if use test; then + # A new testdata tarball is available for each release; but testfonts tend to remain stable + # for the duration of a release. + # This unpacks directly into/over ${WORKDIR}/${P} so we can just use `unpack`. + unpack ${P}-linux-testdata.tar.xz + # This just contains a bunch of font files that need to be unpacked (or moved) to the correct location. + local testfonts_dir="${WORKDIR}/${P}/third_party/test_fonts" + local testfonts_tar="${DISTDIR}/chromium-testfonts-${TEST_FONT:0:10}.tar.gz" + tar xf "${testfonts_tar}" -C "${testfonts_dir}" || die "Failed to unpack testfonts" + fi + + # We need to manually unpack this since M126 else we'd unpack one toolchain over the other. + # Since we're doing that anyway let's unpack to sensible locations to make symlink creation easier. + if use bundled-toolchain; then + einfo "Unpacking bundled Clang ..." + mkdir -p "${WORKDIR}"/clang || die "Failed to create clang directory" + tar xf "${DISTDIR}/chromium-clang-${BUNDLED_CLANG_VER}.tar.xz" -C "${WORKDIR}/clang" || die "Failed to unpack Clang" + einfo "Unpacking bundled Rust ..." + local rust_dir="${WORKDIR}/rust-toolchain" + mkdir -p "${rust_dir}" || die "Failed to create rust toolchain directory" + tar xf "${DISTDIR}/chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz" -C "${rust_dir}" || + die "Failed to unpack Rust" + fi + + if use ppc64; then + unpack chromium-openpower-${PPC64_HASH:0:10}.tar.bz2 + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-cross-compile.patch" + "${FILESDIR}/chromium-109-system-zlib.patch" + "${FILESDIR}/chromium-111-InkDropHost-crash.patch" + "${FILESDIR}/chromium-131-unbundle-icu-target.patch" + "${FILESDIR}/chromium-134-bindgen-custom-toolchain.patch" + "${FILESDIR}/chromium-135-oauth2-client-switches.patch" + "${FILESDIR}/chromium-135-map_droppable-glibc.patch" + "${FILESDIR}/chromium-136-drop-nodejs-ver-check.patch" + ) + + if use bundled-toolchain; then + # We need to symlink the toolchain into the expected location + einfo "Symlinking Clang toolchain to expected location ..." + mkdir -p third_party/llvm-build/ || die "Failed to create llvm-build directory" + # the 'Chromium Linux Tarballs' seem to already have 'Release+Asserts/{lib,bin}'; not sure if this is an + # upstream change - we're using the same scripts to build, theoretically. We'll still attempt to create + # llvm-build, but we'll rm Release+Asserts and symlink directly. + if [[ -d third_party/llvm-build/Release+Asserts ]]; then + rm -r third_party/llvm-build/Release+Asserts || die "Failed to remove third_party/llvm-build/Release+Asserts" + fi + ln -s "${WORKDIR}"/clang third_party/llvm-build/Release+Asserts || die "Failed to bundle Clang" + einfo "Symlinking Rust toolchain to expected location ..." + # As above, so below + if [[ -d third_party/rust-toolchain ]]; then + rm -r third_party/rust-toolchain || die "Failed to remove third_party/rust-toolchain" + fi + ln -s "${WORKDIR}"/rust-toolchain third_party/rust-toolchain || die "Failed to bundle rust" + cp "${WORKDIR}"/rust-toolchain/VERSION \ + "${WORKDIR}"/rust-toolchain/INSTALLED_VERSION || die "Failed to set rust version" + else + # We don't need our toolchain patches if we're using the official toolchain + shopt -s globstar nullglob + # 130: moved the PPC64 patches into the chromium-patches repo + local patch + for patch in "${WORKDIR}/chromium-patches-${PATCH_V}"/**/*.patch; do + if [[ ${patch} == *"ppc64le"* ]]; then + use ppc64 && PATCHES+=( "${patch}" ) + else + PATCHES+=( "${patch}" ) + fi + done + + shopt -u globstar nullglob + + # We can't use the bundled compiler builtins with the system toolchain + # `grep` is a development convenience to ensure we fail early when google changes something. + local builtins_match="if (is_clang && !is_nacl && !is_cronet_build) {" + grep -q "${builtins_match}" build/config/compiler/BUILD.gn || die "Failed to disable bundled compiler builtins" + sed -i -e "/${builtins_match}/,+2d" build/config/compiler/BUILD.gn + + # Strictly speaking this doesn't need to be gated (no bundled toolchain for ppc64); it keeps the logic together + if use ppc64; then + local patchset_dir="${WORKDIR}/openpower-patches-${PPC64_HASH}/patches" + # patch causes build errors on 4K page systems (https://bugs.gentoo.org/show_bug.cgi?id=940304) + local page_size_patch="ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch" + local isa_3_patch="ppc64le/core/baseline-isa-3-0.patch" + # Apply the OpenPOWER patches (check for page size and isa 3.0) + openpower_patches=( $(grep -E "^ppc64le|^upstream" "${patchset_dir}/series" | grep -v "${page_size_patch}" | + grep -v "${isa_3_patch}" || die) ) + for patch in "${openpower_patches[@]}"; do + PATCHES+=( "${patchset_dir}/${patch}" ) + done + if [[ $(getconf PAGESIZE) == 65536 ]]; then + PATCHES+=( "${patchset_dir}/${page_size_patch}" ) + fi + # We use vsx3 as a proxy for 'want isa3.0' (POWER9) + if use cpu_flags_ppc_vsx3 ; then + PATCHES+=( "${patchset_dir}/${isa_3_patch}" ) + fi + fi + + # Oxidised hacks, let's keep 'em all in one place + # This is a nightly option that does not exist in older releases + # https://github.com/rust-lang/rust/commit/389a399a501a626ebf891ae0bb076c25e325ae64 + if ver_test ${RUST_SLOT} -lt "1.83.0"; then + sed '/rustflags = \[ "-Zdefault-visibility=hidden" \]/d' -i build/config/gcc/BUILD.gn || + die "Failed to remove default visibility nightly option" + fi + + # Upstream Rust replaced adler with adler2, for older versions of Rust we still need + # to tell GN that we have the older lib when it tries to copy the Rust sysroot + # into the bulid directory. + if ver_test ${RUST_SLOT} -lt "1.86.0"; then + sed -i 's/adler2/adler/' build/rust/std/BUILD.gn || + die "Failed to tell GN that we have adler and not adler2" + fi + fi + + default + + if [[ ${LLVM_SLOT} == "19" ]]; then + # Upstream now hard depend on a feature that was added in LLVM 20.1, but we don't want to stabilise that yet. + # Do the temp file shuffle in case someone is using something other than `gawk` + { + awk '/config\("clang_warning_suppression"\) \{/ { print $0 " }"; sub(/clang/, "xclang"); print; next } + { print }' build/config/compiler/BUILD.gn > "${T}/build.gn" && \ + mv "${T}/build.gn" build/config/compiler/BUILD.gn + } || die "Unable to disable warning suppression" + fi + + # Not included in -lite tarballs, but we should check for it anyway. + if [[ -f third_party/node/linux/node-linux-x64/bin/node ]]; then + rm third_party/node/linux/node-linux-x64/bin/node || die + else + mkdir -p third_party/node/linux/node-linux-x64/bin || die + fi + 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 + + # remove_bundled_libraries.py walks the source tree and looks for paths containing the substring 'third_party' + # whitelist matches use the right-most matching path component, so we need to whitelist from that point down. + 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/cld_3 + third_party/closure_compiler + third_party/content_analysis_sdk + 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/dav1d + 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/farmhash + third_party/fast_float + third_party/fdlibm + third_party/ffmpeg + third_party/fft2d + third_party/flatbuffers + third_party/fp16 + third_party/freetype + third_party/fusejs + third_party/fxdiv + 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/highway + third_party/hunspell + third_party/ink_stroke_modeler/src/ink_stroke_modeler + third_party/ink_stroke_modeler/src/ink_stroke_modeler/internal + third_party/ink/src/ink/brush + third_party/ink/src/ink/color + third_party/ink/src/ink/geometry + third_party/ink/src/ink/rendering + third_party/ink/src/ink/rendering/skia/common_internal + third_party/ink/src/ink/rendering/skia/native + third_party/ink/src/ink/rendering/skia/native/internal + third_party/ink/src/ink/strokes + third_party/ink/src/ink/types + third_party/inspector_protocol + third_party/ipcz + third_party/jinja2 + third_party/jsoncpp + third_party/khronos + third_party/lens_server_proto + third_party/leveldatabase + third_party/libaddressinput + 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 + third_party/libc++ + third_party/libdrm + third_party/libgav1 + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libtess2/libtess2 + third_party/libtess2/src/Include + third_party/libtess2/src/Source + third_party/liburlpattern + 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/libzip + third_party/lit + third_party/llvm-libc + third_party/llvm-libc/src/shared/ + 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/openscreen + third_party/openscreen/src/third_party/ + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/opus + 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_membership + third_party/private-join-and-compute + 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/re2 + third_party/rnnoise + third_party/rust + third_party/ruy + 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-headers + third_party/spirv-tools + 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/SPIRV-Headers/include/spirv + third_party/swiftshader/third_party/SPIRV-Tools + third_party/swiftshader/third_party/subzero + third_party/tensorflow_models + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite/src/third_party/xla/third_party/tsl + third_party/tflite/src/third_party/xla/xla/tsl/framework + third_party/tflite/src/third_party/xla/xla/tsl/lib/random + third_party/tflite/src/third_party/xla/xla/tsl/protobuf + third_party/tflite/src/third_party/xla/xla/tsl/util + 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/zlib/google + third_party/zxcvbn-cpp + url/third_party/mozilla + v8/third_party/siphash + v8/third_party/utf8-decoder + v8/third_party/glibc + v8/third_party/inspector_protocol + v8/third_party/rapidhash-v8 + v8/third_party/v8 + v8/third_party/valgrind + + # gyp -> gn leftovers + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + + if use test; then + # tar tvf /var/cache/distfiles/${P}-testdata.tar.xz | grep '^d' | grep 'third_party' | awk '{print $NF}' + keeplibs+=( + third_party/breakpad/breakpad/src/processor + third_party/fuzztest + third_party/google_benchmark/src/include/benchmark + third_party/google_benchmark/src/src + third_party/perfetto/protos/third_party/pprof + third_party/test_fonts + third_party/test_fonts/fontconfig + ) + fi + + # USE=system-* + if ! use system-harfbuzz; then + keeplibs+=( third_party/harfbuzz-ng ) + fi + + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + + if ! use system-png; then + keeplibs+=( third_party/libpng ) + fi + + if ! use system-zstd; then + keeplibs+=( third_party/zstd ) + fi + + # Arch-specific + 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 + # Revert https://chromium.googlesource.com/chromium/src/+/b463d0f40b08b4e896e7f458d89ae58ce2a27165%5E%21/third_party/libvpx/generate_gni.sh + # and https://chromium.googlesource.com/chromium/src/+/71ebcbce867dd31da5f8b405a28fcb0de0657d91%5E%21/third_party/libvpx/generate_gni.sh + # since we're not in a git repo + sed -i -e "s|^update_readme||g; s|clang-format|${EPREFIX}/bin/true|g; /^git -C/d; /git cl/d; /cd \$BASE_DIR\/\$LIBVPX_SRC_DIR/ign format --in-place \$BASE_DIR\/BUILD.gn\ngn format --in-place \$BASE_DIR\/libvpx_srcs.gni" \ + 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 + + # Sanity check keeplibs, on major version bumps it is often necessary to update this list + # and this enables us to hit them all at once. + # There are some entries that need to be whitelisted (TODO: Why? The file is understandable, the rest seem odd) + whitelist_libs=( + net/third_party/quic + third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json + third_party/libjingle + third_party/mesa + third_party/skia/third_party/vulkan + third_party/vulkan + ) + local not_found_libs=() + for lib in "${keeplibs[@]}"; do + if [[ ! -d "${lib}" ]] && ! has "${lib}" "${whitelist_libs[@]}"; then + not_found_libs+=( "${lib}" ) + fi + done + + if [[ ${#not_found_libs[@]} -gt 0 ]]; then + eerror "The following \`keeplibs\` directories were not found in the source tree:" + for lib in "${not_found_libs[@]}"; do + eerror " ${lib}" + done + die "Please update the ebuild." + fi + + # Remove most bundled libraries. Some are still needed. + einfo "Unbundling third-party libraries ..." + 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_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + if use !bundled-toolchain; then + # We already forced the "correct" clang via pkg_setup + + if tc-is-cross-compiler; then + CC="${CC} -target ${CHOST} --sysroot ${ESYSROOT}" + CXX="${CXX} -target ${CHOST} --sysroot ${ESYSROOT}" + BUILD_AR=${AR} + BUILD_CC=${CC} + BUILD_CXX=${CXX} + BUILD_NM=${NM} + fi + + strip-unsupported-flags + + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + # https://bugs.gentoo.org/918897#c32 + append-ldflags -Wl,--undefined-version + myconf_gn+=" use_lld=true" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + 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 + + # bindgen settings + # From 127, to make bindgen work, we need to provide a location for libclang. + # We patch this in for gentoo - see chromium-*-bindgen-custom-toolchain.patch + # rust_bindgen_root = directory with `bin/bindgen` beneath it. + myconf_gn+=" rust_bindgen_root=\"${EPREFIX}/usr/\"" + + myconf_gn+=" bindgen_libclang_path=\"$(get_llvm_prefix)/$(get_libdir)\"" + # We don't need to set 'clang_base_bath' for anything in our build + # and it defaults to the google toolchain location. Instead provide a location + # to where system clang lives sot that bindgen can find system headers (e.g. stddef.h) + myconf_gn+=" clang_base_path=\"${EPREFIX}/usr/lib/clang/${LLVM_SLOT}/\"" + + myconf_gn+=" rust_sysroot_absolute=\"$(get_rust_prefix)\"" + myconf_gn+=" rustc_version=\"${RUST_SLOT}\"" + 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=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 + libjpeg + libwebp + libxml + libxslt + openh264 + zlib + ) + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-png; then + gn_system_libraries+=( libpng ) + fi + if use system-zstd; then + gn_system_libraries+=( zstd ) + fi + + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # TODO 131: The above call clobbers `enable_freetype = true` in the freetype gni file + # drop the last line, then append the freetype line and a new curly brace to end the block + local freetype_gni="build/config/freetype/freetype.gni" + sed -i -e '$d' ${freetype_gni} || die + echo " enable_freetype = true" >> ${freetype_gni} || die + echo "}" >> ${freetype_gni} || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=$(usex system-harfbuzz true 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 + + # Allows distributions to link pulseaudio directly (DT_NEEDED) instead of + # using dlopen. This helps with automated detection of ABI mismatches and + # prevents silent errors. + if use pulseaudio; then + myconf_gn+=" link_pulseaudio=true" + fi + + # Non-developer builds of Chromium (for example, non-Chrome browsers, or + # Chromium builds provided by Linux distros) should disable the testing config + myconf_gn+=" disable_fieldtrial_testing_config=true" + + # The sysroot is the oldest debian image that chromium supports, we don't need it + myconf_gn+=" use_sysroot=false" + + # Use in-tree libc++ (buildtools/third_party/libc++ and buildtools/third_party/libc++abi) + # instead of the system C++ library for C++ standard library support. + # default: true, but let's be explicit (forced since 120 ; USE removed 127). + myconf_gn+=" use_custom_libcxx=true" + + # 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" + + if use bindist ; then + # proprietary_codecs just forces Chromium to say that it can use h264/aac, + # the work is still done by ffmpeg. If this is set to no Chromium + # won't be able to load the codec even if the library can handle it + myconf_gn+=" proprietary_codecs=true" + myconf_gn+=" ffmpeg_branding=\"Chrome\"" + # build ffmpeg as an external component (libffmpeg.so) that we can remove / substitute + myconf_gn+=" is_component_ffmpeg=true" + else + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + fi + + # 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 . + filter-flags "-g*" + + # Prevent libvpx/xnnpack build failures. Bug 530248, 544702, 546984, 853646. + if [[ ${myarch} == amd64 ]]; 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 = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + 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 + + # We don't use the same clang version as upstream, and with -Werror + # we need to make sure that we don't get superfluous warnings. + 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 + + # 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 + + # Don't need nocompile checks and GN crashes with our config + myconf_gn+=" enable_nocompile_tests=false" + + # 131 began laying the groundwork for replacing freetype with + # "Rust-based Fontations set of libraries plus Skia path rendering" + # We now need to opt-in + myconf_gn+=" enable_freetype=true" + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + 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" + myconf_gn+=" enable_remoting=false" + else + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" use_qt5=false" + if use qt6; then + myconf_gn+=" use_qt6=true" + local cbuild_libdir=$(get_libdir) + 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} + cbuild_libdir=${cbuild_libdir/% } + fi + myconf_gn+=" moc_qt6_path=\"${EPREFIX}/usr/${cbuild_libdir}/qt6/libexec\"" + else + myconf_gn+=" use_qt6=false" + fi + 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 + + myconf_gn+=" use_thin_lto=${use_lto}" + myconf_gn+=" thin_lto_enable_optimizations=${use_lto}" + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official 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 + if use ppc64; then + myconf_gn+=" is_cfi=false" # requires llvm-runtimes/compiler-rt-sanitizers[cfi] + else + myconf_gn+=" is_cfi=${use_lto}" + fi + # 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 + myconf_gn+=" chrome_pgo_phase=0" + fi + + # skipping typecheck is only supported on amd64, bug #876157 + if ! use amd64; then + myconf_gn+=" devtools_skip_typecheck=false" + fi + + 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. + if use pax-kernel; then + 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 + fi + + # 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 chrome_sandbox $(use test && echo "base_unittests") + + pax-mark m out/Release/chrome + + # This codepath does minimal patching, so we're at the mercy of upstream + # CFLAGS. This is fine - we're not intending to force this on users + # and we do a lot of flag 'management' anyway. + if use bundled-toolchain; then + QA_FLAGS_IGNORED=" + usr/lib64/chromium-browser/chrome + usr/lib64/chromium-browser/chrome-sandbox + usr/lib64/chromium-browser/chromedriver + usr/lib64/chromium-browser/chrome_crashpad_handler + usr/lib64/chromium-browser/libEGL.so + usr/lib64/chromium-browser/libGLESv2.so + usr/lib64/chromium-browser/libVkICD_mock_icd.so + usr/lib64/chromium-browser/libVkLayer_khronos_validation.so + usr/lib64/chromium-browser/libqt6_shim.so + usr/lib64/chromium-browser/libvk_swiftshader.so + usr/lib64/chromium-browser/libvulkan.so.1 + " + fi +} + +# 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_test() { + # Initial list of tests to skip pulled from Alpine. Thanks Lauren! + # https://issues.chromium.org/issues/40939315 + local skip_tests=( + 'MessagePumpLibeventTest.NestedNotification*' + ClampTest.Death + OptionalTest.DereferencingNoValueCrashes + PlatformThreadTest.SetCurrentThreadTypeTest + RawPtrTest.TrivialRelocability + SafeNumerics.IntMaxOperations + StackTraceTest.TraceStackFramePointersFromBuffer + StringPieceTest.InvalidLengthDeath + StringPieceTest.OutOfBoundsDeath + ThreadPoolEnvironmentConfig.CanUseBackgroundPriorityForWorker + ValuesUtilTest.FilePath + # Gentoo-specific + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/0 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/1 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/2 + AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/3 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/0 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/1 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/2 + AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/3 + CharacterEncodingTest.GetCanonicalEncodingNameByAliasName + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGFPE + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGILL + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGSEGV + CheckExitCodeAfterSignalHandlerDeathTest.CheckSIGSEGVNonCanonicalAddress + FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe + FileTest.GetInfoForCreationTime + ICUStringConversionsTest.ConvertToUtf8AndNormalize + NumberFormattingTest.FormatPercent + PathServiceTest.CheckedGetFailure + PlatformThreadTest.CanChangeThreadType + RustLogIntegrationTest.CheckAllSeverity + StackCanary.ChangingStackCanaryCrashesOnReturn + StackTraceDeathTest.StackDumpSignalHandlerIsMallocFree + SysStrings.SysNativeMBAndWide + SysStrings.SysNativeMBToWide + SysStrings.SysWideToNativeMB + TestLauncherTools.TruncateSnippetFocusedMatchesFatalMessagesTest + ToolsSanityTest.BadVirtualCallNull + ToolsSanityTest.BadVirtualCallWrongType + CancelableEventTest.BothCancelFailureAndSucceedOccurUnderContention #new m133: TODO investigate + ) + local test_filter="-$(IFS=:; printf '%s' "${skip_tests[*]}")" + # test-launcher-bot-mode enables parallelism and plain output + ./out/Release/base_unittests --test-launcher-bot-mode \ + --test-launcher-jobs="$(makeopts_jobs)" \ + --gtest_filter="${test_filter}" || die "Tests failed!" +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + + 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 + + if use bindist; then + # We built libffmpeg as a component library, but we can't distribute it + # with proprietary codec support. Remove it and make a symlink to the requested + # system library. + rm -f out/Release/libffmpeg.so \ + || die "Failed to remove bundled libffmpeg.so (with proprietary codecs)" + # symlink the libffmpeg.so from either ffmpeg-chromium or ffmpeg[chromium]. + einfo "Creating symlink to libffmpeg.so from $(usex ffmpeg-chromium ffmpeg-chromium ffmpeg[chromium])..." + dosym ../chromium/libffmpeg.so$(usex ffmpeg-chromium .${PV%%\.*} "") \ + /usr/$(get_libdir)/chromium-browser/libffmpeg.so + fi + + ( + 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 + + if systemd_is_booted && ! [[ -f "/etc/machine-id" ]]; then + ewarn "The lack of an '/etc/machine-id' file on this system booted with systemd" + ewarn "indicates that the Gentoo handbook was not followed to completion." + ewarn "" + ewarn "Chromium is known to behave unpredictably with this system configuration;" + ewarn "please complete the configuration of this system before logging any bugs." + fi +} diff --git a/www-client/chromium/files/chromium-135-webrtc-pipewire.patch b/www-client/chromium/files/chromium-135-webrtc-pipewire.patch new file mode 100644 index 000000000000..c100643b69f0 --- /dev/null +++ b/www-client/chromium/files/chromium-135-webrtc-pipewire.patch @@ -0,0 +1,29 @@ +https://webrtc.googlesource.com/src/+/0a9787897f3d36055130b0532967d31c31e8408f + +Pipewire 1.4 changed some functions from taking void* +to taking the actual type they expect, which makes +some code that built with 1.2 no longer build with 1.4. + +For older versions, this is effectively a no-op. + +--- a/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc ++++ b/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc + +@@ -87,7 +87,7 @@ + .param = OnNodeParam, + }; + +- pw_node_add_listener(proxy_, &node_listener_, &node_events, this); ++ pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this); + } + + // static +@@ -119,7 +119,7 @@ + uint32_t id = info->params[i].id; + if (id == SPA_PARAM_EnumFormat && + info->params[i].flags & SPA_PARAM_INFO_READ) { +- pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr); ++ pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); + break; + } + } diff --git a/www-client/falkon/Manifest b/www-client/falkon/Manifest index b0ec04d4cbad..a8e1aac96496 100644 --- a/www-client/falkon/Manifest +++ b/www-client/falkon/Manifest @@ -1,4 +1,3 @@ -AUX falkon-24.08.3-fix-printing.patch 3375 BLAKE2B 220d83cbba1d18be9c2eeeae813806d4c9f025de62000af9b9257bbbc0ffd235a0fa29d1a4aa9ff830b463c1ea9653c620f2c448658eb2ae2147bc2fc0e229e2 SHA512 bcfcace0f5887dc1b2ffc67721aaaa7561d8ebde56ecd263a0b94797821d0c4aec8bb74a4fe02af49214cd05edc2661b115923819cd89ca3d078213f2059c9ae DIST falkon-24.12.3.tar.xz 2654604 BLAKE2B 6e7f3f84a2a8218f837ae68c9f598354b1a0a527b01131231a300c0d8be62b5ac2dcac604d9b02441a169224cd1e0968d4d2934458bdbd576330ca73793936d3 SHA512 565dd3c0f9338745547cbe334e9af10157e34ddb0426a55ee95e43c56bfe08b81ea01bbd09da42a4fec4f8da48c15644b9753377ae20880575904dda4f7fa240 EBUILD falkon-24.12.3.ebuild 2070 BLAKE2B a41a01756ad013499327078f8b26f44cdbd843486ccd4bd2e075d9de39c87e2f7f1041b69f47b20c91c30d69ebd2423dfda6b1e846f8d40b46f611ef8f6c9718 SHA512 764801788b7cdbd43a47a51873b947afff27bb1bd30571e378910ce8a11958cb88052523dfc24201522b2385315998adff54cc46f00929e5c89a59c68d0a218d MISC metadata.xml 318 BLAKE2B 922a5e32e706b2976c5f359a14194d268d3f499398576c80ce5fad8c0fcea0fbf048de4480a80a6a1889c88b8b6c14147654a3ab4d5ffbcc258c2290da63f6d1 SHA512 614cb8dda7ad2088e5d6ef39b449bb4be0ac72cd0231c320188d76d1816dce6490c5114bb4798112c4b11d99d30a9e82ff8fcf08ffa8c049589682a5e38208f6 diff --git a/www-client/falkon/files/falkon-24.08.3-fix-printing.patch b/www-client/falkon/files/falkon-24.08.3-fix-printing.patch deleted file mode 100644 index 8e5aecd366d8..000000000000 --- a/www-client/falkon/files/falkon-24.08.3-fix-printing.patch +++ /dev/null @@ -1,100 +0,0 @@ -From cbf47b0625c9b67b3608e24600273693bd59462a Mon Sep 17 00:00:00 2001 -From: Juraj Oravec <jurajoravec@mailo.com> -Date: Wed, 4 Dec 2024 21:34:31 +0100 -Subject: [PATCH] Fix printing to printer other than PDF printer - -BUG: 497051 -FIXED-IN: 24.12 - -Chery picked from: eaa807023517e1d62dae41f9b1cdd93806d77d64 - -Signed-off-by: Juraj Oravec <jurajoravec@mailo.com> ---- - src/lib/webengine/webview.cpp | 22 ++++++++++++++-------- - src/lib/webengine/webview.h | 4 ++++ - 2 files changed, 18 insertions(+), 8 deletions(-) - -diff --git a/src/lib/webengine/webview.cpp b/src/lib/webengine/webview.cpp -index d2b5d7ee0..4871e8b3f 100644 ---- a/src/lib/webengine/webview.cpp -+++ b/src/lib/webengine/webview.cpp -@@ -67,6 +67,7 @@ WebView::WebView(QWidget* parent) - connect(this, &QWebEngineView::iconChanged, this, &WebView::slotIconChanged); - connect(this, &QWebEngineView::urlChanged, this, &WebView::slotUrlChanged); - connect(this, &QWebEngineView::titleChanged, this, &WebView::slotTitleChanged); -+ connect(this, &QWebEngineView::printFinished, this, &WebView::slotPrintFinished); - - m_currentZoomLevel = zoomLevels().indexOf(100); - -@@ -386,11 +387,11 @@ void WebView::printPage() - { - Q_ASSERT(m_page); - -- auto *printer = new QPrinter(); -- printer->setCreator(tr("Falkon %1 (%2)").arg(QString::fromLatin1(Qz::VERSION), QString::fromLatin1(Qz::WWWADDRESS))); -- printer->setDocName(QzTools::filterCharsFromFilename(title())); -+ m_printer = new QPrinter(); -+ m_printer->setCreator(tr("Falkon %1 (%2)").arg(QString::fromLatin1(Qz::VERSION), QString::fromLatin1(Qz::WWWADDRESS))); -+ m_printer->setDocName(QzTools::filterCharsFromFilename(title())); - -- auto *dialog = new QPrintDialog(printer, this); -+ auto *dialog = new QPrintDialog(m_printer, this); - dialog->setOptions(QAbstractPrintDialog::PrintToFile | QAbstractPrintDialog::PrintShowPageSize); - #ifndef Q_OS_WIN - dialog->setOption(QAbstractPrintDialog::PrintPageRange); -@@ -402,14 +403,19 @@ void WebView::printPage() - m_page->printToPdf(dialog->printer()->outputFileName(), dialog->printer()->pageLayout()); - delete dialog; - } else { -- connect(this, &QWebEngineView::printFinished, this, [&dialog](bool success) { -- Q_UNUSED(success); -- delete dialog; -- }); -+ print(m_printer); -+ delete dialog; - } - } - } - -+void WebView::slotPrintFinished(bool success) -+{ -+ Q_UNUSED(success); -+ delete m_printer; -+ m_printer = nullptr; -+} -+ - void WebView::slotLoadStarted() - { - m_progress = 0; -diff --git a/src/lib/webengine/webview.h b/src/lib/webengine/webview.h -index 37138cd6d..61e7281f8 100644 ---- a/src/lib/webengine/webview.h -+++ b/src/lib/webengine/webview.h -@@ -25,6 +25,7 @@ - #include "loadrequest.h" - #include "wheelhelper.h" - -+class QPrinter; - class WebPage; - class LoadRequest; - class WebHitTestResult; -@@ -118,6 +119,7 @@ protected Q_SLOTS: - void slotIconChanged(); - void slotUrlChanged(const QUrl &url); - void slotTitleChanged(const QString &title); -+ void slotPrintFinished(bool success); - - // Context menu slots - void openUrlInNewWindow(); -@@ -193,6 +195,8 @@ private: - WheelHelper m_wheelHelper; - - static bool s_forceContextMenuOnMouseRelease; -+ -+ QPrinter* m_printer; - }; - - #endif // WEBVIEW_H --- -GitLab - diff --git a/www-client/google-chrome-beta/Manifest b/www-client/google-chrome-beta/Manifest index 770e48bedffb..418c38568f9f 100644 --- a/www-client/google-chrome-beta/Manifest +++ b/www-client/google-chrome-beta/Manifest @@ -1,3 +1,3 @@ -DIST google-chrome-beta_135.0.7049.41-1_amd64.deb 115177956 BLAKE2B 88b71f2b0f686777b0571b7b9cacca88dc87d9f5171b09c5e653e241c53477cb869b4cc8790b5b3725bac7c357c658aa3dc520b5a1398cd21a3bfaa7471d3918 SHA512 c907da175145924fd17a93cb01fb7d754c85174d1789530bd3735812246f28c225501af2fc4a26612dc806b63e2a359c6c9bf932162a28e4f4958c96bdd4c0d8 -EBUILD google-chrome-beta-135.0.7049.41.ebuild 2884 BLAKE2B a63c2caf820e81c4e500728e985f1f13539fa37b68aa6f1a7a608bf338d4494bcc6758e10bf029612a04873c4967f7170067f63c4cec2f800bacb7449945ea48 SHA512 6dc93cef569c81e5acbc9c151e6b319eb796ddc60b7c9377e77be14ea47aad74e072f3e77e1664ae62aa2a5b60d75bd115572f451ca2ba9b38a6b309ec16c0f3 +DIST google-chrome-beta_136.0.7103.17-1_amd64.deb 116519952 BLAKE2B 7ff7859909153a5e9468666566b467cf31de42364edf8960a23833f69655eadb3949e9c5eb237b9f0fbc783262edcf4b50f5d759b9980c26b3612d4f1c5f767c SHA512 47a088261d8d5dc82d9d78874e7664e19c5d10fd8deb872f0f5be25b4e39408c88713f5d70c6fda19d19c044e386c3cdb09970a3ca5ca11630865508c62ebaf6 +EBUILD google-chrome-beta-136.0.7103.17.ebuild 2884 BLAKE2B a63c2caf820e81c4e500728e985f1f13539fa37b68aa6f1a7a608bf338d4494bcc6758e10bf029612a04873c4967f7170067f63c4cec2f800bacb7449945ea48 SHA512 6dc93cef569c81e5acbc9c151e6b319eb796ddc60b7c9377e77be14ea47aad74e072f3e77e1664ae62aa2a5b60d75bd115572f451ca2ba9b38a6b309ec16c0f3 MISC metadata.xml 437 BLAKE2B 35ab5a754d8e65db84e25b08c76bed923c2f9eb1b1d65687dda842313b5f339c90cbb3eb8fe12ecb58f201383955ad8f72a5b34484265194a3fcffcf760122ef SHA512 82e6057b085e849bc5484b53fef974022bb9db33836502e8d54fca3c8f54f47768f9b0ed4591d90a444e82142e727d4e4071236b114705f91c005f170b2a3986 diff --git a/www-client/google-chrome-beta/google-chrome-beta-135.0.7049.41.ebuild b/www-client/google-chrome-beta/google-chrome-beta-136.0.7103.17.ebuild index 0e122f578036..0e122f578036 100644 --- a/www-client/google-chrome-beta/google-chrome-beta-135.0.7049.41.ebuild +++ b/www-client/google-chrome-beta/google-chrome-beta-136.0.7103.17.ebuild diff --git a/www-client/google-chrome-unstable/Manifest b/www-client/google-chrome-unstable/Manifest index c7a3f5576576..c28f7a67ae68 100644 --- a/www-client/google-chrome-unstable/Manifest +++ b/www-client/google-chrome-unstable/Manifest @@ -1,3 +1,3 @@ -DIST google-chrome-unstable_136.0.7091.2-1_amd64.deb 116323896 BLAKE2B d6030af3f1d05e9cee1738f29df251149e93367d75b581e1412f3e079cb1c69fa449ccd1262653c4bcd28feb78fd907827d2ec69d271d871f8baeded57faa38a SHA512 c65c9991404de05543007e2cf71f1c772dda25e21757f19867d1aeb97d272df10c871ea7264c0ea99dc72223e14d774f97c2bf24a253a74dfac7305848687e68 -EBUILD google-chrome-unstable-136.0.7091.2.ebuild 2884 BLAKE2B a63c2caf820e81c4e500728e985f1f13539fa37b68aa6f1a7a608bf338d4494bcc6758e10bf029612a04873c4967f7170067f63c4cec2f800bacb7449945ea48 SHA512 6dc93cef569c81e5acbc9c151e6b319eb796ddc60b7c9377e77be14ea47aad74e072f3e77e1664ae62aa2a5b60d75bd115572f451ca2ba9b38a6b309ec16c0f3 +DIST google-chrome-unstable_137.0.7106.2-1_amd64.deb 116739192 BLAKE2B 56d126898c7540db5af1ade878809550407713a9b7766942abc720cb0c2ce60e726add9e0f9b2f9f46a1d44d36ec4f13657d14a3ba9a687812ec8559e8312d8f SHA512 409a805b618a44d46384ddc45fc64082544b98096dcc2e59eadbceffeb13c33db5f25c002d5a6f1dfeda2a869ea9d0dca6d48441d0c26686626e8e14c763be5a +EBUILD google-chrome-unstable-137.0.7106.2.ebuild 2884 BLAKE2B a63c2caf820e81c4e500728e985f1f13539fa37b68aa6f1a7a608bf338d4494bcc6758e10bf029612a04873c4967f7170067f63c4cec2f800bacb7449945ea48 SHA512 6dc93cef569c81e5acbc9c151e6b319eb796ddc60b7c9377e77be14ea47aad74e072f3e77e1664ae62aa2a5b60d75bd115572f451ca2ba9b38a6b309ec16c0f3 MISC metadata.xml 437 BLAKE2B 35ab5a754d8e65db84e25b08c76bed923c2f9eb1b1d65687dda842313b5f339c90cbb3eb8fe12ecb58f201383955ad8f72a5b34484265194a3fcffcf760122ef SHA512 82e6057b085e849bc5484b53fef974022bb9db33836502e8d54fca3c8f54f47768f9b0ed4591d90a444e82142e727d4e4071236b114705f91c005f170b2a3986 diff --git a/www-client/google-chrome-unstable/google-chrome-unstable-136.0.7091.2.ebuild b/www-client/google-chrome-unstable/google-chrome-unstable-137.0.7106.2.ebuild index 0e122f578036..0e122f578036 100644 --- a/www-client/google-chrome-unstable/google-chrome-unstable-136.0.7091.2.ebuild +++ b/www-client/google-chrome-unstable/google-chrome-unstable-137.0.7106.2.ebuild diff --git a/www-client/google-chrome/Manifest b/www-client/google-chrome/Manifest index 8bc06691bbf9..60c046926448 100644 --- a/www-client/google-chrome/Manifest +++ b/www-client/google-chrome/Manifest @@ -1,3 +1,3 @@ -DIST google-chrome-stable_135.0.7049.52-1_amd64.deb 115172860 BLAKE2B cd3ceae2204a48937403217659b8e0e9812715d14c37c3078d60c0dc6bcf626fa4426099cfbcdec206a6ab11025f778319bb3007ac35ba8c02d7c7ed78f91522 SHA512 0c1434e3204771c2e7929fe3846f544263e3030896c90d9fa288541729d77aec6f5982359a0140c12ebaf0b54579a5b7f7ca7e6389ad9f177f77bc0c839b0a4f -EBUILD google-chrome-135.0.7049.52.ebuild 2883 BLAKE2B b215231a79272464c56f42cbcc0cd9f0afced6f0a1d36a2849d09b1cd2dfe0d9336ed1e2f37f3330ab8f8366a6c0dbd0057d1f07152a2cbd5afaf421d05299b0 SHA512 b414273ad9ffacefed3b87d34411518315566f775cf79c05eea219849254a2286c826039a916cac445637ea407724d29929b56dad7fb482b731f970ed5691efb +DIST google-chrome-stable_135.0.7049.84-1_amd64.deb 115264952 BLAKE2B b97c7241619cfae3ce678fb6c8d0391acd2f2f4eba4c4cf9478683b53ded8f42284c30784b3c28c5b7bcdae503d085cce9996aa46e7c89b37af54e2208a3bbba SHA512 ce52fa097cb3f391d8ab61dbf79d50dfa277701ff7cfce66fa40c65a357af32bd70648f2cc0f557cb45fc56b7b605c28956c7c1e423d2e6a24df01b8387dc46a +EBUILD google-chrome-135.0.7049.84.ebuild 2883 BLAKE2B b215231a79272464c56f42cbcc0cd9f0afced6f0a1d36a2849d09b1cd2dfe0d9336ed1e2f37f3330ab8f8366a6c0dbd0057d1f07152a2cbd5afaf421d05299b0 SHA512 b414273ad9ffacefed3b87d34411518315566f775cf79c05eea219849254a2286c826039a916cac445637ea407724d29929b56dad7fb482b731f970ed5691efb MISC metadata.xml 437 BLAKE2B 35ab5a754d8e65db84e25b08c76bed923c2f9eb1b1d65687dda842313b5f339c90cbb3eb8fe12ecb58f201383955ad8f72a5b34484265194a3fcffcf760122ef SHA512 82e6057b085e849bc5484b53fef974022bb9db33836502e8d54fca3c8f54f47768f9b0ed4591d90a444e82142e727d4e4071236b114705f91c005f170b2a3986 diff --git a/www-client/google-chrome/google-chrome-135.0.7049.52.ebuild b/www-client/google-chrome/google-chrome-135.0.7049.84.ebuild index d187af0f99bc..d187af0f99bc 100644 --- a/www-client/google-chrome/google-chrome-135.0.7049.52.ebuild +++ b/www-client/google-chrome/google-chrome-135.0.7049.84.ebuild diff --git a/www-client/microsoft-edge-beta/Manifest b/www-client/microsoft-edge-beta/Manifest index b0812df57c4d..db418e2b5a85 100644 --- a/www-client/microsoft-edge-beta/Manifest +++ b/www-client/microsoft-edge-beta/Manifest @@ -1,7 +1,7 @@ -DIST microsoft-edge-beta_135.0.3179.18-1_amd64.deb 169807826 BLAKE2B 3af9fc16795d44919eacf7d9d7a37479f3cdd51b2098939a81a735811394a6bb218a1bc7cf5371f1e7ab2bbb4a2efbc97ca37df4b5bb74b24e797cd0106d45b7 SHA512 48291882ee0d41ff4ebe1acc0336daa2a3d483e09446669268d1ca9410c44e165acaf8765b2acc031e23f24203d7d587fcc5317469dc75b7fd85ddd05e7a84f7 DIST microsoft-edge-beta_135.0.3179.33-1_amd64.deb 169843470 BLAKE2B d61fab1a5472a486d9397213b5751f58f2b277fa6b896e16b0b5b3be1bd12585b4e1c9e578ce32bb153227d2c5e3e46eef051ae5b9197850af7fa2a156ddbbd5 SHA512 d4ea4d979fee99ca8fb3ae203120d54b9340c3fb6c37be79ce33f5597b76acdf9636db4bba19dc70a6f82ebfcbf63e904d8b8947991c98aa8e33420139b1ff62 DIST microsoft-edge-beta_135.0.3179.41-1_amd64.deb 169819006 BLAKE2B d135cba6ddfe675670d4dcbe45bd0fb9fe997236b270c7c306de1b44b8d5f5f313e8b794ff3ab53b53ac2166cd70b5584b7b704424ca35fdb562a9cf0016e598 SHA512 c67a3a920ce08cc49a78f50d645bb5d52a887095c2d706578e4e5c51ce9c4fc916bddf94c3c8c3b5c323bbdfb61cb8ba618c0318d4200bdae92390dad43608da -EBUILD microsoft-edge-beta-135.0.3179.18.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 +DIST microsoft-edge-beta_135.0.3179.54-1_amd64.deb 169941854 BLAKE2B 3e633b7aca0af3c4f07c16086d02ac96b22553e0fc9bb093646f525e8d1b6d10bd503318d2773b4bcee09a9fa29dd822436846904b76fecaf97745585cfe1116 SHA512 f05309c2986b99cd00089cd2eadfba74f54ede91c2c7f2e254b21c19ee4d6847797324dbda9be8c1b4d981cb11e5a10e649a6be2197b821d869bba78ecf6e73b EBUILD microsoft-edge-beta-135.0.3179.33.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 EBUILD microsoft-edge-beta-135.0.3179.41.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 +EBUILD microsoft-edge-beta-135.0.3179.54.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 MISC metadata.xml 528 BLAKE2B ef09f12e6f9b503cd78a39ece67ab0b21c4760114b052bf105b7c5e426a1df43a5b37ff547338fc7122ac8a029b2ebb85a8793dbd4d192ae990ae71829dcdec6 SHA512 b6ab632cfce365f249a178a261eba3d469cd645cdcb99dd1bc4f1e865fbd6668cfd0f7171843e2b234ff852f8191a8b08b48cf89991cdfc7ca36337a71e5a38d diff --git a/www-client/microsoft-edge-beta/microsoft-edge-beta-135.0.3179.18.ebuild b/www-client/microsoft-edge-beta/microsoft-edge-beta-135.0.3179.54.ebuild index c97d2da1484c..c97d2da1484c 100644 --- a/www-client/microsoft-edge-beta/microsoft-edge-beta-135.0.3179.18.ebuild +++ b/www-client/microsoft-edge-beta/microsoft-edge-beta-135.0.3179.54.ebuild diff --git a/www-client/microsoft-edge-dev/Manifest b/www-client/microsoft-edge-dev/Manifest index 3d329262cf7e..e93da5542a6e 100644 --- a/www-client/microsoft-edge-dev/Manifest +++ b/www-client/microsoft-edge-dev/Manifest @@ -1,7 +1,7 @@ DIST microsoft-edge-dev_135.0.3179.11-1_amd64.deb 169780558 BLAKE2B c6cb6b81ac65d10bd78b1b5e063b6a2ba7599ddf7df98c71602b60137abb44f9bafcd0499bb2349471e9f67424061b43c8a9b391dd4b6b28b0bcda950893543d SHA512 34442e8b16862be6bb87d946e5a7ab3d2b69c0a6feec96437ec99df07389d041f10d549503f8ad94fb3f5954c196bd992bbcb851462ce97e05d653d22938cb1f -DIST microsoft-edge-dev_135.0.3179.7-1_amd64.deb 169856846 BLAKE2B 4466e64383b11b41794774f827f3b3465025a592a81ac5be758fc95accfbdf2883a63fdedf92e36098ef724acf7f6bf3163b749ce976d9d9ac9457572a77c236 SHA512 aad12a18bdcdd80f4ab4cae3af1106fd9e6e03d0945f968884ad662f8efdd9c3ca0b1853b615ddf672326fdb6db4939f9977eb5c7a30e505f23d4587cc7e1d1f DIST microsoft-edge-dev_136.0.3209.2-1_amd64.deb 173183358 BLAKE2B 9c1cf0861521bd5915439b77340bc127c1b333dbd1d3b03ce60b91027c98e1e2324aae60faa32347fceb5190e5a203baf3ef6a642024d18b6ed6c70bfb4f8051 SHA512 58308b2cdc57749aff21a5ebd3c489338e229f48b288d6187f836294ef4135ad4eb2a1555902ad326c9b8ff7b4f976b808684b588a40545535b9b7f8f6d4c719 +DIST microsoft-edge-dev_136.0.3227.1-1_amd64.deb 173243450 BLAKE2B 161b41dcab12f41d624c3ec8e9a26ceecf512d1b4ebcd2f4c208638ddd633859069c48f716f01dc72eb2681b0df9585e682c5e9bfb136f9cfc9f44dc5c6dd133 SHA512 33cb138c37f81a30eca1b3953c3787268b84a12aaec73b0ae9da8b44297bc4a848e76fb4066b6bf875c697c2fcf7ccc57e5af22e2c38d66d1bac99dce00e8a93 EBUILD microsoft-edge-dev-135.0.3179.11.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 -EBUILD microsoft-edge-dev-135.0.3179.7.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 EBUILD microsoft-edge-dev-136.0.3209.2.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 +EBUILD microsoft-edge-dev-136.0.3227.1.ebuild 2613 BLAKE2B f76a8ef804be1c6ce2a02ed4f89a86fe4e93852987e2455d703651b63b2e3a7515d7c453e4696ba416f137016a1e87e9928aa569b5fe8d75863e6bd62648fb9c SHA512 425e0a07f892b9ab4e1acd0513e09d384f919079040ec5ca38608670f9d86e4d9a4f29a6f0bc1b3fb63fcb6e12cb3c8155089d4db8b3b8f49811a55d4f928317 MISC metadata.xml 528 BLAKE2B ef09f12e6f9b503cd78a39ece67ab0b21c4760114b052bf105b7c5e426a1df43a5b37ff547338fc7122ac8a029b2ebb85a8793dbd4d192ae990ae71829dcdec6 SHA512 b6ab632cfce365f249a178a261eba3d469cd645cdcb99dd1bc4f1e865fbd6668cfd0f7171843e2b234ff852f8191a8b08b48cf89991cdfc7ca36337a71e5a38d diff --git a/www-client/microsoft-edge-dev/microsoft-edge-dev-135.0.3179.7.ebuild b/www-client/microsoft-edge-dev/microsoft-edge-dev-136.0.3227.1.ebuild index c97d2da1484c..c97d2da1484c 100644 --- a/www-client/microsoft-edge-dev/microsoft-edge-dev-135.0.3179.7.ebuild +++ b/www-client/microsoft-edge-dev/microsoft-edge-dev-136.0.3227.1.ebuild diff --git a/www-client/microsoft-edge/Manifest b/www-client/microsoft-edge/Manifest index 0bd05a11fb76..4667ee60d794 100644 --- a/www-client/microsoft-edge/Manifest +++ b/www-client/microsoft-edge/Manifest @@ -1,3 +1,3 @@ -DIST microsoft-edge-stable_134.0.3124.95-1_amd64.deb 170895686 BLAKE2B 56fc1ac69c529c58cbd37bdea682f6015e3694a455a08ea80232620d3eee7bb76cfc676fdda170f8c7b8cf8695aee12d835371730373b68e7fd74f1b96b7478a SHA512 d571743f75b40b17076c3b6f9c91dff9d21fcdcc81a514ab8d1abd04a2260da81d6de306482b684d98b902fef9e2bbb94deb1073a89a9800f9a3485d1bcf710e -EBUILD microsoft-edge-134.0.3124.95.ebuild 2612 BLAKE2B bc206fe3dfbc9e2da29abdf85e2b69e05b6bfcb782603f6ca1f84b8a09c0f650a199d3d15d00ca9ac77eb98210be66f3bd3b812be38cca6d7b7e06fcd326b903 SHA512 644cdb2869b083b831db7d6880ef7259dff6d3b7676fff833d4b561b9eb9196bede5ffc8f8566d32641c385f25cfd5ee9bda94339577ab52a4660f66d285082e +DIST microsoft-edge-stable_135.0.3179.54-1_amd64.deb 169874838 BLAKE2B a0f7341db51bd508be229aa9e0b5c37b0e36fe2fffdd2e8dad38c7095a78722fee4c9d060c897bcc428f1e57b8271241837dd93b5ffa78fd764d78664cfc5e27 SHA512 cdb5663ef86236cec9aa18653373c7d38fae201572d97fddba86c4c0d49bc09e05618803e39b5e262241a23254978ece15593bf94ba34f21358cf7b5acf909ae +EBUILD microsoft-edge-135.0.3179.54.ebuild 2612 BLAKE2B bc206fe3dfbc9e2da29abdf85e2b69e05b6bfcb782603f6ca1f84b8a09c0f650a199d3d15d00ca9ac77eb98210be66f3bd3b812be38cca6d7b7e06fcd326b903 SHA512 644cdb2869b083b831db7d6880ef7259dff6d3b7676fff833d4b561b9eb9196bede5ffc8f8566d32641c385f25cfd5ee9bda94339577ab52a4660f66d285082e MISC metadata.xml 528 BLAKE2B ef09f12e6f9b503cd78a39ece67ab0b21c4760114b052bf105b7c5e426a1df43a5b37ff547338fc7122ac8a029b2ebb85a8793dbd4d192ae990ae71829dcdec6 SHA512 b6ab632cfce365f249a178a261eba3d469cd645cdcb99dd1bc4f1e865fbd6668cfd0f7171843e2b234ff852f8191a8b08b48cf89991cdfc7ca36337a71e5a38d diff --git a/www-client/microsoft-edge/microsoft-edge-134.0.3124.95.ebuild b/www-client/microsoft-edge/microsoft-edge-135.0.3179.54.ebuild index 216070691eb2..216070691eb2 100644 --- a/www-client/microsoft-edge/microsoft-edge-134.0.3124.95.ebuild +++ b/www-client/microsoft-edge/microsoft-edge-135.0.3179.54.ebuild diff --git a/www-client/opera-beta/Manifest b/www-client/opera-beta/Manifest index b6285e83b9c1..86a409f09170 100644 --- a/www-client/opera-beta/Manifest +++ b/www-client/opera-beta/Manifest @@ -1,7 +1,7 @@ -DIST opera-beta_118.0.5461.14_amd64.deb 128212496 BLAKE2B f0b8412c6f34baf32a4c8e00970b386246a0ab371d2a082aa197b19bb9881a9e6ff849ace030d92252e2e892a9f311cd0642b32f0b4fa019a9f31b8c254cbf5a SHA512 694e350de353b4361187c83a7cf0907a8c478d039e74f64c97cb462fcbd4bc860c1c00e0f0cb2abb4e98c513820b2c97803d2615c61bacd269d6bd32a99fc351 DIST opera-beta_118.0.5461.18_amd64.deb 128189720 BLAKE2B 88dfd616508f51f04c90f5cdaf9ccb82e26b657a904b179983a75ea7b6914ee1c4656556984167125ed0409ba65f7580249fe8269dc8356b4192013c2a66f812 SHA512 93388ecad409c47d27d4840c74ba2c4fff1e3b2c8b42230da08fbc3af0aa6054e74869294af405f9688cebb98a62f7adb2e8c4f45c820c15ac9a3ff46d5ae463 DIST opera-beta_118.0.5461.21_amd64.deb 128227768 BLAKE2B 49d4ed2363abdeea2bbf20b5a87eb62ceed5ec34667dd7b0a74215be32b6a5af8928db5a7a5327bb669810879e796b5ee0ec442e6e7f81c08537e46b9ec25d40 SHA512 4b6ba7c85b7604751064cb41b4df66b8552f3acfd23f0c057f46e35c68888a3375e986fb626d6ac92669e35edd83c34e97f367699a01275a9c49c36e97800fff -EBUILD opera-beta-118.0.5461.14.ebuild 4124 BLAKE2B 6a481715601d600561f656f6e3dde12ce16bdbc83857454f2643ca70fd503af858540f1a0bc3d1717f9cffb2e394d18669fc1bfcf6109d06e30bd3fac806d8f2 SHA512 a788134a4376d3967879ed99e536c9a584d978312f385f8a4805c2a9a406eda47928c3e23aa9009a82975f39b883cf9225d0fc72c9020b48fa69445a0f251372 +DIST opera-beta_118.0.5461.27_amd64.deb 126862476 BLAKE2B c6a0b2a778cca172ae71d6e5c308758d2df0e4044554ff4dab93401a7a5e05aa102ef36d8555fbcda47f63e0d8e7322c7532b48a812bf6bb956b9ac89f134ef7 SHA512 26212a7fd6fdc353cd3fb151e7e7fda48824cf9a39ee5547b4d9a02003e646459d04766d10738632dc9bf55ef8f331ae6ac4ab785d0575cd0527e9e89c94c205 EBUILD opera-beta-118.0.5461.18.ebuild 4124 BLAKE2B 6a481715601d600561f656f6e3dde12ce16bdbc83857454f2643ca70fd503af858540f1a0bc3d1717f9cffb2e394d18669fc1bfcf6109d06e30bd3fac806d8f2 SHA512 a788134a4376d3967879ed99e536c9a584d978312f385f8a4805c2a9a406eda47928c3e23aa9009a82975f39b883cf9225d0fc72c9020b48fa69445a0f251372 EBUILD opera-beta-118.0.5461.21.ebuild 4124 BLAKE2B 6a481715601d600561f656f6e3dde12ce16bdbc83857454f2643ca70fd503af858540f1a0bc3d1717f9cffb2e394d18669fc1bfcf6109d06e30bd3fac806d8f2 SHA512 a788134a4376d3967879ed99e536c9a584d978312f385f8a4805c2a9a406eda47928c3e23aa9009a82975f39b883cf9225d0fc72c9020b48fa69445a0f251372 +EBUILD opera-beta-118.0.5461.27.ebuild 4124 BLAKE2B 6a481715601d600561f656f6e3dde12ce16bdbc83857454f2643ca70fd503af858540f1a0bc3d1717f9cffb2e394d18669fc1bfcf6109d06e30bd3fac806d8f2 SHA512 a788134a4376d3967879ed99e536c9a584d978312f385f8a4805c2a9a406eda47928c3e23aa9009a82975f39b883cf9225d0fc72c9020b48fa69445a0f251372 MISC metadata.xml 544 BLAKE2B e8594a0cb9a73ac5901ece78db220822043dca9faec994810af426f96e2ece7fdb069c5f1d639f66d1236ec83e6c46e50bd21c49f8a075cf0de41c9db9afd8a0 SHA512 2361ebdde2707166e465058b41a893b4c14db7c7ba8f4fe34f7ab34da4275f0af691e55881232a9253f5d793ff76e61d57689f56dd8ab879fc3ecb3294fc8777 diff --git a/www-client/opera-beta/opera-beta-118.0.5461.14.ebuild b/www-client/opera-beta/opera-beta-118.0.5461.27.ebuild index e0100498bd55..e0100498bd55 100644 --- a/www-client/opera-beta/opera-beta-118.0.5461.14.ebuild +++ b/www-client/opera-beta/opera-beta-118.0.5461.27.ebuild diff --git a/www-client/opera-developer/Manifest b/www-client/opera-developer/Manifest index f6337a3134bf..eea23df159e4 100644 --- a/www-client/opera-developer/Manifest +++ b/www-client/opera-developer/Manifest @@ -1,7 +1,7 @@ -DIST opera-developer_119.0.5481.0_amd64.deb 128286540 BLAKE2B bab006ea7efd8e04aab85a877d288353bcc38a6201eb133cc00e96382ee2ef4b816c13b8ab5cdc08011dbe2c3e1a33f38343d84bc5033acadbbc0174ccac2b90 SHA512 d7b1d4c26d27225af4d3cf5b24a742706106f55dbca4ecc707538881e30367859c220567a8f067b9db276e1e762e78cdebfb7d77c1737d94569e0dbf00932ce3 DIST opera-developer_119.0.5482.0_amd64.deb 128294616 BLAKE2B c8a2ddef57cd6418e2e6da51a350201325ef8576b88b52cb21c94c59ee040e499b2d44717e8731a10ca613540be93abbb9764e839095394e19ea7fa713bcf93c SHA512 c6e50ecbb6a8f23244c4e63bdf68761e7f4fccc9cd55be447817d2fada569ca57243e9952af7abdbf9ee98feb35987bf35820c9a2ab23ba5d04b2eed418db5d3 DIST opera-developer_119.0.5489.0_amd64.deb 128265972 BLAKE2B 9b2f1832db0243794b367b2881aa17581940c223883183a2893f29397e9482f5f06326dbfca4a4b02a3cfa189dc0a5e117512136b99c32523da58fee9864e9ac SHA512 9882a67dbc7bef1bdfa8a3f9a97ff7c97addc5e4be0065c9f9659365bfd5d8a61207b794799003b9bf8b4120ab43cc6f8600966a41c26a2d73bcc9efc44e3c60 -EBUILD opera-developer-119.0.5481.0.ebuild 4124 BLAKE2B ac1f30e502a14cbeacdbcee068c5cb7e40b4382c58d48a91b3e80485e9355c0e7915c4a92081a9c083eee74e54ab80a05f9621456b21b8a4014bbdae38bca533 SHA512 ee1d05789c7cc2eb9c7a0ae96e4fd21d5d310811e718622096bc991a7d4f59e168ddcd1fe8139c929b8094e97892bab8ad47bb92b72fa6a38cf98fee246a57b0 +DIST opera-developer_119.0.5495.0_amd64.deb 128290892 BLAKE2B 4cff5a5dfd9e281bab21ccf66b96c77ba46dd162056d2066e8660db3ba9955a51bec535355d787e4cd7899d470269d188b7e10772899a8df152c31e8eab0016f SHA512 7dde1aa4cb432f4ab590f4f8e336084e8d3241a3756f24a54ffee34789ee885591069e5a107273b41302777311563e950b2935ebe638cf15aa906f822e5c972b EBUILD opera-developer-119.0.5482.0.ebuild 4124 BLAKE2B ac1f30e502a14cbeacdbcee068c5cb7e40b4382c58d48a91b3e80485e9355c0e7915c4a92081a9c083eee74e54ab80a05f9621456b21b8a4014bbdae38bca533 SHA512 ee1d05789c7cc2eb9c7a0ae96e4fd21d5d310811e718622096bc991a7d4f59e168ddcd1fe8139c929b8094e97892bab8ad47bb92b72fa6a38cf98fee246a57b0 EBUILD opera-developer-119.0.5489.0.ebuild 4124 BLAKE2B ac1f30e502a14cbeacdbcee068c5cb7e40b4382c58d48a91b3e80485e9355c0e7915c4a92081a9c083eee74e54ab80a05f9621456b21b8a4014bbdae38bca533 SHA512 ee1d05789c7cc2eb9c7a0ae96e4fd21d5d310811e718622096bc991a7d4f59e168ddcd1fe8139c929b8094e97892bab8ad47bb92b72fa6a38cf98fee246a57b0 +EBUILD opera-developer-119.0.5495.0.ebuild 4124 BLAKE2B ac1f30e502a14cbeacdbcee068c5cb7e40b4382c58d48a91b3e80485e9355c0e7915c4a92081a9c083eee74e54ab80a05f9621456b21b8a4014bbdae38bca533 SHA512 ee1d05789c7cc2eb9c7a0ae96e4fd21d5d310811e718622096bc991a7d4f59e168ddcd1fe8139c929b8094e97892bab8ad47bb92b72fa6a38cf98fee246a57b0 MISC metadata.xml 544 BLAKE2B e8594a0cb9a73ac5901ece78db220822043dca9faec994810af426f96e2ece7fdb069c5f1d639f66d1236ec83e6c46e50bd21c49f8a075cf0de41c9db9afd8a0 SHA512 2361ebdde2707166e465058b41a893b4c14db7c7ba8f4fe34f7ab34da4275f0af691e55881232a9253f5d793ff76e61d57689f56dd8ab879fc3ecb3294fc8777 diff --git a/www-client/opera-developer/opera-developer-119.0.5481.0.ebuild b/www-client/opera-developer/opera-developer-119.0.5495.0.ebuild index e9edab600855..e9edab600855 100644 --- a/www-client/opera-developer/opera-developer-119.0.5481.0.ebuild +++ b/www-client/opera-developer/opera-developer-119.0.5495.0.ebuild |