about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/bootstrap/doc.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs
index 1168d54b55e..fc79fc10fb4 100644
--- a/src/bootstrap/doc.rs
+++ b/src/bootstrap/doc.rs
@@ -461,7 +461,16 @@ impl Step for Std {
         // create correct links between crates because rustdoc depends on the
         // existence of the output directories to know if it should be a local
         // or remote link.
-        let krates = ["core", "alloc", "std", "proc_macro", "test"];
+        //
+        // There's also a mild hack here where we build the first crate in this
+        // list, core, twice. This is currently necessary to make sure that
+        // cargo's cached rustc/rustdoc versions are up to date which means
+        // cargo won't delete the out_dir we create for the stampfile.
+        // Essentially any crate could go into the first slot here as it's
+        // output directory will be deleted by us (as cargo will purge the stamp
+        // file during the first slot's run), and core is relatively fast to
+        // build so works OK to fill this 'dummy' slot.
+        let krates = ["core", "core", "alloc", "std", "proc_macro", "test"];
         for krate in &krates {
             run_cargo_rustdoc_for(krate);
         }