about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-06-25 17:22:12 +0000
committerbors <bors@rust-lang.org>2018-06-25 17:22:12 +0000
commitb7c6e8f1805cd8a4b0a1c1f22f17a89e9e2cea23 (patch)
tree900d5440d16c5ad7a996e07958fcefcf0113dc14 /src/bootstrap
parent8acec1f9d0b40dde142e6c26d7358b9ab232d2b4 (diff)
parentf10da5fdb9f08a70d2917aadf51c1e7952b9027b (diff)
downloadrust-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.rs23
-rw-r--r--src/bootstrap/lib.rs21
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()
     }