about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMark Simulacrum <mark.simulacrum@gmail.com>2018-02-10 18:15:34 -0700
committerMark Simulacrum <mark.simulacrum@gmail.com>2018-02-10 18:15:34 -0700
commit11580b7be3a830ccea569b64545ec77008c452ac (patch)
treed13b4230efb0b7da1a5bd26f6c6f49cc8bc5bcef /src/bootstrap
parent8c506f9dae5664fb04bf070f1422df5308d90cb6 (diff)
downloadrust-11580b7be3a830ccea569b64545ec77008c452ac.tar.gz
rust-11580b7be3a830ccea569b64545ec77008c452ac.zip
Make exclude and paths relative to root of checkout
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/flags.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs
index 465ebf846d3..8a38fedc613 100644
--- a/src/bootstrap/flags.rs
+++ b/src/bootstrap/flags.rs
@@ -275,7 +275,12 @@ Arguments:
         };
         // Get any optional paths which occur after the subcommand
         let cwd = t!(env::current_dir());
-        let paths = matches.free[1..].iter().map(|p| cwd.join(p)).collect::<Vec<_>>();
+        let src = matches.opt_str("src").map(PathBuf::from)
+            .or_else(|| env::var_os("SRC").map(PathBuf::from))
+            .unwrap_or(cwd.clone());
+        let paths = matches.free[1..].iter().map(|p| {
+            cwd.join(p).strip_prefix(&src).expect("paths passed to be inside checkout").into()
+        }).collect::<Vec<PathBuf>>();
 
         let cfg_file = matches.opt_str("config").map(PathBuf::from).or_else(|| {
             if fs::metadata("config.toml").is_ok() {
@@ -360,10 +365,6 @@ Arguments:
             stage = Some(1);
         }
 
-        let src = matches.opt_str("src").map(PathBuf::from)
-            .or_else(|| env::var_os("SRC").map(PathBuf::from))
-            .unwrap_or(cwd.clone());
-
         Flags {
             verbose: matches.opt_count("verbose"),
             stage,
@@ -375,12 +376,14 @@ Arguments:
             target: split(matches.opt_strs("target"))
                 .into_iter().map(|x| INTERNER.intern_string(x)).collect::<Vec<_>>(),
             config: cfg_file,
-            src,
             jobs: matches.opt_str("jobs").map(|j| j.parse().unwrap()),
             cmd,
             incremental: matches.opt_present("incremental"),
             exclude: split(matches.opt_strs("exclude"))
-                .into_iter().map(|p| cwd.join(p)).collect::<Vec<_>>(),
+                .into_iter().map(|p| {
+                    cwd.join(p).strip_prefix(&src).expect("paths to be inside checkout").into()
+                }).collect::<Vec<_>>(),
+            src,
         }
     }
 }