diff options
| author | bit-aloo <sshourya17@gmail.com> | 2025-07-10 18:18:22 +0530 |
|---|---|---|
| committer | bit-aloo <sshourya17@gmail.com> | 2025-07-10 18:25:42 +0530 |
| commit | 13c31d445e3ce7b5749dbdb88d18e465f9a7e027 (patch) | |
| tree | c765d760738a9c1dc02a646e1a8e895488d1f0a3 | |
| parent | 5e0c19782888d63cf28fc3cd0ca9960be759071a (diff) | |
| download | rust-13c31d445e3ce7b5749dbdb88d18e465f9a7e027.tar.gz rust-13c31d445e3ce7b5749dbdb88d18e465f9a7e027.zip | |
update streaming to record its execution via commandprofiler
| -rw-r--r-- | src/bootstrap/src/core/build_steps/compile.rs | 2 | ||||
| -rw-r--r-- | src/bootstrap/src/utils/exec.rs | 12 | ||||
| -rw-r--r-- | src/bootstrap/src/utils/render_tests.rs | 2 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs index 0587d21ecc2..05965ecc170 100644 --- a/src/bootstrap/src/core/build_steps/compile.rs +++ b/src/bootstrap/src/core/build_steps/compile.rs @@ -2576,7 +2576,7 @@ pub fn stream_cargo( } // Make sure Cargo actually succeeded after we read all of its stdout. - let status = t!(streaming_command.wait()); + let status = t!(streaming_command.wait(&builder.config.exec_ctx)); if builder.is_verbose() && !status.success() { eprintln!( "command did not execute successfully: {cmd:?}\n\ diff --git a/src/bootstrap/src/utils/exec.rs b/src/bootstrap/src/utils/exec.rs index bffa5abb53b..c5bafda88c4 100644 --- a/src/bootstrap/src/utils/exec.rs +++ b/src/bootstrap/src/utils/exec.rs @@ -807,7 +807,7 @@ impl ExecutionContext { let stdout = child.stdout.take(); let stderr = child.stderr.take(); - Some(StreamingCommand { child, stdout, stderr }) + Some(StreamingCommand { child, stdout, stderr, fingerprint, start_time }) } } @@ -818,8 +818,14 @@ impl AsRef<ExecutionContext> for ExecutionContext { } impl StreamingCommand { - pub fn wait(mut self) -> Result<ExitStatus, std::io::Error> { - self.child.wait() + pub fn wait( + mut self, + exec_ctx: impl AsRef<ExecutionContext>, + ) -> Result<ExitStatus, std::io::Error> { + let exec_ctx = exec_ctx.as_ref(); + let output = self.child.wait(); + exec_ctx.profiler().record_execution(self.fingerprint, self.start_time); + output } } diff --git a/src/bootstrap/src/utils/render_tests.rs b/src/bootstrap/src/utils/render_tests.rs index 934699d736b..40006aca5c5 100644 --- a/src/bootstrap/src/utils/render_tests.rs +++ b/src/bootstrap/src/utils/render_tests.rs @@ -63,7 +63,7 @@ fn run_tests(builder: &Builder<'_>, cmd: &mut BootstrapCommand, stream: bool) -> renderer.render_all(); } - let status = streaming_command.wait().unwrap(); + let status = streaming_command.wait(&builder.config.exec_ctx).unwrap(); if !status.success() && builder.is_verbose() { println!( "\n\ncommand did not execute successfully: {cmd:?}\n\ |
