@@ -26,24 +26,7 @@ use crate::{Compiler, DependencyType, Mode, LLVM_TOOLS};
26
26
use time:: { self , Timespec } ;
27
27
28
28
pub fn pkgname ( builder : & Builder < ' _ > , component : & str ) -> String {
29
- if component == "cargo" {
30
- format ! ( "{}-{}" , component, builder. cargo_package_vers( ) )
31
- } else if component == "rls" {
32
- format ! ( "{}-{}" , component, builder. rls_package_vers( ) )
33
- } else if component == "rust-analyzer" {
34
- format ! ( "{}-{}" , component, builder. rust_analyzer_package_vers( ) )
35
- } else if component == "clippy" {
36
- format ! ( "{}-{}" , component, builder. clippy_package_vers( ) )
37
- } else if component == "miri" {
38
- format ! ( "{}-{}" , component, builder. miri_package_vers( ) )
39
- } else if component == "rustfmt" {
40
- format ! ( "{}-{}" , component, builder. rustfmt_package_vers( ) )
41
- } else if component == "llvm-tools" {
42
- format ! ( "{}-{}" , component, builder. llvm_tools_package_vers( ) )
43
- } else {
44
- assert ! ( component. starts_with( "rust" ) ) ;
45
- format ! ( "{}-{}" , component, builder. rust_package_vers( ) )
46
- }
29
+ format ! ( "{}-{}" , component, builder. rust_package_vers( ) )
47
30
}
48
31
49
32
pub ( crate ) fn distdir ( builder : & Builder < ' _ > ) -> PathBuf {
@@ -2370,7 +2353,6 @@ impl Step for HashSign {
2370
2353
cmd. arg ( today. trim ( ) ) ;
2371
2354
cmd. arg ( addr) ;
2372
2355
cmd. arg ( & builder. config . channel ) ;
2373
- cmd. arg ( & builder. src ) ;
2374
2356
cmd. env ( "BUILD_MANIFEST_LEGACY" , "1" ) ;
2375
2357
2376
2358
builder. create_dir ( & distdir ( builder) ) ;
@@ -2601,3 +2583,70 @@ impl Step for RustDev {
2601
2583
Some ( distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) ) )
2602
2584
}
2603
2585
}
2586
+
2587
+ /// Tarball containing a prebuilt version of the build-manifest tool, intented to be used by the
2588
+ /// release process to avoid cloning the monorepo and building stuff.
2589
+ ///
2590
+ /// Should not be considered stable by end users.
2591
+ #[ derive( Clone , Debug , Eq , Hash , PartialEq ) ]
2592
+ pub struct BuildManifest {
2593
+ pub target : TargetSelection ,
2594
+ }
2595
+
2596
+ impl Step for BuildManifest {
2597
+ type Output = PathBuf ;
2598
+ const DEFAULT : bool = false ;
2599
+ const ONLY_HOSTS : bool = true ;
2600
+
2601
+ fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
2602
+ run. path ( "src/tools/build-manifest" )
2603
+ }
2604
+
2605
+ fn make_run ( run : RunConfig < ' _ > ) {
2606
+ run. builder . ensure ( BuildManifest { target : run. target } ) ;
2607
+ }
2608
+
2609
+ fn run ( self , builder : & Builder < ' _ > ) -> PathBuf {
2610
+ let build_manifest = builder. tool_exe ( Tool :: BuildManifest ) ;
2611
+
2612
+ let name = pkgname ( builder, "build-manifest" ) ;
2613
+ let tmp = tmpdir ( builder) ;
2614
+
2615
+ // Prepare the image.
2616
+ let image = tmp. join ( "build-manifest-image" ) ;
2617
+ let image_bin = image. join ( "bin" ) ;
2618
+ let _ = fs:: remove_dir_all ( & image) ;
2619
+ t ! ( fs:: create_dir_all( & image_bin) ) ;
2620
+ builder. install ( & build_manifest, & image_bin, 0o755 ) ;
2621
+
2622
+ // Prepare the overlay.
2623
+ let overlay = tmp. join ( "build-manifest-overlay" ) ;
2624
+ let _ = fs:: remove_dir_all ( & overlay) ;
2625
+ builder. create_dir ( & overlay) ;
2626
+ builder. create ( & overlay. join ( "version" ) , & builder. rust_version ( ) ) ;
2627
+ for file in & [ "COPYRIGHT" , "LICENSE-APACHE" , "LICENSE-MIT" , "README.md" ] {
2628
+ builder. install ( & builder. src . join ( file) , & overlay, 0o644 ) ;
2629
+ }
2630
+
2631
+ // Create the final tarball.
2632
+ let mut cmd = rust_installer ( builder) ;
2633
+ cmd. arg ( "generate" )
2634
+ . arg ( "--product-name=Rust" )
2635
+ . arg ( "--rel-manifest-dir=rustlib" )
2636
+ . arg ( "--success-message=build-manifest installed." )
2637
+ . arg ( "--image-dir" )
2638
+ . arg ( & image)
2639
+ . arg ( "--work-dir" )
2640
+ . arg ( & tmpdir ( builder) )
2641
+ . arg ( "--output-dir" )
2642
+ . arg ( & distdir ( builder) )
2643
+ . arg ( "--non-installed-overlay" )
2644
+ . arg ( & overlay)
2645
+ . arg ( format ! ( "--package-name={}-{}" , name, self . target. triple) )
2646
+ . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
2647
+ . arg ( "--component-name=build-manifest" ) ;
2648
+
2649
+ builder. run ( & mut cmd) ;
2650
+ distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, self . target. triple) )
2651
+ }
2652
+ }
0 commit comments