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>

Reply via email to