@@ -39,6 +39,8 @@ use util::{cp_r, libdir, is_dylib, cp_filtered, copy, exe};
39
39
fn pkgname ( build : & Build , component : & str ) -> String {
40
40
if component == "cargo" {
41
41
format ! ( "{}-{}" , component, build. cargo_package_vers( ) )
42
+ } else if component == "rls" {
43
+ format ! ( "{}-{}" , component, build. package_vers( & build. release_num( "rls" ) ) )
42
44
} else {
43
45
assert ! ( component. starts_with( "rust" ) ) ;
44
46
format ! ( "{}-{}" , component, build. rust_package_vers( ) )
@@ -315,15 +317,12 @@ pub fn rust_src_location(build: &Build) -> PathBuf {
315
317
316
318
/// Creates a tarball of save-analysis metadata, if available.
317
319
pub fn analysis ( build : & Build , compiler : & Compiler , target : & str ) {
318
- if !build. config . rust_save_analysis {
319
- return
320
- }
321
-
320
+ assert ! ( build. config. extended) ;
322
321
println ! ( "Dist analysis" ) ;
323
322
324
323
if compiler. host != build. config . build {
325
324
println ! ( "\t skipping, not a build host" ) ;
326
- return
325
+ return ;
327
326
}
328
327
329
328
// Package save-analysis from stage1 if not doing a full bootstrap, as the
@@ -393,6 +392,7 @@ pub fn rust_src(build: &Build) {
393
392
"man" ,
394
393
"src" ,
395
394
"cargo" ,
395
+ "rls" ,
396
396
] ;
397
397
398
398
let filter_fn = move |path : & Path | {
@@ -539,7 +539,7 @@ pub fn cargo(build: &Build, stage: u32, target: &str) {
539
539
540
540
let src = build. src . join ( "cargo" ) ;
541
541
let etc = src. join ( "src/etc" ) ;
542
- let release_num = build. cargo_release_num ( ) ;
542
+ let release_num = build. release_num ( "cargo" ) ;
543
543
let name = pkgname ( build, "cargo" ) ;
544
544
let version = build. cargo_info . version ( build, & release_num) ;
545
545
@@ -593,6 +593,55 @@ pub fn cargo(build: &Build, stage: u32, target: &str) {
593
593
build. run ( & mut cmd) ;
594
594
}
595
595
596
+ pub fn rls ( build : & Build , stage : u32 , target : & str ) {
597
+ assert ! ( build. config. extended) ;
598
+ println ! ( "Dist RLS stage{} ({})" , stage, target) ;
599
+ let compiler = Compiler :: new ( stage, & build. config . build ) ;
600
+
601
+ let src = build. src . join ( "rls" ) ;
602
+ let release_num = build. release_num ( "rls" ) ;
603
+ let name = pkgname ( build, "rls" ) ;
604
+ let version = build. rls_info . version ( build, & release_num) ;
605
+
606
+ let tmp = tmpdir ( build) ;
607
+ let image = tmp. join ( "rls-image" ) ;
608
+ drop ( fs:: remove_dir_all ( & image) ) ;
609
+ t ! ( fs:: create_dir_all( & image) ) ;
610
+
611
+ // Prepare the image directory
612
+ let rls = build. cargo_out ( & compiler, Mode :: Tool , target)
613
+ . join ( exe ( "rls" , target) ) ;
614
+ install ( & rls, & image. join ( "bin" ) , 0o755 ) ;
615
+ let doc = image. join ( "share/doc/rls" ) ;
616
+ install ( & src. join ( "README.md" ) , & doc, 0o644 ) ;
617
+ install ( & src. join ( "LICENSE-MIT" ) , & doc, 0o644 ) ;
618
+ install ( & src. join ( "LICENSE-APACHE" ) , & doc, 0o644 ) ;
619
+
620
+ // Prepare the overlay
621
+ let overlay = tmp. join ( "rls-overlay" ) ;
622
+ drop ( fs:: remove_dir_all ( & overlay) ) ;
623
+ t ! ( fs:: create_dir_all( & overlay) ) ;
624
+ install ( & src. join ( "README.md" ) , & overlay, 0o644 ) ;
625
+ install ( & src. join ( "LICENSE-MIT" ) , & overlay, 0o644 ) ;
626
+ install ( & src. join ( "LICENSE-APACHE" ) , & overlay, 0o644 ) ;
627
+ t ! ( t!( File :: create( overlay. join( "version" ) ) ) . write_all( version. as_bytes( ) ) ) ;
628
+
629
+ // Generate the installer tarball
630
+ let mut cmd = Command :: new ( "sh" ) ;
631
+ cmd. arg ( sanitize_sh ( & build. src . join ( "src/rust-installer/gen-installer.sh" ) ) )
632
+ . arg ( "--product-name=Rust" )
633
+ . arg ( "--rel-manifest-dir=rustlib" )
634
+ . arg ( "--success-message=RLS-ready-to-serve." )
635
+ . arg ( format ! ( "--image-dir={}" , sanitize_sh( & image) ) )
636
+ . arg ( format ! ( "--work-dir={}" , sanitize_sh( & tmpdir( build) ) ) )
637
+ . arg ( format ! ( "--output-dir={}" , sanitize_sh( & distdir( build) ) ) )
638
+ . arg ( format ! ( "--non-installed-overlay={}" , sanitize_sh( & overlay) ) )
639
+ . arg ( format ! ( "--package-name={}-{}" , name, target) )
640
+ . arg ( "--component-name=rls" )
641
+ . arg ( "--legacy-manifest-dirs=rustlib,cargo" ) ;
642
+ build. run ( & mut cmd) ;
643
+ }
644
+
596
645
/// Creates a combined installer for the specified target in the provided stage.
597
646
pub fn extended ( build : & Build , stage : u32 , target : & str ) {
598
647
println ! ( "Dist extended stage{} ({})" , stage, target) ;
@@ -604,6 +653,12 @@ pub fn extended(build: &Build, stage: u32, target: &str) {
604
653
let cargo_installer = dist. join ( format ! ( "{}-{}.tar.gz" ,
605
654
pkgname( build, "cargo" ) ,
606
655
target) ) ;
656
+ let rls_installer = dist. join ( format ! ( "{}-{}.tar.gz" ,
657
+ pkgname( build, "rls" ) ,
658
+ target) ) ;
659
+ let analysis_installer = dist. join ( format ! ( "{}-{}.tar.gz" ,
660
+ pkgname( build, "rust-analysis" ) ,
661
+ target) ) ;
607
662
let docs_installer = dist. join ( format ! ( "{}-{}.tar.gz" ,
608
663
pkgname( build, "rust-docs" ) ,
609
664
target) ) ;
@@ -631,9 +686,11 @@ pub fn extended(build: &Build, stage: u32, target: &str) {
631
686
// upgrades rustc was upgraded before rust-std. To avoid rustc clobbering
632
687
// the std files during uninstall. To do this ensure that rustc comes
633
688
// before rust-std in the list below.
634
- let mut input_tarballs = format ! ( "{},{},{},{}" ,
689
+ let mut input_tarballs = format ! ( "{},{},{},{},{},{} " ,
635
690
sanitize_sh( & rustc_installer) ,
636
691
sanitize_sh( & cargo_installer) ,
692
+ sanitize_sh( & rls_installer) ,
693
+ sanitize_sh( & analysis_installer) ,
637
694
sanitize_sh( & docs_installer) ,
638
695
sanitize_sh( & std_installer) ) ;
639
696
if target. contains ( "pc-windows-gnu" ) {
@@ -946,7 +1003,8 @@ pub fn hash_and_sign(build: &Build) {
946
1003
cmd. arg ( distdir ( build) ) ;
947
1004
cmd. arg ( today. trim ( ) ) ;
948
1005
cmd. arg ( build. rust_package_vers ( ) ) ;
949
- cmd. arg ( build. package_vers ( & build. cargo_release_num ( ) ) ) ;
1006
+ cmd. arg ( build. package_vers ( & build. release_num ( "cargo" ) ) ) ;
1007
+ cmd. arg ( build. package_vers ( & build. release_num ( "rls" ) ) ) ;
950
1008
cmd. arg ( addr) ;
951
1009
952
1010
t ! ( fs:: create_dir_all( distdir( build) ) ) ;
0 commit comments