@@ -605,7 +605,7 @@ pub struct RustcDev {
605
605
}
606
606
607
607
impl Step for RustcDev {
608
- type Output = PathBuf ;
608
+ type Output = Option < PathBuf > ;
609
609
const DEFAULT : bool = true ;
610
610
const ONLY_HOSTS : bool = true ;
611
611
@@ -624,60 +624,36 @@ impl Step for RustcDev {
624
624
} ) ;
625
625
}
626
626
627
- fn run ( self , builder : & Builder < ' _ > ) -> PathBuf {
627
+ fn run ( self , builder : & Builder < ' _ > ) -> Option < PathBuf > {
628
628
let compiler = self . compiler ;
629
629
let target = self . target ;
630
-
631
- let name = pkgname ( builder, "rustc-dev" ) ;
632
- let archive = distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) ) ;
633
630
if skip_host_target_lib ( builder, compiler) {
634
- return archive ;
631
+ return None ;
635
632
}
636
633
637
634
builder. ensure ( compile:: Rustc { compiler, target } ) ;
638
635
639
- let image = tmpdir ( builder) . join ( format ! ( "{}-{}-image" , name, target. triple) ) ;
640
- let _ = fs:: remove_dir_all ( & image) ;
636
+ let tarball = Tarball :: new ( builder, "rustc-dev" , & target. triple ) ;
641
637
642
638
let compiler_to_use = builder. compiler_for ( compiler. stage , compiler. host , target) ;
643
639
let stamp = compile:: librustc_stamp ( builder, compiler_to_use, target) ;
644
- copy_target_libs ( builder, target, & image , & stamp) ;
640
+ copy_target_libs ( builder, target, tarball . image_dir ( ) , & stamp) ;
645
641
646
- // Copy compiler sources.
647
- let dst_src = image. join ( "lib/rustlib/rustc-src/rust" ) ;
648
- t ! ( fs:: create_dir_all( & dst_src) ) ;
649
-
650
- let src_files = [ "Cargo.lock" ] ;
642
+ let src_files = & [ "Cargo.lock" ] ;
651
643
// This is the reduced set of paths which will become the rustc-dev component
652
644
// (essentially the compiler crates and all of their path dependencies).
653
- copy_src_dirs ( builder, & builder. src , & [ "compiler" ] , & [ ] , & dst_src) ;
654
- for file in src_files. iter ( ) {
655
- builder. copy ( & builder. src . join ( file) , & dst_src. join ( file) ) ;
645
+ copy_src_dirs (
646
+ builder,
647
+ & builder. src ,
648
+ & [ "compiler" ] ,
649
+ & [ ] ,
650
+ & tarball. image_dir ( ) . join ( "lib/rustlib/rustc-src/rust" ) ,
651
+ ) ;
652
+ for file in src_files {
653
+ tarball. add_file ( builder. src . join ( file) , "lib/rustlib/rustc-src/rust" , 0o644 ) ;
656
654
}
657
655
658
- let mut cmd = rust_installer ( builder) ;
659
- cmd. arg ( "generate" )
660
- . arg ( "--product-name=Rust" )
661
- . arg ( "--rel-manifest-dir=rustlib" )
662
- . arg ( "--success-message=Rust-is-ready-to-develop." )
663
- . arg ( "--image-dir" )
664
- . arg ( & image)
665
- . arg ( "--work-dir" )
666
- . arg ( & tmpdir ( builder) )
667
- . arg ( "--output-dir" )
668
- . arg ( & distdir ( builder) )
669
- . arg ( format ! ( "--package-name={}-{}" , name, target. triple) )
670
- . arg ( format ! ( "--component-name=rustc-dev-{}" , target. triple) )
671
- . arg ( "--legacy-manifest-dirs=rustlib,cargo" ) ;
672
-
673
- builder. info ( & format ! (
674
- "Dist rustc-dev stage{} ({} -> {})" ,
675
- compiler. stage, & compiler. host, target
676
- ) ) ;
677
- let _time = timeit ( builder) ;
678
- builder. run ( & mut cmd) ;
679
- builder. remove_dir ( & image) ;
680
- archive
656
+ Some ( tarball. generate ( ) )
681
657
}
682
658
}
683
659
0 commit comments