@@ -26,24 +26,7 @@ use crate::{Compiler, DependencyType, Mode, LLVM_TOOLS};
2626use time:: { self , Timespec } ;
2727
2828pub 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( ) )
4730}
4831
4932pub ( crate ) fn distdir ( builder : & Builder < ' _ > ) -> PathBuf {
@@ -2370,7 +2353,6 @@ impl Step for HashSign {
23702353 cmd. arg ( today. trim ( ) ) ;
23712354 cmd. arg ( addr) ;
23722355 cmd. arg ( & builder. config . channel ) ;
2373- cmd. arg ( & builder. src ) ;
23742356 cmd. env ( "BUILD_MANIFEST_LEGACY" , "1" ) ;
23752357
23762358 builder. create_dir ( & distdir ( builder) ) ;
@@ -2601,3 +2583,70 @@ impl Step for RustDev {
26012583 Some ( distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) ) )
26022584 }
26032585}
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