Skip to content

Commit 32ab238

Browse files
Clean up install
1 parent 1373269 commit 32ab238

File tree

1 file changed

+89
-120
lines changed

1 file changed

+89
-120
lines changed

src/bootstrap/install.rs

Lines changed: 89 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -20,121 +20,90 @@ use std::process::Command;
2020

2121
use dist::{self, pkgname, sanitize_sh, tmpdir};
2222

23-
use Build;
2423
use builder::{Builder, Step};
2524

26-
pub struct Installer<'a> {
27-
build: &'a Build,
28-
prefix: PathBuf,
29-
sysconfdir: PathBuf,
30-
docdir: PathBuf,
31-
bindir: PathBuf,
32-
libdir: PathBuf,
33-
mandir: PathBuf,
34-
empty_dir: PathBuf,
25+
pub fn install_docs(builder: &Builder, stage: u32, host: &str) {
26+
install_sh(builder, "docs", "rust-docs", stage, Some(host));
3527
}
3628

37-
impl<'a> Drop for Installer<'a> {
38-
fn drop(&mut self) {
39-
t!(fs::remove_dir_all(&self.empty_dir));
29+
pub fn install_std(builder: &Builder, stage: u32) {
30+
for target in builder.build.config.target.iter() {
31+
install_sh(builder, "std", "rust-std", stage, Some(target));
4032
}
4133
}
4234

43-
impl<'a> Installer<'a> {
44-
pub fn new(build: &'a Build) -> Installer<'a> {
45-
let prefix_default = PathBuf::from("/usr/local");
46-
let sysconfdir_default = PathBuf::from("/etc");
47-
let docdir_default = PathBuf::from("share/doc/rust");
48-
let bindir_default = PathBuf::from("bin");
49-
let libdir_default = PathBuf::from("lib");
50-
let mandir_default = PathBuf::from("share/man");
51-
let prefix = build.config.prefix.as_ref().unwrap_or(&prefix_default);
52-
let sysconfdir = build.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default);
53-
let docdir = build.config.docdir.as_ref().unwrap_or(&docdir_default);
54-
let bindir = build.config.bindir.as_ref().unwrap_or(&bindir_default);
55-
let libdir = build.config.libdir.as_ref().unwrap_or(&libdir_default);
56-
let mandir = build.config.mandir.as_ref().unwrap_or(&mandir_default);
57-
58-
let sysconfdir = prefix.join(sysconfdir);
59-
let docdir = prefix.join(docdir);
60-
let bindir = prefix.join(bindir);
61-
let libdir = prefix.join(libdir);
62-
let mandir = prefix.join(mandir);
63-
64-
let destdir = env::var_os("DESTDIR").map(PathBuf::from);
65-
66-
let prefix = add_destdir(&prefix, &destdir);
67-
let sysconfdir = add_destdir(&sysconfdir, &destdir);
68-
let docdir = add_destdir(&docdir, &destdir);
69-
let bindir = add_destdir(&bindir, &destdir);
70-
let libdir = add_destdir(&libdir, &destdir);
71-
let mandir = add_destdir(&mandir, &destdir);
72-
73-
let empty_dir = build.out.join("tmp/empty_dir");
74-
75-
t!(fs::create_dir_all(&empty_dir));
76-
77-
Installer {
78-
build,
79-
prefix,
80-
sysconfdir,
81-
docdir,
82-
bindir,
83-
libdir,
84-
mandir,
85-
empty_dir,
86-
}
87-
}
88-
89-
pub fn install_docs(&self, stage: u32, host: &str) {
90-
self.install_sh("docs", "rust-docs", stage, Some(host));
91-
}
92-
93-
pub fn install_std(&self, stage: u32) {
94-
for target in self.build.config.target.iter() {
95-
self.install_sh("std", "rust-std", stage, Some(target));
96-
}
97-
}
98-
99-
pub fn install_cargo(&self, stage: u32, host: &str) {
100-
self.install_sh("cargo", "cargo", stage, Some(host));
101-
}
35+
pub fn install_cargo(builder: &Builder, stage: u32, host: &str) {
36+
install_sh(builder, "cargo", "cargo", stage, Some(host));
37+
}
10238

103-
pub fn install_rls(&self, stage: u32, host: &str) {
104-
self.install_sh("rls", "rls", stage, Some(host));
105-
}
39+
pub fn install_rls(builder: &Builder, stage: u32, host: &str) {
40+
install_sh(builder, "rls", "rls", stage, Some(host));
41+
}
10642

107-
pub fn install_analysis(&self, stage: u32, host: &str) {
108-
self.install_sh("analysis", "rust-analysis", stage, Some(host));
109-
}
43+
pub fn install_analysis(builder: &Builder, stage: u32, host: &str) {
44+
install_sh(builder, "analysis", "rust-analysis", stage, Some(host));
45+
}
11046

111-
pub fn install_src(&self, stage: u32) {
112-
self.install_sh("src", "rust-src", stage, None);
113-
}
114-
pub fn install_rustc(&self, stage: u32, host: &str) {
115-
self.install_sh("rustc", "rustc", stage, Some(host));
116-
}
47+
pub fn install_src(builder: &Builder, stage: u32) {
48+
install_sh(builder, "src", "rust-src", stage, None);
49+
}
50+
pub fn install_rustc(builder: &Builder, stage: u32, host: &str) {
51+
install_sh(builder, "rustc", "rustc", stage, Some(host));
52+
}
11753

118-
fn install_sh(&self, package: &str, name: &str, stage: u32, host: Option<&str>) {
119-
println!("Install {} stage{} ({:?})", package, stage, host);
120-
let package_name = if let Some(host) = host {
121-
format!("{}-{}", pkgname(self.build, name), host)
122-
} else {
123-
pkgname(self.build, name)
124-
};
54+
fn install_sh(builder: &Builder, package: &str, name: &str, stage: u32, host: Option<&str>) {
55+
let build = builder.build;
56+
println!("Install {} stage{} ({:?})", package, stage, host);
57+
58+
let prefix_default = PathBuf::from("/usr/local");
59+
let sysconfdir_default = PathBuf::from("/etc");
60+
let docdir_default = PathBuf::from("share/doc/rust");
61+
let bindir_default = PathBuf::from("bin");
62+
let libdir_default = PathBuf::from("lib");
63+
let mandir_default = PathBuf::from("share/man");
64+
let prefix = build.config.prefix.as_ref().unwrap_or(&prefix_default);
65+
let sysconfdir = build.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default);
66+
let docdir = build.config.docdir.as_ref().unwrap_or(&docdir_default);
67+
let bindir = build.config.bindir.as_ref().unwrap_or(&bindir_default);
68+
let libdir = build.config.libdir.as_ref().unwrap_or(&libdir_default);
69+
let mandir = build.config.mandir.as_ref().unwrap_or(&mandir_default);
70+
71+
let sysconfdir = prefix.join(sysconfdir);
72+
let docdir = prefix.join(docdir);
73+
let bindir = prefix.join(bindir);
74+
let libdir = prefix.join(libdir);
75+
let mandir = prefix.join(mandir);
76+
77+
let destdir = env::var_os("DESTDIR").map(PathBuf::from);
78+
79+
let prefix = add_destdir(&prefix, &destdir);
80+
let sysconfdir = add_destdir(&sysconfdir, &destdir);
81+
let docdir = add_destdir(&docdir, &destdir);
82+
let bindir = add_destdir(&bindir, &destdir);
83+
let libdir = add_destdir(&libdir, &destdir);
84+
let mandir = add_destdir(&mandir, &destdir);
85+
86+
let empty_dir = build.out.join("tmp/empty_dir");
87+
88+
t!(fs::create_dir_all(&empty_dir));
89+
let package_name = if let Some(host) = host {
90+
format!("{}-{}", pkgname(build, name), host)
91+
} else {
92+
pkgname(build, name)
93+
};
12594

126-
let mut cmd = Command::new("sh");
127-
cmd.current_dir(&self.empty_dir)
128-
.arg(sanitize_sh(&tmpdir(self.build).join(&package_name).join("install.sh")))
129-
.arg(format!("--prefix={}", sanitize_sh(&self.prefix)))
130-
.arg(format!("--sysconfdir={}", sanitize_sh(&self.sysconfdir)))
131-
.arg(format!("--docdir={}", sanitize_sh(&self.docdir)))
132-
.arg(format!("--bindir={}", sanitize_sh(&self.bindir)))
133-
.arg(format!("--libdir={}", sanitize_sh(&self.libdir)))
134-
.arg(format!("--mandir={}", sanitize_sh(&self.mandir)))
135-
.arg("--disable-ldconfig");
136-
self.build.run(&mut cmd);
137-
}
95+
let mut cmd = Command::new("sh");
96+
cmd.current_dir(&empty_dir)
97+
.arg(sanitize_sh(&tmpdir(build).join(&package_name).join("install.sh")))
98+
.arg(format!("--prefix={}", sanitize_sh(&prefix)))
99+
.arg(format!("--sysconfdir={}", sanitize_sh(&sysconfdir)))
100+
.arg(format!("--docdir={}", sanitize_sh(&docdir)))
101+
.arg(format!("--bindir={}", sanitize_sh(&bindir)))
102+
.arg(format!("--libdir={}", sanitize_sh(&libdir)))
103+
.arg(format!("--mandir={}", sanitize_sh(&mandir)))
104+
.arg("--disable-ldconfig");
105+
build.run(&mut cmd);
106+
t!(fs::remove_dir_all(&empty_dir));
138107
}
139108

140109
fn add_destdir(path: &Path, destdir: &Option<PathBuf>) -> PathBuf {
@@ -152,11 +121,11 @@ fn add_destdir(path: &Path, destdir: &Option<PathBuf>) -> PathBuf {
152121
}
153122

154123
macro_rules! install {
155-
($($name:ident,
124+
(($sel:ident, $builder:ident),
125+
$($name:ident,
156126
$path:expr,
157127
$default_cond:expr,
158128
only_hosts: $only_hosts:expr,
159-
($sel:ident, $builder:ident),
160129
$run_item:block $(, $c:ident)*;)+) => {
161130
$(#[derive(Serialize)]
162131
pub struct $name<'a> {
@@ -194,59 +163,59 @@ macro_rules! install {
194163
}
195164
}
196165

197-
install!(
166+
install!((self, builder),
198167
// rules.install("install-docs", "src/doc")
199168
// .default(build.config.docs)
200169
// .only_host_build(true)
201170
// .dep(|s| s.name("dist-docs"))
202171
// .run(move |s| install::Installer::new(build).install_docs(s.stage, s.target));
203-
Docs, "src/doc", builder.build.config.docs, only_hosts: false, (self, builder), {
172+
Docs, "src/doc", builder.build.config.docs, only_hosts: false, {
204173
builder.ensure(dist::Docs { stage: self.stage, target: self.target });
205-
Installer::new(builder.build).install_docs(self.stage, self.target);
174+
install_docs(builder, self.stage, self.target);
206175
};
207176
// rules.install("install-std", "src/libstd")
208177
// .default(true)
209178
// .only_host_build(true)
210179
// .dep(|s| s.name("dist-std"))
211180
// .run(move |s| install::Installer::new(build).install_std(s.stage));
212-
Std, "src/libstd", true, only_hosts: true, (self, builder), {
181+
Std, "src/libstd", true, only_hosts: true, {
213182
builder.ensure(dist::Std {
214183
compiler: builder.compiler(self.stage, self.host),
215184
target: self.target
216185
});
217-
Installer::new(builder.build).install_std(self.stage);
186+
install_std(builder, self.stage);
218187
};
219188
// rules.install("install-cargo", "cargo")
220189
// .default(build.config.extended)
221190
// .host(true)
222191
// .only_host_build(true)
223192
// .dep(|s| s.name("dist-cargo"))
224193
// .run(move |s| install::Installer::new(build).install_cargo(s.stage, s.target));
225-
Cargo, "cargo", builder.build.config.extended, only_hosts: true, (self, builder), {
194+
Cargo, "cargo", builder.build.config.extended, only_hosts: true, {
226195
builder.ensure(dist::Cargo { stage: self.stage, target: self.target });
227-
Installer::new(builder.build).install_cargo(self.stage, self.target);
196+
install_cargo(builder, self.stage, self.target);
228197
};
229198
// rules.install("install-rls", "rls")
230199
// .default(build.config.extended)
231200
// .host(true)
232201
// .only_host_build(true)
233202
// .dep(|s| s.name("dist-rls"))
234203
// .run(move |s| install::Installer::new(build).install_rls(s.stage, s.target));
235-
Rls, "rls", builder.build.config.extended, only_hosts: true, (self, builder), {
204+
Rls, "rls", builder.build.config.extended, only_hosts: true, {
236205
builder.ensure(dist::Rls { stage: self.stage, target: self.target });
237-
Installer::new(builder.build).install_rls(self.stage, self.target);
206+
install_rls(builder, self.stage, self.target);
238207
};
239208
// rules.install("install-analysis", "analysis")
240209
// .default(build.config.extended)
241210
// .only_host_build(true)
242211
// .dep(|s| s.name("dist-analysis"))
243212
// .run(move |s| install::Installer::new(build).install_analysis(s.stage, s.target));
244-
Analysis, "analysis", builder.build.config.extended, only_hosts: false, (self, builder), {
213+
Analysis, "analysis", builder.build.config.extended, only_hosts: false, {
245214
builder.ensure(dist::Analysis {
246215
compiler: builder.compiler(self.stage, self.host),
247216
target: self.target
248217
});
249-
Installer::new(builder.build).install_analysis(self.stage, self.target);
218+
install_analysis(builder, self.stage, self.target);
250219
};
251220
// rules.install("install-src", "src")
252221
// .default(build.config.extended)
@@ -255,18 +224,18 @@ install!(
255224
// .only_host_build(true)
256225
// .dep(|s| s.name("dist-src"))
257226
// .run(move |s| install::Installer::new(build).install_src(s.stage));
258-
Src, "src", builder.build.config.extended, only_hosts: true, (self, builder), {
227+
Src, "src", builder.build.config.extended, only_hosts: true, {
259228
builder.ensure(dist::Src);
260-
Installer::new(builder.build).install_src(self.stage);
229+
install_src(builder, self.stage);
261230
}, ONLY_BUILD;
262231
// rules.install("install-rustc", "src/librustc")
263232
// .default(true)
264233
// .host(true)
265234
// .only_host_build(true)
266235
// .dep(|s| s.name("dist-rustc"))
267236
// .run(move |s| install::Installer::new(build).install_rustc(s.stage, s.target));
268-
Rustc, "src/librustc", builder.build.config.extended, only_hosts: true, (self, builder), {
237+
Rustc, "src/librustc", builder.build.config.extended, only_hosts: true, {
269238
builder.ensure(dist::Rustc { stage: self.stage, target: self.target });
270-
Installer::new(builder.build).install_rustc(self.stage, self.target);
239+
install_rustc(builder, self.stage, self.target);
271240
};
272241
);

0 commit comments

Comments
 (0)