@@ -13,7 +13,7 @@ use std::{env, process};
13
13
14
14
use bootstrap:: {
15
15
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,
17
17
} ;
18
18
#[ cfg( feature = "tracing" ) ]
19
19
use tracing:: instrument;
@@ -107,10 +107,21 @@ fn main() {
107
107
let out_dir = config. out . clone ( ) ;
108
108
109
109
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.
110
113
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" ) ;
111
115
if tracing_enabled {
112
116
let _ = std:: fs:: remove_dir_all ( & tracing_dir) ;
113
117
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) ) ;
114
125
}
115
126
116
127
debug ! ( "creating new build based on config" ) ;
@@ -175,7 +186,7 @@ fn main() {
175
186
build. report_step_graph ( & tracing_dir) ;
176
187
177
188
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( ) ) ;
179
190
}
180
191
}
181
192
0 commit comments