Skip to content

Commit f18335e

Browse files
committed
bootstrap: convert rustc-src to use Tarball
1 parent 48924ab commit f18335e

File tree

2 files changed

+45
-62
lines changed

2 files changed

+45
-62
lines changed

src/bootstrap/dist.rs

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ pub fn tmpdir(builder: &Builder<'_>) -> PathBuf {
3737
builder.out.join("tmp/dist")
3838
}
3939

40-
fn rust_installer(builder: &Builder<'_>) -> Command {
41-
builder.tool_cmd(Tool::RustInstaller)
42-
}
43-
4440
fn missing_tool(tool_name: &str, skip: bool) {
4541
if skip {
4642
println!("Unable to build {}, skipping dist", tool_name)
@@ -867,11 +863,8 @@ impl Step for PlainSourceTarball {
867863

868864
/// Creates the plain source tarball
869865
fn run(self, builder: &Builder<'_>) -> PathBuf {
870-
// Make sure that the root folder of tarball has the correct name
871-
let plain_name = format!("{}-src", pkgname(builder, "rustc"));
872-
let plain_dst_src = tmpdir(builder).join(&plain_name);
873-
let _ = fs::remove_dir_all(&plain_dst_src);
874-
t!(fs::create_dir_all(&plain_dst_src));
866+
let tarball = Tarball::new(builder, "rustc", "src");
867+
let plain_dst_src = tarball.image_dir();
875868

876869
// This is the set of root paths which will become part of the source package
877870
let src_files = [
@@ -914,28 +907,7 @@ impl Step for PlainSourceTarball {
914907
builder.run(&mut cmd);
915908
}
916909

917-
// Create plain source tarball
918-
let plain_name = format!("rustc-{}-src", builder.rust_package_vers());
919-
let mut tarball = distdir(builder).join(&format!("{}.tar.gz", plain_name));
920-
tarball.set_extension(""); // strip .gz
921-
tarball.set_extension(""); // strip .tar
922-
if let Some(dir) = tarball.parent() {
923-
builder.create_dir(&dir);
924-
}
925-
builder.info("running installer");
926-
let mut cmd = rust_installer(builder);
927-
cmd.arg("tarball")
928-
.arg("--input")
929-
.arg(&plain_name)
930-
.arg("--output")
931-
.arg(&tarball)
932-
.arg("--work-dir=.")
933-
.current_dir(tmpdir(builder));
934-
935-
builder.info("Create plain source tarball");
936-
let _time = timeit(builder);
937-
builder.run(&mut cmd);
938-
distdir(builder).join(&format!("{}.tar.gz", plain_name))
910+
tarball.bare()
939911
}
940912
}
941913

src/bootstrap/tarball.rs

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ pub(crate) struct Tarball<'a> {
9494
temp_dir: PathBuf,
9595
image_dir: PathBuf,
9696
overlay_dir: PathBuf,
97-
work_dir: PathBuf,
9897

9998
include_target_in_component_name: bool,
10099
is_preview: bool,
@@ -113,12 +112,14 @@ impl<'a> Tarball<'a> {
113112
fn new_inner(builder: &'a Builder<'a>, component: &str, target: Option<String>) -> Self {
114113
let pkgname = crate::dist::pkgname(builder, component);
115114

116-
let temp_dir = builder.out.join("tmp").join("tarball").join(component);
115+
let mut temp_dir = builder.out.join("tmp").join("tarball");
116+
if let Some(target) = &target {
117+
temp_dir = temp_dir.join(target);
118+
}
117119
let _ = std::fs::remove_dir_all(&temp_dir);
118120

119121
let image_dir = temp_dir.join("image");
120122
let overlay_dir = temp_dir.join("overlay");
121-
let work_dir = temp_dir.join("work");
122123

123124
Self {
124125
builder,
@@ -132,7 +133,6 @@ impl<'a> Tarball<'a> {
132133
temp_dir,
133134
image_dir,
134135
overlay_dir,
135-
work_dir,
136136

137137
include_target_in_component_name: false,
138138
is_preview: false,
@@ -200,7 +200,7 @@ impl<'a> Tarball<'a> {
200200

201201
pub(crate) fn persist_work_dir(&mut self) -> PathBuf {
202202
self.delete_temp_dir = false;
203-
self.work_dir.clone()
203+
self.temp_dir.clone()
204204
}
205205

206206
pub(crate) fn generate(self) -> PathBuf {
@@ -222,9 +222,8 @@ impl<'a> Tarball<'a> {
222222
cmd.arg("generate")
223223
.arg("--image-dir")
224224
.arg(&this.image_dir)
225-
.arg("--non-installed-overlay")
226-
.arg(&this.overlay_dir)
227225
.arg(format!("--component-name={}", &component_name));
226+
this.non_bare_args(cmd);
228227
})
229228
}
230229

@@ -236,14 +235,41 @@ impl<'a> Tarball<'a> {
236235
}
237236

238237
self.run(|this, cmd| {
239-
cmd.arg("combine")
240-
.arg("--input-tarballs")
241-
.arg(input_tarballs)
242-
.arg("--non-installed-overlay")
243-
.arg(&this.overlay_dir);
238+
cmd.arg("combine").arg("--input-tarballs").arg(input_tarballs);
239+
this.non_bare_args(cmd);
244240
});
245241
}
246242

243+
pub(crate) fn bare(self) -> PathBuf {
244+
self.run(|this, cmd| {
245+
cmd.arg("tarball")
246+
.arg("--input")
247+
.arg(&this.image_dir)
248+
.arg("--output")
249+
.arg(crate::dist::distdir(this.builder).join(this.package_name()));
250+
})
251+
}
252+
253+
fn package_name(&self) -> String {
254+
if let Some(target) = &self.target {
255+
format!("{}-{}", self.pkgname, target)
256+
} else {
257+
self.pkgname.clone()
258+
}
259+
}
260+
261+
fn non_bare_args(&self, cmd: &mut Command) {
262+
cmd.arg("--rel-manifest-dir=rustlib")
263+
.arg("--legacy-manifest-dirs=rustlib,cargo")
264+
.arg(format!("--product-name={}", self.product_name))
265+
.arg(format!("--success-message={} installed.", self.component))
266+
.arg(format!("--package-name={}", self.package_name()))
267+
.arg("--non-installed-overlay")
268+
.arg(&self.overlay_dir)
269+
.arg("--output-dir")
270+
.arg(crate::dist::distdir(self.builder));
271+
}
272+
247273
fn run(self, build_cli: impl FnOnce(&Tarball<'a>, &mut Command)) -> PathBuf {
248274
t!(std::fs::create_dir_all(&self.overlay_dir));
249275
self.builder.create(&self.overlay_dir.join("version"), &self.overlay.version(self.builder));
@@ -256,32 +282,17 @@ impl<'a> Tarball<'a> {
256282

257283
let mut cmd = self.builder.tool_cmd(crate::tool::Tool::RustInstaller);
258284

259-
let package_name = if let Some(target) = &self.target {
260-
self.builder.info(&format!("Dist {} ({})", self.component, target));
261-
format!("{}-{}", self.pkgname, target)
262-
} else {
263-
self.builder.info(&format!("Dist {}", self.component));
264-
self.pkgname.clone()
265-
};
266-
285+
let package_name = self.package_name();
286+
self.builder.info(&format!("Dist {}", package_name));
267287
let _time = crate::util::timeit(self.builder);
268288

269-
let distdir = crate::dist::distdir(self.builder);
270289
build_cli(&self, &mut cmd);
271-
cmd.arg("--rel-manifest-dir=rustlib")
272-
.arg("--legacy-manifest-dirs=rustlib,cargo")
273-
.arg(format!("--product-name={}", self.product_name))
274-
.arg(format!("--success-message={} installed.", self.component))
275-
.arg(format!("--package-name={}", package_name))
276-
.arg("--work-dir")
277-
.arg(self.work_dir)
278-
.arg("--output-dir")
279-
.arg(&distdir);
290+
cmd.arg("--work-dir").arg(&self.temp_dir);
280291
self.builder.run(&mut cmd);
281292
if self.delete_temp_dir {
282293
t!(std::fs::remove_dir_all(&self.temp_dir));
283294
}
284295

285-
distdir.join(format!("{}.tar.gz", package_name))
296+
crate::dist::distdir(self.builder).join(format!("{}.tar.gz", package_name))
286297
}
287298
}

0 commit comments

Comments
 (0)