check ci-rustc options
This commit is contained in:
parent
e153d82c76
commit
32057b7ec3
@ -39,6 +39,16 @@ macro_rules! check_ci_llvm {
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! check_ci_rustc {
|
||||
($name:expr) => {
|
||||
assert!(
|
||||
$name.is_none(),
|
||||
"setting {} is incompatible with download-ci-rustc.",
|
||||
stringify!($name)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
pub enum DryRun {
|
||||
/// This isn't a dry run.
|
||||
@ -1328,6 +1338,25 @@ impl Config {
|
||||
let mut omit_git_hash = None;
|
||||
|
||||
if let Some(rust) = toml.rust {
|
||||
set(&mut config.channel, rust.channel);
|
||||
|
||||
config.download_rustc_commit = config.download_ci_rustc_commit(rust.download_rustc);
|
||||
// This list is incomplete, please help by expanding it!
|
||||
if config.download_rustc_commit.is_some() {
|
||||
// We need the channel used by the downloaded compiler to match the one we set for rustdoc;
|
||||
// otherwise rustdoc-ui tests break.
|
||||
let ci_channel = t!(fs::read_to_string(config.src.join("src/ci/channel")));
|
||||
let ci_channel = ci_channel.trim_end();
|
||||
if config.channel != ci_channel
|
||||
&& !(config.channel == "dev" && ci_channel == "nightly")
|
||||
{
|
||||
panic!(
|
||||
"setting rust.channel={} is incompatible with download-rustc",
|
||||
config.channel
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
debug = rust.debug;
|
||||
debug_assertions = rust.debug_assertions;
|
||||
debug_assertions_std = rust.debug_assertions_std;
|
||||
@ -1339,6 +1368,7 @@ impl Config {
|
||||
debuginfo_level_std = rust.debuginfo_level_std;
|
||||
debuginfo_level_tools = rust.debuginfo_level_tools;
|
||||
debuginfo_level_tests = rust.debuginfo_level_tests;
|
||||
|
||||
config.rust_split_debuginfo = rust
|
||||
.split_debuginfo
|
||||
.as_deref()
|
||||
@ -1354,7 +1384,6 @@ impl Config {
|
||||
set(&mut config.jemalloc, rust.jemalloc);
|
||||
set(&mut config.test_compare_mode, rust.test_compare_mode);
|
||||
set(&mut config.backtrace, rust.backtrace);
|
||||
set(&mut config.channel, rust.channel);
|
||||
config.description = rust.description;
|
||||
set(&mut config.rust_dist_src, rust.dist_src);
|
||||
set(&mut config.verbose_tests, rust.verbose_tests);
|
||||
@ -1395,8 +1424,6 @@ impl Config {
|
||||
config.rust_codegen_units_std = rust.codegen_units_std.map(threads_from_config);
|
||||
config.rust_profile_use = flags.rust_profile_use.or(rust.profile_use);
|
||||
config.rust_profile_generate = flags.rust_profile_generate.or(rust.profile_generate);
|
||||
config.download_rustc_commit = config.download_ci_rustc_commit(rust.download_rustc);
|
||||
|
||||
config.rust_lto = rust
|
||||
.lto
|
||||
.as_deref()
|
||||
@ -1491,6 +1518,10 @@ impl Config {
|
||||
check_ci_llvm!(llvm.plugins);
|
||||
}
|
||||
|
||||
if config.download_rustc_commit.is_some() {
|
||||
check_ci_rustc!(llvm.assertions);
|
||||
}
|
||||
|
||||
// NOTE: can never be hit when downloading from CI, since we call `check_ci_llvm!(thin_lto)` above.
|
||||
if config.llvm_thin_lto && llvm.link_shared.is_none() {
|
||||
// If we're building with ThinLTO on, by default we want to link
|
||||
@ -1508,6 +1539,11 @@ impl Config {
|
||||
let mut target = Target::from_triple(&triple);
|
||||
|
||||
if let Some(ref s) = cfg.llvm_config {
|
||||
if config.download_rustc_commit.is_some() && triple == &*config.build.triple {
|
||||
panic!(
|
||||
"setting llvm_config for the host is incompatible with download-rustc"
|
||||
);
|
||||
}
|
||||
target.llvm_config = Some(config.src.join(s));
|
||||
}
|
||||
target.llvm_has_rust_patches = cfg.llvm_has_rust_patches;
|
||||
|
Loading…
x
Reference in New Issue
Block a user