-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: pass -C debuginfo
after weakening if explicitly set
#12165
Conversation
r? @ehuss (rustbot has picked a reviewer for you, use r? to override) |
The weakening of debuginfo for build script shouldn't turn debuginfo to `DebugInfo::None`. That will result in not passing `-C debuginfo=0` to rustc, leading to build artifact cache miss.
Thanks! @bors r+ Do you think this needs to be backported to beta? |
Feel like the bug shouldn't affect too many people, as you need to have both a crate in normal and build dependencies and switch back-and-forth between builds with different dependency resolutions. That said, no harm for a backport I guess? I do one then. |
☀️ Test successful - checks-actions |
Update cargo 10 commits in 09276c703a473ab33daaeb94917232e80eefd628..64fb38c97ac4d3a327fc9032c862dd28c8833b17 2023-05-16 21:43:35 +0000 to 2023-05-23 18:53:23 +0000 - Consider rust-version when selecting packages for cargo add (rust-lang/cargo#12078) - fix(lints): Switch to -Zlints so stable projects can experiment (rust-lang/cargo#12168) - Automatically inherit workspace fields when running cargo new/init (rust-lang/cargo#12069) - ci: check if any version bump needed for member crates (rust-lang/cargo#12126) - feat: `lints` feature (rust-lang/cargo#12148) - fix: pass `-C debuginfo` after weakening if explicitly set (rust-lang/cargo#12165) - Tweak build help to clarify role of --bin (rust-lang/cargo#12157) - fix: Pass CI on nightly (rust-lang/cargo#12160) - docs(source): doc comments for Source and its impls (rust-lang/cargo#12159) - docs(source): doc comments for `Source` and friends (rust-lang/cargo#12153) r? `@ghost`
Update cargo 10 commits in 09276c703a473ab33daaeb94917232e80eefd628..64fb38c97ac4d3a327fc9032c862dd28c8833b17 2023-05-16 21:43:35 +0000 to 2023-05-23 18:53:23 +0000 - Consider rust-version when selecting packages for cargo add (rust-lang/cargo#12078) - fix(lints): Switch to -Zlints so stable projects can experiment (rust-lang/cargo#12168) - Automatically inherit workspace fields when running cargo new/init (rust-lang/cargo#12069) - ci: check if any version bump needed for member crates (rust-lang/cargo#12126) - feat: `lints` feature (rust-lang/cargo#12148) - fix: pass `-C debuginfo` after weakening if explicitly set (rust-lang/cargo#12165) - Tweak build help to clarify role of --bin (rust-lang/cargo#12157) - fix: Pass CI on nightly (rust-lang/cargo#12160) - docs(source): doc comments for Source and its impls (rust-lang/cargo#12159) - docs(source): doc comments for `Source` and friends (rust-lang/cargo#12153) r? `@ghost`
What does this PR try to resolve?
The weakening of debuginfo for build script shouldn't turn debuginfo
to
DebugInfo::None
. That will result in not passing-C debuginfo=0
to rustc, leading to build artifact cache miss.
Fixes #12163
How should we test and review this PR?
The existing test cases should cover this change.
You can also follow the reproducer in #12163.
I don't think we need more new test cases, since #12163 is not really a new scenario. See #12163 (comment).
Additional information
Will it introduce more cache miss? The following table shows whether
-C debuginfo
is passed to rustc:(before/after means before/after this pull request)
dev
default-C debuginfo=0
-C debuginfo=2
dev.debug=0
-C debuginfo=0
-C debuginfo=0
dev.build-override.debug=0
-C debuginfo=0
-C debuginfo=0
-C debuginfo=2
release
defaultrelease.debug=0
-C debuginfo=0
-C debuginfo=0
release.build-override.debug=0
-C debuginfo=0
-C debuginfo=0
-C debuginfo=2
We can see that even with
debug=0
set explicitly, some build-deps were weakened to no flag passed at all. I am still not sure if there is any cache miss, but at least we can potentially reuse artifacts between build-deps and normal-deps whendev.debug=0
.(Artifacts cannot be reused for
release.debug=0
because other flags likeopt-level
may have different values)