about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/bootstrap/src/bin/main.rs15
-rw-r--r--src/bootstrap/src/lib.rs6
2 files changed, 15 insertions, 6 deletions
diff --git a/src/bootstrap/src/bin/main.rs b/src/bootstrap/src/bin/main.rs
index 70db6fad0f6..c5ada88462f 100644
--- a/src/bootstrap/src/bin/main.rs
+++ b/src/bootstrap/src/bin/main.rs
@@ -13,7 +13,7 @@ use std::{env, process};
 
 use bootstrap::{
     Build, CONFIG_CHANGE_HISTORY, ChangeId, Config, Flags, Subcommand, debug,
-    find_recent_config_change_ids, human_readable_changes, t,
+    find_recent_config_change_ids, human_readable_changes, symlink_dir, t,
 };
 #[cfg(feature = "tracing")]
 use tracing::instrument;
@@ -107,10 +107,21 @@ fn main() {
     let out_dir = config.out.clone();
 
     let tracing_enabled = is_tracing_enabled();
+
+    // Prepare a directory for tracing output
+    // Also store a symlink named "latest" to point to the latest tracing directory.
     let tracing_dir = out_dir.join("bootstrap-trace").join(std::process::id().to_string());
+    let latest_trace_dir = tracing_dir.parent().unwrap().join("latest");
     if tracing_enabled {
         let _ = std::fs::remove_dir_all(&tracing_dir);
         std::fs::create_dir_all(&tracing_dir).unwrap();
+
+        #[cfg(windows)]
+        let _ = std::fs::remove_dir(&latest_trace_dir);
+        #[cfg(not(windows))]
+        let _ = std::fs::remove_file(&latest_trace_dir);
+
+        t!(symlink_dir(&config, &tracing_dir, &latest_trace_dir));
     }
 
     debug!("creating new build based on config");
@@ -175,7 +186,7 @@ fn main() {
     build.report_step_graph(&tracing_dir);
 
     if tracing_enabled {
-        eprintln!("Tracing/profiling output has been written to {}", tracing_dir.display());
+        eprintln!("Tracing/profiling output has been written to {}", latest_trace_dir.display());
     }
 }
 
diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
index b02c1081a74..7d6c0658f47 100644
--- a/src/bootstrap/src/lib.rs
+++ b/src/bootstrap/src/lib.rs
@@ -37,9 +37,7 @@ use crate::core::builder;
 use crate::core::builder::Kind;
 use crate::core::config::{DryRun, LldMode, LlvmLibunwind, TargetSelection, flags};
 use crate::utils::exec::{BootstrapCommand, command};
-use crate::utils::helpers::{
-    self, dir_is_empty, exe, libdir, set_file_times, split_debuginfo, symlink_dir,
-};
+use crate::utils::helpers::{self, dir_is_empty, exe, libdir, set_file_times, split_debuginfo};
 
 mod core;
 mod utils;
@@ -53,7 +51,7 @@ use tracing::{instrument, span};
 pub use utils::change_tracker::{
     CONFIG_CHANGE_HISTORY, find_recent_config_change_ids, human_readable_changes,
 };
-pub use utils::helpers::PanicTracker;
+pub use utils::helpers::{PanicTracker, symlink_dir};
 
 use crate::core::build_steps::vendor::VENDOR_DIR;