public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Sam James <sam@gentoo.org>
To: kangie@gentoo.org
Cc: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [PATCH] rust.eclass: add ERUST_{SLOT,TYPE} user variables
Date: Wed, 04 Dec 2024 17:45:02 +0000	[thread overview]
Message-ID: <87v7vzz6jl.fsf@gentoo.org> (raw)
In-Reply-To: <20241203122236.1592666-2-kangie@gentoo.org> (kangie@gentoo.org's message of "Tue, 3 Dec 2024 22:22:37 +1000")

kangie@gentoo.org writes:

> From: Matt Jolly <kangie@gentoo.org>
>
> These variables enable users (though most likely Gentoo developers)
> to override the selection of the Rust implementation by the eclass.
>
> This means that _only_ the specified ERUST_SLOT and/or ERUST_TYPE
> ('source' or 'binary') will be checked for, with the eclass `die`ing
> with "No Rust slot satisfying the package's dependencies..." if the
> selected impl is not available.
>
> These variables are intended to enable reproducing bugs and testing
> packages against specific dev-lang/rust{,-bin} packages; they must
> not be set in ebuilds.

On reflection, I still quite like the idea of trying the eselect'ed Rust
first but I'm (of course) open to arguments not to.

>
> Closes: https://bugs.gentoo.org/945752
> Signed-off-by: Matt Jolly <kangie@gentoo.org>
> ---
>  eclass/rust.eclass | 49 +++++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 44 insertions(+), 5 deletions(-)
>
> diff --git a/eclass/rust.eclass b/eclass/rust.eclass
> index 71cbb4b24f8c..991a9cdb7f14 100644
> --- a/eclass/rust.eclass
> +++ b/eclass/rust.eclass
> @@ -98,6 +98,26 @@ declare -a -g -r _RUST_SLOTS_ORDERED=(
>  	"1.54.0"
>  )
>  
> +# == user control knobs ==
> +
> +# @ECLASS_VARIABLE: ERUST_SLOT
> +# @USER_VARIABLE
> +# @DESCRIPTION:
> +# Specify the version (slot) of Rust to be used by the package. This is
> +# useful for troubleshooting and debugging purposes; If unset, the newest
> +# acceptable Rust version will be used. May be combined with ERUST_TYPE.
> +# This variable must not be set in ebuilds.
> +
> +# @ECLASS_VARIABLE: ERUST_TYPE
> +# @USER_VARIABLE
> +# @DESCRIPTION:
> +# Specify the type of Rust to be used by the package from options:
> +# 'source' or 'binary' (-bin). This is useful for troubleshooting and
> +# debugging purposes. If unset, the standard eclass logic will be used
> +# to determine the type of Rust to use (i.e. prefer source if binary
> +# is also available). May be combined with ERUST_SLOT.
> +# This variable must not be set in ebuilds.
> +
>  # == control variables ==
>  
>  # @ECLASS_VARIABLE: RUST_MAX_VER
> @@ -332,6 +352,10 @@ _get_rust_slot() {
>  			fi
>  		fi
>  
> +		if [[ -n "${ERUST_SLOT}" && "${slot}" != "${ERUST_SLOT}" ]]; then
> +			continue
> +		fi
> +
>  		# If we're in LLVM mode we can skip any slots that don't match the selected USE
>  		if [[ -n "${RUST_NEEDS_LLVM}" ]]; then
>  			if [[ "${llvm_slot}" != "${llvm_r1_slot}" ]]; then
> @@ -345,12 +369,27 @@ _get_rust_slot() {
>  			rust_check_deps && return
>  		else
>  			local usedep="${RUST_REQ_USE+[${RUST_REQ_USE}]}"
> -			# When checking for installed packages prefer the non `-bin` package
> +			# When checking for installed packages prefer the source package;
>  			# if effort was put into building it we should use it.
> -			local rust_pkgs=(
> -				"dev-lang/rust:${slot}${usedep}"
> -				"dev-lang/rust-bin:${slot}${usedep}"
> -			)
> +			local rust_pkgs
> +			case "${ERUST_TYPE}" in
> +				source)
> +					rust_pkgs=(
> +						"dev-lang/rust:${slot}${usedep}"
> +					)
> +					;;
> +				binary)
> +					rust_pkgs=(
> +						"dev-lang/rust-bin:${slot}${usedep}"
> +					)
> +					;;
> +				*)
> +					rust_pkgs=(
> +						"dev-lang/rust:${slot}${usedep}"
> +						"dev-lang/rust-bin:${slot}${usedep}"
> +					)
> +					;;
> +			esac
>  			local _pkg
>  			for _pkg in "${rust_pkgs[@]}"; do
>  				if has_version "${hv_switch}" "${_pkg}"; then


      parent reply	other threads:[~2024-12-04 17:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-03 12:22 [gentoo-dev] [PATCH] rust.eclass: add ERUST_{SLOT,TYPE} user variables kangie
2024-12-03 13:26 ` Michał Górny
2024-12-04  1:38   ` Matt Jolly
2024-12-04 17:45 ` Sam James [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v7vzz6jl.fsf@gentoo.org \
    --to=sam@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=kangie@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox