Skip to content

Commit 7be8570

Browse files
committed
bootstrap: convert llvm-tools to use Tarball
1 parent ddf8263 commit 7be8570

File tree

3 files changed

+21
-42
lines changed

3 files changed

+21
-42
lines changed

src/bootstrap/dist.rs

+7-37
Original file line numberDiff line numberDiff line change
@@ -2431,56 +2431,26 @@ impl Step for LlvmTools {
24312431

24322432
builder.info(&format!("Dist LlvmTools ({})", target));
24332433
let _time = timeit(builder);
2434-
let src = builder.src.join("src/llvm-project/llvm");
2435-
let name = pkgname(builder, "llvm-tools");
24362434

2437-
let tmp = tmpdir(builder);
2438-
let image = tmp.join("llvm-tools-image");
2439-
drop(fs::remove_dir_all(&image));
2435+
let mut tarball = Tarball::new(builder, "llvm-tools", &target.triple);
2436+
tarball.set_overlay(OverlayKind::LLVM);
2437+
tarball.is_preview(true);
24402438

24412439
// Prepare the image directory
24422440
let src_bindir = builder.llvm_out(target).join("bin");
2443-
let dst_bindir = image.join("lib/rustlib").join(&*target.triple).join("bin");
2444-
t!(fs::create_dir_all(&dst_bindir));
2441+
let dst_bindir = format!("lib/rustlib/{}/bin", target.triple);
24452442
for tool in LLVM_TOOLS {
24462443
let exe = src_bindir.join(exe(tool, target));
2447-
builder.install(&exe, &dst_bindir, 0o755);
2444+
tarball.add_file(&exe, &dst_bindir, 0o755);
24482445
}
24492446

24502447
// Copy libLLVM.so to the target lib dir as well, so the RPATH like
24512448
// `$ORIGIN/../lib` can find it. It may also be used as a dependency
24522449
// of `rustc-dev` to support the inherited `-lLLVM` when using the
24532450
// compiler libraries.
2454-
maybe_install_llvm_target(builder, target, &image);
2455-
2456-
// Prepare the overlay
2457-
let overlay = tmp.join("llvm-tools-overlay");
2458-
drop(fs::remove_dir_all(&overlay));
2459-
builder.create_dir(&overlay);
2460-
builder.install(&src.join("README.txt"), &overlay, 0o644);
2461-
builder.install(&src.join("LICENSE.TXT"), &overlay, 0o644);
2462-
builder.create(&overlay.join("version"), &builder.llvm_tools_vers());
2463-
2464-
// Generate the installer tarball
2465-
let mut cmd = rust_installer(builder);
2466-
cmd.arg("generate")
2467-
.arg("--product-name=Rust")
2468-
.arg("--rel-manifest-dir=rustlib")
2469-
.arg("--success-message=llvm-tools-installed.")
2470-
.arg("--image-dir")
2471-
.arg(&image)
2472-
.arg("--work-dir")
2473-
.arg(&tmpdir(builder))
2474-
.arg("--output-dir")
2475-
.arg(&distdir(builder))
2476-
.arg("--non-installed-overlay")
2477-
.arg(&overlay)
2478-
.arg(format!("--package-name={}-{}", name, target.triple))
2479-
.arg("--legacy-manifest-dirs=rustlib,cargo")
2480-
.arg("--component-name=llvm-tools-preview");
2451+
maybe_install_llvm_target(builder, target, tarball.image_dir());
24812452

2482-
builder.run(&mut cmd);
2483-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple)))
2453+
Some(tarball.generate())
24842454
}
24852455
}
24862456

src/bootstrap/lib.rs

-4
Original file line numberDiff line numberDiff line change
@@ -1069,10 +1069,6 @@ impl Build {
10691069
self.package_vers(&self.version)
10701070
}
10711071

1072-
fn llvm_tools_vers(&self) -> String {
1073-
self.rust_version()
1074-
}
1075-
10761072
fn llvm_link_tools_dynamically(&self, target: TargetSelection) -> bool {
10771073
target.contains("linux-gnu") || target.contains("apple-darwin")
10781074
}

src/bootstrap/tarball.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ pub(crate) struct Tarball<'a> {
3333
image_dir: PathBuf,
3434
overlay_dir: PathBuf,
3535
work_dir: PathBuf,
36+
37+
is_preview: bool,
3638
}
3739

3840
impl<'a> Tarball<'a> {
@@ -58,13 +60,19 @@ impl<'a> Tarball<'a> {
5860
image_dir,
5961
overlay_dir,
6062
work_dir,
63+
64+
is_preview: false,
6165
}
6266
}
6367

6468
pub(crate) fn set_overlay(&mut self, overlay: OverlayKind) {
6569
self.overlay = overlay;
6670
}
6771

72+
pub(crate) fn is_preview(&mut self, is: bool) {
73+
self.is_preview = is;
74+
}
75+
6876
pub(crate) fn image_dir(&self) -> &Path {
6977
t!(std::fs::create_dir_all(&self.image_dir));
7078
&self.image_dir
@@ -98,6 +106,11 @@ impl<'a> Tarball<'a> {
98106
self.builder.install(&self.builder.src.join(file), &self.overlay_dir, 0o644);
99107
}
100108

109+
let mut component_name = self.component.clone();
110+
if self.is_preview {
111+
component_name.push_str("-preview");
112+
}
113+
101114
let distdir = crate::dist::distdir(self.builder);
102115
let mut cmd = self.builder.tool_cmd(crate::tool::Tool::RustInstaller);
103116
cmd.arg("generate")
@@ -114,7 +127,7 @@ impl<'a> Tarball<'a> {
114127
.arg(self.overlay_dir)
115128
.arg(format!("--package-name={}-{}", self.pkgname, self.target))
116129
.arg("--legacy-manifest-dirs=rustlib,cargo")
117-
.arg(format!("--component-name={}", self.component));
130+
.arg(format!("--component-name={}", component_name));
118131
self.builder.run(&mut cmd);
119132

120133
t!(std::fs::remove_dir_all(&self.temp_dir));

0 commit comments

Comments
 (0)