Add enable-missing-tools option
This commit is contained in:
parent
7d52cbce6d
commit
53254a888b
4 changed files with 20 additions and 5 deletions
|
@ -134,6 +134,7 @@ pub struct Config {
|
||||||
pub test_miri: bool,
|
pub test_miri: bool,
|
||||||
pub save_toolstates: Option<PathBuf>,
|
pub save_toolstates: Option<PathBuf>,
|
||||||
pub print_step_timings: bool,
|
pub print_step_timings: bool,
|
||||||
|
pub missing_tools: bool,
|
||||||
|
|
||||||
// Fallback musl-root for all targets
|
// Fallback musl-root for all targets
|
||||||
pub musl_root: Option<PathBuf>,
|
pub musl_root: Option<PathBuf>,
|
||||||
|
@ -375,6 +376,7 @@ impl Config {
|
||||||
config.rust_codegen_backends = vec![INTERNER.intern_str("llvm")];
|
config.rust_codegen_backends = vec![INTERNER.intern_str("llvm")];
|
||||||
config.rust_codegen_backends_dir = "codegen-backends".to_owned();
|
config.rust_codegen_backends_dir = "codegen-backends".to_owned();
|
||||||
config.deny_warnings = true;
|
config.deny_warnings = true;
|
||||||
|
config.missing_tools = false;
|
||||||
|
|
||||||
// set by bootstrap.py
|
// set by bootstrap.py
|
||||||
config.build = INTERNER.intern_str(&env::var("BUILD").expect("'BUILD' to be set"));
|
config.build = INTERNER.intern_str(&env::var("BUILD").expect("'BUILD' to be set"));
|
||||||
|
|
|
@ -69,6 +69,7 @@ o("profiler", "build.profiler", "build the profiler runtime")
|
||||||
o("emscripten", None, "compile the emscripten backend as well as LLVM")
|
o("emscripten", None, "compile the emscripten backend as well as LLVM")
|
||||||
o("full-tools", None, "enable all tools")
|
o("full-tools", None, "enable all tools")
|
||||||
o("lldb", "rust.lldb", "build lldb")
|
o("lldb", "rust.lldb", "build lldb")
|
||||||
|
o("enable-missing-tools", "build.missing-tools", "allow failures when building tools")
|
||||||
|
|
||||||
# Optimization and debugging options. These may be overridden by the release
|
# Optimization and debugging options. These may be overridden by the release
|
||||||
# channel, etc.
|
# channel, etc.
|
||||||
|
|
|
@ -67,6 +67,14 @@ fn rust_installer(builder: &Builder) -> Command {
|
||||||
builder.tool_cmd(Tool::RustInstaller)
|
builder.tool_cmd(Tool::RustInstaller)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn missing_tool(tool_name: &str, skip: bool) {
|
||||||
|
if skip {
|
||||||
|
println!("Unable to build {}, skipping dist", tool_name)
|
||||||
|
} else {
|
||||||
|
panic!("Unable to build {}", tool_name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
|
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
|
||||||
pub struct Docs {
|
pub struct Docs {
|
||||||
pub stage: u32,
|
pub stage: u32,
|
||||||
|
@ -1166,7 +1174,7 @@ impl Step for Rls {
|
||||||
let rls = builder.ensure(tool::Rls {
|
let rls = builder.ensure(tool::Rls {
|
||||||
compiler: builder.compiler(stage, builder.config.build),
|
compiler: builder.compiler(stage, builder.config.build),
|
||||||
target, extra_features: Vec::new()
|
target, extra_features: Vec::new()
|
||||||
}).or_else(|| { println!("Unable to build RLS, skipping dist"); None })?;
|
}).or_else(|| { missing_tool("RLS", builder.build.config.missing_tools); None })?;
|
||||||
|
|
||||||
builder.install(&rls, &image.join("bin"), 0o755);
|
builder.install(&rls, &image.join("bin"), 0o755);
|
||||||
let doc = image.join("share/doc/rls");
|
let doc = image.join("share/doc/rls");
|
||||||
|
@ -1245,11 +1253,11 @@ impl Step for Clippy {
|
||||||
let clippy = builder.ensure(tool::Clippy {
|
let clippy = builder.ensure(tool::Clippy {
|
||||||
compiler: builder.compiler(stage, builder.config.build),
|
compiler: builder.compiler(stage, builder.config.build),
|
||||||
target, extra_features: Vec::new()
|
target, extra_features: Vec::new()
|
||||||
}).or_else(|| { println!("Unable to build clippy, skipping dist"); None })?;
|
}).or_else(|| { missing_tool("clippy", builder.build.config.missing_tools); None })?;
|
||||||
let cargoclippy = builder.ensure(tool::CargoClippy {
|
let cargoclippy = builder.ensure(tool::CargoClippy {
|
||||||
compiler: builder.compiler(stage, builder.config.build),
|
compiler: builder.compiler(stage, builder.config.build),
|
||||||
target, extra_features: Vec::new()
|
target, extra_features: Vec::new()
|
||||||
}).or_else(|| { println!("Unable to build cargo clippy, skipping dist"); None })?;
|
}).or_else(|| { missing_tool("cargo clippy", builder.build.config.missing_tools); None })?;
|
||||||
|
|
||||||
builder.install(&clippy, &image.join("bin"), 0o755);
|
builder.install(&clippy, &image.join("bin"), 0o755);
|
||||||
builder.install(&cargoclippy, &image.join("bin"), 0o755);
|
builder.install(&cargoclippy, &image.join("bin"), 0o755);
|
||||||
|
@ -1324,11 +1332,11 @@ impl Step for Rustfmt {
|
||||||
let rustfmt = builder.ensure(tool::Rustfmt {
|
let rustfmt = builder.ensure(tool::Rustfmt {
|
||||||
compiler: builder.compiler(stage, builder.config.build),
|
compiler: builder.compiler(stage, builder.config.build),
|
||||||
target, extra_features: Vec::new()
|
target, extra_features: Vec::new()
|
||||||
}).or_else(|| { println!("Unable to build Rustfmt, skipping dist"); None })?;
|
}).or_else(|| { missing_tool("Rustfmt", builder.build.config.missing_tools); None })?;
|
||||||
let cargofmt = builder.ensure(tool::Cargofmt {
|
let cargofmt = builder.ensure(tool::Cargofmt {
|
||||||
compiler: builder.compiler(stage, builder.config.build),
|
compiler: builder.compiler(stage, builder.config.build),
|
||||||
target, extra_features: Vec::new()
|
target, extra_features: Vec::new()
|
||||||
}).or_else(|| { println!("Unable to build Cargofmt, skipping dist"); None })?;
|
}).or_else(|| { missing_tool("Cargofmt", builder.build.config.missing_tools); None })?;
|
||||||
|
|
||||||
builder.install(&rustfmt, &image.join("bin"), 0o755);
|
builder.install(&rustfmt, &image.join("bin"), 0o755);
|
||||||
builder.install(&cargofmt, &image.join("bin"), 0o755);
|
builder.install(&cargofmt, &image.join("bin"), 0o755);
|
||||||
|
|
|
@ -76,6 +76,10 @@ else
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$RUST_RELEASE_CHANNEL" = "nightly" ] or [ "$DIST_REQUIRE_ALL_TOOLS" = "" ]; then
|
||||||
|
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-missing-tools"
|
||||||
|
fi
|
||||||
|
|
||||||
# We've had problems in the past of shell scripts leaking fds into the sccache
|
# We've had problems in the past of shell scripts leaking fds into the sccache
|
||||||
# server (#48192) which causes Cargo to erroneously think that a build script
|
# server (#48192) which causes Cargo to erroneously think that a build script
|
||||||
# hasn't finished yet. Try to solve that problem by starting a very long-lived
|
# hasn't finished yet. Try to solve that problem by starting a very long-lived
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue