diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-07-18 12:29:02 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-07-18 12:29:02 +0100 |
commit | f85858c81a721c7fc89c1ab8df19e3a213dc27cd (patch) | |
tree | 3f0aeb33e434ee50b99bcc8b54158bc6169a41f2 /www-client/chromium | |
parent | 16857b69f990738d17bc5842e3e49a6e82d1428d (diff) |
gentoo auto-resync : 18:07:2024 - 12:29:01
Diffstat (limited to 'www-client/chromium')
-rw-r--r-- | www-client/chromium/Manifest | 5 | ||||
-rw-r--r-- | www-client/chromium/chromium-126.0.6478.182.ebuild (renamed from www-client/chromium/chromium-127.0.6533.26.ebuild) | 354 |
2 files changed, 227 insertions, 132 deletions
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest index 91f6525a64e7..cb40b1f7bcb6 100644 --- a/www-client/chromium/Manifest +++ b/www-client/chromium/Manifest @@ -11,9 +11,9 @@ AUX chromium.default 148 BLAKE2B 5ee5b582c59a6e4bef87bbb0e232e2470ad412b1fbbb3b9 DIST chromium-126-clang.tar.xz 50615992 BLAKE2B 293709399ddf343ba195cec452974178228ebb72921931ad58136351956b881f8dc0bc8ca740252bcd4971701c9ee8ccc0a33648aee25a5b1cece56e0af6b83f SHA512 7bb2938b1df452585d0ee93da3bcf9c3e64e88e39059a713fe21758df670190b12ca002ef2764dc99efdb4284b4c4b7cde861e2e495d99956c21120a51b8c3dc DIST chromium-126-rust.tar.xz 150643432 BLAKE2B d9c827008a2fae07977628beccdf3cf4e5d9bf3c9728e4b2839c8bc86ee2f87844921064e30c067a1b620a3d53cbf54a74053172b1436239332fc668f772924d SHA512 431c0305a81e59da231d56f1b119226b661d7f5a93d0da92afbfc384b0e5be28f282c2911137983298a5369c93b60184d41875ec63b47048a782ee2b1301fc77 DIST chromium-126.0.6478.126.tar.xz 4166142564 BLAKE2B 4c709c3a02a01f6bef46309b4a2f3d8cd688007e6b69152a5119a098c98aa272e10ea1ebf418c75387d08e1b9dde75ad53eabc12cf860b288e732c9b974e6066 SHA512 4a86edb82ec530299f8298b7604a18efb5ccf6a6cde37950d7821a73b005b9e83805a0b7f36f2fa5b4f71e237bf70ec628c1864e4f81caa4333a5dc904fb3aab +DIST chromium-126.0.6478.182.tar.xz 4173311388 BLAKE2B fd11cdc99b9b5f9700ba2c64777c3b49f457a619687c6b1532145bc6a89ec6491bc7f9c2a71e2466530f3a1785b428f86d0fcb678dfdabd7f7708a7ad980a78c SHA512 3809234f9e9e5adba0b3b9fdfb12ff078ac2376a7f56d05df4f56f1d8ae2dad4be8f3683460c790a9e6b187a4760f70580fde8b7d7266b4b16ce3004ffc19fcf DIST chromium-127-clang.tar.xz 50869256 BLAKE2B a25c78c28e1a19bb251ce78831ff8aeea51f0ff0a3fcba4f57e14e676aadba38f248554a52d9f67da8c0ccf533ef9f60b4bbb26f8935914efa2b871444e61d8f SHA512 9033c2dd7dd217917caf3dbed52f72ded18fe81b431edd4ef82fe7c592f7b9fbf6d5d2c8f7ba4ebffb4994bef20579d30aea9dd1ad36db86bec5d0adb6eca062 DIST chromium-127-rust.tar.xz 151082700 BLAKE2B 53b5e72724425ae97bbb22e128ca5e826a2db5fb49f615c5331cdf6d790c253d58061223ff9fbd7f4deecaa19668e7b905b0a661380f48ce74d7f66a9605be18 SHA512 a47fc0bdbf48da9c8c17c91d9dc1a4a3f09578e82199c0d5843dfb6188803161cdb98d065ee3f85ceaf78efd2c233397c325c4c9f2d19255f38734a81599404b -DIST chromium-127.0.6533.26.tar.xz 6590894364 BLAKE2B 1806ba0d75aca8c9a6d491ff14401364d5429ad5fb2c3c605d2c7694492782007e5b584bf543f59fdc7732589871bf307503c9928b2da57121b54269cd0f6c30 SHA512 4a3a08ed6b3a0ba40597c99bf520112a92d2c92171ac8f3c13356b5ce7bfd6ba91473b69d4216b23757ac2ffc267aa34d18e77d21a6bbaabfe10c674ec791ace DIST chromium-127.0.6533.43.tar.xz 6598802356 BLAKE2B eab679025fd4764e7e3eb6ed0b32e0e3c106848626d7477c02a9a1201eb5add64614864366bdecf9d7b0a9fe62b9df621d4d6cb8762f7f7e85d7725ae2eed5bf SHA512 138e709105f6b7328c5029e6c5e5d9f0cf9611561bb6631605eb79051f3ef8be6dd0c2fb50ab2a89c7b1b5a869dcfb69bbc37ec56f4239039e32a8ada72be172 DIST chromium-patches-126.tar.bz2 4538 BLAKE2B c1f224015618ec908ef09d0c04a2243923371e2caeccd60d93747599fd1434b284291a5b4326008db21749cf78827d5a4b50d22fc805dcd3c1fd86303dc82729 SHA512 6692075adac0379b5f27d1023de1a051cf7f7f7138efd32dfc3af0d501b714142a16daf18022bb46d92218587f364f4dafe9f4aea24f6826e88b0e7cc2be7d0b DIST chromium-patches-127.tar.bz2 4545 BLAKE2B cd0221e74a886ad3fc598e92876021b847a92a587ddc66774357ccf06bdd14e23f8bfede9bbe6fd154af8cea570bfa6ee27a2ff393883bd314a7d1326c7260f5 SHA512 938926ecd406d96662a6ed6e9fab9efab156f5691e98c044c75c4d335075f61e80eae2cf3be9b626c01d3542c1785dd0fc63ac31e5cbf1555a8eca3c6aed8c56 @@ -21,7 +21,8 @@ DIST chromium-ppc64le-gentoo-patches-1.tar.xz 5636 BLAKE2B 1d898939df023c59285b2 DIST chromium-profiler-0.2.tar 259952640 BLAKE2B 5e82389fce00b267280d633b26551231c558b80f0c92cd7d60271095a3503365ab673e7a46dc5f74f8a82db1f21262cb24dcc0531d954bab5fb3b175dab3394d SHA512 9fa89a5ab728419683e7495ae676567480987d68a2d589f2aa97bfcbcf123f3c8f97f8bca5f65e5e3f6e41475535add473ded83b9c7a33bb4746a9d05b298a6c DIST chromium_124.0.6367.207-1raptor0~deb12u1.debian.tar.xz 587248 BLAKE2B 4c5a12b3e70be85b31d60d35d160281cbf8b93422169243f743fff25805bc7006ffeed5f95b415fb49e9cf4c3bf2c0a2d5ed10642d8f772df24cab1fe738125a SHA512 025ac185f27c66438a5eaf482120fded42d37403706fd012fbde1b6acf5c2e360bb2fb7723183d4883f66f36afe10167a2d919cde11735186a1a87b28ffaf9c6 DIST chromium_126.0.6478.114-1raptor0~deb12u1.debian.tar.xz 613488 BLAKE2B ecdf33e0ced01d540b7f1e599df6655055afd8f72b22a92c600205d1b02176be76140a5bfa550e62e4a0e4f03c68992eb480d9ba4a256b3f8b48b525a8ce7400 SHA512 53ea7f89dac5c42ca991f40f2a5515393cb74334a27df72b944552d5a557f6c53b0dac9c89cfb99918fd502396bc80a677a87533f48552af9f7fd440b7b8b2cc +DIST chromium_126.0.6478.126-1raptor0~deb12u1.debian.tar.xz 614000 BLAKE2B 5eaad3a34447aefb080f9c0ff5170d111a318c8dc6866807aedbcfb014113877a2b8f6b4b80ec4ad8a35e2ed01a0bf0bc2bdcee1474ba4d7759180d0fbe77124 SHA512 6f1c8090bd94fa09c057799938c92d1cad1ac1638944727196ce5cc172d5a41f3f7121bc0b28ad07172b65108a8ae17086e6503b9bc4a20e2662c40f6d65f765 EBUILD chromium-126.0.6478.126.ebuild 48104 BLAKE2B e0193ac2d2e26c46a62281581b0b6a4b2a9a438edcfe075d729a84ffd4413e26ae0bd6c4ff90a0c05934f610b90fad1310167ad65c0032c01a1d3343fc30b6aa SHA512 70a207aaea416e392d6b8e39024a31c01ded76e08f0135a388ccdb26e9ed02cb65114d09706927fc2dba153b921def3380c2938123bcadd3057db076fc048593 -EBUILD chromium-127.0.6533.26.ebuild 45914 BLAKE2B d8da08a94c5022dfc306e9b04c5d412a1bb8668392e71d935affd65c7bde95ba010f64ed8dce4570453aaf5089f03b8b416fe3db5bdbeba1dedcca9613991ffb SHA512 bdfbeecd56b7b1508d168994577f03de7408231a980b0b094b1c7a4be572894b08b6f9d1f6727a92d3cb49d6d67e085d0b92bd96b3ce7100994519998d3c762c +EBUILD chromium-126.0.6478.182.ebuild 48106 BLAKE2B 7bd62e34eb8a84fa205c0eec9e7e061e4568924bd2a6424e71cb4a8f2ff59ff6a9b53bc60184809ba7ae2cef06a2339fdda2dd7e2eb1bb3e85789beed3c8c1f7 SHA512 3fcb38b0ba3e9a9a3d8b26259d168f4b4282fe381aa2d9f88f2b3181f25bf4eb7ca32238dce0a4908f33688b97614625c3e1b904f16cb66f904b116116968670 EBUILD chromium-127.0.6533.43.ebuild 45890 BLAKE2B 03f585bc8ab09d6fa840281e08956471d3a575c28bb174234aaf4da37f23a1f6af6275db7fd103c38568279f1b98fd42c7afe19637f1d34a8eac3df7b5aaf1b5 SHA512 0119595c337f4192ba890f6909b46c8257a86336263ec1636b19d5585d287b7331d702e7c5d7f2ee77b4429c10ac440291d281ad283fccf273114531052f36c4 MISC metadata.xml 2249 BLAKE2B 42e914e06d12ce6ebff4251fa81c28970676bb6cad7e9b1591dbbf79e45a8805fad6ee3bfb7c1b81f47e91e101091fbfcd565a0cc47f8280b9f169559ca61f2c SHA512 a30553dc4878fdb70546a1dbcb8c38ac42b0bddd500e1d09ba5a8414f681b3304e9a6a02e734c1e7eb58e782f30f6390be97b4a22996788e7639e8a9feb01ee9 diff --git a/www-client/chromium/chromium-127.0.6533.26.ebuild b/www-client/chromium/chromium-126.0.6478.182.ebuild index f3ac63017ee6..a3a310425b93 100644 --- a/www-client/chromium/chromium-127.0.6533.26.ebuild +++ b/www-client/chromium/chromium-126.0.6478.182.ebuild @@ -3,6 +3,9 @@ EAPI=8 +PYTHON_COMPAT=( python3_{11..13} ) +PYTHON_REQ_USE="xml(+)" + # PACKAGING NOTES # Google roll their bundled Clang every two weeks, and the bundled Rust @@ -11,6 +14,14 @@ EAPI=8 # the bundled Clang due to the use of prerelease features. We've been lucky # enough so far that this hasn't been an issue. +# We try and avoid forcing the use of the custom/bundled libcxx, but sometimes +# it is unavoidable. Remember to force the use of Clang when this is forced. + +# GCC is _not_ supported upstream, though patches are welcome. We do our +# best to enable builds with GCC but reserve the right to force Clang +# builds if we can't keep up with upstream's changes. Please comment +# when forcing Clang builds so we can track the need for it. + # GN is bundled with Chromium, but we always use the system version. Remember to # check for upstream changes to GN and update ebuild (and version below) as required. @@ -23,11 +34,26 @@ EAPI=8 # For non-binhost builds, we build the bundled ffmpeg and enable proprietary codecs because there's # no reason not to. Todo: Re-enable USE=system-ffmpeg. +# These variables let us easily bound supported major dependency versions in one place. +GCC_MIN_VER=12 GN_MIN_VER=0.2165 -RUST_MIN_VER=1.78.0 +# Since Google use prerelease llvm we can let any adventurous users try to build with prerelease +# ebuilds; try to keep this up to date with the latest version in the tree. +LLVM_MAX_SLOT=19 +LLVM_MIN_SLOT=17 +RUST_MIN_VER=1.72.0 # chromium-tools/get-chromium-toolchain-strings.sh -GOOGLE_CLANG_VER=llvmorg-19-init-10646-g084e2b53-57 -GOOGLE_RUST_VER=32dd3795bce8b347fda786529cf5e42a813e0b7d-2 +GOOGLE_CLANG_VER=llvmorg-19-init-9433-g76ea5feb-1 +GOOGLE_RUST_VER=31e6e8c6c5b6ce62656c922c7384d3376018c980-2 + +# https://bugs.chromium.org/p/v8/issues/detail?id=14449 - V8 used in 120 can't build with GCC +# Resolved upstream, requires testing and some backporting I'm sure +: ${CHROMIUM_FORCE_CLANG=yes} +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101227 - Chromium 120: +# webrtc - no matching member function for call to 'emplace' +: ${CHROMIUM_FORCE_LIBCXX=yes} +# 121's 'gcc_link_wrapper.py' currently fails if not using lld due to the addition of rust +: ${CHROMIUM_FORCE_LLD=yes} : ${CHROMIUM_FORCE_GOOGLE_TOOLCHAIN=no} @@ -37,18 +63,12 @@ CHROMIUM_LANGS="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu 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" -# Since Google use prerelease llvm we can let any adventurous users try to build with prerelease -# ebuilds; try to keep this up to date with the latest version in the tree. -LLVM_COMPAT=( {17..18} ) -PYTHON_COMPAT=( python3_{11..13} ) -PYTHON_REQ_USE="xml(+)" - -inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 ninja-utils pax-utils +inherit check-reqs chromium-2 desktop flag-o-matic llvm ninja-utils pax-utils inherit python-any-r1 qmake-utils readme.gentoo-r1 systemd toolchain-funcs virtualx xdg-utils DESCRIPTION="Open-source version of Google Chrome web browser" HOMEPAGE="https://www.chromium.org/" -PATCHSET_PPC64="124.0.6367.207-1raptor0~deb12u1" +PATCHSET_PPC64="126.0.6478.126-1raptor0~deb12u1" PATCH_V="${PV%%\.*}" SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz system-toolchain? ( @@ -57,7 +77,7 @@ SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P} !system-toolchain? ( https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/clang-${GOOGLE_CLANG_VER}.tar.xz -> chromium-${PV%%\.*}-clang.tar.xz - https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-${GOOGLE_RUST_VER}-${GOOGLE_CLANG_VER%???}.tar.xz + https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-${GOOGLE_RUST_VER}-${GOOGLE_CLANG_VER%??}.tar.xz -> chromium-${PV%%\.*}-rust.tar.xz ) ppc64? ( @@ -67,19 +87,19 @@ SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P} pgo? ( https://github.com/elkablo/chromium-profiler/releases/download/v0.2/chromium-profiler-0.2.tar )" LICENSE="BSD" -SLOT="0/beta" -KEYWORDS="~amd64 ~arm64" +SLOT="0/stable" +KEYWORDS="~amd64 ~arm64 ~ppc64" IUSE_SYSTEM_LIBS="+system-harfbuzz +system-icu +system-png +system-zstd" -IUSE="+X ${IUSE_SYSTEM_LIBS} bindist cups debug ffmpeg-chromium gtk4 +hangouts headless kerberos +lto +official pax-kernel pgo +proprietary-codecs pulseaudio" +IUSE="+X ${IUSE_SYSTEM_LIBS} bindist cups debug ffmpeg-chromium gtk4 +hangouts headless kerberos libcxx +lto +official pax-kernel pgo +proprietary-codecs pulseaudio" IUSE+=" qt5 qt6 +screencast selinux +system-toolchain +vaapi +wayland +widevine" RESTRICT="!bindist? ( bindist )" REQUIRED_USE=" !headless? ( || ( X wayland ) ) - official? ( lto ) pgo? ( X !wayland ) qt6? ( qt5 ) screencast? ( wayland ) + !system-toolchain? ( libcxx ) ffmpeg-chromium? ( bindist proprietary-codecs ) " @@ -180,6 +200,34 @@ DEPEND="${COMMON_DEPEND} ) " +depend_clang_llvm_version() { + echo "sys-devel/clang:$1" + echo "sys-devel/llvm:$1" + echo "=sys-devel/lld-$1*" +} + +# When passed multiple arguments we assume that +# we want a range of versions, inclusive. +depend_clang_llvm_versions() { + local _v + if [[ $# -eq 1 ]]; then + depend_clang_llvm_version "$1" + elif [[ $# -eq 2 ]]; then + if [[ $1 -eq $2 ]]; then + depend_clang_llvm_version "$1" + fi + echo "|| (" + for ((i=$1; i<=$2; i++)); do + echo "(" + depend_clang_llvm_version "${i}" + echo ")" + done + echo ")" + else + die "depend_clang_llvm_versions() requires 1 or 2 arguments" + fi +} + BDEPEND=" ${COMMON_SNAPSHOT_DEPEND} ${PYTHON_DEPS} @@ -192,18 +240,14 @@ BDEPEND=" qt6? ( dev-qt/qtbase:6 ) ) system-toolchain? ( - $(llvm_gen_dep ' - sys-devel/clang:${LLVM_SLOT} - sys-devel/llvm:${LLVM_SLOT} - sys-devel/lld:${LLVM_SLOT} - virtual/rust:0/llvm-${LLVM_SLOT}[profiler(-)] - pgo? ( sys-libs/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) - ') + libcxx? ( >=sys-devel/clang-${LLVM_MIN_SLOT} ) + lto? ( $(depend_clang_llvm_versions ${LLVM_MIN_SLOT} ${LLVM_MAX_SLOT}) ) pgo? ( >=dev-python/selenium-3.141.0 >=dev-util/web_page_replay_go-20220314 + $(depend_clang_llvm_versions ${LLVM_MIN_SLOT} ${LLVM_MAX_SLOT}) ) - dev-util/bindgen + >=virtual/rust-${RUST_MIN_VER}[profiler(-)] ) >=dev-build/gn-${GN_MIN_VER} dev-build/ninja @@ -216,6 +260,17 @@ BDEPEND=" virtual/pkgconfig " +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+="system-toolchain? ( >=sys-devel/clang-${LLVM_MIN_SLOT} ) " +fi + +if [[ ${CHROMIUM_FORCE_LLD} == yes ]]; then + BDEPEND+="system-toolchain? ( >=sys-devel/lld-${LLVM_MIN_SLOT} ) " +else + # #918897: Hack for arm64 + BDEPEND+=" arm64? ( >=sys-devel/lld-${LLVM_MIN_SLOT} )" +fi + if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; fi @@ -253,6 +308,30 @@ python_check_deps() { python_has_version "dev-python/setuptools[${PYTHON_USEDEP}]" } +needs_clang() { + [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || use libcxx || use lto || use pgo +} + +needs_lld() { + # #641556: Force lld for lto and pgo builds, otherwise disable + # #918897: Temporary hack w/ use arm64 + [[ ${CHROMIUM_FORCE_LLD} == yes ]] || use lto || use pgo || use arm64 +} + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ( use lto || use pgo ) && ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then + einfo "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + pre_build_checks() { # Check build requirements: bugs #471810, #541816, #914220 # We're going to start doing maths here on the size of an unpacked source tarball, @@ -295,31 +374,34 @@ pkg_pretend() { } pkg_setup() { - ewarn "PATH = ${PATH}" 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 if use system-toolchain; then - # The linux:unbundle toolchain in GN grabs CC, CXX, CPP (etc) from the environment - # We'll set these to clang here then let llvm-r1_pkg_setup reconfigure them to be - # specific to the selected slot. - # 935689 - call llvm-r1_pkg_setup once to make sure that PATH is set then again - # to make sure that CC and friends get updated appropriately. - llvm-r1_pkg_setup - AR=llvm-ar - CPP="${CHOST}-clang++ -E" - NM=llvm-nm - CC=${CHOST}-clang - CXX=${CHOST}-clang++ - - if tc-is-cross-compiler; then - use pgo && die "The pgo USE flag cannot be used when cross-compiling" - CPP="${CBUILD}-clang++ -E" + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge ${GCC_MIN_VER}; then + die "At least gcc ${GCC_MIN_VER} is required" + fi + if use pgo && tc-is-cross-compiler; then + die "The pgo USE flag cannot be used when cross-compiling" + fi + if needs_clang && ! tc-is-clang; then + if tc-is-cross-compiler; then + CPP="${CBUILD}-clang++ -E" + else + CPP="${CHOST}-clang++ -E" + fi + fi + if needs_clang || tc-is-clang; then + if ver_test "$(clang-major-version)" -lt ${LLVM_MIN_SLOT}; then + die "At least Clang ${LLVM_MIN_SLOT} is required" + fi + # Ideally we never see this, but it should help prevent bugs like 927154 + if ver_test "$(clang-major-version)" -gt ${LLVM_MAX_SLOT}; then + die "Clang $(clang-major-version) is too new; ${LLVM_MAX_SLOT} is the highest supported version" + fi fi - - llvm-r1_pkg_setup - fi # Users should never hit this, it's purely a development convenience if ver_test $(gn --version || die) -lt ${GN_MIN_VER}; then @@ -330,30 +412,6 @@ pkg_setup() { chromium_suid_sandbox_check_kernel_config } -src_unpack() { - # In 126 Chromium upstream decided to change the way that the rust toolchain is packaged - # so now we get a fancy src_unpack function to ensure that we don't accidentally unpack - # one toolchain over the other. The addtional control over over unpacking also helps us - # ensure that GN doesn't try and use some bundled tool (like bindgen) instead of the system - # package by just not unpacking it unless we're using the bundled toolchain. - unpack ${P}.tar.xz - if use system-toolchain; then - unpack chromium-patches-${PATCH_V}.tar.bz2 - else - unpack chromium-${PV%%\.*}-clang.tar.xz - local rust_dir="${WORKDIR}/rust-toolchain" - mkdir -p ${rust_dir} || die "Failed to create rust toolchain directory" - tar xf "${DISTDIR}/chromium-${PV%%\.*}-rust.tar.xz" -C ${rust_dir} || die "Failed to unpack rust toolchain" - fi - - use pgo && unpack chromium-profiler-0.2.tar - - if use ppc64; then - unpack chromium_${PATCHSET_PPC64}.debian.tar.xz - unpack chromium-ppc64le-gentoo-patches-1.tar.xz - fi -} - src_prepare() { # Calling this here supports resumption via FEATURES=keepwork python_setup @@ -364,20 +422,13 @@ src_prepare() { "chrome/browser/media/router/media_router_feature.cc" || die local PATCHES=( - "${FILESDIR}/chromium-cross-compile.patch" "${FILESDIR}/chromium-109-system-zlib.patch" "${FILESDIR}/chromium-111-InkDropHost-crash.patch" + "${FILESDIR}/chromium-125-system-zstd.patch" "${FILESDIR}/chromium-126-oauth2-client-switches.patch" - "${FILESDIR}/chromium-127-browser-ui-deps.patch" - "${FILESDIR}/chromium-127-bindgen-custom-toolchain.patch" + "${FILESDIR}/chromium-cross-compile.patch" ) - # 127: test deps are broken for ui/lens with system ICU "//third_party/icu:icuuc_public" - sed -i '/source_set("unit_tests") {/,/}/d' \ - chrome/browser/ui/lens/BUILD.gn || die "Failed to remove bad test target" - sed -i '/lens:unit_tests/d' chrome/test/BUILD.gn components/BUILD.gn \ - || die "Failed to remove dependencies on bad target" - if use system-toolchain; then # The patchset is really only required if we're using the system-toolchain PATCHES+=( "${WORKDIR}/chromium-patches-${PATCH_V}" ) @@ -409,7 +460,7 @@ src_prepare() { default - rm third_party/node/linux/node-linux-x64/bin/node || die + mkdir -p third_party/node/linux/node-linux-x64/bin || die ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die # adjust python interpreter version @@ -422,6 +473,7 @@ src_prepare() { base/third_party/nspr base/third_party/superfasthash base/third_party/symbolize + base/third_party/valgrind base/third_party/xdg_user_dirs buildtools/third_party/libc++ buildtools/third_party/libc++abi @@ -440,8 +492,8 @@ src_prepare() { third_party/anonymous_tokens third_party/apple_apsl third_party/axe-core - third_party/bidimapper third_party/blink + third_party/bidimapper third_party/boringssl third_party/boringssl/src/third_party/fiat third_party/breakpad @@ -466,7 +518,6 @@ src_prepare() { 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 @@ -498,7 +549,6 @@ src_prepare() { 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/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 @@ -513,12 +563,15 @@ src_prepare() { third_party/freetype third_party/fusejs third_party/fxdiv + third_party/highway + third_party/liburlpattern + third_party/libzip + third_party/lit 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/iccjpeg third_party/inspector_protocol @@ -536,7 +589,6 @@ src_prepare() { third_party/libaom/source/libaom/third_party/vector third_party/libaom/source/libaom/third_party/x86inc third_party/libavif - third_party/libc++ third_party/libevent third_party/libgav1 third_party/libjingle @@ -545,7 +597,6 @@ src_prepare() { third_party/libsrtp third_party/libsync third_party/libudev - third_party/liburlpattern third_party/libva_protected_content third_party/libvpx third_party/libvpx/source/libvpx/third_party/x86inc @@ -554,12 +605,13 @@ src_prepare() { third_party/libxcb-keysyms third_party/libxml/chromium third_party/libyuv - third_party/libzip - third_party/lit third_party/lottie third_party/lss third_party/lzma_sdk third_party/mako + third_party/maldoca + third_party/maldoca/src/third_party/tensorflow_protos + third_party/maldoca/src/third_party/zlibwrapper third_party/markupsafe third_party/material_color_utilities third_party/mesa @@ -586,12 +638,11 @@ src_prepare() { 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/private_membership third_party/protobuf third_party/pthreadpool third_party/puffin @@ -601,7 +652,6 @@ src_prepare() { third_party/re2 third_party/rnnoise third_party/rust - third_party/ruy third_party/s2cellid third_party/securemessage third_party/selenium-atoms @@ -609,22 +659,19 @@ src_prepare() { third_party/sentencepiece/src/third_party/darts_clone third_party/shell-encryption 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/subzero 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 @@ -632,6 +679,8 @@ src_prepare() { 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/util + third_party/ruy + third_party/six third_party/ukey2 third_party/unrar third_party/utf @@ -653,12 +702,12 @@ src_prepare() { third_party/x11proto third_party/xcbproto third_party/xnnpack - third_party/zlib/google third_party/zxcvbn-cpp + third_party/zlib/google url/third_party/mozilla v8/src/third_party/siphash - v8/src/third_party/utf8-decoder v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder v8/third_party/glibc v8/third_party/inspector_protocol v8/third_party/v8 @@ -686,6 +735,10 @@ src_prepare() { keeplibs+=( third_party/zstd ) fi + if use libcxx || [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libc++ ) + fi + if ! use system-toolchain || [[ ${CHROMIUM_FORCE_GOOGLE_TOOLCHAIN} == yes ]]; then keeplibs+=( third_party/llvm ) fi @@ -740,26 +793,53 @@ chromium_configure() { local myconf_gn="" - # We already forced the correct clang via {llvm-r1_}pkg_setup - if use system-toolchain; then - 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} + if use system-toolchain && [[ ${CHROMIUM_FORCE_GOOGLE_TOOLCHAIN} == no ]]; then + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if needs_clang && ! tc-is-clang; then + # Force clang since gcc is either broken or build is using libcxx. + if tc-is-cross-compiler; then + CC="${CBUILD}-clang -target ${CHOST} --sysroot ${ESYSROOT}" + CXX="${CBUILD}-clang++ -target ${CHOST} --sysroot ${ESYSROOT}" + BUILD_CC=${CBUILD}-clang + BUILD_CXX=${CBUILD}-clang++ + else + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + fi + strip-unsupported-flags fi - strip-unsupported-flags + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + # Workaround for build failure with clang-18 and -march=native without + # avx512. Does not affect e.g. -march=skylake, only native (bug #931623). + use amd64 && is-flagq -march=native && + [[ $(clang-major-version) -eq 18 ]] && [[ $(clang-minor-version) -lt 6 ]] && + tc-cpp-is-true "!defined(__AVX512F__)" ${CXXFLAGS} && + append-flags -mevex512 + else + myconf_gn+=" is_clang=false" + fi - 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" + if needs_lld ; then + # https://bugs.gentoo.org/918897#c32 + append-ldflags -Wl,--undefined-version + myconf_gn+=" use_lld=true" + else + # This doesn't prevent lld from being used, but rather prevents gn from forcing it + myconf_gn+=" use_lld=false" + fi - # Make sure the build system will use the right tools, bug #340795. - tc-export AR CC CXX NM + if use lto; then + AR=llvm-ar + NM=llvm-nm + if tc-is-cross-compiler; then + BUILD_AR=llvm-ar + BUILD_NM=llvm-nm + fi + fi myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" @@ -783,17 +863,6 @@ chromium_configure() { 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}/\"" - local rustc_ver rustc_ver=$(chromium_rust_version_check) if ver_test "${rustc_ver}" -lt "${RUST_MIN_VER}"; then @@ -892,13 +961,20 @@ chromium_configure() { # Chromium builds provided by Linux distros) should disable the testing config myconf_gn+=" disable_fieldtrial_testing_config=true" + if use system-toolchain; then + myconf_gn+=" use_gold=false" + fi + # 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" + # This determines whether or not GN uses the bundled libcxx + # default: true + if use libcxx || [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + myconf_gn+=" use_custom_libcxx=true" + else + myconf_gn+=" use_custom_libcxx=false" + fi # Disable pseudolocales, only used for testing myconf_gn+=" enable_pseudolocales=false" @@ -946,6 +1022,13 @@ chromium_configure() { 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 + + if tc-is-gcc; then + # https://bugs.gentoo.org/904455 + local -x CPP="$(tc-getCXX) -E" + # https://bugs.gentoo.org/912381 + filter-lto + fi fi if [[ $myarch = amd64 ]] ; then @@ -961,7 +1044,11 @@ chromium_configure() { die "Failed to determine target arch, got '$myarch'." fi + # Make sure that -Werror doesn't get added to CFLAGS by the build system. + # Depending on GCC version the warnings are different and we don't want + # the build to fail because of that. myconf_gn+=" treat_warnings_as_errors=false" + # Disable fatal linker warnings, bug 506268. myconf_gn+=" fatal_linker_warnings=false" @@ -983,12 +1070,13 @@ chromium_configure() { # 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 + # Disable unknown warning message from clang. + if tc-is-clang; then + append-flags -Wno-unknown-warning-option + if tc-is-cross-compiler; then export BUILD_CXXFLAGS+=" -Wno-unknown-warning-option" export BUILD_CFLAGS+=" -Wno-unknown-warning-option" + fi fi # Explicitly disable ICU data file support for system-icu/headless builds. @@ -1057,7 +1145,7 @@ chromium_configure() { # 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 - # Req's LTO; handled by REQUIRED_USE - TODO: not compatible with -fno-split-lto-unit + # Disable CFI: unsupported for GCC, requires clang+lto+lld myconf_gn+=" is_cfi=false" # Don't add symbols to build myconf_gn+=" symbol_level=0" @@ -1073,6 +1161,12 @@ chromium_configure() { myconf_gn+=" chrome_pgo_phase=0" fi + # user CXXFLAGS might overwrite -march=armv8-a+crc+crypto, bug #851639 + if use arm64 && tc-is-gcc; then + sed -i '/^#if HAVE_ARM64_CRC32C/a #pragma GCC target ("+crc+crypto")' \ + third_party/crc32c/src/src/crc32c_arm64.cc || die + fi + # skipping typecheck is only supported on amd64, bug #876157 if ! use amd64; then myconf_gn+=" devtools_skip_typecheck=false" |