Backport a rebuild fix for rust#48308.

This commit is contained in:
Josh Stone 2018-02-21 19:47:41 -08:00
parent 1fe43a8148
commit c25b6ed664
2 changed files with 123 additions and 1 deletions

View File

@ -0,0 +1,115 @@
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

View File

@ -48,7 +48,7 @@
Name: rust
Version: 1.24.0
Release: 2%{?dist}
Release: 3%{?dist}
Summary: The Rust Programming Language
License: (ASL 2.0 or MIT) and (BSD and ISC and MIT)
# ^ written as: (rust itself) and (bundled libraries)
@ -83,6 +83,9 @@ Patch6: 0002-Use-a-range-to-identify-SIGSEGV-in-stack-guards.patch
Patch7: rust-pr46592-bootstrap-libdir.patch
Patch8: rust-pr48362-libdir-relative.patch
# https://github.com/rust-lang/rust/issues/48308
Patch9: 0001-rustc-Don-t-use-relative-paths-for-extended-errors.patch
# Get the Rust triple for any arch.
%{lua: function rust_triple(arch)
local abi = "gnu"
@ -317,6 +320,7 @@ popd
%patch6 -p1 -b .out-of-stack
%patch7 -p1 -b .bootstrap-libdir
%patch8 -p1 -b .bootstrap-libdir-relative
%patch9 -p1 -b .absolute-extended-errors
%if "%{python}" == "python3"
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
@ -518,6 +522,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
%changelog
* Wed Feb 21 2018 Josh Stone <jistone@redhat.com> - 1.24.0-3
- Backport a rebuild fix for rust#48308.
* Mon Feb 19 2018 Josh Stone <jistone@redhat.com> - 1.24.0-2
- rhbz1546541: drop full-bootstrap; cmp libs before symlinking.
- Backport pr46592 to fix local_rebuild bootstrapping.