diff options
| author | bors <bors@rust-lang.org> | 2018-06-25 17:22:12 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-06-25 17:22:12 +0000 |
| commit | b7c6e8f1805cd8a4b0a1c1f22f17a89e9e2cea23 (patch) | |
| tree | 900d5440d16c5ad7a996e07958fcefcf0113dc14 /src/bootstrap | |
| parent | 8acec1f9d0b40dde142e6c26d7358b9ab232d2b4 (diff) | |
| parent | f10da5fdb9f08a70d2917aadf51c1e7952b9027b (diff) | |
| download | rust-b7c6e8f1805cd8a4b0a1c1f22f17a89e9e2cea23.tar.gz rust-b7c6e8f1805cd8a4b0a1c1f22f17a89e9e2cea23.zip | |
Auto merge of #51728 - bradjc:llvm-tools2, r=kennytm
build: add llvm-tools to manifest
This commit expands on a previous commit to build llvm-tools as a rustup component. It causes the llvm-tools component to be built if the extended step is active. It also adds llvm-tools to the build manifest so rustup can find it.
I tested this as far as I could, but had to hack `build-manifest/src/main.rs` a bit as it is not supported on MacOS. The main change I am not sure about is this line:
```rust
self.package("llvm-tools", &mut manifest.pkg, TARGETS);
```
There are numerous calls to `self.package()`, and I'm not sure if `TARGETS`, `HOSTS`, or `["*"]` is appropriate for llvm-tools.
Otherwise I mostly copied the example set by `rustfmt-preview`.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/dist.rs | 23 | ||||
| -rw-r--r-- | src/bootstrap/lib.rs | 21 |
2 files changed, 15 insertions, 29 deletions
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index cbb42a04bdd..4fd6c81e597 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -44,7 +44,7 @@ pub fn pkgname(builder: &Builder, component: &str) -> String { } else if component == "rustfmt" { format!("{}-{}", component, builder.rustfmt_package_vers()) } else if component == "llvm-tools" { - format!("{}-{}", component, builder.llvm_tools_vers()) + format!("{}-{}", component, builder.llvm_tools_package_vers()) } else { assert!(component.starts_with("rust")); format!("{}-{}", component, builder.rust_package_vers()) @@ -1303,6 +1303,7 @@ impl Step for Extended { let cargo_installer = builder.ensure(Cargo { stage, target }); let rustfmt_installer = builder.ensure(Rustfmt { stage, target }); let rls_installer = builder.ensure(Rls { stage, target }); + let llvm_tools_installer = builder.ensure(LlvmTools { stage, target }); let mingw_installer = builder.ensure(Mingw { host: target }); let analysis_installer = builder.ensure(Analysis { compiler: builder.compiler(stage, self.host), @@ -1340,6 +1341,7 @@ impl Step for Extended { tarballs.push(cargo_installer); tarballs.extend(rls_installer.clone()); tarballs.extend(rustfmt_installer.clone()); + tarballs.extend(llvm_tools_installer.clone()); tarballs.push(analysis_installer); tarballs.push(std_installer); if builder.config.docs { @@ -1740,7 +1742,7 @@ impl Step for HashSign { cmd.arg(builder.package_vers(&builder.release_num("cargo"))); cmd.arg(builder.package_vers(&builder.release_num("rls"))); cmd.arg(builder.package_vers(&builder.release_num("rustfmt"))); - cmd.arg(builder.llvm_tools_vers()); + cmd.arg(builder.llvm_tools_package_vers()); cmd.arg(addr); builder.create_dir(&distdir(builder)); @@ -1755,7 +1757,6 @@ impl Step for HashSign { #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub struct LlvmTools { pub stage: u32, - pub compiler: Compiler, pub target: Interned<String>, } @@ -1770,19 +1771,16 @@ impl Step for LlvmTools { fn make_run(run: RunConfig) { run.builder.ensure(LlvmTools { stage: run.builder.top_stage, - compiler: run.builder.compiler(run.builder.top_stage, run.target), target: run.target, }); } fn run(self, builder: &Builder) -> Option<PathBuf> { - let compiler = self.compiler; - let host = compiler.host; - let stage = self.stage; + let target = self.target; assert!(builder.config.extended); - builder.info(&format!("Dist LlvmTools stage{} ({})", stage, host)); + builder.info(&format!("Dist LlvmTools stage{} ({})", stage, target)); let src = builder.src.join("src/llvm"); let name = pkgname(builder, "llvm-tools"); @@ -1794,9 +1792,9 @@ impl Step for LlvmTools { // Prepare the image directory for tool in LLVM_TOOLS { let exe = builder - .llvm_out(host) + .llvm_out(target) .join("bin") - .join(exe(tool, &compiler.host)); + .join(exe(tool, &target)); builder.install(&exe, &image.join("bin"), 0o755); } @@ -1806,6 +1804,7 @@ impl Step for LlvmTools { builder.create_dir(&overlay); builder.install(&src.join("README.txt"), &overlay, 0o644); builder.install(&src.join("LICENSE.TXT"), &overlay, 0o644); + builder.create(&overlay.join("version"), &builder.llvm_tools_vers()); // Generate the installer tarball let mut cmd = rust_installer(builder); @@ -1817,12 +1816,12 @@ impl Step for LlvmTools { .arg("--work-dir").arg(&tmpdir(builder)) .arg("--output-dir").arg(&distdir(builder)) .arg("--non-installed-overlay").arg(&overlay) - .arg(format!("--package-name={}-{}", name, host)) + .arg(format!("--package-name={}-{}", name, target)) .arg("--legacy-manifest-dirs=rustlib,cargo") .arg("--component-name=llvm-tools"); builder.run(&mut cmd); - Some(distdir(builder).join(format!("{}-{}.tar.gz", name, host))) + Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target))) } } diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index ae37d67e5d7..b5d450b8839 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -973,24 +973,11 @@ impl Build { self.package_vers(&self.release_num("rustfmt")) } - fn llvm_tools_vers(&self) -> String { - // japaric: should we use LLVM version here? - // let stdout = build_helper::output( - // Command::new(self.llvm_out(self.config.build).join("build/bin/llvm-size")) - // .arg("--version"), - // ); - - // for line in stdout.lines() { - // if line.contains("LLVM version") { - // if let Some(vers) = line.split_whitespace().nth(2) { - // return vers.to_string(); - // } - // } - // } - - // panic!("The output of $LLVM_TOOL has changed; \ - // please fix `bootstrap::Build.llvm_tools_vers`"); + fn llvm_tools_package_vers(&self) -> String { + self.package_vers(&self.rust_version()) + } + fn llvm_tools_vers(&self) -> String { self.rust_version() } |
