1- pub mod io;
1+ use humansize:: BINARY ;
2+ use sysinfo:: { DiskExt , RefreshKind , System , SystemExt } ;
23
34use crate :: environment:: Environment ;
4- use crate :: utils:: io:: { delete_directory, get_files_from_dir} ;
5- use humansize:: { format_size, BINARY } ;
6- use sysinfo:: { DiskExt , RefreshKind , System , SystemExt } ;
5+ use crate :: timer:: Timer ;
6+ use crate :: utils:: io:: delete_directory;
7+
8+ pub mod artifact_size;
9+ pub mod io;
710
811pub fn format_env_variables ( ) -> String {
912 let vars = std:: env:: vars ( ) . map ( |( key, value) | format ! ( "{key}={value}" ) ) . collect :: < Vec < _ > > ( ) ;
@@ -25,28 +28,6 @@ pub fn print_free_disk_space() -> anyhow::Result<()> {
2528 Ok ( ( ) )
2629}
2730
28- pub fn print_binary_sizes ( env : & dyn Environment ) -> anyhow:: Result < ( ) > {
29- use std:: fmt:: Write ;
30-
31- let root = env. build_artifacts ( ) . join ( "stage2" ) ;
32-
33- let mut files = get_files_from_dir ( & root. join ( "bin" ) , None ) ?;
34- files. extend ( get_files_from_dir ( & root. join ( "lib" ) , Some ( ".so" ) ) ?) ;
35- files. sort_unstable ( ) ;
36-
37- let mut output = String :: new ( ) ;
38- for file in files {
39- let size = std:: fs:: metadata ( file. as_std_path ( ) ) ?. len ( ) ;
40- let size_formatted = format_size ( size, BINARY ) ;
41- let name = format ! ( "{}:" , file. file_name( ) . unwrap( ) ) ;
42- writeln ! ( output, "{name:<50}{size_formatted:>10}" ) ?;
43- }
44-
45- log:: info!( "Rustc artifact size\n {output}" ) ;
46-
47- Ok ( ( ) )
48- }
49-
5031pub fn clear_llvm_files ( env : & dyn Environment ) -> anyhow:: Result < ( ) > {
5132 // Bootstrap currently doesn't support rebuilding LLVM when PGO options
5233 // change (or any other llvm-related options); so just clear out the relevant
@@ -57,6 +38,24 @@ pub fn clear_llvm_files(env: &dyn Environment) -> anyhow::Result<()> {
5738 Ok ( ( ) )
5839}
5940
41+ /// Write the formatted statistics of the timer to a Github Actions summary.
42+ pub fn write_timer_to_summary ( path : & str , timer : & Timer ) -> anyhow:: Result < ( ) > {
43+ use std:: io:: Write ;
44+
45+ let mut file = std:: fs:: File :: options ( ) . append ( true ) . create ( true ) . open ( path) ?;
46+ writeln ! (
47+ file,
48+ r#"# Step durations
49+
50+ ```
51+ {}
52+ ```
53+ "# ,
54+ timer. format_stats( )
55+ ) ?;
56+ Ok ( ( ) )
57+ }
58+
6059/// Wraps all output produced within the `func` closure in a CI output group, if we're running in
6160/// CI.
6261pub fn with_log_group < F : FnOnce ( ) -> R , R > ( group : & str , func : F ) -> R {
0 commit comments