mirror of
https://github.com/rust-lang/rust
synced 2024-09-05 16:57:03 +00:00
Auto merge of #42824 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 4 pull requests - Successful merges: #42799, #42804, #42805, #42806 - Failed merges:
This commit is contained in:
commit
74fa27928a
|
@ -236,6 +236,15 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let color = match env::var("RUSTC_COLOR") {
|
||||||
|
Ok(s) => usize::from_str(&s).expect("RUSTC_COLOR should be an integer"),
|
||||||
|
Err(_) => 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
if color != 0 {
|
||||||
|
cmd.arg("--color=always");
|
||||||
|
}
|
||||||
|
|
||||||
if verbose > 1 {
|
if verbose > 1 {
|
||||||
writeln!(&mut io::stderr(), "rustc command: {:?}", cmd).unwrap();
|
writeln!(&mut io::stderr(), "rustc command: {:?}", cmd).unwrap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,11 +41,11 @@ fn main() {
|
||||||
.env(bootstrap::util::dylib_path_var(),
|
.env(bootstrap::util::dylib_path_var(),
|
||||||
env::join_paths(&dylib_path).unwrap());
|
env::join_paths(&dylib_path).unwrap());
|
||||||
|
|
||||||
// Pass the `rustbuild` feature flag to crates which rustbuild is
|
// Force all crates compiled by this compiler to (a) be unstable and (b)
|
||||||
// building. See the comment in bootstrap/lib.rs where this env var is
|
// allow the `rustc_private` feature to link to other unstable crates
|
||||||
// set for more details.
|
// also in the sysroot.
|
||||||
if env::var_os("RUSTBUILD_UNSTABLE").is_some() {
|
if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() {
|
||||||
cmd.arg("--cfg").arg("rustbuild");
|
cmd.arg("-Z").arg("force-unstable-if-unmarked");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::process::exit(match cmd.status() {
|
std::process::exit(match cmd.status() {
|
||||||
|
|
|
@ -668,6 +668,7 @@ def bootstrap():
|
||||||
env["BUILD"] = rb.build
|
env["BUILD"] = rb.build
|
||||||
env["SRC"] = rb.rust_root
|
env["SRC"] = rb.rust_root
|
||||||
env["BOOTSTRAP_PARENT_ID"] = str(os.getpid())
|
env["BOOTSTRAP_PARENT_ID"] = str(os.getpid())
|
||||||
|
env["BOOTSTRAP_PYTHON"] = sys.executable
|
||||||
run(args, env=env, verbose=rb.verbose)
|
run(args, env=env, verbose=rb.verbose)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -477,11 +477,43 @@ pub fn tool(build: &Build, stage: u32, target: &str, tool: &str) {
|
||||||
build.run(&mut cargo);
|
build.run(&mut cargo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Avoiding a dependency on winapi to keep compile times down
|
||||||
|
#[cfg(unix)]
|
||||||
|
fn stderr_isatty() -> bool {
|
||||||
|
use libc;
|
||||||
|
unsafe { libc::isatty(libc::STDERR_FILENO) != 0 }
|
||||||
|
}
|
||||||
|
#[cfg(windows)]
|
||||||
|
fn stderr_isatty() -> bool {
|
||||||
|
type DWORD = u32;
|
||||||
|
type BOOL = i32;
|
||||||
|
type HANDLE = *mut u8;
|
||||||
|
const STD_ERROR_HANDLE: DWORD = -12i32 as DWORD;
|
||||||
|
extern "system" {
|
||||||
|
fn GetStdHandle(which: DWORD) -> HANDLE;
|
||||||
|
fn GetConsoleMode(hConsoleHandle: HANDLE, lpMode: *mut DWORD) -> BOOL;
|
||||||
|
}
|
||||||
|
unsafe {
|
||||||
|
let handle = GetStdHandle(STD_ERROR_HANDLE);
|
||||||
|
let mut out = 0;
|
||||||
|
GetConsoleMode(handle, &mut out) != 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn run_cargo(build: &Build, cargo: &mut Command, stamp: &Path) {
|
fn run_cargo(build: &Build, cargo: &mut Command, stamp: &Path) {
|
||||||
// Instruct Cargo to give us json messages on stdout, critically leaving
|
// Instruct Cargo to give us json messages on stdout, critically leaving
|
||||||
// stderr as piped so we can get those pretty colors.
|
// stderr as piped so we can get those pretty colors.
|
||||||
cargo.arg("--message-format").arg("json")
|
cargo.arg("--message-format").arg("json")
|
||||||
.stdout(Stdio::piped());
|
.stdout(Stdio::piped());
|
||||||
|
|
||||||
|
if stderr_isatty() {
|
||||||
|
// since we pass message-format=json to cargo, we need to tell the rustc
|
||||||
|
// wrapper to give us colored output if necessary. This is because we
|
||||||
|
// only want Cargo's JSON output, not rustcs.
|
||||||
|
cargo.env("RUSTC_COLOR", "1");
|
||||||
|
}
|
||||||
|
|
||||||
build.verbose(&format!("running: {:?}", cargo));
|
build.verbose(&format!("running: {:?}", cargo));
|
||||||
let mut child = match cargo.spawn() {
|
let mut child = match cargo.spawn() {
|
||||||
Ok(child) => child,
|
Ok(child) => child,
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
use std::ffi::{OsStr, OsString};
|
use std::ffi::{OsStr, OsString};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use build_helper::output;
|
use build_helper::output;
|
||||||
|
|
||||||
|
@ -86,6 +87,12 @@ pub fn check(build: &mut Build) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if build.config.python.is_none() {
|
||||||
|
// set by bootstrap.py
|
||||||
|
if let Some(v) = env::var_os("BOOTSTRAP_PYTHON") {
|
||||||
|
build.config.python = Some(PathBuf::from(v));
|
||||||
|
}
|
||||||
|
}
|
||||||
if build.config.python.is_none() {
|
if build.config.python.is_none() {
|
||||||
build.config.python = have_cmd("python2.7".as_ref());
|
build.config.python = have_cmd("python2.7".as_ref());
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,8 @@ pub fn run_core(search_paths: SearchPaths,
|
||||||
input: Input,
|
input: Input,
|
||||||
triple: Option<String>,
|
triple: Option<String>,
|
||||||
maybe_sysroot: Option<PathBuf>,
|
maybe_sysroot: Option<PathBuf>,
|
||||||
allow_warnings: bool) -> (clean::Crate, RenderInfo)
|
allow_warnings: bool,
|
||||||
|
force_unstable_if_unmarked: bool) -> (clean::Crate, RenderInfo)
|
||||||
{
|
{
|
||||||
// Parse, resolve, and typecheck the given crate.
|
// Parse, resolve, and typecheck the given crate.
|
||||||
|
|
||||||
|
@ -128,6 +129,10 @@ pub fn run_core(search_paths: SearchPaths,
|
||||||
// Ensure that rustdoc works even if rustc is feature-staged
|
// Ensure that rustdoc works even if rustc is feature-staged
|
||||||
unstable_features: UnstableFeatures::Allow,
|
unstable_features: UnstableFeatures::Allow,
|
||||||
actually_rustdoc: true,
|
actually_rustdoc: true,
|
||||||
|
debugging_opts: config::DebuggingOptions {
|
||||||
|
force_unstable_if_unmarked: force_unstable_if_unmarked,
|
||||||
|
..config::basic_debugging_options()
|
||||||
|
},
|
||||||
..config::basic_options().clone()
|
..config::basic_options().clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -465,13 +465,17 @@ fn rust_input<R, F>(cratefile: &str, externs: Externs, matches: &getopts::Matche
|
||||||
info!("starting to run rustc");
|
info!("starting to run rustc");
|
||||||
let display_warnings = matches.opt_present("display-warnings");
|
let display_warnings = matches.opt_present("display-warnings");
|
||||||
|
|
||||||
|
let force_unstable_if_unmarked = matches.opt_strs("Z").iter().any(|x| {
|
||||||
|
*x == "force-unstable-if-unmarked"
|
||||||
|
});
|
||||||
|
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
rustc_driver::monitor(move || {
|
rustc_driver::monitor(move || {
|
||||||
use rustc::session::config::Input;
|
use rustc::session::config::Input;
|
||||||
|
|
||||||
let (mut krate, renderinfo) =
|
let (mut krate, renderinfo) =
|
||||||
core::run_core(paths, cfgs, externs, Input::File(cr), triple, maybe_sysroot,
|
core::run_core(paths, cfgs, externs, Input::File(cr), triple, maybe_sysroot,
|
||||||
display_warnings);
|
display_warnings, force_unstable_if_unmarked);
|
||||||
|
|
||||||
info!("finished with rustc");
|
info!("finished with rustc");
|
||||||
|
|
||||||
|
|
|
@ -2384,7 +2384,7 @@ fn build_hasher(&self) -> DefaultHasher {
|
||||||
/// [`Hasher`]: ../../hash/trait.Hasher.html
|
/// [`Hasher`]: ../../hash/trait.Hasher.html
|
||||||
#[stable(feature = "hashmap_default_hasher", since = "1.13.0")]
|
#[stable(feature = "hashmap_default_hasher", since = "1.13.0")]
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
#[derive(Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct DefaultHasher(SipHasher13);
|
pub struct DefaultHasher(SipHasher13);
|
||||||
|
|
||||||
impl DefaultHasher {
|
impl DefaultHasher {
|
||||||
|
|
Loading…
Reference in a new issue