@@ -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 } ; 
@@ -431,13 +431,14 @@ impl Step for Rustc {
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" ) ; 
@@ -1226,7 +1227,7 @@ impl Step for Cargo {
12261227
12271228#[ derive( Debug ,  PartialOrd ,  Ord ,  Clone ,  Hash ,  PartialEq ,  Eq ) ]  
12281229pub  struct  RustAnalyzer  { 
1229-     pub  compiler :  Compiler , 
1230+     pub  build_compiler :  Compiler , 
12301231    pub  target :  TargetSelection , 
12311232} 
12321233
@@ -1242,7 +1243,7 @@ impl Step for RustAnalyzer {
12421243
12431244    fn  make_run ( run :  RunConfig < ' _ > )  { 
12441245        run. builder . ensure ( RustAnalyzer  { 
1245-             compiler :  run. builder . compiler_for ( 
1246+             build_compiler :  run. builder . compiler_for ( 
12461247                run. builder . top_stage , 
12471248                run. builder . config . host_target , 
12481249                run. target , 
@@ -1252,12 +1253,11 @@ impl Step for RustAnalyzer {
12521253    } 
12531254
12541255    fn  run ( self ,  builder :  & Builder < ' _ > )  -> Option < GeneratedTarball >  { 
1255-         let  compiler = self . compiler ; 
12561256        let  target = self . target ; 
1257+         let  compilers =
1258+             RustcPrivateCompilers :: from_build_compiler ( builder,  self . build_compiler ,  self . target ) ; 
12571259
1258-         builder. ensure ( compile:: Rustc :: new ( compiler,  target) ) ; 
1259- 
1260-         let  rust_analyzer = builder. ensure ( tool:: RustAnalyzer  {  compiler,  target } ) ; 
1260+         let  rust_analyzer = builder. ensure ( tool:: RustAnalyzer :: from_compilers ( compilers) ) ; 
12611261
12621262        let  mut  tarball = Tarball :: new ( builder,  "rust-analyzer" ,  & target. triple ) ; 
12631263        tarball. set_overlay ( OverlayKind :: RustAnalyzer ) ; 
@@ -1268,9 +1268,9 @@ impl Step for RustAnalyzer {
12681268    } 
12691269} 
12701270
1271- #[ derive( Debug ,  PartialOrd ,   Ord ,   Clone ,  Hash ,  PartialEq ,  Eq ) ]  
1271+ #[ derive( Debug ,  Clone ,  Hash ,  PartialEq ,  Eq ) ]  
12721272pub  struct  Clippy  { 
1273-     pub  compiler :  Compiler , 
1273+     pub  build_compiler :  Compiler , 
12741274    pub  target :  TargetSelection , 
12751275} 
12761276
@@ -1286,7 +1286,7 @@ impl Step for Clippy {
12861286
12871287    fn  make_run ( run :  RunConfig < ' _ > )  { 
12881288        run. builder . ensure ( Clippy  { 
1289-             compiler :  run. builder . compiler_for ( 
1289+             build_compiler :  run. builder . compiler_for ( 
12901290                run. builder . top_stage , 
12911291                run. builder . config . host_target , 
12921292                run. target , 
@@ -1296,16 +1296,15 @@ impl Step for Clippy {
12961296    } 
12971297
12981298    fn  run ( self ,  builder :  & Builder < ' _ > )  -> Option < GeneratedTarball >  { 
1299-         let  compiler = self . compiler ; 
13001299        let  target = self . target ; 
1301- 
1302-         builder . ensure ( compile :: Rustc :: new ( compiler ,   target) ) ; 
1300+          let  compilers = 
1301+              RustcPrivateCompilers :: from_build_compiler ( builder ,   self . build_compiler ,   target) ; 
13031302
13041303        // Prepare the image directory 
13051304        // We expect clippy to build, because we've exited this step above if tool 
13061305        // state for clippy isn't testing. 
1307-         let  clippy = builder. ensure ( tool:: Clippy   {  compiler ,  target  } ) ; 
1308-         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 ) ) ; 
13091308
13101309        let  mut  tarball = Tarball :: new ( builder,  "clippy" ,  & target. triple ) ; 
13111310        tarball. set_overlay ( OverlayKind :: Clippy ) ; 
@@ -1317,9 +1316,9 @@ impl Step for Clippy {
13171316    } 
13181317} 
13191318
1320- #[ derive( Debug ,  PartialOrd ,   Ord ,   Clone ,  Hash ,  PartialEq ,  Eq ) ]  
1319+ #[ derive( Debug ,  Clone ,  Hash ,  PartialEq ,  Eq ) ]  
13211320pub  struct  Miri  { 
1322-     pub  compiler :  Compiler , 
1321+     pub  build_compiler :  Compiler , 
13231322    pub  target :  TargetSelection , 
13241323} 
13251324
@@ -1335,7 +1334,7 @@ impl Step for Miri {
13351334
13361335    fn  make_run ( run :  RunConfig < ' _ > )  { 
13371336        run. builder . ensure ( Miri  { 
1338-             compiler :  run. builder . compiler_for ( 
1337+             build_compiler :  run. builder . compiler_for ( 
13391338                run. builder . top_stage , 
13401339                run. builder . config . host_target , 
13411340                run. target , 
@@ -1352,15 +1351,12 @@ impl Step for Miri {
13521351            return  None ; 
13531352        } 
13541353
1355-         let  compiler = self . compiler ; 
1356-         let  target = self . target ; 
1357- 
1358-         builder. ensure ( compile:: Rustc :: new ( compiler,  target) ) ; 
1359- 
1360-         let  miri = builder. ensure ( tool:: Miri  {  compiler,  target } ) ; 
1361-         let  cargomiri = builder. ensure ( tool:: CargoMiri  {  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) ) ; 
13621358
1363-         let  mut  tarball = Tarball :: new ( builder,  "miri" ,  & target. triple ) ; 
1359+         let  mut  tarball = Tarball :: new ( builder,  "miri" ,  & self . target . triple ) ; 
13641360        tarball. set_overlay ( OverlayKind :: Miri ) ; 
13651361        tarball. is_preview ( true ) ; 
13661362        tarball. add_file ( & miri. tool_path ,  "bin" ,  FileType :: Executable ) ; 
@@ -1462,9 +1458,9 @@ impl Step for CodegenBackend {
14621458    } 
14631459} 
14641460
1465- #[ derive( Debug ,  PartialOrd ,   Ord ,   Clone ,  Hash ,  PartialEq ,  Eq ) ]  
1461+ #[ derive( Debug ,  Clone ,  Hash ,  PartialEq ,  Eq ) ]  
14661462pub  struct  Rustfmt  { 
1467-     pub  compiler :  Compiler , 
1463+     pub  build_compiler :  Compiler , 
14681464    pub  target :  TargetSelection , 
14691465} 
14701466
@@ -1480,7 +1476,7 @@ impl Step for Rustfmt {
14801476
14811477    fn  make_run ( run :  RunConfig < ' _ > )  { 
14821478        run. builder . ensure ( Rustfmt  { 
1483-             compiler :  run. builder . compiler_for ( 
1479+             build_compiler :  run. builder . compiler_for ( 
14841480                run. builder . top_stage , 
14851481                run. builder . config . host_target , 
14861482                run. target , 
@@ -1490,14 +1486,13 @@ impl Step for Rustfmt {
14901486    } 
14911487
14921488    fn  run ( self ,  builder :  & Builder < ' _ > )  -> Option < GeneratedTarball >  { 
1493-         let  compiler =  self . compiler ; 
1494-         let  target =  self . target ; 
1489+         let  compilers = 
1490+              RustcPrivateCompilers :: from_build_compiler ( builder ,   self . build_compiler ,   self . target ) ; 
14951491
1496-         builder. ensure ( compile:: Rustc :: new ( compiler,  target) ) ; 
1492+         let  rustfmt = builder. ensure ( tool:: Rustfmt :: from_compilers ( compilers) ) ; 
1493+         let  cargofmt = builder. ensure ( tool:: Cargofmt :: from_compilers ( compilers) ) ; 
14971494
1498-         let  rustfmt = builder. ensure ( tool:: Rustfmt  {  compiler,  target } ) ; 
1499-         let  cargofmt = builder. ensure ( tool:: Cargofmt  {  compiler,  target } ) ; 
1500-         let  mut  tarball = Tarball :: new ( builder,  "rustfmt" ,  & target. triple ) ; 
1495+         let  mut  tarball = Tarball :: new ( builder,  "rustfmt" ,  & self . target . triple ) ; 
15011496        tarball. set_overlay ( OverlayKind :: Rustfmt ) ; 
15021497        tarball. is_preview ( true ) ; 
15031498        tarball. add_file ( & rustfmt. tool_path ,  "bin" ,  FileType :: Executable ) ; 
@@ -1565,11 +1560,11 @@ impl Step for Extended {
15651560        add_component ! ( "rust-docs"  => Docs  {  host:  target } ) ; 
15661561        add_component ! ( "rust-json-docs"  => JsonDocs  {  host:  target } ) ; 
15671562        add_component ! ( "cargo"  => Cargo  {  compiler,  target } ) ; 
1568-         add_component ! ( "rustfmt"  => Rustfmt  {  compiler,  target } ) ; 
1569-         add_component ! ( "rust-analyzer"  => RustAnalyzer  {  compiler,  target } ) ; 
1563+         add_component ! ( "rustfmt"  => Rustfmt  {  build_compiler :   compiler,  target } ) ; 
1564+         add_component ! ( "rust-analyzer"  => RustAnalyzer  {  build_compiler :   compiler,  target } ) ; 
15701565        add_component ! ( "llvm-components"  => LlvmTools  {  target } ) ; 
1571-         add_component ! ( "clippy"  => Clippy  {  compiler,  target } ) ; 
1572-         add_component ! ( "miri"  => Miri  {  compiler,  target } ) ; 
1566+         add_component ! ( "clippy"  => Clippy  {  build_compiler :   compiler,  target } ) ; 
1567+         add_component ! ( "miri"  => Miri  {  build_compiler :   compiler,  target } ) ; 
15731568        add_component ! ( "analysis"  => Analysis  {  compiler,  target } ) ; 
15741569        add_component ! ( "rustc-codegen-cranelift"  => CodegenBackend  { 
15751570            compiler:  builder. compiler( stage,  target) , 
0 commit comments