Skip to content

Commit

Permalink
clippy-driver: if --sysroot is specified on the command line, use that
Browse files Browse the repository at this point in the history
If the user explicitly sets sysroot on the command line, then use that
value.

Issue #3663
  • Loading branch information
jsgf committed Feb 2, 2019
1 parent b5fd010 commit 71d03ae
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions src/driver.rs
Expand Up @@ -72,8 +72,19 @@ pub fn main() {
exit(0);
}

let sys_root = option_env!("SYSROOT")
.map(String::from)
let mut orig_args: Vec<String> = env::args().collect();

// Get the sysroot, looking from most specific to this invocation to the least:
// - command line
// - runtime environment
// - SYSROOT
// - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
// - sysroot from rustc in the path
// - compile-time environment
let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
let have_sys_root_arg = sys_root_arg.is_some();
let sys_root = sys_root_arg
.map(|s| s.to_string())
.or_else(|| std::env::var("SYSROOT").ok())
.or_else(|| {
let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
Expand All @@ -89,11 +100,11 @@ pub fn main() {
.and_then(|out| String::from_utf8(out.stdout).ok())
.map(|s| s.trim().to_owned())
})
.or_else(|| option_env!("SYSROOT").map(String::from))
.expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");

// Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.
// We're invoking the compiler programmatically, so we ignore this/
let mut orig_args: Vec<String> = env::args().collect();
if orig_args.len() <= 1 {
std::process::exit(1);
}
Expand All @@ -104,7 +115,7 @@ pub fn main() {
// this conditional check for the --sysroot flag is there so users can call
// `clippy_driver` directly
// without having to pass --sysroot or anything
let mut args: Vec<String> = if orig_args.iter().any(|s| s == "--sysroot") {
let mut args: Vec<String> = if have_sys_root_arg {
orig_args.clone()
} else {
orig_args
Expand Down

0 comments on commit 71d03ae

Please sign in to comment.