Skip to content

Commit c97b606

Browse files
committed
Store latest symlink to the latest tracing output directory
1 parent e6dddcb commit c97b606

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/bootstrap/src/bin/main.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use std::{env, process};
1313

1414
use bootstrap::{
1515
Build, CONFIG_CHANGE_HISTORY, ChangeId, Config, Flags, Subcommand, debug,
16-
find_recent_config_change_ids, human_readable_changes, t,
16+
find_recent_config_change_ids, human_readable_changes, symlink_dir, t,
1717
};
1818
#[cfg(feature = "tracing")]
1919
use tracing::instrument;
@@ -107,10 +107,21 @@ fn main() {
107107
let out_dir = config.out.clone();
108108

109109
let tracing_enabled = is_tracing_enabled();
110+
111+
// Prepare a directory for tracing output
112+
// Also store a symlink named "latest" to point to the latest tracing directory.
110113
let tracing_dir = out_dir.join("bootstrap-trace").join(std::process::id().to_string());
114+
let latest_trace_dir = tracing_dir.parent().unwrap().join("latest");
111115
if tracing_enabled {
112116
let _ = std::fs::remove_dir_all(&tracing_dir);
113117
std::fs::create_dir_all(&tracing_dir).unwrap();
118+
119+
#[cfg(windows)]
120+
let _ = std::fs::remove_dir(&latest_trace_dir);
121+
#[cfg(not(windows))]
122+
let _ = std::fs::remove_file(&latest_trace_dir);
123+
124+
t!(symlink_dir(&config, &tracing_dir, &latest_trace_dir));
114125
}
115126

116127
debug!("creating new build based on config");
@@ -175,7 +186,7 @@ fn main() {
175186
build.report_step_graph(&tracing_dir);
176187

177188
if tracing_enabled {
178-
eprintln!("Tracing/profiling output has been written to {}", tracing_dir.display());
189+
eprintln!("Tracing/profiling output has been written to {}", latest_trace_dir.display());
179190
}
180191
}
181192

src/bootstrap/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ use crate::core::builder;
3737
use crate::core::builder::Kind;
3838
use crate::core::config::{DryRun, LldMode, LlvmLibunwind, TargetSelection, flags};
3939
use crate::utils::exec::{BootstrapCommand, command};
40-
use crate::utils::helpers::{
41-
self, dir_is_empty, exe, libdir, set_file_times, split_debuginfo, symlink_dir,
42-
};
40+
use crate::utils::helpers::{self, dir_is_empty, exe, libdir, set_file_times, split_debuginfo};
4341

4442
mod core;
4543
mod utils;
@@ -53,7 +51,7 @@ use tracing::{instrument, span};
5351
pub use utils::change_tracker::{
5452
CONFIG_CHANGE_HISTORY, find_recent_config_change_ids, human_readable_changes,
5553
};
56-
pub use utils::helpers::PanicTracker;
54+
pub use utils::helpers::{PanicTracker, symlink_dir};
5755

5856
use crate::core::build_steps::vendor::VENDOR_DIR;
5957

0 commit comments

Comments
 (0)