Skip to content

Commit 13d008d

Browse files
committed
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
1 parent 5766d52 commit 13d008d

File tree

5 files changed

+47
-20
lines changed

5 files changed

+47
-20
lines changed

src/bootstrap/dist.rs

+16-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ use util::{cp_r, libdir, is_dylib, cp_filtered, copy, exe};
3939
fn pkgname(build: &Build, component: &str) -> String {
4040
if component == "cargo" {
4141
format!("{}-{}", component, build.cargo_package_vers())
42+
} else if component == "rls" {
43+
format!("{}-{}", component, build.package_vers(&build.release_num("rls")))
4244
} else {
43-
assert!(component.starts_with("rust") || component == "rls");
45+
assert!(component.starts_with("rust"));
4446
format!("{}-{}", component, build.rust_package_vers())
4547
}
4648
}
@@ -598,7 +600,8 @@ pub fn rls(build: &Build, stage: u32, target: &str) {
598600

599601
let src = build.src.join("rls");
600602
let release_num = build.release_num("rls");
601-
let name = format!("rls-{}", build.package_vers(&release_num));
603+
let name = pkgname(build, "rls");
604+
let version = build.rls_info.version(build, &release_num);
602605

603606
let tmp = tmpdir(build);
604607
let image = tmp.join("rls-image");
@@ -614,6 +617,15 @@ pub fn rls(build: &Build, stage: u32, target: &str) {
614617
install(&src.join("LICENSE-MIT"), &doc, 0o644);
615618
install(&src.join("LICENSE-APACHE"), &doc, 0o644);
616619

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+
617629
// Generate the installer tarball
618630
let mut cmd = Command::new("sh");
619631
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) {
623635
.arg(format!("--image-dir={}", sanitize_sh(&image)))
624636
.arg(format!("--work-dir={}", sanitize_sh(&tmpdir(build))))
625637
.arg(format!("--output-dir={}", sanitize_sh(&distdir(build))))
638+
.arg(format!("--non-installed-overlay={}", sanitize_sh(&overlay)))
626639
.arg(format!("--package-name={}-{}", name, target))
627640
.arg("--component-name=rls")
628641
.arg("--legacy-manifest-dirs=rustlib,cargo");
@@ -991,6 +1004,7 @@ pub fn hash_and_sign(build: &Build) {
9911004
cmd.arg(today.trim());
9921005
cmd.arg(build.rust_package_vers());
9931006
cmd.arg(build.package_vers(&build.release_num("cargo")));
1007+
cmd.arg(build.package_vers(&build.release_num("rls")));
9941008
cmd.arg(addr);
9951009

9961010
t!(fs::create_dir_all(distdir(build)));

src/bootstrap/lib.rs

+3
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ pub struct Build {
151151
out: PathBuf,
152152
rust_info: channel::GitInfo,
153153
cargo_info: channel::GitInfo,
154+
rls_info: channel::GitInfo,
154155
local_rebuild: bool,
155156

156157
// Probed tools at runtime
@@ -234,6 +235,7 @@ impl Build {
234235
};
235236
let rust_info = channel::GitInfo::new(&src);
236237
let cargo_info = channel::GitInfo::new(&src.join("cargo"));
238+
let rls_info = channel::GitInfo::new(&src.join("rls"));
237239
let src_is_git = src.join(".git").exists();
238240

239241
Build {
@@ -246,6 +248,7 @@ impl Build {
246248

247249
rust_info: rust_info,
248250
cargo_info: cargo_info,
251+
rls_info: rls_info,
249252
local_rebuild: local_rebuild,
250253
cc: HashMap::new(),
251254
cxx: HashMap::new(),

src/bootstrap/step.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,13 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules {
572572
.run(move |s| compile::tool(build, s.stage, s.target, "cargo"));
573573
rules.build("tool-rls", "rls")
574574
.host(true)
575-
.dep(|s| s.name("libstd"))
575+
.dep(|s| s.name("librustc"))
576+
.dep(move |s| {
577+
// rls, like cargo, uses procedural macros
578+
s.name("librustc-link")
579+
.target(&build.config.build)
580+
.host(&build.config.build)
581+
})
576582
.run(move |s| compile::tool(build, s.stage, s.target, "rls"));
577583

578584
// ========================================================================
@@ -695,7 +701,6 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules {
695701
.run(move |s| dist::docs(build, s.stage, s.target));
696702
rules.dist("dist-analysis", "analysis")
697703
.dep(|s| s.name("dist-std"))
698-
.default(true)
699704
.only_host_build(true)
700705
.run(move |s| dist::analysis(build, &s.compiler(), s.target));
701706
rules.dist("dist-rls", "rls")

src/tools/build-manifest/src/main.rs

+20-15
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ macro_rules! t {
135135
struct Builder {
136136
rust_release: String,
137137
cargo_release: String,
138+
rls_release: String,
138139
input: PathBuf,
139140
output: PathBuf,
140141
gpg_passphrase: String,
@@ -143,6 +144,7 @@ struct Builder {
143144
date: String,
144145
rust_version: String,
145146
cargo_version: String,
147+
rls_version: String,
146148
}
147149

148150
fn main() {
@@ -152,13 +154,15 @@ fn main() {
152154
let date = args.next().unwrap();
153155
let rust_release = args.next().unwrap();
154156
let cargo_release = args.next().unwrap();
157+
let rls_release = args.next().unwrap();
155158
let s3_address = args.next().unwrap();
156159
let mut passphrase = String::new();
157160
t!(io::stdin().read_to_string(&mut passphrase));
158161

159162
Builder {
160163
rust_release: rust_release,
161164
cargo_release: cargo_release,
165+
rls_release: rls_release,
162166
input: input,
163167
output: output,
164168
gpg_passphrase: passphrase,
@@ -167,13 +171,15 @@ fn main() {
167171
date: date,
168172
rust_version: String::new(),
169173
cargo_version: String::new(),
174+
rls_version: String::new(),
170175
}.build();
171176
}
172177

173178
impl Builder {
174179
fn build(&mut self) {
175180
self.rust_version = self.version("rust", "x86_64-unknown-linux-gnu");
176181
self.cargo_version = self.version("cargo", "x86_64-unknown-linux-gnu");
182+
self.rls_version = self.version("rls", "x86_64-unknown-linux-gnu");
177183

178184
self.digest_and_sign();
179185
let Manifest { manifest_version, date, pkg } = self.build_manifest();
@@ -223,11 +229,8 @@ impl Builder {
223229
self.package("rust-std", &mut manifest.pkg, TARGETS);
224230
self.package("rust-docs", &mut manifest.pkg, TARGETS);
225231
self.package("rust-src", &mut manifest.pkg, &["*"]);
226-
227-
if self.rust_release == "nightly" {
228-
self.package("rls", &mut manifest.pkg, HOSTS);
229-
self.package("rust-analysis", &mut manifest.pkg, TARGETS);
230-
}
232+
self.package("rls", &mut manifest.pkg, HOSTS);
233+
self.package("rust-analysis", &mut manifest.pkg, TARGETS);
231234

232235
let mut pkg = Package {
233236
version: self.cached_version("rust").to_string(),
@@ -266,23 +269,21 @@ impl Builder {
266269
});
267270
}
268271

272+
extensions.push(Component {
273+
pkg: "rls".to_string(),
274+
target: host.to_string(),
275+
});
276+
extensions.push(Component {
277+
pkg: "rust-analysis".to_string(),
278+
target: host.to_string(),
279+
});
269280
for target in TARGETS {
270281
if target != host {
271282
extensions.push(Component {
272283
pkg: "rust-std".to_string(),
273284
target: target.to_string(),
274285
});
275286
}
276-
if self.rust_release == "nightly" {
277-
extensions.push(Component {
278-
pkg: "rust-analysis".to_string(),
279-
target: target.to_string(),
280-
});
281-
extensions.push(Component {
282-
pkg: "rls".to_string(),
283-
target: host.to_string(),
284-
});
285-
}
286287
}
287288
extensions.push(Component {
288289
pkg: "rust-src".to_string(),
@@ -348,6 +349,8 @@ impl Builder {
348349
format!("rust-src-{}.tar.gz", self.rust_release)
349350
} else if component == "cargo" {
350351
format!("cargo-{}-{}.tar.gz", self.cargo_release, target)
352+
} else if component == "rls" {
353+
format!("rls-{}-{}.tar.gz", self.rls_release, target)
351354
} else {
352355
format!("{}-{}-{}.tar.gz", component, self.rust_release, target)
353356
}
@@ -356,6 +359,8 @@ impl Builder {
356359
fn cached_version(&self, component: &str) -> &str {
357360
if component == "cargo" {
358361
&self.cargo_version
362+
} else if component == "rls" {
363+
&self.rls_version
359364
} else {
360365
&self.rust_version
361366
}

0 commit comments

Comments
 (0)