about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-09-15 09:34:17 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-09-15 09:35:08 -0700
commit61e255a5345751d64e6d2e784d0abc4c2c255715 (patch)
treeade32e209f2d024803aa30ea1ca43fd8136b897d
parentfd4bef54abafe6d93ec3c87498de696da6ef5819 (diff)
downloadrust-61e255a5345751d64e6d2e784d0abc4c2c255715.tar.gz
rust-61e255a5345751d64e6d2e784d0abc4c2c255715.zip
rustbuild: Compile the error-index in stage 2
Right now we comiple rustdoc in stage 2 and the error index in stage 0, which
ends up compiling rustdoc twice! To avoid compiling rustdoc twice (which takes
awhile) let's just compile it once in stage 2.
-rw-r--r--src/bootstrap/tool.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index eaa2b124423..9b861ae429d 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -148,15 +148,27 @@ macro_rules! tool {
 
         impl<'a> Builder<'a> {
             pub fn tool_exe(&self, tool: Tool) -> PathBuf {
+                let stage = self.tool_default_stage(tool);
                 match tool {
                     $(Tool::$name =>
                         self.ensure($name {
-                            compiler: self.compiler(0, self.build.build),
+                            compiler: self.compiler(stage, self.build.build),
                             target: self.build.build,
                         }),
                     )+
                 }
             }
+
+            pub fn tool_default_stage(&self, tool: Tool) -> u32 {
+                // Compile the error-index in the top stage as it depends on
+                // rustdoc, so we want to avoid recompiling rustdoc twice if we
+                // can. Otherwise compile everything else in stage0 as there's
+                // no need to rebootstrap everything
+                match tool {
+                    Tool::ErrorIndex => self.top_stage,
+                    _ => 0,
+                }
+            }
         }
 
         $(
@@ -436,7 +448,7 @@ impl<'a> Builder<'a> {
     /// `host`.
     pub fn tool_cmd(&self, tool: Tool) -> Command {
         let mut cmd = Command::new(self.tool_exe(tool));
-        let compiler = self.compiler(0, self.build.build);
+        let compiler = self.compiler(self.tool_default_stage(tool), self.build.build);
         self.prepare_tool_cmd(compiler, &mut cmd);
         cmd
     }