Fix fallback to cargo-install: Use the default target unless user override (#1430)

* Fix fallback to `cargo-install`: Use the default target

which is guaranteed to work, instead of providing a custom `--target`
from `detect-targets`.

The one from `detect-targets` might report musl even if the `rustc`
reports gnu, since OSes like NixOS could use a custom glibc location
that prevent glibc binaries built for other OSes be run for them.

However, if we are compiling the crate and `rustc` defaults to glibc,
then it should be guaranteed to work.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Impl fn `DesiredTargets::get_initialized`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Fix fallback to `cargo-install`: Use user-provided override targets

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

---------

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2023-09-30 10:22:21 +10:00 committed by GitHub
parent b56a8c3579
commit 8e08c65946
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 11 deletions

View file

@ -41,6 +41,17 @@ impl DesiredTargets {
AutoDetect(once_cell) => once_cell.get_or_init(detect_targets).await,
}
}
/// If `DesiredTargets` is provided with a list of desired targets instead
/// of detecting the targets, then this function would return `Some`.
pub fn get_initialized(&self) -> Option<&[String]> {
use DesiredTargetsInner::*;
match &self.0 {
Initialized(targets) => Some(targets),
AutoDetect(..) => None,
}
}
}
/// If opts_targets is `Some`, then it will be used.