mirror of
https://github.com/rust-lang/rust-clippy
synced 2025-02-17 06:28:42 +00:00
Get {RUSTUP,MULTIRUST}_{HOME,TOOLCHAIN} from runtime environment
Keep the fallback to compile-time environment
This commit is contained in:
parent
ff8336b0a0
commit
f5db351a1d
1 changed files with 29 additions and 10 deletions
|
@ -281,6 +281,17 @@ fn report_clippy_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn toolchain_path(home: Option<String>, toolchain: Option<String>) -> Option<PathBuf> {
|
||||||
|
home.and_then(|home| {
|
||||||
|
toolchain.map(|toolchain| {
|
||||||
|
let mut path = PathBuf::from(home);
|
||||||
|
path.push("toolchains");
|
||||||
|
path.push(toolchain);
|
||||||
|
path
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
rustc_driver::init_rustc_env_logger();
|
rustc_driver::init_rustc_env_logger();
|
||||||
lazy_static::initialize(&ICE_HOOK);
|
lazy_static::initialize(&ICE_HOOK);
|
||||||
|
@ -301,22 +312,21 @@ pub fn main() {
|
||||||
// - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
|
// - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
|
||||||
// - sysroot from rustc in the path
|
// - sysroot from rustc in the path
|
||||||
// - compile-time environment
|
// - compile-time environment
|
||||||
|
// - SYSROOT
|
||||||
|
// - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
|
||||||
let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
|
let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
|
||||||
let have_sys_root_arg = sys_root_arg.is_some();
|
let have_sys_root_arg = sys_root_arg.is_some();
|
||||||
let sys_root = sys_root_arg
|
let sys_root = sys_root_arg
|
||||||
.map(PathBuf::from)
|
.map(PathBuf::from)
|
||||||
.or_else(|| std::env::var("SYSROOT").ok().map(PathBuf::from))
|
.or_else(|| std::env::var("SYSROOT").ok().map(PathBuf::from))
|
||||||
.or_else(|| {
|
.or_else(|| {
|
||||||
let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
|
let home = std::env::var("RUSTUP_HOME")
|
||||||
let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
|
.or_else(|_| std::env::var("MULTIRUST_HOME"))
|
||||||
home.and_then(|home| {
|
.ok();
|
||||||
toolchain.map(|toolchain| {
|
let toolchain = std::env::var("RUSTUP_TOOLCHAIN")
|
||||||
let mut path = PathBuf::from(home);
|
.or_else(|_| std::env::var("MULTIRUST_TOOLCHAIN"))
|
||||||
path.push("toolchains");
|
.ok();
|
||||||
path.push(toolchain);
|
toolchain_path(home, toolchain)
|
||||||
path
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
.or_else(|| {
|
.or_else(|| {
|
||||||
Command::new("rustc")
|
Command::new("rustc")
|
||||||
|
@ -328,6 +338,15 @@ pub fn main() {
|
||||||
.map(|s| PathBuf::from(s.trim()))
|
.map(|s| PathBuf::from(s.trim()))
|
||||||
})
|
})
|
||||||
.or_else(|| option_env!("SYSROOT").map(PathBuf::from))
|
.or_else(|| option_env!("SYSROOT").map(PathBuf::from))
|
||||||
|
.or_else(|| {
|
||||||
|
let home = option_env!("RUSTUP_HOME")
|
||||||
|
.or(option_env!("MULTIRUST_HOME"))
|
||||||
|
.map(ToString::to_string);
|
||||||
|
let toolchain = option_env!("RUSTUP_TOOLCHAIN")
|
||||||
|
.or(option_env!("MULTIRUST_TOOLCHAIN"))
|
||||||
|
.map(ToString::to_string);
|
||||||
|
toolchain_path(home, toolchain)
|
||||||
|
})
|
||||||
.map(|pb| pb.to_string_lossy().to_string())
|
.map(|pb| pb.to_string_lossy().to_string())
|
||||||
.expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
|
.expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue