1
Fork 0

replace extra_filename with strict version hash in metrics file names

This commit is contained in:
Jane Losare-Lusby 2025-03-25 11:56:55 -07:00
parent d4bdd1ed55
commit 6ce74f78f0
2 changed files with 10 additions and 8 deletions

View file

@ -60,6 +60,7 @@ use rustc_session::lint::{Lint, LintId};
use rustc_session::output::collect_crate_types; use rustc_session::output::collect_crate_types;
use rustc_session::{EarlyDiagCtxt, Session, config, filesearch}; use rustc_session::{EarlyDiagCtxt, Session, config, filesearch};
use rustc_span::FileName; use rustc_span::FileName;
use rustc_span::def_id::LOCAL_CRATE;
use rustc_target::json::ToJson; use rustc_target::json::ToJson;
use rustc_target::spec::{Target, TargetTuple}; use rustc_target::spec::{Target, TargetTuple};
use time::OffsetDateTime; use time::OffsetDateTime;
@ -383,14 +384,10 @@ pub fn run_compiler(at_args: &[String], callbacks: &mut (dyn Callbacks + Send))
} }
fn dump_feature_usage_metrics(tcxt: TyCtxt<'_>, metrics_dir: &Path) { fn dump_feature_usage_metrics(tcxt: TyCtxt<'_>, metrics_dir: &Path) {
let output_filenames = tcxt.output_filenames(()); let hash = tcxt.crate_hash(LOCAL_CRATE);
let mut metrics_file_name = std::ffi::OsString::from("unstable_feature_usage_metrics-"); let crate_name = tcxt.crate_name(LOCAL_CRATE);
let mut metrics_path = output_filenames.with_directory_and_extension(metrics_dir, "json"); let metrics_file_name = format!("unstable_feature_usage_metrics-{crate_name}-{hash}.json");
let metrics_file_stem = let metrics_path = metrics_dir.join(metrics_file_name);
metrics_path.file_name().expect("there should be a valid default output filename");
metrics_file_name.push(metrics_file_stem);
metrics_path.pop();
metrics_path.push(metrics_file_name);
if let Err(error) = tcxt.features().dump_feature_usage_metrics(metrics_path) { if let Err(error) = tcxt.features().dump_feature_usage_metrics(metrics_path) {
// FIXME(yaahc): once metrics can be enabled by default we will want "failure to emit // FIXME(yaahc): once metrics can be enabled by default we will want "failure to emit
// default metrics" to only produce a warning when metrics are enabled by default and emit // default metrics" to only produce a warning when metrics are enabled by default and emit

View file

@ -1738,10 +1738,15 @@ impl<'tcx> TyCtxt<'tcx> {
// - needs_metadata: for putting into crate metadata. // - needs_metadata: for putting into crate metadata.
// - instrument_coverage: for putting into coverage data (see // - instrument_coverage: for putting into coverage data (see
// `hash_mir_source`). // `hash_mir_source`).
// - metrics_dir: metrics use the strict version hash in the filenames
// for dumped metrics files to prevent overwriting distinct metrics
// for similar source builds (may change in the future, this is part
// of the proof of concept impl for the metrics initiative project goal)
cfg!(debug_assertions) cfg!(debug_assertions)
|| self.sess.opts.incremental.is_some() || self.sess.opts.incremental.is_some()
|| self.needs_metadata() || self.needs_metadata()
|| self.sess.instrument_coverage() || self.sess.instrument_coverage()
|| self.sess.opts.unstable_opts.metrics_dir.is_some()
} }
#[inline] #[inline]