@@ -21,6 +21,7 @@ use serde::Deserialize;
2121use serde_json;
2222
2323use crate :: dist;
24+ use crate :: builder:: Cargo ;
2425use crate :: util:: { exe, is_dylib} ;
2526use crate :: { Compiler , Mode , GitRepo } ;
2627use crate :: native;
@@ -98,7 +99,7 @@ impl Step for Std {
9899 builder. info ( & format ! ( "Building stage{} std artifacts ({} -> {})" , compiler. stage,
99100 & compiler. host, target) ) ;
100101 run_cargo ( builder,
101- & mut cargo,
102+ cargo,
102103 vec ! [ ] ,
103104 & libstd_stamp ( builder, compiler, target) ,
104105 false ) ;
@@ -156,7 +157,7 @@ fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target:
156157pub fn std_cargo ( builder : & Builder < ' _ > ,
157158 compiler : & Compiler ,
158159 target : Interned < String > ,
159- cargo : & mut Command ) {
160+ cargo : & mut Cargo ) {
160161 if let Some ( target) = env:: var_os ( "MACOSX_STD_DEPLOYMENT_TARGET" ) {
161162 cargo. env ( "MACOSX_DEPLOYMENT_TARGET" , target) ;
162163 }
@@ -430,7 +431,7 @@ impl Step for Rustc {
430431 builder. info ( & format ! ( "Building stage{} compiler artifacts ({} -> {})" ,
431432 compiler. stage, & compiler. host, target) ) ;
432433 run_cargo ( builder,
433- & mut cargo,
434+ cargo,
434435 vec ! [ ] ,
435436 & librustc_stamp ( builder, compiler, target) ,
436437 false ) ;
@@ -443,14 +444,14 @@ impl Step for Rustc {
443444 }
444445}
445446
446- pub fn rustc_cargo ( builder : & Builder < ' _ > , cargo : & mut Command ) {
447+ pub fn rustc_cargo ( builder : & Builder < ' _ > , cargo : & mut Cargo ) {
447448 cargo. arg ( "--features" ) . arg ( builder. rustc_features ( ) )
448449 . arg ( "--manifest-path" )
449450 . arg ( builder. src . join ( "src/rustc/Cargo.toml" ) ) ;
450451 rustc_cargo_env ( builder, cargo) ;
451452}
452453
453- pub fn rustc_cargo_env ( builder : & Builder < ' _ > , cargo : & mut Command ) {
454+ pub fn rustc_cargo_env ( builder : & Builder < ' _ > , cargo : & mut Cargo ) {
454455 // Set some configuration variables picked up by build scripts and
455456 // the compiler alike
456457 cargo. env ( "CFG_RELEASE" , builder. rust_release ( ) )
@@ -577,14 +578,11 @@ impl Step for CodegenBackend {
577578 rustc_cargo_env ( builder, & mut cargo) ;
578579
579580 let features = build_codegen_backend ( & builder, & mut cargo, & compiler, target, backend) ;
581+ cargo. arg ( "--features" ) . arg ( features) ;
580582
581583 let tmp_stamp = out_dir. join ( ".tmp.stamp" ) ;
582584
583- let files = run_cargo ( builder,
584- cargo. arg ( "--features" ) . arg ( features) ,
585- vec ! [ ] ,
586- & tmp_stamp,
587- false ) ;
585+ let files = run_cargo ( builder, cargo, vec ! [ ] , & tmp_stamp, false ) ;
588586 if builder. config . dry_run {
589587 return ;
590588 }
@@ -609,7 +607,7 @@ impl Step for CodegenBackend {
609607}
610608
611609pub fn build_codegen_backend ( builder : & Builder < ' _ > ,
612- cargo : & mut Command ,
610+ cargo : & mut Cargo ,
613611 compiler : & Compiler ,
614612 target : Interned < String > ,
615613 backend : Interned < String > ) -> String {
@@ -949,7 +947,7 @@ pub fn add_to_sysroot(
949947}
950948
951949pub fn run_cargo ( builder : & Builder < ' _ > ,
952- cargo : & mut Command ,
950+ cargo : Cargo ,
953951 tail_args : Vec < String > ,
954952 stamp : & Path ,
955953 is_check : bool )
@@ -1081,10 +1079,11 @@ pub fn run_cargo(builder: &Builder<'_>,
10811079
10821080pub fn stream_cargo (
10831081 builder : & Builder < ' _ > ,
1084- cargo : & mut Command ,
1082+ cargo : Cargo ,
10851083 tail_args : Vec < String > ,
10861084 cb : & mut dyn FnMut ( CargoMessage < ' _ > ) ,
10871085) -> bool {
1086+ let mut cargo = Command :: from ( cargo) ;
10881087 if builder. config . dry_run {
10891088 return true ;
10901089 }
0 commit comments