commit: 7ff169bdc30a9650314071512f226ecf86fb2726 Author: Marek BehĂșn <kabel <AT> kernel <DOT> org> AuthorDate: Sun May 22 10:03:22 2022 +0000 Commit: Stephan Hartmann <sultan <AT> gentoo <DOT> org> CommitDate: Sun May 22 11:24:43 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7ff169bd
www-client/chromium: dev channel bump to 103.0.5060.13 Bump chromium's dev channel to 103.0.5060.13. The new ebuild also adds support for compiling with Link Time Optimizations via clang's ThinLTO, which can be enabled with lto USE flag. Signed-off-by: Marek BehĂșn <kabel <AT> kernel.org> Closes: https://github.com/gentoo/gentoo/pull/25594 Signed-off-by: Stephan Hartmann <sultan <AT> gentoo.org> www-client/chromium/Manifest | 4 +- ...5056.0.ebuild => chromium-103.0.5060.13.ebuild} | 89 ++++++++++++++++++---- www-client/chromium/metadata.xml | 1 + 3 files changed, 77 insertions(+), 17 deletions(-) diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest index 7e0eed72fa25..c69443228840 100644 --- a/www-client/chromium/Manifest +++ b/www-client/chromium/Manifest @@ -2,5 +2,5 @@ DIST chromium-101-patchset-4.tar.xz 3644 BLAKE2B 537be42d078338afc46fb8f358afecf DIST chromium-101.0.4951.64.tar.xz 1414917528 BLAKE2B 6ac1855f8a1153bd3c074edb54c1772b9c7453b8ccc5c844d27e4b649c4e8c12cd8cdd06d1a432370eebebd8d5453781f9aa4cd721ea5422d1f8aa8e7f5e90e6 SHA512 ca1ba0994c75eda67f37a9e8333beb595b237b7266503cca4c259c48b8687214b35703fdda0d6cfd2c7bbdce0b66d68cede3bc22581453f035a173caf7d4985f DIST chromium-102-patchset-6.tar.xz 4780 BLAKE2B c59d23779fd769176e1cd92884dd259e5d37aaff746f7d72274e784f6467940226adea1a1f3921b0c49e402fa320b99a8ea995a3e1ffe881d7a8146aeb2b95e5 SHA512 dbed8e41cb7d2a0f9dd9be9a10b162e2258f016a23340c2ff0de9d73ef067342e63e77bd295e28d1e37fdead5ee52890e6ad143023225bfaff4c4c4a840b4619 DIST chromium-102.0.5005.61.tar.xz 1433350708 BLAKE2B 7130b2c9dbc67783499003fd98f95e050bac3580e9dd6c9f4fee320e9eed876cd8c3ec29d9e9f23c78c159b1b622fbe0511750baeb6f8117f176612e1571747f SHA512 4b5d48debafef0a38105e259f97eac6e25eae1147ce67e357c3ce1e8e7700950af63117ff104b71cfbdfcaa0b31925d1b686ab1be6c52b32dad819c7e38f1846 -DIST chromium-103-patchset-3.tar.xz 7196 BLAKE2B 7dfa42af32ac3b60c5a9984948287e23fbbb8c2d7fe181a78a92dc08f71f0364079ccb07f96380777afe54f292503c9f7e41bcb8e90e734cc91199023b2426b2 SHA512 04ee1dbd9d0c998f4773edf98dce6a0b4d77186c19328504b4f882b35d2642bf902d2c11dbc8716c85e87c4d15a866202ae323ec3352041697a3cc9a905e8259 -DIST chromium-103.0.5056.0.tar.xz 1441680556 BLAKE2B 4504895157f69885a6a4a8cb0e597165c367fbb525c0c3d73681d50c07731e3779675edd98016bbb6f3b123820925c980946b490dd94a4960236b1716d7c2776 SHA512 66cd71b0620480384cc4d909d59fe9b1d72f6677e27c34af0f8e4cfe3657bf982b8292cea1e01dd4cbd2b43ed0b5929e9c2e856ef23ca5ac407dc7dffc6e4cda +DIST chromium-103-patchset-4.tar.xz 7220 BLAKE2B 3dc9670be01d4bbfd24e8d305ea72e6bd911062a9a012c7548fca76ec34998b54ff31ef0118be5db9fdde3839365103cb06b29ff2ab167ad4313b4b64cba3a63 SHA512 54fb3600bb42ffcd6168f9741432879877bb5d206c11b3874249faaaff13288bffd4e7336f055c0c619efba02aa694de6abde394a6964c0ff6b33d9e3aed1691 +DIST chromium-103.0.5060.13.tar.xz 1441907448 BLAKE2B a3ba950e962658c598a98355f7bdef417a209e68a818bcd957ee45af019652c4806c854fb96dc4c3eac47dc442443ea9a7570f5fcdd52aa4537e7c024145e09e SHA512 dbb2b8309772e120e7edd6ca4b33a9bf1a6f52b5935384388c172c4a07a57ec832dd621b3782b96758d536d22a805cf641d02756433d8412e80ea6fdba2fe3ce diff --git a/www-client/chromium/chromium-103.0.5056.0.ebuild b/www-client/chromium/chromium-103.0.5060.13.ebuild similarity index 94% rename from www-client/chromium/chromium-103.0.5056.0.ebuild rename to www-client/chromium/chromium-103.0.5060.13.ebuild index eeb6f7abb8f7..2887036ff17e 100644 --- a/www-client/chromium/chromium-103.0.5056.0.ebuild +++ b/www-client/chromium/chromium-103.0.5060.13.ebuild @@ -4,16 +4,17 @@ EAPI=8 PYTHON_COMPAT=( python3_{8..10} ) PYTHON_REQ_USE="xml" +LLVM_MAX_SLOT=14 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" -inherit check-reqs chromium-2 desktop flag-o-matic ninja-utils pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils +inherit check-reqs chromium-2 desktop flag-o-matic llvm ninja-utils pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils DESCRIPTION="Open-source version of Google Chrome web browser" HOMEPAGE="https://chromium.org/" -PATCHSET="3" +PATCHSET="4" PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}" SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz" @@ -21,7 +22,7 @@ SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P} LICENSE="BSD" SLOT="0/dev" KEYWORDS="~amd64 ~arm64 ~x86" -IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless +js-type-check kerberos libcxx +official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine" +IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless +js-type-check kerberos libcxx lto +official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine" REQUIRED_USE=" component-build? ( !suid !libcxx ) screencast? ( wayland ) @@ -123,6 +124,28 @@ DEPEND="${COMMON_DEPEND} !gtk4? ( x11-libs/gtk+:3[X?,wayland?] ) ) " + +depend_clang_llvm_version() { + echo "sys-devel/clang:$1" + echo "sys-devel/llvm:$1" + echo "=sys-devel/lld-$1*" +} + +depend_clang_llvm_versions() { + local _v + if [[ $# -gt 1 ]]; then + echo "|| (" + for _v in "$@"; do + echo "(" + depend_clang_llvm_version "${_v}" + echo ")" + done + echo ")" + elif [[ $# -eq 1 ]]; then + depend_clang_llvm_version "$1" + fi +} + BDEPEND=" ${COMMON_SNAPSHOT_DEPEND} ${PYTHON_DEPS} @@ -131,6 +154,7 @@ BDEPEND=" ') >=app-arch/gzip-1.7 libcxx? ( >=sys-devel/clang-12 ) + lto? ( $(depend_clang_llvm_versions 12 13 14) ) dev-lang/perl >=dev-util/gn-0.1807 >=dev-util/gperf-3.0.3 @@ -187,13 +211,35 @@ python_check_deps() { has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]" } +needs_clang() { + [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || use libcxx || use lto +} + +llvm_check_deps() { + if needs_clang; then + 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 && ! 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 + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + pre_build_checks() { if [[ ${MERGE_TYPE} != binary ]]; then + use lto && llvm_pkg_setup + local -x CPP="$(tc-getCXX) -E" if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then die "At least gcc 9.2 is required" fi - if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang || use libcxx; then + if needs_clang || tc-is-clang; then tc-is-cross-compiler && CPP=${CBUILD}-clang++ || CPP=${CHOST}-clang++ CPP+=" -E" if ! ver_test "$(clang-major-version)" -ge 12; then @@ -206,6 +252,11 @@ pre_build_checks() { CHECKREQS_MEMORY="4G" CHECKREQS_DISK_BUILD="10G" tc-is-cross-compiler && CHECKREQS_DISK_BUILD="13G" + if use lto; then + CHECKREQS_MEMORY="9G" + CHECKREQS_DISK_BUILD="12G" + tc-is-cross-compiler && CHECKREQS_DISK_BUILD="15G" + fi if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then if use custom-cflags || use component-build; then CHECKREQS_DISK_BUILD="25G" @@ -259,11 +310,6 @@ src_prepare() { 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 - # only required to fulfill gn dependencies - touch third_party/blink/tools/merge_web_test_results.pydeps || die - mkdir -p third_party/blink/tools/blinkpy/web_tests || die - touch third_party/blink/tools/blinkpy/web_tests/merge_results.pydeps || die - # adjust python interpreter version sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die @@ -567,7 +613,7 @@ src_configure() { # Make sure the build system will use the right tools, bug #340795. tc-export AR CC CXX NM - if { [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || use libcxx; } && ! tc-is-clang; then + 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}" @@ -581,12 +627,27 @@ src_configure() { strip-unsupported-flags fi - if tc-is-clang || use libcxx; then + if tc-is-clang; then myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" else myconf_gn+=" is_clang=false" fi + if use lto; then + myconf_gn+=" use_lld=true" + else + myconf_gn+=" use_lld=false" + fi + + 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 + # Define a custom toolchain for GN myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" @@ -697,9 +758,6 @@ src_configure() { myconf_gn+=" use_gold=false use_sysroot=false" myconf_gn+=" use_custom_libcxx=$(usex libcxx true false)" - # Disable forced lld, bug 641556 - myconf_gn+=" use_lld=false" - # Disable pseudolocales, only used for testing myconf_gn+=" enable_pseudolocales=false" @@ -850,7 +908,8 @@ src_configure() { # Enable official builds myconf_gn+=" is_official_build=$(usex official true false)" - myconf_gn+=" use_thin_lto=false" + myconf_gn+=" use_thin_lto=$(usex lto true false)" + myconf_gn+=" thin_lto_enable_optimizations=$(usex lto true false)" if use official; then # Allow building against system libraries in official builds sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ diff --git a/www-client/chromium/metadata.xml b/www-client/chromium/metadata.xml index b97df5c6f029..d941cc3a7e28 100644 --- a/www-client/chromium/metadata.xml +++ b/www-client/chromium/metadata.xml @@ -13,6 +13,7 @@ <flag name="headless">Build Ozone only with headless backend, NOT RECOMMENDED for general use.</flag> <flag name="hangouts">Enable support for Google Hangouts features such as screen sharing</flag> <flag name="libcxx">Use bundled libc++ instead of libstdc++ for building.</flag> + <flag name="lto">Build with Link Time Optimizations (via clang's ThinLTO)</flag> <flag name="official">Enable Official build instead of Developer build.</flag> <flag name="pic">Disable optimized assembly code that is not PIC friendly</flag> <flag name="proprietary-codecs">Enable codecs for patent-encumbered audio and video formats.</flag>
