mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
rust.eclass: add ERUST_{SLOT,TYPE} user variables
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.
Closes: https://bugs.gentoo.org/945752
Signed-off-by: Matt Jolly <kangie@gentoo.org>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user