Greatly reduce amount of debuginfo compiled for bootstrap itself#89756
Greatly reduce amount of debuginfo compiled for bootstrap itself#89756bors merged 1 commit intorust-lang:masterfrom
Conversation
Rather than compiling rustbuild and all its dependencies with `debuginfo=2`, this compiles dependencies without debuginfo and rustbuild with `debuginfo=1`. On my laptop, this brings compile times down from ~1:20 to ~1:05.
| miniz_oxide.debug = 0 | ||
| object.debug = 0 | ||
|
|
||
| # The only package that ever uses debug builds is bootstrap. |
There was a problem hiding this comment.
This feels a little adhoc and not terribly future proof. I think custom profiles are stable or will be quite soon, maybe we can use that?
FWIW I think we haven't had panics and such from bootstrap in a while, so maybe we can just disable debuginfo fully...
There was a problem hiding this comment.
I find debuginfo useful when modifying bootstrap itself, but I guess it's not too hard to add it back in in bootstrap.py if necessary. I don't think it would make this much simpler though, we definitely don't want to disable debuginfo for anything besides bootstrap.
There was a problem hiding this comment.
Hmm, adding the named-profiles feature breaks x.py because it doesn't pass RUSTC_BOOTSTRAP for building bootstrap itself. Also I think this would prevent people from running cargo metadata with anything other than nightly.
There was a problem hiding this comment.
@jyn514 Is it currently guaranteed that e.g. running cargo metadata on rustc with a stable compiler will always work? For example right now it doesn't work, because the stable compiler misses edition 2021, which is used by src/bootstrap/Cargo.toml.
There was a problem hiding this comment.
It's not guaranteed, but it does work most of the time.
There was a problem hiding this comment.
OK, I've thought a little more about this and it seems OK to me to do this as-is. It's fairly minimal still, and hopefully as you say won't affect anything else. We could try to be a little more minimal by setting this via the env variable (CARGO_PROFILE_<name>_DEBUG) but it doesn't seem particularly necessary so we can just do this for now.
|
@bors r+ |
|
📌 Commit 7f974d0 has been approved by |
…lacrum Greatly reduce amount of debuginfo compiled for bootstrap itself Rather than compiling rustbuild and all its dependencies with `debuginfo=2`, this compiles dependencies without debuginfo and rustbuild with `debuginfo=1`. On my laptop, this brings compile times down from ~1:20 to ~1:05. See also https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/async.20in.20bootstrap.3F/near/254847594. r? `@Mark-Simulacrum`
…askrgr Rollup of 9 pull requests Successful merges: - rust-lang#89471 (Use Ancestory to check default fn in const impl instead of comparing idents) - rust-lang#89643 (Fix inherent impl overlap check.) - rust-lang#89651 (Add `Poll::ready` and revert stabilization of `task::ready!`) - rust-lang#89675 (Re-use TypeChecker instead of passing around some of its fields ) - rust-lang#89710 (Add long explanation for error E0482) - rust-lang#89756 (Greatly reduce amount of debuginfo compiled for bootstrap itself) - rust-lang#89760 (Remove hack ignoring unused attributes for stage 0 std) - rust-lang#89772 (Fix function-names test for GDB 10.1) - rust-lang#89785 (Fix ICE when compiling nightly std/rustc on beta compiler) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Rather than compiling rustbuild and all its dependencies with
debuginfo=2, this compiles dependencies without debuginfo andrustbuild with
debuginfo=1. On my laptop, this brings compile timesdown from ~1:20 to ~1:05.
See also https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/async.20in.20bootstrap.3F/near/254847594.
r? @Mark-Simulacrum