about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-04-10 11:22:38 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-04-11 10:47:53 -0700
commit13d008d1e8b671e78c92e61b42ae7b82f5736121 (patch)
treec075751c8cbe52ebb11eb3a53f2d0d77bd3022d5 /src/bootstrap
parent5766d526a250c92792ec877a65003d43683c94e5 (diff)
downloadrust-13d008d1e8b671e78c92e61b42ae7b82f5736121.tar.gz
rust-13d008d1e8b671e78c92e61b42ae7b82f5736121.zip
Touch up rls integration
* Use the right version when building combined installer
* Update dependencies of rls as it depends on rustc and plugins
* Fix build-manifest and the versions it uses for the rls
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/dist.rs18
-rw-r--r--src/bootstrap/lib.rs3
-rw-r--r--src/bootstrap/step.rs9
3 files changed, 26 insertions, 4 deletions
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
index e786d69555a..4328c4e3f1d 100644
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
@@ -39,8 +39,10 @@ use util::{cp_r, libdir, is_dylib, cp_filtered, copy, exe};
 fn pkgname(build: &Build, component: &str) -> String {
     if component == "cargo" {
         format!("{}-{}", component, build.cargo_package_vers())
+    } else if component == "rls" {
+        format!("{}-{}", component, build.package_vers(&build.release_num("rls")))
     } else {
-        assert!(component.starts_with("rust") || component == "rls");
+        assert!(component.starts_with("rust"));
         format!("{}-{}", component, build.rust_package_vers())
     }
 }
@@ -598,7 +600,8 @@ pub fn rls(build: &Build, stage: u32, target: &str) {
 
     let src = build.src.join("rls");
     let release_num = build.release_num("rls");
-    let name = format!("rls-{}", build.package_vers(&release_num));
+    let name = pkgname(build, "rls");
+    let version = build.rls_info.version(build, &release_num);
 
     let tmp = tmpdir(build);
     let image = tmp.join("rls-image");
@@ -614,6 +617,15 @@ pub fn rls(build: &Build, stage: u32, target: &str) {
     install(&src.join("LICENSE-MIT"), &doc, 0o644);
     install(&src.join("LICENSE-APACHE"), &doc, 0o644);
 
+    // Prepare the overlay
+    let overlay = tmp.join("rls-overlay");
+    drop(fs::remove_dir_all(&overlay));
+    t!(fs::create_dir_all(&overlay));
+    install(&src.join("README.md"), &overlay, 0o644);
+    install(&src.join("LICENSE-MIT"), &overlay, 0o644);
+    install(&src.join("LICENSE-APACHE"), &overlay, 0o644);
+    t!(t!(File::create(overlay.join("version"))).write_all(version.as_bytes()));
+
     // Generate the installer tarball
     let mut cmd = Command::new("sh");
     cmd.arg(sanitize_sh(&build.src.join("src/rust-installer/gen-installer.sh")))
@@ -623,6 +635,7 @@ pub fn rls(build: &Build, stage: u32, target: &str) {
        .arg(format!("--image-dir={}", sanitize_sh(&image)))
        .arg(format!("--work-dir={}", sanitize_sh(&tmpdir(build))))
        .arg(format!("--output-dir={}", sanitize_sh(&distdir(build))))
+       .arg(format!("--non-installed-overlay={}", sanitize_sh(&overlay)))
        .arg(format!("--package-name={}-{}", name, target))
        .arg("--component-name=rls")
        .arg("--legacy-manifest-dirs=rustlib,cargo");
@@ -991,6 +1004,7 @@ pub fn hash_and_sign(build: &Build) {
     cmd.arg(today.trim());
     cmd.arg(build.rust_package_vers());
     cmd.arg(build.package_vers(&build.release_num("cargo")));
+    cmd.arg(build.package_vers(&build.release_num("rls")));
     cmd.arg(addr);
 
     t!(fs::create_dir_all(distdir(build)));
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
index e91664ac8ab..d711b63ea2e 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
@@ -151,6 +151,7 @@ pub struct Build {
     out: PathBuf,
     rust_info: channel::GitInfo,
     cargo_info: channel::GitInfo,
+    rls_info: channel::GitInfo,
     local_rebuild: bool,
 
     // Probed tools at runtime
@@ -234,6 +235,7 @@ impl Build {
         };
         let rust_info = channel::GitInfo::new(&src);
         let cargo_info = channel::GitInfo::new(&src.join("cargo"));
+        let rls_info = channel::GitInfo::new(&src.join("rls"));
         let src_is_git = src.join(".git").exists();
 
         Build {
@@ -246,6 +248,7 @@ impl Build {
 
             rust_info: rust_info,
             cargo_info: cargo_info,
+            rls_info: rls_info,
             local_rebuild: local_rebuild,
             cc: HashMap::new(),
             cxx: HashMap::new(),
diff --git a/src/bootstrap/step.rs b/src/bootstrap/step.rs
index d1581576957..596cbcf01bb 100644
--- a/src/bootstrap/step.rs
+++ b/src/bootstrap/step.rs
@@ -572,7 +572,13 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules {
          .run(move |s| compile::tool(build, s.stage, s.target, "cargo"));
     rules.build("tool-rls", "rls")
          .host(true)
-         .dep(|s| s.name("libstd"))
+         .dep(|s| s.name("librustc"))
+         .dep(move |s| {
+             // rls, like cargo, uses procedural macros
+             s.name("librustc-link")
+              .target(&build.config.build)
+              .host(&build.config.build)
+         })
          .run(move |s| compile::tool(build, s.stage, s.target, "rls"));
 
     // ========================================================================
@@ -695,7 +701,6 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules {
          .run(move |s| dist::docs(build, s.stage, s.target));
     rules.dist("dist-analysis", "analysis")
          .dep(|s| s.name("dist-std"))
-         .default(true)
          .only_host_build(true)
          .run(move |s| dist::analysis(build, &s.compiler(), s.target));
     rules.dist("dist-rls", "rls")