Add RustcPerf
bootstrap tool · rust-lang/rust@9e0b762 (original) (raw)
`@@ -358,6 +358,50 @@ impl Step for OptimizedDist {
`
358
358
`}
`
359
359
`}
`
360
360
``
``
361
`+
/// The rustc-perf benchmark suite, which is added
`
``
362
`` +
/// as a submodule at src/tools/rustc-perf
.
``
``
363
`+
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
`
``
364
`+
pub struct RustcPerf {
`
``
365
`+
pub compiler: Compiler,
`
``
366
`+
pub target: TargetSelection,
`
``
367
`+
}
`
``
368
+
``
369
`+
impl Step for RustcPerf {
`
``
370
`` +
/// Path to the built collector
binary.
``
``
371
`+
type Output = PathBuf;
`
``
372
+
``
373
`+
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
`
``
374
`+
run.path("src/tools/rustc-perf")
`
``
375
`+
}
`
``
376
+
``
377
`+
fn make_run(run: RunConfig<'_>) {
`
``
378
`+
run.builder.ensure(RustcPerf {
`
``
379
`+
compiler: run.builder.compiler(0, run.builder.config.build),
`
``
380
`+
target: run.target,
`
``
381
`+
});
`
``
382
`+
}
`
``
383
+
``
384
`+
fn run(self, builder: &Builder<'_>) -> PathBuf {
`
``
385
`+
// We need to ensure the rustc-perf submodule is initialized.
`
``
386
`+
builder.update_submodule(Path::new("src/tools/rustc-perf"));
`
``
387
+
``
388
`+
let target = builder.ensure(ToolBuild {
`
``
389
`+
compiler: self.compiler,
`
``
390
`+
target: self.target,
`
``
391
`+
tool: "collector",
`
``
392
`+
mode: Mode::ToolBootstrap,
`
``
393
`+
path: "src/tools/rustc-perf",
`
``
394
`+
source_type: SourceType::Submodule,
`
``
395
`+
extra_features: Vec::new(),
`
``
396
`+
allow_features: "",
`
``
397
`+
// Only build the collector package, which is used for benchmarking through
`
``
398
`+
// a CLI.
`
``
399
`+
cargo_args: vec!["-p".to_string(), "collector".to_string()],
`
``
400
`+
});
`
``
401
`+
target
`
``
402
`+
}
`
``
403
`+
}
`
``
404
+
361
405
`#[derive(Debug, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)]
`
362
406
`pub struct ErrorIndex {
`
363
407
`pub compiler: Compiler,
`