about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock25
-rw-r--r--Cargo.toml1
-rw-r--r--src/bootstrap/builder.rs2
-rw-r--r--src/bootstrap/test.rs15
-rw-r--r--src/bootstrap/tool.rs4
m---------src/tools/miri18
6 files changed, 42 insertions, 23 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 467ef60f2aa..6cfedd4a56d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -346,6 +346,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "cargo-miri"
+version = "0.1.0"
+dependencies = [
+ "cargo_metadata 0.9.1",
+ "directories",
+ "rustc-workspace-hack",
+ "rustc_version",
+ "serde",
+ "serde_json",
+ "vergen",
+]
+
+[[package]]
 name = "cargo-platform"
 version = "0.1.1"
 dependencies = [
@@ -2220,22 +2233,17 @@ name = "miri"
 version = "0.1.0"
 dependencies = [
  "byteorder",
- "cargo_metadata 0.9.1",
  "colored",
  "compiletest_rs",
- "directories",
  "env_logger 0.7.1",
  "getrandom",
  "hex 0.4.0",
+ "libc",
  "log",
- "num-traits",
  "rand 0.7.3",
  "rustc-workspace-hack",
  "rustc_version",
- "serde",
- "serde_json",
  "shell-escape",
- "vergen",
 ]
 
 [[package]]
@@ -5555,13 +5563,12 @@ checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
 
 [[package]]
 name = "vergen"
-version = "3.0.4"
+version = "3.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba"
+checksum = "4ce50d8996df1f85af15f2cd8d33daae6e479575123ef4314a51a70a230739cb"
 dependencies = [
  "bitflags",
  "chrono",
- "failure",
 ]
 
 [[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 7b5e0fa1c28..f2177a99a9b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,6 +22,7 @@ members = [
   "src/tools/rls",
   "src/tools/rustfmt",
   "src/tools/miri",
+  "src/tools/miri/cargo-miri",
   "src/tools/rustdoc-themes",
   "src/tools/unicode-table-generator",
   "src/tools/expand-yaml-anchors",
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index c8a85eae252..ffdd8485181 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -344,10 +344,12 @@ impl<'a> Builder<'a> {
                 tool::Rls,
                 tool::Rustdoc,
                 tool::Clippy,
+                tool::CargoClippy,
                 native::Llvm,
                 native::Sanitizers,
                 tool::Rustfmt,
                 tool::Miri,
+                tool::CargoMiri,
                 native::Lld
             ),
             Kind::Check | Kind::Clippy | Kind::Fix | Kind::Format => {
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index f1305e2540b..9f305ea4729 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -360,7 +360,12 @@ impl Step for Miri {
 
         let miri =
             builder.ensure(tool::Miri { compiler, target: self.host, extra_features: Vec::new() });
-        if let Some(miri) = miri {
+        let cargo_miri = builder.ensure(tool::CargoMiri {
+            compiler,
+            target: self.host,
+            extra_features: Vec::new(),
+        });
+        if let (Some(miri), Some(_cargo_miri)) = (miri, cargo_miri) {
             let mut cargo = builder.cargo(compiler, Mode::ToolRustc, host, "install");
             cargo.arg("xargo");
             // Configure `cargo install` path. cargo adds a `bin/`.
@@ -378,14 +383,16 @@ impl Step for Miri {
                 Mode::ToolRustc,
                 host,
                 "run",
-                "src/tools/miri",
+                "src/tools/miri/cargo-miri",
                 SourceType::Submodule,
                 &[],
             );
-            cargo.arg("--bin").arg("cargo-miri").arg("--").arg("miri").arg("setup");
+            cargo.arg("--").arg("miri").arg("setup");
 
             // Tell `cargo miri setup` where to find the sources.
             cargo.env("XARGO_RUST_SRC", builder.src.join("src"));
+            // Tell it where to find Miri.
+            cargo.env("MIRI", &miri);
             // Debug things.
             cargo.env("RUST_BACKTRACE", "1");
             // Overwrite bootstrap's `rustc` wrapper overwriting our flags.
@@ -437,7 +444,7 @@ impl Step for Miri {
             // miri tests need to know about the stage sysroot
             cargo.env("MIRI_SYSROOT", miri_sysroot);
             cargo.env("RUSTC_LIB_PATH", builder.rustc_libdir(compiler));
-            cargo.env("MIRI_PATH", miri);
+            cargo.env("MIRI", miri);
 
             cargo.arg("--").args(builder.config.cmd.test_args());
 
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index 5f58f00a2a2..6cd9f9029c9 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -649,12 +649,14 @@ macro_rules! tool_extended {
     }
 }
 
+// Note: tools need to be also added to `Builder::get_step_descriptions` in `build.rs`
+// to make `./x.py build <tool>` work.
 tool_extended!((self, builder),
     Cargofmt, rustfmt, "src/tools/rustfmt", "cargo-fmt", {};
     CargoClippy, clippy, "src/tools/clippy", "cargo-clippy", {};
     Clippy, clippy, "src/tools/clippy", "clippy-driver", {};
     Miri, miri, "src/tools/miri", "miri", {};
-    CargoMiri, miri, "src/tools/miri", "cargo-miri", {};
+    CargoMiri, miri, "src/tools/miri/cargo-miri", "cargo-miri", {};
     Rls, rls, "src/tools/rls", "rls", {
         builder.ensure(Clippy {
             compiler: self.compiler,
diff --git a/src/tools/miri b/src/tools/miri
-Subproject a6c28f08458e15cead0e80f3b5b7009786bce4a
+Subproject faff9a7ad9f2d07c1702bd8be392134d27e3eaf