• [gentoo-dev] [PATCH 00/10] new eclass: rust; slotting dev-lang/rust{-bi

    From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:01 2024
    From: Matt Jolly <kangie@gentoo.org>

    This patchset slots Rust, adds `rust.eclass`, a helper eclass for slotted Rust, and updates `cargo.eclass` to take advantage of the new slotted Rust, requiring a
    revbump of dependent packages.

    The intent is to immediately deprecate and shortly remove legacy Rust slots
    and the virtual package which do nothing but inflict pain on developers and users.

    There are several example ebuilds using the new eclass attached.

    These patches, along with a mega-commit containing required revbumps for
    every cargo.eclass ebuild (a vast majority of the rust ecosystem) are
    also available for comment as a PR. The intent is to merge the PR when
    all cargo eclass packages have been revbumped and tested and the eclass
    has been reviewed.

    https://github.com/gentoo/gentoo/pull/39218

    I'm about 100 cargo eclass ebuilds deep at this point. Please do not
    merge anything that uses the Cargo eclass (or any new Rust packages,
    really) until this is (hopefully) merged in a few days.

    Some example ebuilds have been included to demonstrate usage of
    the eclass for anything more complex than just `inherit rust`.

    Please let me know if you have any concerns or feedback and I'll address
    them promptly.

    Cheers,

    Matt

    Matt Jolly (10):
    rust.eclass: Introduce new eclass for slotted Rust
    cargo: update for rust eclass
    dev-lang/rust: port to llvm-r1 and slot (-r100)
    profiles/arch/mips: use.mask system-llvm on rust-1.71.1-r100
    dev-lang/rust-bin: llvm-r1 and slot (-r100)
    dev-lang/rust{,-bin}: -r100: Drop the `profiler` USE.
    www-client/chromium: example chromium with slotted rust
    www-client/firefox: add 132.0-r1 - rust and llvm-r1 eclasses
    gnome-base/librsvg: rust eclass
    net-libs/rustls-ffi: rust slot

    dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild | 233 +++
    dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild | 243 +++
    dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild | 243 +++
    dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild | 245 +++
    dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild | 248 +++
    dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild | 252 +++
    dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild | 249 +++
    dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild | 250 +++
    dev-lang/rust-common/Manifest | 4 +
    .../rust-common/rust-common-1.81.0.ebuild | 42 +
    .../rust-common/rust-common-1.82.0.ebuild | 42 +
    dev-lang/rust/rust-1.71.1-r100.ebuild | 726 +++++++++
    dev-lang/rust/rust-1.74.1-r100.ebuild | 762 +++++++++
    dev-lang/rust/rust-1.75.0-r100.ebuild | 765 +++++++++
    dev-lang/rust/rust-1.77.1-r100.ebuild | 764 +++++++++
    dev-lang/rust/rust-1.79.0-r100.ebuild | 767 +++++++++
    dev-lang/rust/rust-1.80.1-r100.ebuild | 765 +++++++++
    dev-lang/rust/rust-1.81.0-r100.ebuild | 766 +++++++++
    dev-lang/rust/rust-1.82.0-r100.ebuild | 773 +++++++++
    eclass/cargo.eclass | 46 +-
    eclass/rust.eclass | 480 ++++++
    gnome-base/librsvg/librsvg-2.58.2-r1.ebuild | 421 +++++
    .../rustls-ffi/rustls-ffi-0.13.0-r1.ebuild | 107 ++
    profiles/arch/mips/package.use.mask | 4 +
    .../chromium/chromium-130.0.6723.91-r1.ebuild | 1387 +++++++++++++++++
    www-client/firefox/firefox-132.0-r1.ebuild | 1341 ++++++++++++++++
    26 files changed, 11912 insertions(+), 13 deletions(-)
    create mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild
    create mode 100644 dev-lang/rust-common/Manifest
    create mode 100644 dev-lang/rust-common/rust-common-1.81.0.ebuild
    create mode 100644 dev-lang/rust-common/rust-common-1.82.0.ebuild
    create mode 100644 dev-lang/rust/rust-1.71.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.74.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.75.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.77.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.79.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.80.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.81.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.82.0-r100.ebuild
    create mode 100644 eclass/rust.eclass
    create mode 100644 gnome-base/librsvg/librsvg-2.58.2-r1.ebuild
    create mode 100644 net-libs/rustls-ffi/rustls-ffi-0.13.0-r1.ebuild
    create mode 100644 www-client/chromium/chromium-130.0.6723.91-r1.ebuild
    create mode 100644 www-client/firefox/firefox-132.0-r1.ebuild

    --
    2.47.0

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:02 2024
    From: Matt Jolly <kangie@gentoo.org>

    Inherit the rust eclass and take advantage of eclass features like `RUST_MIN_VER`.

    Also replace calls to `cargo` with the rust eclass exported ${CARGO}.

    If used without llvm-r1 (typical usage) an || dependency on Rust
    slots (between `RUST_M{AX,IN}_VER` if set) will be added.

    If intending to use with llvm-r1 for a tight dependency, set
    `RUST_NEEDS_LLVM` to automatically add a `llvm_slot_X` USE gated
    Rust dependency for each slot in LLVM_COMPAT to BDEPEND.
    This respects `RUST_M{AX,IN}_VER`.

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    eclass/cargo.eclass | 46 ++++++++++++++++++++++++++++++++-------------
    1 file changed, 33 insertions(+), 13 deletions(-)

    diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
    index 499fe5498c96..c74c2b29045c 100644
    --- a/eclass/cargo.eclass
    +++ b/eclass/cargo.eclass
    @@ -8,6 +8,7 @@
    # Doug Goldstein <cardoe@gentoo.org>
    # Georgy Yakovlev <gyakovlev@gentoo.org>
    # @SUPPORTED_EAPIS: 8
    +# @PROVIDES: rust
    # @BLURB: common functions and variables for cargo builds

    case ${EAPI} in
    @@ -18,23 +19,39 @@ esac
    if [[ -z ${_CARGO_ECLASS} ]]; then
    _CARGO_ECLASS=1

    -# check and document RUST_DEPEND and options we need below in case conditions. +if [[ -n ${RUST_NEEDS_LLVM} ]]; then
    + if [[ -z ${_LLVM_R1_ECLASS} ]]; then
    + die "Please inherit llvm-r1.eclass before cargo.eclass when using RUST_NEEDS_LLVM"
    + fi
    +fi
    +
    +# Either the lowest slot supported by rust.eclass _or_
    +# reference the changelog for a particular feature requirement
    # https://github.com/rust-lang/cargo/blob/master/CH
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:02 2024
    From: Matt Jolly <kangie@gentoo.org>

    The rust eclass acts similarly to the llvm eclass.

    It works with optional `RUST_{MAX,MIN}_SLOT` variables to
    enable ebuilds to trivially generate (and enforce) dependencies
    on an appropriate Rust SLOT.

    A `RUST_NEEDS_LLVM` variable can be set to have the eclass read
    `LLVM_COMPAT` and generate an llvm-r1-USE-gated dependency string
    for use in the ebuild, storing the result in `RUST_LLVM_DEP` for
    consumption. `llvm_gen_dep` is not suitable; see the eclass for
    detail on why a `rust_llvm_gen_dep` was not implemented.

    The default `rust_pkg_setup` will prefix the selected slot to
    `PATH` and export `RUSTC` and `CARGO` variables pointing to that
    slot for ease-of-use.

    This should prevent issues like:

    Bug: https://bugs.gentoo.org/907492
    Bug: https://bugs.gentoo.org/942444
    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    eclass/rust.eclass | 480 +++++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 480 insertions(+)
    create mode 100644 eclass/rust.eclass

    diff --git a/eclass/rust.eclass b/eclass/rust.eclass
    new file mode 100644
    index 000000000000..bf9c47cd7f4b
    --- /dev/null
    +++ b/eclass/rust.eclass
    @@ -0,0 +1,480 @@
    +# Copyright 1999-2024 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: rust.eclass
    +# @MAINTAINER:
    +# Matt Jolly <kangie@gentoo.org>
    +# @AUTHOR:
    +# Matt Jolly <kangie@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @BLURB: Utility functions to build against slotted Rust
    +# @DESCRIPTION:
    +# An eclass to reliably depend on a Rust or Rust/LLVM combination for
    +# a given Rust slot. To use the eclass:
    +#
    +# 1. If required, set RUST_{MAX,MIN}_SLOT to the range of supported slots.
    +# 2. Use rust_gen_deps to add appropriate dependencies. (rust_gen_llvm_deps for LLVM)
    +# 3. Use rust_pkg_setup, get_rust_prefix or RUST_SLOT.
    +
    +# Example use fo
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:02 2024
    From: Matt Jolly <kangie@gentoo.org>

    This requires a version of LLVM that is not keyworded for mips.

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    profiles/arch/mips/package.use.mask | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/profiles/arch/mips/package.use.mask b/profiles/arch/mips/package.use.mask
    index fa77510aa188..9dffa1399424 100644
    --- a/profiles/arch/mips/package.use.mask
    +++ b/profiles/arch/mips/package.use.mask
    @@ -1,6 +1,10 @@
    # Copyright 1999-2024 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    +# Matt Jolly <kangie@gentoo.org> (2024-11-03)
    +# Requires llvm 16 which is not keyworded
    +=dev-lang/rust-1.71.1-r100 system-llvm
    +
    # Felix Janda <felix.janda@posteo.de> (2024-10-20)
    # requires dev-libs/libcss and net-libs/libdom to be keyworded
    www-client/elinks libcss
    --
    2.47.0

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:02 2024
    From: Matt Jolly <kangie@gentoo.org>

    We're the ones deviating from the norm. Including the profiler does not noticably increase the build time (at least on amd64), nor does it
    pull in additional dependencies.

    What it _does_ do is break upstream build systems that assume
    a standard rust configuration like upstream would ship (i.e. with
    profiler). This is particularly challenging as -bin (obviously)
    does not have this problem.

    Closes: https://bugs.gentoo.org/941146
    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild | 5 ++++-
    dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild | 5 ++++-
    dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild | 5 ++++-
    dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild | 16 ++++++++--------
    dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild | 16 ++++++++--------
    dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild | 17 ++++++++---------
    dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild | 4 +++-
    dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild | 3 ++-
    dev-lang/rust/rust-1.71.1-r100.ebuild | 13 +++++--------
    dev-lang/rust/rust-1.74.1-r100.ebuild | 13 +++++--------
    dev-lang/rust/rust-1.75.0-r100.ebuild | 13 +++++--------
    dev-lang/rust/rust-1.77.1-r100.ebuild | 13 +++++--------
    dev-lang/rust/rust-1.79.0-r100.ebuild | 13 +++++--------
    dev-lang/rust/rust-1.80.1-r100.ebuild | 11 ++++-------
    dev-lang/rust/rust-1.81.0-r100.ebuild | 4 ++--
    dev-lang/rust/rust-1.82.0-r100.ebuild | 4 ++--
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:04 2024
    From: Matt Jolly <kangie@gentoo.org>

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    gnome-base/librsvg/librsvg-2.58.2-r1.ebuild | 421 ++++++++++++++++++++
    1 file changed, 421 insertions(+)
    create mode 100644 gnome-base/librsvg/librsvg-2.58.2-r1.ebuild

    diff --git a/gnome-base/librsvg/librsvg-2.58.2-r1.ebuild b/gnome-base/librsvg/librsvg-2.58.2-r1.ebuild
    new file mode 100644
    index 000000000000..3668fbd0cdfe
    --- /dev/null
    +++ b/gnome-base/librsvg/librsvg-2.58.2-r1.ebuild
    @@ -0,0 +1,421 @@
    +# Copyright 1999-2024 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +EAPI=8
    +PYTHON_COMPAT=( python3_{10..13} )
    +
    +CRATES="
    + adler@1.0.2
    + aho-corasick@1.1.2
    + android-tzdata@0.1.1
    + android_system_properties@0.1.5
    + anes@0.1.6
    + anstream@0.6.11
    + anstyle-parse@0.2.3
    + anstyle-query@1.0.2
    + anstyle-wincon@3.0.2
    + anstyle@1.0.6
    + anyhow@1.0.79
    + approx@0.5.1
    + assert_cmd@2.0.13
    + autocfg@1.1.0
    + bit-set@0.5.3
    + bit-vec@0.6.3
    + bit_field@0.10.2
    + bitflags@1.3.2
    + bitflags@2.4.2
    + block@0.1.6
    + bstr@1.9.0
    + bumpalo@3.14.0
    + b
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:02 2024
    From: Matt Jolly <kangie@gentoo.org>

    Use the llvm-r1 eclass and our knowledge of the internal
    LLVM used in -bin to add an appropriate `llvm_slot_{x}`
    IUSE to each Rust-bin ebuild so that the Rust (and LLVM)
    eclasses can select an appropriate slotted implementation.

    `LLVM_OPTIONAL` is used as we don't need to consume LLVM,
    we really just want the free IUSE.

    Do some minor tidyup while touching _all_ of the ebuilds.

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild | 230 ++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild | 240 +++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild | 240 +++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild | 245 +++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild | 248 +++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild | 253 ++++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild | 247 +++++++++++++++++
    dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild | 249 +++++++++++++++++
    8 files changed, 1952 insertions(+)
    create mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild
    cr
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:04 2024
    From: Matt Jolly <kangie@gentoo.org>

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    .../chromium/chromium-130.0.6723.91-r1.ebuild | 1387 +++++++++++++++++
    1 file changed, 1387 insertions(+)
    create mode 100644 www-client/chromium/chromium-130.0.6723.91-r1.ebuild

    diff --git a/www-client/chromium/chromium-130.0.6723.91-r1.ebuild b/www-client/chromium/chromium-130.0.6723.91-r1.ebuild
    new file mode 100644
    index 000000000000..64ca7de51b11
    --- /dev/null
    +++ b/www-client/chromium/chromium-130.0.6723.91-r1.ebuild
    @@ -0,0 +1,1387 @@
    +# Copyright 2009-2024 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +EAPI=8
    +
    +# PACKAGING NOTES
    +
    +# This uses a gentoo-created tarball due to Google CI Failures.
    +# Use 132 as a base for new official tarballs.
    +
    +GN_MIN_VER=0.2165
    +# chromium-tools/get-chromium-toolchain-strings.py
    +
    +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 v
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:04 2024
    From: Matt Jolly <kangie@gentoo.org>

    Firefox is a bit unusual in that the LTO via the USE=clang path
    requires a strong dependency between the selected Rust and LLVM
    slots, while building with GCC (and without LTO) does not.

    Leverage llvm-r1 to add `llvm_slot_x` USE and use these to ensure
    that an appropriate Rust impl is always available. The Rust dependency
    is not gated by `clang?` so that if a user selects `llvm_slot_19`
    portage will attempt to pick an appraopriate Rust impl.

    This may pull LLVM in on a few more systems, but they likely had
    it anyway.

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    www-client/firefox/firefox-132.0-r1.ebuild | 1341 ++++++++++++++++++++
    1 file changed, 1341 insertions(+)
    create mode 100644 www-client/firefox/firefox-132.0-r1.ebuild

    diff --git a/www-client/firefox/firefox-132.0-r1.ebuild b/www-client/firefox/firefox-132.0-r1.ebuild
    new file mode 100644
    index 000000000000..6a8687fea3bb
    --- /dev/null
    +++ b/www-client/firefox/firefox-132.0-r1.ebuild
    @@ -0,0 +1,1341 @@
    +# Copyright 1999-2024 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +EAPI=8
    +
    +FIREFOX_PATCHSET="firefox-132-patches-01.tar.xz"
    +
    +LLVM_COMPAT=( 17 18 19 )
    +# This will also filter Rust versions in the non-llvm-r1 case, but this is fine.
    +RUST_NEEDS_LLVM=1
    +
    +PYTHON_COMPAT=( python3_{10..12} )
    +PYTHON_REQ_USE="ncurses,sqlite,ssl"
    +
    +WANT_AUTOCONF="2.1"
    +
    +VIRTUALX_REQUIRED="manual"
    +
    +MOZ_ESR=
    +
    +MOZ_PV=${PV}
    +MOZ_PV_SUFFIX=
    +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
    + MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
    +
    + # Convert the ebuil
  • From kangie@gentoo.org@21:1/5 to All on Wed Nov 6 12:30:03 2024
    From: Matt Jolly <kangie@gentoo.org>

    Port to llvm-r1 to gain the fancy new `llvm_slot_{x}` USE flags
    which we use in the rust eclass to force a closer dependency on
    specific LLVM slots.

    Since Rust in Gentoo is only ever built against the one LLVM slot
    we are able to simplify the LLVM logic in the Rust ebuilds and use
    our knowledge of the LLVM -> Rust version mapping to enable
    slots for dev-lang/rust in a usable manner.

    Since Rust is now slotted and not managed entirely by eselect-rust
    each slot needs to be added to LDPATH.

    This commit also introduces dev-lang/rust-common which handles bash
    completions for slotted Rust.

    Signed-off-by: Matt Jolly <kangie@gentoo.org>
    ---
    dev-lang/rust-common/Manifest | 4 +
    .../rust-common/rust-common-1.81.0.ebuild | 42 +
    .../rust-common/rust-common-1.82.0.ebuild | 42 +
    dev-lang/rust/rust-1.71.1-r100.ebuild | 729 +++++++++++++++++
    dev-lang/rust/rust-1.74.1-r100.ebuild | 765 +++++++++++++++++
    dev-lang/rust/rust-1.75.0-r100.ebuild | 768 +++++++++++++++++
    dev-lang/rust/rust-1.77.1-r100.ebuild | 767 +++++++++++++++++
    dev-lang/rust/rust-1.79.0-r100.ebuild | 770 +++++++++++++++++
    dev-lang/rust/rust-1.80.1-r100.ebuild | 768 +++++++++++++++++
    dev-lang/rust/rust-1.81.0-r100.ebuild | 766 +++++++++++++++++
    dev-lang/rust/rust-1.82.0-r100.ebuild | 773 ++++++++++++++++++
    11 files changed, 6194 insertions(+)
    create mode 100644 dev-lang/rust-common/Manifest
    create mode 100644 dev-lang/rust-common/rust-common-1.81.0.ebuild
    create mode 100644 dev-lang/rust-common/rust-common-1.82.0.ebuild
    create mode 100644 dev-lang/rust/rust-1.71.1-r1
  • From Sam James@21:1/5 to kangie@gentoo.org on Thu Nov 7 18:00:01 2024
    kangie@gentoo.org writes:

    From: Matt Jolly <kangie@gentoo.org>

    This patchset slots Rust, adds `rust.eclass`, a helper eclass for slotted Rust,
    and updates `cargo.eclass` to take advantage of the new slotted Rust, requiring a
    revbump of dependent packages.

    Thanks for doing this.

    As we've already discussed privately extensively as well as in
    #gentoo-rust and in part on the PR, I think it's fine to go in once I've
    done a few more passes to satisfy any nits, and all my comments have
    been addressed.

    I agree that the big-bang move is sort of necessary here (as regrettable
    as that may be) and we just need to be prepared to be on-call to handle
    any issues in the period after merging.


    The intent is to immediately deprecate and shortly remove legacy Rust slots and the virtual package which do nothing but inflict pain on developers and users.

    There are several example ebuilds using the new eclass attached.

    These patches, along with a mega-commit containing required revbumps for every cargo.eclass ebuild (a vast majority of the rust ecosystem) are
    also available for comment as a PR. The intent is to merge the PR when
    all cargo eclass packages have been revbumped and tested and the eclass
    has been reviewed.

    https://github.com/gentoo/gentoo/pull/39218

    I'm about 100 cargo eclass ebuilds deep at this point. Please do not
    merge anything that uses the Cargo eclass (or any new Rust packages,
    really) until this is (hopefully) merged in a few days.

    Some example ebuilds have been included to demonstrate usage of
    the eclass for anything more complex than just `inherit rust`.

    Please let me know if you have any concerns or feedback and I'll address
    them promptly.

    Cheers,

    Matt

    Matt Jolly (10):
    rust.eclass: Introduce new eclass for slotted Rust
    cargo: update for rust eclass
    dev-lang/rust: port to llvm-r1 and slot (-r100)
    profiles/arch/mips: use.mask system-llvm on rust-1.71.1-r100
    dev-lang/rust-bin: llvm-r1 and slot (-r100)
    dev-lang/rust{,-bin}: -r100: Drop the `profiler` USE.
    www-client/chromium: example chromium with slotted rust
    www-client/firefox: add 132.0-r1 - rust and llvm-r1 eclasses
    gnome-base/librsvg: rust eclass
    net-libs/rustls-ffi: rust slot

    dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild | 233 +++
    dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild | 243 +++
    dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild | 243 +++
    dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild | 245 +++
    dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild | 248 +++
    dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild | 252 +++
    dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild | 249 +++
    dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild | 250 +++
    dev-lang/rust-common/Manifest | 4 +
    .../rust-common/rust-common-1.81.0.ebuild | 42 +
    .../rust-common/rust-common-1.82.0.ebuild | 42 +
    dev-lang/rust/rust-1.71.1-r100.ebuild | 726 +++++++++
    dev-lang/rust/rust-1.74.1-r100.ebuild | 762 +++++++++
    dev-lang/rust/rust-1.75.0-r100.ebuild | 765 +++++++++
    dev-lang/rust/rust-1.77.1-r100.ebuild | 764 +++++++++
    dev-lang/rust/rust-1.79.0-r100.ebuild | 767 +++++++++
    dev-lang/rust/rust-1.80.1-r100.ebuild | 765 +++++++++
    dev-lang/rust/rust-1.81.0-r100.ebuild | 766 +++++++++
    dev-lang/rust/rust-1.82.0-r100.ebuild | 773 +++++++++
    eclass/cargo.eclass | 46 +-
    eclass/rust.eclass | 480 ++++++
    gnome-base/librsvg/librsvg-2.58.2-r1.ebuild | 421 +++++
    .../rustls-ffi/rustls-ffi-0.13.0-r1.ebuild | 107 ++
    profiles/arch/mips/package.use.mask | 4 +
    .../chromium/chromium-130.0.6723.91-r1.ebuild | 1387 +++++++++++++++++
    www-client/firefox/firefox-132.0-r1.ebuild | 1341 ++++++++++++++++
    26 files changed, 11912 insertions(+), 13 deletions(-)
    create mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild
    create mode 100644 dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild
    create mode 100644 dev-lang/rust-common/Manifest
    create mode 100644 dev-lang/rust-common/rust-common-1.81.0.ebuild
    create mode 100644 dev-lang/rust-common/rust-common-1.82.0.ebuild
    create mode 100644 dev-lang/rust/rust-1.71.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.74.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.75.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.77.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.79.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.80.1-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.81.0-r100.ebuild
    create mode 100644 dev-lang/rust/rust-1.82.0-r100.ebuild
    create mode 100644 eclass/rust.eclass
    create mode 100644 gnome-base/librsvg/librsvg-2.58.2-r1.ebuild
    create mode 100644 net-libs/rustls-ffi/rustls-ffi-0.13.0-r1.ebuild
    create mode 100644 www-client/chromium/chromium-130.0.6723.91-r1.ebuild
    create mode 100644 www-client/firefox/firefox-132.0-r1.ebuild

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)