Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 943144 - dev-lang/rust: get rid of USE=system-bootstrap, split all binary stuff into dev-lang/rust-bin
Summary: dev-lang/rust: get rid of USE=system-bootstrap, split all binary stuff into d...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Randy Barlow
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-11-09 14:20 UTC by Sam James
Modified: 2024-11-18 06:12 UTC (History)
6 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-11-09 14:20:54 UTC
Kangie and I have already discussed this a bit but filing a bug to keep track.

OpenJDK (dev-lang/openjdk, dev-lang/openjdk-bin), Go (dev-lang/go, dev-lang/go-bootstrap), Ada (sys-devel/gcc, dev-lang/ada-bootstrap) all follow the model of "main package never downloads any binaries, depends on || ( self bootstrap-pkg )".

Rust currently doesn't conform to this. We have dev-lang/rust and dev-lang/rust-bin, but dev-lang/rust[-system-bootstrap] downloads its *own* binary (same as rust-bin) rather than depending on dev-lang/rust-bin as appropriate.

This situation is inconsistent with other ecosystems, makes it awkward when we provide our own binaries for certain arches (because we only put them in dev-lang/rust-bin right now and have to force system-bootstrap on dev-lang/rust, despite that being misleading and confusing for Portage), and also makes it hard for users to see a binary is even being used.

All of this is easier now we have proper slotted Rust.
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-11-09 14:22:47 UTC
Note that for Go, we did briefly do what Rust did, but on IRC we discussed it and consensus was to not do that:

commit 7d13afbc883539b4f9fffc7d6f115b4aea591b4e
Author: William Hubbs <williamh@gentoo.org>
Date:   Sat Feb 17 12:05:36 2024 -0600

    dev-lang/go: simplify bootstrapping

    This changes the live ebuild to download the appropriate bootstrap
    tarball directly instead of using the dev-lang/go-bootstrap package.

    Signed-off-by: William Hubbs <williamh@gentoo.org>

commit 8b57b79cbeb7c24133a423620b27b60fab34d0f0
Author: William Hubbs <williamh@gentoo.org>
Date:   Wed Feb 21 12:52:34 2024 -0600

    dev-lang/go: add system-bootstrap use flag

    The system-bootstrap use flag allows you to bootstrap with the installed
    version of go.

    Signed-off-by: William Hubbs <williamh@gentoo.org>

commit 5e8b4bffc0d3655fefb05537f3f5a79339ae4cc0
Author: William Hubbs <williamh@gentoo.org>
Date:   Wed Mar 6 09:05:47 2024 -0600

    dev-lang/go: add 1.22.1

    This version adds a system-bootstrap use flag that controls whether the
    installed version of go is used for bootstrapping.
    This folows the same convention as openjdk, rust and sbcl.

    Signed-off-by: William Hubbs <williamh@gentoo.org>

commit ffca1c57532c5912b9f5394906d2b3db6af5ff58
Author: William Hubbs <williamh@gentoo.org>
Date:   Wed Mar 6 12:28:32 2024 -0600

    dev-lang/go: drop system-bootstrap use flag from live version

    Signed-off-by: William Hubbs <williamh@gentoo.org>

commit c58e3dba67e7593f145f930e7b4fdecb218eb723
Author: William Hubbs <williamh@gentoo.org>
Date:   Wed Mar 6 14:20:38 2024 -0600

    dev-lang/go: update EAPI 7 -> 8

    also bootstrap with go-bootstrap instead of downloading the bootstrap
    binaries in this ebuild.

    Signed-off-by: William Hubbs <williamh@gentoo.org>

commit 9e3a0152cb4d983aaacb3db2a93e48ffb2aa9710
Author: William Hubbs <williamh@gentoo.org>
Date:   Wed Mar 6 14:43:23 2024 -0600

    dev-lang/go: sync live, typo fix for 1.22.1

    Signed-off-by: William Hubbs <williamh@gentoo.org>
Comment 2 Larry the Git Cow gentoo-dev 2024-11-11 14:38:02 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=309a391f9ebb245e1016e3ff49a21398c212614b

commit 309a391f9ebb245e1016e3ff49a21398c212614b
Author:     Matt Jolly <kangie@gentoo.org>
AuthorDate: 2024-11-11 13:28:04 +0000
Commit:     Matt Jolly <kangie@gentoo.org>
CommitDate: 2024-11-11 14:35:48 +0000

    dev-lang/rust: use rust.eclass for USE=system-bootstrap
    
    Take advantage of rust.eclass for dependency generation and appropriate
    bootstrap slot selection. Between the PATH manipulation that the eclass
    performs and the exported `RUSTC` we should see significantly more
    consistent bootstraps.
    
    Without this change `eselect-rust` would determine which `rustc` to run,
    resulting in build failures if an incorrect Rust was selected (which is
    nearly always in the age of slotted Rust).
    
    This is also one step towards removing USE=system-bootstrap entirely;
    now that we can reliably (and trivially) select appropriate slots for
    both dev-lang/rust and dev-lang/rust-bin we'll shortly be able to
    avoid downloading bootstrap bins at all.
    
    Bug: https://bugs.gentoo.org/943144
    Closes: https://bugs.gentoo.org/943145
    Signed-off-by: Matt Jolly <kangie@gentoo.org>

 dev-lang/rust/rust-1.71.1-r100.ebuild | 56 +++++++----------------------------
 dev-lang/rust/rust-1.74.1-r100.ebuild | 53 ++++++---------------------------
 dev-lang/rust/rust-1.75.0-r100.ebuild | 56 +++++++----------------------------
 dev-lang/rust/rust-1.77.1-r100.ebuild | 55 +++++++---------------------------
 dev-lang/rust/rust-1.79.0-r100.ebuild | 53 ++++++---------------------------
 dev-lang/rust/rust-1.80.1-r100.ebuild | 53 ++++++---------------------------
 dev-lang/rust/rust-1.81.0-r100.ebuild | 53 ++++++---------------------------
 dev-lang/rust/rust-1.82.0-r100.ebuild | 53 ++++++---------------------------
 8 files changed, 75 insertions(+), 357 deletions(-)
Comment 3 Larry the Git Cow gentoo-dev 2024-11-11 23:48:20 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=349e9c05f6e7b9ee98f700c72f8023d1d3f61223

commit 349e9c05f6e7b9ee98f700c72f8023d1d3f61223
Author:     Matt Jolly <kangie@gentoo.org>
AuthorDate: 2024-11-11 21:12:24 +0000
Commit:     Matt Jolly <kangie@gentoo.org>
CommitDate: 2024-11-11 23:40:15 +0000

    dev-lang/rust: drop USE=system-bootstrap
    
    To be consistent with other ecosystems (e.g. Ada, Go),
    we can take advantage of the new Rust eclass (and some
    earlier prep work on USE=system-bootstrap) to completely
    remove that build path.
    
    This isn't a big change; dev-lang/rust without system-bootstrap
    would previously download its own bootstrap binary (same as rust-bin)
    instead of depending on dev-lang/rust-bin as appropriate.
    
    dev-lang/rust will now always receive an `||` dependency which ensures
    that an appropriate dev-lang/rust{,-bin} is available on the system
    to do any required bootstrapping.
    
    This will reduce Rust maintenance overhead, and make it more transparent
    to users that a Rust binary is required to bootstrap rust.
    
    Closes: https://bugs.gentoo.org/943144
    Signed-off-by: Matt Jolly <kangie@gentoo.org>

 dev-lang/rust/rust-1.71.1-r100.ebuild | 52 ++---------------------------
 dev-lang/rust/rust-1.74.1-r100.ebuild | 60 ++--------------------------------
 dev-lang/rust/rust-1.75.0-r100.ebuild | 60 ++--------------------------------
 dev-lang/rust/rust-1.77.1-r100.ebuild | 60 ++--------------------------------
 dev-lang/rust/rust-1.79.0-r100.ebuild | 60 ++--------------------------------
 dev-lang/rust/rust-1.80.1-r100.ebuild | 60 ++--------------------------------
 dev-lang/rust/rust-1.81.0-r100.ebuild | 61 +++--------------------------------
 dev-lang/rust/rust-1.82.0-r100.ebuild | 58 +++------------------------------
 8 files changed, 26 insertions(+), 445 deletions(-)
Comment 4 Matt Whitlock 2024-11-12 20:36:58 UTC
Did you forget to drop "system-bootstrap" from IUSE in
dev-lang/rust-1.{71,74,75,77,79,80}*-r100.ebuild, or did you intentionally leave the flag in those older versions as a no-op?
Comment 5 Larry the Git Cow gentoo-dev 2024-11-12 20:49:25 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d4e5edb8e1f8703d7682f50f6ba6ee238f0428c1

commit d4e5edb8e1f8703d7682f50f6ba6ee238f0428c1
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2024-11-12 20:48:29 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2024-11-12 20:48:29 +0000

    dev-lang/rust: cleanup leftover USE=system-bootstrap
    
    Followup to 349e9c05f6e7b9ee98f700c72f8023d1d3f61223.
    
    Bug: https://bugs.gentoo.org/943144
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-lang/rust/rust-1.71.1-r100.ebuild | 2 +-
 dev-lang/rust/rust-1.74.1-r100.ebuild | 2 +-
 dev-lang/rust/rust-1.75.0-r100.ebuild | 2 +-
 dev-lang/rust/rust-1.77.1-r100.ebuild | 2 +-
 dev-lang/rust/rust-1.79.0-r100.ebuild | 2 +-
 dev-lang/rust/rust-1.80.1-r100.ebuild | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-11-18 06:11:37 UTC
wrt the Go parts, see bug 941769 too.