From f06efd2a24761b3f2b73d9888a8f945de5ec26e4 Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Sun, 4 Apr 2021 14:51:22 -0400 Subject: [PATCH] Workaround increased cache clearing in Cargo 1.52 Cargo adds rust-lang/cargo#8640 which means that cargo will try to purge the doc directory caches for us. In theory this may mean that we can jettison the clear_if_dirty for rustdoc versioning entirely, but for now just workaround the effects of this change in a less principled but more local way. --- src/bootstrap/doc.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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); }