116 lines
4.2 KiB
Diff
116 lines
4.2 KiB
Diff
From b445a52ea322758fb7b60fab5f890ef8c0f8df9c Mon Sep 17 00:00:00 2001
|
|
From: Alex Crichton <alex@alexcrichton.com>
|
|
Date: Tue, 2 Jan 2018 16:21:35 -0800
|
|
Subject: [PATCH] rustc: Don't use relative paths for extended errors
|
|
|
|
These no longer work now that Cargo changes the cwd of rustc while it's running.
|
|
Instead use an absolute path that's set by rustbuild.
|
|
---
|
|
src/bootstrap/builder.rs | 4 ++--
|
|
src/bootstrap/check.rs | 3 ++-
|
|
src/bootstrap/doc.rs | 3 ++-
|
|
src/bootstrap/lib.rs | 5 +++++
|
|
src/libsyntax/diagnostics/metadata.rs | 11 ++++++-----
|
|
5 files changed, 17 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
|
|
index 16de31406f84..ce30d1f4cec4 100644
|
|
--- a/src/bootstrap/builder.rs
|
|
+++ b/src/bootstrap/builder.rs
|
|
@@ -484,8 +484,8 @@ impl<'a> Builder<'a> {
|
|
} else {
|
|
PathBuf::from("/path/to/nowhere/rustdoc/not/required")
|
|
})
|
|
- .env("TEST_MIRI", self.config.test_miri.to_string());
|
|
-
|
|
+ .env("TEST_MIRI", self.config.test_miri.to_string())
|
|
+ .env("RUSTC_ERROR_METADATA_DST", self.extended_error_dir());
|
|
if let Some(n) = self.config.rust_codegen_units {
|
|
cargo.env("RUSTC_CODEGEN_UNITS", n.to_string());
|
|
}
|
|
diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs
|
|
index 48b3d356985c..e4fbae3ff0d8 100644
|
|
--- a/src/bootstrap/check.rs
|
|
+++ b/src/bootstrap/check.rs
|
|
@@ -980,7 +980,8 @@ impl Step for ErrorIndex {
|
|
build.run(builder.tool_cmd(Tool::ErrorIndex)
|
|
.arg("markdown")
|
|
.arg(&output)
|
|
- .env("CFG_BUILD", &build.build));
|
|
+ .env("CFG_BUILD", &build.build)
|
|
+ .env("RUSTC_ERROR_METADATA_DST", build.extended_error_dir()));
|
|
|
|
markdown_test(builder, compiler, &output);
|
|
}
|
|
diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs
|
|
index 3c12cfc4c7ff..832da24c994d 100644
|
|
--- a/src/bootstrap/doc.rs
|
|
+++ b/src/bootstrap/doc.rs
|
|
@@ -671,7 +671,8 @@ impl Step for ErrorIndex {
|
|
index.arg(out.join("error-index.html"));
|
|
|
|
// FIXME: shouldn't have to pass this env var
|
|
- index.env("CFG_BUILD", &build.build);
|
|
+ index.env("CFG_BUILD", &build.build)
|
|
+ .env("RUSTC_ERROR_METADATA_DST", build.extended_error_dir());
|
|
|
|
build.run(&mut index);
|
|
}
|
|
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
|
|
index 63a9c3ab905d..52767b403e4e 100644
|
|
--- a/src/bootstrap/lib.rs
|
|
+++ b/src/bootstrap/lib.rs
|
|
@@ -721,6 +721,11 @@ impl Build {
|
|
self.config.python.as_ref().unwrap()
|
|
}
|
|
|
|
+ /// Temporary directory that extended error information is emitted to.
|
|
+ fn extended_error_dir(&self) -> PathBuf {
|
|
+ self.out.join("tmp/extended-error-metadata")
|
|
+ }
|
|
+
|
|
/// Tests whether the `compiler` compiling for `target` should be forced to
|
|
/// use a stage1 compiler instead.
|
|
///
|
|
diff --git a/src/libsyntax/diagnostics/metadata.rs b/src/libsyntax/diagnostics/metadata.rs
|
|
index 5f06475919fe..dc01a79190b3 100644
|
|
--- a/src/libsyntax/diagnostics/metadata.rs
|
|
+++ b/src/libsyntax/diagnostics/metadata.rs
|
|
@@ -14,9 +14,10 @@
|
|
//! currently always a crate name.
|
|
|
|
use std::collections::BTreeMap;
|
|
-use std::path::PathBuf;
|
|
+use std::env;
|
|
use std::fs::{remove_file, create_dir_all, File};
|
|
use std::io::Write;
|
|
+use std::path::PathBuf;
|
|
use std::error::Error;
|
|
use rustc_serialize::json::as_json;
|
|
|
|
@@ -24,9 +25,6 @@ use syntax_pos::{Span, FileName};
|
|
use ext::base::ExtCtxt;
|
|
use diagnostics::plugin::{ErrorMap, ErrorInfo};
|
|
|
|
-// Default metadata directory to use for extended error JSON.
|
|
-const ERROR_METADATA_PREFIX: &'static str = "tmp/extended-errors";
|
|
-
|
|
/// JSON encodable/decodable version of `ErrorInfo`.
|
|
#[derive(PartialEq, RustcDecodable, RustcEncodable)]
|
|
pub struct ErrorMetadata {
|
|
@@ -59,7 +57,10 @@ impl ErrorLocation {
|
|
///
|
|
/// See `output_metadata`.
|
|
pub fn get_metadata_dir(prefix: &str) -> PathBuf {
|
|
- PathBuf::from(ERROR_METADATA_PREFIX).join(prefix)
|
|
+ env::var_os("RUSTC_ERROR_METADATA_DST")
|
|
+ .map(PathBuf::from)
|
|
+ .expect("env var `RUSTC_ERROR_METADATA_DST` isn't set")
|
|
+ .join(prefix)
|
|
}
|
|
|
|
/// Map `name` to a path in the given directory: <directory>/<name>.json
|
|
--
|
|
2.14.3
|
|
|