-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
build.rs "rerun-if-env-changed" goes out of sync with the actual use site of the env var. #70517
Comments
Found another one: cc @Mark-Simulacrum Could we automate ensuring this? e.g. by searching for |
Yeah, we can try I guess. Not sure :) Maybe the right solution is that Cargo would, other than some whitelist, remove unknown variables from rustc's environment -- and the whitelist can be expanded via the build script env-tracking. |
@Mark-Simulacrum hmm I wonder if abusing the |
You mean such that if you use But yeah, I think that would be good. Ideally this would be "well-integrated" vs. the current state of everyone having to remember to do it. |
Print environment variables accessed by rustc as special comments into depinfo files So cargo (and perhaps others tools) can use them for linting (at least) or for actually rebuilding crates on env var changes. --- I've recently observed one more forgotten environment variable in a build script rust-lang@8a77d1c and thought it would be nice to provide the list of accessed variables to cargo automatically as a part of depinfo. Unsurprisingly, I wasn't the first who had this idea - cc rust-lang#70517 rust-lang#40364 rust-lang#44074. Also, there are dozens of uses of `(option_)env!` in rustc repo and, like, half of them are not registered in build scripts. --- Description: - depinfo files are extended with special comments containing info about environment variables accessed during compilation. - Comment format for environment variables with successfully retrieved value: `# env-dep:KEY=VALUE`. - Comment format for environment variables without successfully retrieved value: `# env-dep:KEY` (can happen with `option_env!`). - `KEY` and `VALUE` are minimally escaped (`\n`, `\r`, `\\`) so they don't break makefile comments and can be unescaped by anything that can unescape standard `escape_default` and friends. FCP report: rust-lang#71858 (comment) Closes rust-lang#70517 Closes rust-lang#40364 Closes rust-lang#44074 A new issue in the cargo repo will be needed to track the cargo side of this feature. r? @ehuss
This is still in
rustc_codegen_llvm
's build script:rust/src/librustc_codegen_llvm/build.rs
Line 4 in 7762131
But the use site has been moved here:
rust/src/librustc_codegen_ssa/back/link.rs
Line 1427 in 7762131
This means that
rustc_codegen_ssa
won't be rebuilt when that env var changes. For the record, I haven't seen a bug from this, was just curious whereCFG_PREFIX
may be used and spotted the mismatch.cc @bjorn3
The text was updated successfully, but these errors were encountered: