bootstrap: add wrapper macros for tracing
-gated tracing macros · rust-lang/rust@acb3bab (original) (raw)
`@@ -28,8 +28,6 @@ use std::{env, fs, io, str};
`
28
28
`use build_helper::ci::gha;
`
29
29
`use build_helper::exit;
`
30
30
`use termcolor::{ColorChoice, StandardStream, WriteColor};
`
31
``
`-
#[cfg(feature = "tracing")]
`
32
``
`-
use tracing::{debug, instrument, span, trace};
`
33
31
`use utils::build_stamp::BuildStamp;
`
34
32
`use utils::channel::GitInfo;
`
35
33
``
`@@ -46,6 +44,8 @@ pub use core::builder::PathSet;
`
46
44
`pub use core::config::Config;
`
47
45
`pub use core::config::flags::{Flags, Subcommand};
`
48
46
``
``
47
`+
#[cfg(feature = "tracing")]
`
``
48
`+
use tracing::{instrument, span};
`
49
49
`pub use utils::change_tracker::{
`
50
50
`CONFIG_CHANGE_HISTORY, find_recent_config_change_ids, human_readable_changes,
`
51
51
`};
`
`@@ -541,72 +541,71 @@ impl Build {
`
541
541
`/// Executes the entire build, as configured by the flags and configuration.
`
542
542
`#[cfg_attr(feature = "tracing", instrument(level = "debug", name = "Build::build", skip_all))]
`
543
543
`pub fn build(&mut self) {
`
544
``
`-
#[cfg(feature = "tracing")]
`
545
544
`trace!("setting up job management");
`
546
545
`unsafe {
`
547
546
`crate::utils::job::setup(self);
`
548
547
`}
`
549
548
``
550
``
`-
#[cfg(feature = "tracing")]
`
551
``
`-
trace!("downloading rustfmt early");
`
552
``
-
553
549
`// Download rustfmt early so that it can be used in rust-analyzer configs.
`
``
550
`+
trace!("downloading rustfmt early");
`
554
551
`let _ = &builder::Builder::new(self).initial_rustfmt();
`
555
552
``
556
``
`-
#[cfg(feature = "tracing")]
`
557
``
`-
let hardcoded_span =
`
558
``
`-
span!(tracing::Level::DEBUG, "handling hardcoded subcommands (Format, Suggest, Perf)")
`
559
``
`-
.entered();
`
560
``
-
561
``
`-
// hardcoded subcommands
`
562
``
`-
match &self.config.cmd {
`
563
``
`-
Subcommand::Format { check, all } => {
`
564
``
`-
return core::build_steps::format::format(
`
565
``
`-
&builder::Builder::new(self),
`
566
``
`-
*check,
`
567
``
`-
*all,
`
568
``
`-
&self.config.paths,
`
569
``
`-
);
`
570
``
`-
}
`
571
``
`-
Subcommand::Suggest { run } => {
`
572
``
`-
return core::build_steps::suggest::suggest(&builder::Builder::new(self), *run);
`
573
``
`-
}
`
574
``
`-
Subcommand::Perf { .. } => {
`
575
``
`-
return core::build_steps::perf::perf(&builder::Builder::new(self));
`
576
``
`-
}
`
577
``
`-
_cmd => {
`
578
``
`-
#[cfg(feature = "tracing")]
`
579
``
`-
debug!(cmd = ?_cmd, "not a hardcoded subcommand; returning to normal handling");
`
``
553
`+
// Handle hard-coded subcommands.
`
``
554
`+
{
`
``
555
`+
#[cfg(feature = "tracing")]
`
``
556
`+
let _hardcoded_span = span!(
`
``
557
`+
tracing::Level::DEBUG,
`
``
558
`+
"handling hardcoded subcommands (Format, Suggest, Perf)"
`
``
559
`+
)
`
``
560
`+
.entered();
`
``
561
+
``
562
`+
match &self.config.cmd {
`
``
563
`+
Subcommand::Format { check, all } => {
`
``
564
`+
return core::build_steps::format::format(
`
``
565
`+
&builder::Builder::new(self),
`
``
566
`+
*check,
`
``
567
`+
*all,
`
``
568
`+
&self.config.paths,
`
``
569
`+
);
`
``
570
`+
}
`
``
571
`+
Subcommand::Suggest { run } => {
`
``
572
`+
return core::build_steps::suggest::suggest(&builder::Builder::new(self), *run);
`
``
573
`+
}
`
``
574
`+
Subcommand::Perf { .. } => {
`
``
575
`+
return core::build_steps::perf::perf(&builder::Builder::new(self));
`
``
576
`+
}
`
``
577
`+
_cmd => {
`
``
578
`+
debug!(cmd = ?_cmd, "not a hardcoded subcommand; returning to normal handling");
`
``
579
`+
}
`
580
580
`}
`
581
``
`-
}
`
582
581
``
583
``
`-
#[cfg(feature = "tracing")]
`
584
``
`-
drop(hardcoded_span);
`
585
``
`-
#[cfg(feature = "tracing")]
`
586
``
`-
debug!("handling subcommand normally");
`
``
582
`+
debug!("handling subcommand normally");
`
``
583
`+
}
`
587
584
``
588
585
`if !self.config.dry_run() {
`
589
586
`#[cfg(feature = "tracing")]
`
590
587
`let _real_run_span = span!(tracing::Level::DEBUG, "executing real run").entered();
`
591
588
``
``
589
`+
// We first do a dry-run. This is a sanity-check to ensure that
`
``
590
`+
// steps don't do anything expensive in the dry-run.
`
592
591
`{
`
593
592
`#[cfg(feature = "tracing")]
`
594
593
`let _sanity_check_span =
`
595
594
`span!(tracing::Level::DEBUG, "(1) executing dry-run sanity-check").entered();
`
596
``
-
597
``
`-
// We first do a dry-run. This is a sanity-check to ensure that
`
598
``
`-
// steps don't do anything expensive in the dry-run.
`
599
595
`self.config.dry_run = DryRun::SelfCheck;
`
600
596
`let builder = builder::Builder::new(self);
`
601
597
` builder.execute_cli();
`
602
598
`}
`
603
599
``
604
``
`-
#[cfg(feature = "tracing")]
`
605
``
`-
let _actual_run_span =
`
606
``
`-
span!(tracing::Level::DEBUG, "(2) executing actual run").entered();
`
607
``
`-
self.config.dry_run = DryRun::Disabled;
`
608
``
`-
let builder = builder::Builder::new(self);
`
609
``
`-
builder.execute_cli();
`
``
600
`+
// Actual run.
`
``
601
`+
{
`
``
602
`+
#[cfg(feature = "tracing")]
`
``
603
`+
let _actual_run_span =
`
``
604
`+
span!(tracing::Level::DEBUG, "(2) executing actual run").entered();
`
``
605
`+
self.config.dry_run = DryRun::Disabled;
`
``
606
`+
let builder = builder::Builder::new(self);
`
``
607
`+
builder.execute_cli();
`
``
608
`+
}
`
610
609
`} else {
`
611
610
`#[cfg(feature = "tracing")]
`
612
611
`let _dry_run_span = span!(tracing::Level::DEBUG, "executing dry run").entered();
`