diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 9df7d6c6bef00..1af96f1bf0b8f 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -260,7 +260,7 @@ impl<'a> Builder<'a> { doc::Reference, doc::Rustdoc, doc::CargoBook), Kind::Dist => describe!(dist::Docs, dist::Mingw, dist::Rustc, dist::DebuggerScripts, dist::Std, dist::Analysis, dist::Src, dist::PlainSourceTarball, dist::Cargo, - dist::Rls, dist::Extended, dist::HashSign), + dist::Rls, dist::Extended, dist::HashSign, dist::DontDistWithMiriEnabled), Kind::Install => describe!(install::Docs, install::Std, install::Cargo, install::Rls, install::Analysis, install::Src, install::Rustc), } diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 7bca088dbd5a8..5188604b0a69a 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -1111,6 +1111,31 @@ impl Step for Rls { } } + +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct DontDistWithMiriEnabled; + +impl Step for DontDistWithMiriEnabled { + type Output = PathBuf; + const DEFAULT: bool = true; + + fn should_run(run: ShouldRun) -> ShouldRun { + let build_miri = run.builder.build.config.test_miri; + run.default_condition(build_miri) + } + + fn make_run(run: RunConfig) { + run.builder.ensure(DontDistWithMiriEnabled); + } + + fn run(self, _: &Builder) -> PathBuf { + panic!("Do not distribute with miri enabled.\n\ + The distributed libraries would include all MIR (increasing binary size). + The distributed MIR would include validation statements."); + } +} + + #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct Extended { stage: u32,