about summary refs log tree commit diff
diff options
context:
space:
mode:
authorozkanonur <work@onurozkan.dev>2022-11-20 02:40:31 +0300
committerPhilipp Krones <hello@philkrones.com>2022-11-21 20:02:20 +0100
commit5907e9155ed7f1312d108aa2110853472da3b029 (patch)
tree92537843053c3a09b5d5c8cf02e33558bbf50a58
parent661f13ce3b34dd2eb5bd0422ab464d41b725fc47 (diff)
downloadrust-5907e9155ed7f1312d108aa2110853472da3b029.tar.gz
rust-5907e9155ed7f1312d108aa2110853472da3b029.zip
pass clippy sysroot env if given r=ozkanonur
Signed-off-by: ozkanonur <work@onurozkan.dev>
-rw-r--r--src/driver.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/driver.rs b/src/driver.rs
index 51ae27fbbd7..ee2a3ad20d3 100644
--- a/src/driver.rs
+++ b/src/driver.rs
@@ -252,6 +252,13 @@ pub fn main() {
     exit(rustc_driver::catch_with_exit_code(move || {
         let mut orig_args: Vec<String> = env::args().collect();
 
+        let sys_root_env = std::env::var("SYSROOT").ok();
+        let pass_sysroot_env_if_given = |args: &mut Vec<String>, sys_root_env| {
+            if let Some(sys_root) = sys_root_env {
+                args.extend(vec!["--sysroot".into(), sys_root]);
+            };
+        };
+
         // make "clippy-driver --rustc" work like a subcommand that passes further args to "rustc"
         // for example `clippy-driver --rustc --version` will print the rustc version that clippy-driver
         // uses
@@ -259,7 +266,10 @@ pub fn main() {
             orig_args.remove(pos);
             orig_args[0] = "rustc".to_string();
 
-            return rustc_driver::RunCompiler::new(&orig_args, &mut DefaultCallbacks).run();
+            let mut args: Vec<String> = orig_args.clone();
+            pass_sysroot_env_if_given(&mut args, sys_root_env);
+
+            return rustc_driver::RunCompiler::new(&args, &mut DefaultCallbacks).run();
         }
 
         if orig_args.iter().any(|a| a == "--version" || a == "-V") {
@@ -282,6 +292,9 @@ pub fn main() {
             exit(0);
         }
 
+        let mut args: Vec<String> = orig_args.clone();
+        pass_sysroot_env_if_given(&mut args, sys_root_env);
+
         let mut no_deps = false;
         let clippy_args_var = env::var("CLIPPY_ARGS").ok();
         let clippy_args = clippy_args_var
@@ -310,11 +323,10 @@ pub fn main() {
 
         let clippy_enabled = !cap_lints_allow && (!no_deps || in_primary_package);
         if clippy_enabled {
-            let mut args: Vec<String> = orig_args.clone();
             args.extend(clippy_args);
             rustc_driver::RunCompiler::new(&args, &mut ClippyCallbacks { clippy_args_var }).run()
         } else {
-            rustc_driver::RunCompiler::new(&orig_args, &mut RustcCallbacks { clippy_args_var }).run()
+            rustc_driver::RunCompiler::new(&args, &mut RustcCallbacks { clippy_args_var }).run()
         }
     }))
 }