@@ -437,29 +437,32 @@ pub fn rust_src(build: &Build) {
437437 copy ( & build. src . join ( item) , & dst_src. join ( item) ) ;
438438 }
439439
440- // Get cargo-vendor installed, if it isn't already.
441- let mut has_cargo_vendor = false ;
442- let mut cmd = Command :: new ( & build. cargo ) ;
443- for line in output ( cmd. arg ( "install" ) . arg ( "--list" ) ) . lines ( ) {
444- has_cargo_vendor |= line. starts_with ( "cargo-vendor " ) ;
445- }
446- if !has_cargo_vendor {
440+ // If we're building from git sources, we need to vendor a complete distribution.
441+ if build. src_is_git {
442+ // Get cargo-vendor installed, if it isn't already.
443+ let mut has_cargo_vendor = false ;
444+ let mut cmd = Command :: new ( & build. cargo ) ;
445+ for line in output ( cmd. arg ( "install" ) . arg ( "--list" ) ) . lines ( ) {
446+ has_cargo_vendor |= line. starts_with ( "cargo-vendor " ) ;
447+ }
448+ if !has_cargo_vendor {
449+ let mut cmd = Command :: new ( & build. cargo ) ;
450+ cmd. arg ( "install" )
451+ . arg ( "--force" )
452+ . arg ( "--debug" )
453+ . arg ( "--vers" ) . arg ( CARGO_VENDOR_VERSION )
454+ . arg ( "cargo-vendor" )
455+ . env ( "RUSTC" , & build. rustc ) ;
456+ build. run ( & mut cmd) ;
457+ }
458+
459+ // Vendor all Cargo dependencies
447460 let mut cmd = Command :: new ( & build. cargo ) ;
448- cmd. arg ( "install" )
449- . arg ( "--force" )
450- . arg ( "--debug" )
451- . arg ( "--vers" ) . arg ( CARGO_VENDOR_VERSION )
452- . arg ( "cargo-vendor" )
453- . env ( "RUSTC" , & build. rustc ) ;
461+ cmd. arg ( "vendor" )
462+ . current_dir ( & dst_src. join ( "src" ) ) ;
454463 build. run ( & mut cmd) ;
455464 }
456465
457- // Vendor all Cargo dependencies
458- let mut cmd = Command :: new ( & build. cargo ) ;
459- cmd. arg ( "vendor" )
460- . current_dir ( & dst_src. join ( "src" ) ) ;
461- build. run ( & mut cmd) ;
462-
463466 // Create source tarball in rust-installer format
464467 let mut cmd = Command :: new ( SH_CMD ) ;
465468 cmd. arg ( sanitize_sh ( & build. src . join ( "src/rust-installer/gen-installer.sh" ) ) )
0 commit comments