]> git.lizzy.rs Git - rust.git/commitdiff
rustbuild: Compile the error-index in stage 2
authorAlex Crichton <alex@alexcrichton.com>
Fri, 15 Sep 2017 16:34:17 +0000 (09:34 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Fri, 15 Sep 2017 16:35:08 +0000 (09:35 -0700)
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.

src/bootstrap/tool.rs

index eaa2b1244236fa59f74c9836229305fd0a704e59..9b861ae429d37adaf61eed07447fae9199959100 100644 (file)
@@ -148,15 +148,27 @@ pub enum 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
     }