@@ -19,6 +19,7 @@ use crate::builder::{Builder, RunConfig, ShouldRun, Step};
19
19
use crate :: cache:: { Interned , INTERNER } ;
20
20
use crate :: compile;
21
21
use crate :: config:: TargetSelection ;
22
+ use crate :: tarball:: { OverlayKind , Tarball } ;
22
23
use crate :: tool:: { self , Tool } ;
23
24
use crate :: util:: { exe, is_dylib, timeit} ;
24
25
use crate :: { Compiler , DependencyType , Mode , LLVM_TOOLS } ;
@@ -2517,68 +2518,36 @@ impl Step for RustDev {
2517
2518
2518
2519
builder. info ( & format ! ( "Dist RustDev ({})" , target) ) ;
2519
2520
let _time = timeit ( builder) ;
2520
- let src = builder. src . join ( "src/llvm-project/llvm" ) ;
2521
- let name = pkgname ( builder, "rust-dev" ) ;
2522
-
2523
- let tmp = tmpdir ( builder) ;
2524
- let image = tmp. join ( "rust-dev-image" ) ;
2525
- drop ( fs:: remove_dir_all ( & image) ) ;
2526
2521
2527
- // Prepare the image directory
2528
- let dst_bindir = image. join ( "bin" ) ;
2529
- t ! ( fs:: create_dir_all( & dst_bindir) ) ;
2522
+ let mut tarball = Tarball :: new ( builder, "rust-dev" , & target. triple ) ;
2523
+ tarball. set_overlay ( OverlayKind :: LLVM ) ;
2530
2524
2531
2525
let src_bindir = builder. llvm_out ( target) . join ( "bin" ) ;
2532
- let install_bin =
2533
- |name| builder. install ( & src_bindir. join ( exe ( name, target) ) , & dst_bindir, 0o755 ) ;
2534
- install_bin ( "llvm-config" ) ;
2535
- install_bin ( "llvm-ar" ) ;
2536
- install_bin ( "llvm-objdump" ) ;
2537
- install_bin ( "llvm-profdata" ) ;
2538
- install_bin ( "llvm-bcanalyzer" ) ;
2539
- install_bin ( "llvm-cov" ) ;
2540
- install_bin ( "llvm-dwp" ) ;
2541
- builder. install ( & builder. llvm_filecheck ( target) , & dst_bindir, 0o755 ) ;
2526
+ for bin in & [
2527
+ "llvm-config" ,
2528
+ "llvm-ar" ,
2529
+ "llvm-objdump" ,
2530
+ "llvm-profdata" ,
2531
+ "llvm-bcanalyzer" ,
2532
+ "llvm-cov" ,
2533
+ "llvm-dwp" ,
2534
+ ] {
2535
+ tarball. add_file ( src_bindir. join ( exe ( bin, target) ) , "bin" , 0o755 ) ;
2536
+ }
2537
+ tarball. add_file ( & builder. llvm_filecheck ( target) , "bin" , 0o755 ) ;
2542
2538
2543
2539
// Copy the include directory as well; needed mostly to build
2544
2540
// librustc_llvm properly (e.g., llvm-config.h is in here). But also
2545
2541
// just broadly useful to be able to link against the bundled LLVM.
2546
- builder . cp_r ( & builder. llvm_out ( target) . join ( "include" ) , & image . join ( "include" ) ) ;
2542
+ tarball . add_dir ( & builder. llvm_out ( target) . join ( "include" ) , "." ) ;
2547
2543
2548
2544
// Copy libLLVM.so to the target lib dir as well, so the RPATH like
2549
2545
// `$ORIGIN/../lib` can find it. It may also be used as a dependency
2550
2546
// of `rustc-dev` to support the inherited `-lLLVM` when using the
2551
2547
// compiler libraries.
2552
- maybe_install_llvm ( builder, target, & image. join ( "lib" ) ) ;
2553
-
2554
- // Prepare the overlay
2555
- let overlay = tmp. join ( "rust-dev-overlay" ) ;
2556
- drop ( fs:: remove_dir_all ( & overlay) ) ;
2557
- builder. create_dir ( & overlay) ;
2558
- builder. install ( & src. join ( "README.txt" ) , & overlay, 0o644 ) ;
2559
- builder. install ( & src. join ( "LICENSE.TXT" ) , & overlay, 0o644 ) ;
2560
- builder. create ( & overlay. join ( "version" ) , & builder. rust_version ( ) ) ;
2548
+ maybe_install_llvm ( builder, target, & tarball. image_dir ( ) . join ( "lib" ) ) ;
2561
2549
2562
- // Generate the installer tarball
2563
- let mut cmd = rust_installer ( builder) ;
2564
- cmd. arg ( "generate" )
2565
- . arg ( "--product-name=Rust" )
2566
- . arg ( "--rel-manifest-dir=rustlib" )
2567
- . arg ( "--success-message=rust-dev-installed." )
2568
- . arg ( "--image-dir" )
2569
- . arg ( & image)
2570
- . arg ( "--work-dir" )
2571
- . arg ( & tmpdir ( builder) )
2572
- . arg ( "--output-dir" )
2573
- . arg ( & distdir ( builder) )
2574
- . arg ( "--non-installed-overlay" )
2575
- . arg ( & overlay)
2576
- . arg ( format ! ( "--package-name={}-{}" , name, target. triple) )
2577
- . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
2578
- . arg ( "--component-name=rust-dev" ) ;
2579
-
2580
- builder. run ( & mut cmd) ;
2581
- Some ( distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) ) )
2550
+ Some ( tarball. generate ( ) )
2582
2551
}
2583
2552
}
2584
2553
@@ -2607,45 +2576,9 @@ impl Step for BuildManifest {
2607
2576
fn run ( self , builder : & Builder < ' _ > ) -> PathBuf {
2608
2577
let build_manifest = builder. tool_exe ( Tool :: BuildManifest ) ;
2609
2578
2610
- let name = pkgname ( builder, "build-manifest" ) ;
2611
- let tmp = tmpdir ( builder) ;
2612
-
2613
- // Prepare the image.
2614
- let image = tmp. join ( "build-manifest-image" ) ;
2615
- let image_bin = image. join ( "bin" ) ;
2616
- let _ = fs:: remove_dir_all ( & image) ;
2617
- t ! ( fs:: create_dir_all( & image_bin) ) ;
2618
- builder. install ( & build_manifest, & image_bin, 0o755 ) ;
2619
-
2620
- // Prepare the overlay.
2621
- let overlay = tmp. join ( "build-manifest-overlay" ) ;
2622
- let _ = fs:: remove_dir_all ( & overlay) ;
2623
- builder. create_dir ( & overlay) ;
2624
- builder. create ( & overlay. join ( "version" ) , & builder. rust_version ( ) ) ;
2625
- for file in & [ "COPYRIGHT" , "LICENSE-APACHE" , "LICENSE-MIT" , "README.md" ] {
2626
- builder. install ( & builder. src . join ( file) , & overlay, 0o644 ) ;
2627
- }
2628
-
2629
- // Create the final tarball.
2630
- let mut cmd = rust_installer ( builder) ;
2631
- cmd. arg ( "generate" )
2632
- . arg ( "--product-name=Rust" )
2633
- . arg ( "--rel-manifest-dir=rustlib" )
2634
- . arg ( "--success-message=build-manifest installed." )
2635
- . arg ( "--image-dir" )
2636
- . arg ( & image)
2637
- . arg ( "--work-dir" )
2638
- . arg ( & tmpdir ( builder) )
2639
- . arg ( "--output-dir" )
2640
- . arg ( & distdir ( builder) )
2641
- . arg ( "--non-installed-overlay" )
2642
- . arg ( & overlay)
2643
- . arg ( format ! ( "--package-name={}-{}" , name, self . target. triple) )
2644
- . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
2645
- . arg ( "--component-name=build-manifest" ) ;
2646
-
2647
- builder. run ( & mut cmd) ;
2648
- distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, self . target. triple) )
2579
+ let tarball = Tarball :: new ( builder, "build-manifest" , & self . target . triple ) ;
2580
+ tarball. add_file ( & build_manifest, "bin" , 0o755 ) ;
2581
+ tarball. generate ( )
2649
2582
}
2650
2583
}
2651
2584
0 commit comments