Remove the "codegen" profile from bootstrap
This profile originally made sense when download-ci-llvm = if-unchanged didn't exist and we had the bad tradeoff of "never modify or always compile". Thankfully, these grim times are over and we have discovered clean water, so the only differentiator between the two profiles is the codegen profile having LLVM assertions. Adding them doesn't cause that much of a slowdown, <10% on UI tests from an unscientific benchmark. It also had LLVM warnings when compiling, which makes sense for every compiler contributor brave enough to compile LLVM. The way I removed is by just issueing a nice error message. Given that everyone with this profile should be a contributor and not someone like a distro who is more upset when things break, this should be fine. If it isn't, we can always fall back to just letting codegen mean compiler.
This commit is contained in:
parent
e29a1530f6
commit
9e68d89cc8
@ -1,28 +0,0 @@
|
||||
# These defaults are meant for contributors to the compiler who modify codegen or LLVM
|
||||
[build]
|
||||
# Contributors working on the compiler will probably expect compiler docs to be generated.
|
||||
compiler-docs = true
|
||||
|
||||
[llvm]
|
||||
# This enables debug-assertions in LLVM,
|
||||
# catching logic errors in codegen much earlier in the process.
|
||||
assertions = true
|
||||
# enable warnings during the llvm compilation
|
||||
enable-warnings = true
|
||||
# build llvm from source
|
||||
download-ci-llvm = "if-unchanged"
|
||||
|
||||
[rust]
|
||||
# This enables `RUSTC_LOG=debug`, avoiding confusing situations
|
||||
# where adding `debug!()` appears to do nothing.
|
||||
# However, it makes running the compiler slightly slower.
|
||||
debug-logging = true
|
||||
# This greatly increases the speed of rebuilds, especially when there are only minor changes. However, it makes the initial build slightly slower.
|
||||
incremental = true
|
||||
# Print backtrace on internal compiler errors during bootstrap
|
||||
backtrace-on-ice = true
|
||||
# Make the compiler and standard library faster to build, at the expense of a ~20% runtime slowdown.
|
||||
lto = "off"
|
||||
# Forces frame pointers to be used with `-Cforce-frame-pointers`.
|
||||
# This can be helpful for profiling at a small performance cost.
|
||||
frame-pointers = true
|
@ -19,5 +19,10 @@ lto = "off"
|
||||
frame-pointers = true
|
||||
|
||||
[llvm]
|
||||
# This enables debug-assertions in LLVM,
|
||||
# catching logic errors in codegen much earlier in the process.
|
||||
assertions = true
|
||||
# Enable warnings during the LLVM compilation (when LLVM is changed, causing a compilation)
|
||||
enable-warnings = true
|
||||
# Will download LLVM from CI if available on your platform.
|
||||
download-ci-llvm = "if-unchanged"
|
||||
|
@ -19,7 +19,6 @@
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
||||
pub enum Profile {
|
||||
Compiler,
|
||||
Codegen,
|
||||
Library,
|
||||
Tools,
|
||||
Dist,
|
||||
@ -48,7 +47,7 @@ fn include_path(&self, src_path: &Path) -> PathBuf {
|
||||
pub fn all() -> impl Iterator<Item = Self> {
|
||||
use Profile::*;
|
||||
// N.B. these are ordered by how they are displayed, not alphabetically
|
||||
[Library, Compiler, Codegen, Tools, Dist, None].iter().copied()
|
||||
[Library, Compiler, Tools, Dist, None].iter().copied()
|
||||
}
|
||||
|
||||
pub fn purpose(&self) -> String {
|
||||
@ -56,7 +55,6 @@ pub fn purpose(&self) -> String {
|
||||
match self {
|
||||
Library => "Contribute to the standard library",
|
||||
Compiler => "Contribute to the compiler itself",
|
||||
Codegen => "Contribute to the compiler, and also modify LLVM or codegen",
|
||||
Tools => "Contribute to tools which depend on the compiler, but do not modify it directly (e.g. rustdoc, clippy, miri)",
|
||||
Dist => "Install Rust from source",
|
||||
None => "Do not modify `config.toml`"
|
||||
@ -75,7 +73,6 @@ pub fn all_for_help(indent: &str) -> String {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Profile::Compiler => "compiler",
|
||||
Profile::Codegen => "codegen",
|
||||
Profile::Library => "library",
|
||||
Profile::Tools => "tools",
|
||||
Profile::Dist => "dist",
|
||||
@ -91,12 +88,15 @@ fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
match s {
|
||||
"lib" | "library" => Ok(Profile::Library),
|
||||
"compiler" => Ok(Profile::Compiler),
|
||||
"llvm" | "codegen" => Ok(Profile::Codegen),
|
||||
"maintainer" | "dist" | "user" => Ok(Profile::Dist),
|
||||
"tools" | "tool" | "rustdoc" | "clippy" | "miri" | "rustfmt" | "rls" => {
|
||||
Ok(Profile::Tools)
|
||||
}
|
||||
"none" => Ok(Profile::None),
|
||||
"llvm" | "codegen" => Err(format!(
|
||||
"the \"llvm\" and \"codegen\" profiles have been removed,\
|
||||
use \"compiler\" instead which has the same functionality"
|
||||
)),
|
||||
_ => Err(format!("unknown profile: '{s}'")),
|
||||
}
|
||||
}
|
||||
@ -170,22 +170,13 @@ fn make_run(run: RunConfig<'_>) {
|
||||
}
|
||||
|
||||
fn run(self, builder: &Builder<'_>) {
|
||||
// During ./x.py setup once you select the codegen profile.
|
||||
// The submodule will be downloaded. It does not work in the
|
||||
// tarball case since they don't include Git and submodules
|
||||
// are already included.
|
||||
if !builder.rust_info().is_from_tarball() {
|
||||
if self == Profile::Codegen {
|
||||
builder.update_submodule(&Path::new("src/llvm-project"));
|
||||
}
|
||||
}
|
||||
setup(&builder.build.config, self)
|
||||
setup(&builder.build.config, self);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup(config: &Config, profile: Profile) {
|
||||
let suggestions: &[&str] = match profile {
|
||||
Profile::Codegen | Profile::Compiler | Profile::None => &["check", "build", "test"],
|
||||
Profile::Compiler | Profile::None => &["check", "build", "test"],
|
||||
Profile::Tools => &[
|
||||
"check",
|
||||
"build",
|
||||
|
@ -124,4 +124,9 @@ pub fn find_recent_config_change_ids(current_id: usize) -> Vec<ChangeInfo> {
|
||||
severity: ChangeSeverity::Info,
|
||||
summary: "A new `rust.frame-pointers` option has been introduced and made the default in the compiler and codegen profiles.",
|
||||
},
|
||||
ChangeInfo {
|
||||
change_id: 121278,
|
||||
severity: ChangeSeverity::Warning,
|
||||
summary: "The \"codegen\"/\"llvm\" profile has been removed and replaced with \"compiler\", use it instead for the same behavior.",
|
||||
},
|
||||
];
|
||||
|
@ -627,11 +627,6 @@ This PR modifies `config.example.toml`.
|
||||
If appropriate, please update `CONFIG_CHANGE_HISTORY` in `src/bootstrap/src/utils/change_tracker.rs`.
|
||||
"""
|
||||
|
||||
[mentions."src/bootstrap/defaults/config.compiler.toml"]
|
||||
message = "This PR changes src/bootstrap/defaults/config.compiler.toml. If appropriate, please also update `config.codegen.toml` so the defaults are in sync."
|
||||
[mentions."src/bootstrap/defaults/config.codegen.toml"]
|
||||
message = "This PR changes src/bootstrap/defaults/config.codegen.toml. If appropriate, please also update `config.compiler.toml` so the defaults are in sync."
|
||||
|
||||
[mentions."src/bootstrap/src/core/build_steps/llvm.rs"]
|
||||
message = "This PR changes how LLVM is built. Consider updating src/bootstrap/download-ci-llvm-stamp."
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user