commit:     63d033755d8c75aea10c6bdff41deaa533cd6cdd
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri May 16 09:53:33 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri May 16 09:57:01 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=63d03375

Revert "rust.eclass: revert simplified dependency simplification"

This reverts commit 34b74faa06a90bf9d4f62ecfca746b380d60517a, i.e.
reapplies the simplified dependency specification.

We had to revert this before because of the collision issues when
switching to slotted Rust where the same Rust version existed before
in a non-slotted variant. We have a sanity check and workaround for that
in pkg_postinst for affected versions now, so there shouldn't be a reason
we can't do this.

This may ease depcleaning older Rust in some cases w/o having to rebuild
packages against new Rust.

Bug: https://bugs.gentoo.org/943143
Bug: https://bugs.gentoo.org/943206
Bug: https://bugs.gentoo.org/953884
Signed-off-by: Sam James <sam <AT> gentoo.org>

 eclass/rust.eclass | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/eclass/rust.eclass b/eclass/rust.eclass
index e99fca94ac3d..2ab5b7dfe00d 100644
--- a/eclass/rust.eclass
+++ b/eclass/rust.eclass
@@ -248,22 +248,25 @@ _rust_set_globals() {
        local usedep="${RUST_REQ_USE+[${RUST_REQ_USE}]}"
 
        # If we're not using LLVM, we can just generate a simple Rust dependency
-       # In time we need to implement trivial dependencies
-       # (>=RUST_MIN_VER) where RUST_MAX_VER isnt't set,
-       # however the previous attempt to do this ran into issues
-       # where `emerge ... --keep-going` ate legacy non-slotted
-       # Rust blockers resutling in the non-slotted version never
-       # being removed and breaking builds. #943206 #943143
        if [[ -z "${RUST_NEEDS_LLVM}" ]]; then
                rust_dep=( "|| (" )
-               # depend on each slot between RUST_MIN_VER and RUST_MAX_VER; 
it's a bit specific but
-               # won't hurt as we only ever add newer Rust slots.
-               for slot in "${_RUST_SLOTS[@]}"; do
+               # We can be more flexible if we generate a simpler, open-ended 
dependency
+               # when we don't have a max version set.
+               if [[ -z "${RUST_MAX_VER}" ]]; then
                        rust_dep+=(
-                               "dev-lang/rust-bin:${slot}${usedep}"
-                               "dev-lang/rust:${slot}${usedep}"
+                               ">=dev-lang/rust-bin-${RUST_MIN_VER}:*${usedep}"
+                               ">=dev-lang/rust-${RUST_MIN_VER}:*${usedep}"
                        )
-               done
+               else
+                       # depend on each slot between RUST_MIN_VER and 
RUST_MAX_VER; it's a bit specific but
+                       # won't hurt as we only ever add newer Rust slots.
+                       for slot in "${_RUST_SLOTS[@]}"; do
+                               rust_dep+=(
+                                       "dev-lang/rust-bin:${slot}${usedep}"
+                                       "dev-lang/rust:${slot}${usedep}"
+                               )
+                       done
+               fi
                rust_dep+=( ")" )
                RUST_DEPEND="${rust_dep[*]}"
        else

Reply via email to