@@ -20,7 +20,7 @@ use object::read::archive::ArchiveFile;
2020use tracing:: instrument;
2121
2222use crate :: core:: build_steps:: doc:: DocumentationFormat ;
23- use crate :: core:: build_steps:: tool:: { self , Tool } ;
23+ use crate :: core:: build_steps:: tool:: { self , RustcPrivateCompilers , Tool } ;
2424use crate :: core:: build_steps:: vendor:: { VENDOR_DIR , Vendor } ;
2525use crate :: core:: build_steps:: { compile, llvm} ;
2626use crate :: core:: builder:: { Builder , Kind , RunConfig , ShouldRun , Step , StepMetadata } ;
@@ -425,19 +425,20 @@ impl Step for Rustc {
425425 . as_ref ( )
426426 . is_none_or ( |tools| tools. iter ( ) . any ( |tool| tool == "rustdoc" ) )
427427 {
428- let rustdoc = builder. rustdoc ( compiler) ;
428+ let rustdoc = builder. rustdoc_for_compiler ( compiler) ;
429429 builder. install ( & rustdoc, & image. join ( "bin" ) , FileType :: Executable ) ;
430430 }
431431
432432 let ra_proc_macro_srv_compiler =
433433 builder. compiler_for ( compiler. stage , builder. config . host_target , compiler. host ) ;
434- builder. ensure ( compile:: Rustc :: new ( ra_proc_macro_srv_compiler, compiler. host ) ) ;
434+ let compilers = RustcPrivateCompilers :: from_build_compiler (
435+ builder,
436+ ra_proc_macro_srv_compiler,
437+ compiler. host ,
438+ ) ;
435439
436440 if let Some ( ra_proc_macro_srv) = builder. ensure_if_default (
437- tool:: RustAnalyzerProcMacroSrv {
438- compiler : ra_proc_macro_srv_compiler,
439- target : compiler. host ,
440- } ,
441+ tool:: RustAnalyzerProcMacroSrv :: from_compilers ( compilers) ,
441442 builder. kind ,
442443 ) {
443444 let dst = image. join ( "libexec" ) ;
@@ -1172,7 +1173,7 @@ impl Step for PlainSourceTarball {
11721173
11731174#[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
11741175pub struct Cargo {
1175- pub compiler : Compiler ,
1176+ pub build_compiler : Compiler ,
11761177 pub target : TargetSelection ,
11771178}
11781179
@@ -1188,7 +1189,7 @@ impl Step for Cargo {
11881189
11891190 fn make_run ( run : RunConfig < ' _ > ) {
11901191 run. builder . ensure ( Cargo {
1191- compiler : run. builder . compiler_for (
1192+ build_compiler : run. builder . compiler_for (
11921193 run. builder . top_stage ,
11931194 run. builder . config . host_target ,
11941195 run. target ,
@@ -1198,12 +1199,10 @@ impl Step for Cargo {
11981199 }
11991200
12001201 fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
1201- let compiler = self . compiler ;
1202+ let build_compiler = self . build_compiler ;
12021203 let target = self . target ;
12031204
1204- builder. ensure ( compile:: Rustc :: new ( compiler, target) ) ;
1205-
1206- let cargo = builder. ensure ( tool:: Cargo { compiler, target } ) ;
1205+ let cargo = builder. ensure ( tool:: Cargo :: from_build_compiler ( build_compiler, target) ) ;
12071206 let src = builder. src . join ( "src/tools/cargo" ) ;
12081207 let etc = src. join ( "src/etc" ) ;
12091208
@@ -1228,7 +1227,7 @@ impl Step for Cargo {
12281227
12291228#[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
12301229pub struct RustAnalyzer {
1231- pub compiler : Compiler ,
1230+ pub build_compiler : Compiler ,
12321231 pub target : TargetSelection ,
12331232}
12341233
@@ -1244,7 +1243,7 @@ impl Step for RustAnalyzer {
12441243
12451244 fn make_run ( run : RunConfig < ' _ > ) {
12461245 run. builder . ensure ( RustAnalyzer {
1247- compiler : run. builder . compiler_for (
1246+ build_compiler : run. builder . compiler_for (
12481247 run. builder . top_stage ,
12491248 run. builder . config . host_target ,
12501249 run. target ,
@@ -1254,12 +1253,11 @@ impl Step for RustAnalyzer {
12541253 }
12551254
12561255 fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
1257- let compiler = self . compiler ;
12581256 let target = self . target ;
1257+ let compilers =
1258+ RustcPrivateCompilers :: from_build_compiler ( builder, self . build_compiler , self . target ) ;
12591259
1260- builder. ensure ( compile:: Rustc :: new ( compiler, target) ) ;
1261-
1262- let rust_analyzer = builder. ensure ( tool:: RustAnalyzer { compiler, target } ) ;
1260+ let rust_analyzer = builder. ensure ( tool:: RustAnalyzer :: from_compilers ( compilers) ) ;
12631261
12641262 let mut tarball = Tarball :: new ( builder, "rust-analyzer" , & target. triple ) ;
12651263 tarball. set_overlay ( OverlayKind :: RustAnalyzer ) ;
@@ -1270,9 +1268,9 @@ impl Step for RustAnalyzer {
12701268 }
12711269}
12721270
1273- #[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
1271+ #[ derive( Debug , Clone , Hash , PartialEq , Eq ) ]
12741272pub struct Clippy {
1275- pub compiler : Compiler ,
1273+ pub build_compiler : Compiler ,
12761274 pub target : TargetSelection ,
12771275}
12781276
@@ -1288,7 +1286,7 @@ impl Step for Clippy {
12881286
12891287 fn make_run ( run : RunConfig < ' _ > ) {
12901288 run. builder . ensure ( Clippy {
1291- compiler : run. builder . compiler_for (
1289+ build_compiler : run. builder . compiler_for (
12921290 run. builder . top_stage ,
12931291 run. builder . config . host_target ,
12941292 run. target ,
@@ -1298,16 +1296,15 @@ impl Step for Clippy {
12981296 }
12991297
13001298 fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
1301- let compiler = self . compiler ;
13021299 let target = self . target ;
1303-
1304- builder . ensure ( compile :: Rustc :: new ( compiler , target) ) ;
1300+ let compilers =
1301+ RustcPrivateCompilers :: from_build_compiler ( builder , self . build_compiler , target) ;
13051302
13061303 // Prepare the image directory
13071304 // We expect clippy to build, because we've exited this step above if tool
13081305 // state for clippy isn't testing.
1309- let clippy = builder. ensure ( tool:: Clippy { compiler , target } ) ;
1310- let cargoclippy = builder. ensure ( tool:: CargoClippy { compiler , target } ) ;
1306+ let clippy = builder. ensure ( tool:: Clippy :: from_compilers ( compilers ) ) ;
1307+ let cargoclippy = builder. ensure ( tool:: CargoClippy :: from_compilers ( compilers ) ) ;
13111308
13121309 let mut tarball = Tarball :: new ( builder, "clippy" , & target. triple ) ;
13131310 tarball. set_overlay ( OverlayKind :: Clippy ) ;
@@ -1319,9 +1316,9 @@ impl Step for Clippy {
13191316 }
13201317}
13211318
1322- #[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
1319+ #[ derive( Debug , Clone , Hash , PartialEq , Eq ) ]
13231320pub struct Miri {
1324- pub compiler : Compiler ,
1321+ pub build_compiler : Compiler ,
13251322 pub target : TargetSelection ,
13261323}
13271324
@@ -1337,7 +1334,7 @@ impl Step for Miri {
13371334
13381335 fn make_run ( run : RunConfig < ' _ > ) {
13391336 run. builder . ensure ( Miri {
1340- compiler : run. builder . compiler_for (
1337+ build_compiler : run. builder . compiler_for (
13411338 run. builder . top_stage ,
13421339 run. builder . config . host_target ,
13431340 run. target ,
@@ -1354,15 +1351,12 @@ impl Step for Miri {
13541351 return None ;
13551352 }
13561353
1357- let compiler = self . compiler ;
1358- let target = self . target ;
1359-
1360- builder. ensure ( compile :: Rustc :: new ( compiler , target ) ) ;
1354+ let compilers =
1355+ RustcPrivateCompilers :: from_build_compiler ( builder , self . build_compiler , self . target ) ;
1356+ let miri = builder . ensure ( tool :: Miri :: from_compilers ( compilers ) ) ;
1357+ let cargomiri = builder. ensure ( tool :: CargoMiri :: from_compilers ( compilers ) ) ;
13611358
1362- let miri = builder. ensure ( tool:: Miri { compiler, target } ) ;
1363- let cargomiri = builder. ensure ( tool:: CargoMiri { compiler, target } ) ;
1364-
1365- let mut tarball = Tarball :: new ( builder, "miri" , & target. triple ) ;
1359+ let mut tarball = Tarball :: new ( builder, "miri" , & self . target . triple ) ;
13661360 tarball. set_overlay ( OverlayKind :: Miri ) ;
13671361 tarball. is_preview ( true ) ;
13681362 tarball. add_file ( & miri. tool_path , "bin" , FileType :: Executable ) ;
@@ -1466,9 +1460,9 @@ impl Step for CodegenBackend {
14661460 }
14671461}
14681462
1469- #[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
1463+ #[ derive( Debug , Clone , Hash , PartialEq , Eq ) ]
14701464pub struct Rustfmt {
1471- pub compiler : Compiler ,
1465+ pub build_compiler : Compiler ,
14721466 pub target : TargetSelection ,
14731467}
14741468
@@ -1484,7 +1478,7 @@ impl Step for Rustfmt {
14841478
14851479 fn make_run ( run : RunConfig < ' _ > ) {
14861480 run. builder . ensure ( Rustfmt {
1487- compiler : run. builder . compiler_for (
1481+ build_compiler : run. builder . compiler_for (
14881482 run. builder . top_stage ,
14891483 run. builder . config . host_target ,
14901484 run. target ,
@@ -1494,14 +1488,13 @@ impl Step for Rustfmt {
14941488 }
14951489
14961490 fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
1497- let compiler = self . compiler ;
1498- let target = self . target ;
1491+ let compilers =
1492+ RustcPrivateCompilers :: from_build_compiler ( builder , self . build_compiler , self . target ) ;
14991493
1500- builder. ensure ( compile:: Rustc :: new ( compiler, target) ) ;
1494+ let rustfmt = builder. ensure ( tool:: Rustfmt :: from_compilers ( compilers) ) ;
1495+ let cargofmt = builder. ensure ( tool:: Cargofmt :: from_compilers ( compilers) ) ;
15011496
1502- let rustfmt = builder. ensure ( tool:: Rustfmt { compiler, target } ) ;
1503- let cargofmt = builder. ensure ( tool:: Cargofmt { compiler, target } ) ;
1504- let mut tarball = Tarball :: new ( builder, "rustfmt" , & target. triple ) ;
1497+ let mut tarball = Tarball :: new ( builder, "rustfmt" , & self . target . triple ) ;
15051498 tarball. set_overlay ( OverlayKind :: Rustfmt ) ;
15061499 tarball. is_preview ( true ) ;
15071500 tarball. add_file ( & rustfmt. tool_path , "bin" , FileType :: Executable ) ;
@@ -1548,7 +1541,7 @@ impl Step for Extended {
15481541 let mut built_tools = HashSet :: new ( ) ;
15491542 macro_rules! add_component {
15501543 ( $name: expr => $step: expr) => {
1551- if let Some ( tarball) = builder. ensure_if_default( $step, Kind :: Dist ) {
1544+ if let Some ( Some ( tarball) ) = builder. ensure_if_default( $step, Kind :: Dist ) {
15521545 tarballs. push( tarball) ;
15531546 built_tools. insert( $name) ;
15541547 }
@@ -1568,12 +1561,12 @@ impl Step for Extended {
15681561
15691562 add_component ! ( "rust-docs" => Docs { host: target } ) ;
15701563 add_component ! ( "rust-json-docs" => JsonDocs { host: target } ) ;
1571- add_component ! ( "cargo" => Cargo { compiler, target } ) ;
1572- add_component ! ( "rustfmt" => Rustfmt { compiler, target } ) ;
1573- add_component ! ( "rust-analyzer" => RustAnalyzer { compiler, target } ) ;
1564+ add_component ! ( "cargo" => Cargo { build_compiler : compiler, target } ) ;
1565+ add_component ! ( "rustfmt" => Rustfmt { build_compiler : compiler, target } ) ;
1566+ add_component ! ( "rust-analyzer" => RustAnalyzer { build_compiler : compiler, target } ) ;
15741567 add_component ! ( "llvm-components" => LlvmTools { target } ) ;
1575- add_component ! ( "clippy" => Clippy { compiler, target } ) ;
1576- add_component ! ( "miri" => Miri { compiler, target } ) ;
1568+ add_component ! ( "clippy" => Clippy { build_compiler : compiler, target } ) ;
1569+ add_component ! ( "miri" => Miri { build_compiler : compiler, target } ) ;
15771570 add_component ! ( "analysis" => Analysis { compiler, target } ) ;
15781571 add_component ! ( "rustc-codegen-cranelift" => CodegenBackend {
15791572 compiler: builder. compiler( stage, target) ,
0 commit comments