Rollup merge of #109981 - duckymirror:issue-107094, r=albertlarsan68
Set commit information environment variables when building tools This fixes #107094. ~I'm trying to add a regression test for this issue.~ **Update**: I've added a test and a new test header `needs-git-hash` which makes sure it doesn't run when commit hashes are ignored (`bootstrap`'s `ignore-git` option).
This commit is contained in:
commit
06d403d670
7 changed files with 37 additions and 0 deletions
|
@ -1804,6 +1804,10 @@ note: if you're sure you want to do this, please open an issue as to why. In the
|
|||
|
||||
cmd.arg("--channel").arg(&builder.config.channel);
|
||||
|
||||
if !builder.config.omit_git_hash {
|
||||
cmd.arg("--git-hash");
|
||||
}
|
||||
|
||||
if let Some(commit) = builder.config.download_rustc_commit() {
|
||||
cmd.env("FAKE_DOWNLOAD_RUSTC_PREFIX", format!("/rustc/{commit}"));
|
||||
}
|
||||
|
|
|
@ -194,6 +194,12 @@ pub fn prepare_tool_cargo(
|
|||
cargo.env("CFG_VERSION", builder.rust_version());
|
||||
cargo.env("CFG_RELEASE_NUM", &builder.version);
|
||||
cargo.env("DOC_RUST_LANG_ORG_CHANNEL", builder.doc_rust_lang_org_channel());
|
||||
if let Some(ref ver_date) = builder.rust_info().commit_date() {
|
||||
cargo.env("CFG_VER_DATE", ver_date);
|
||||
}
|
||||
if let Some(ref ver_hash) = builder.rust_info().sha() {
|
||||
cargo.env("CFG_VER_HASH", ver_hash);
|
||||
}
|
||||
|
||||
let info = GitInfo::new(builder.config.omit_git_hash, &dir);
|
||||
if let Some(sha) = info.sha() {
|
||||
|
|
|
@ -303,6 +303,9 @@ pub struct Config {
|
|||
/// The current Rust channel
|
||||
pub channel: String,
|
||||
|
||||
/// Whether adding git commit information such as the commit hash has been enabled for building
|
||||
pub git_hash: bool,
|
||||
|
||||
/// The default Rust edition
|
||||
pub edition: Option<String>,
|
||||
|
||||
|
|
|
@ -115,6 +115,11 @@ pub(super) fn handle_needs(
|
|||
condition: cache.x86_64_dlltool,
|
||||
ignore_reason: "ignored when dlltool for x86_64 is not present",
|
||||
},
|
||||
Need {
|
||||
name: "needs-git-hash",
|
||||
condition: config.git_hash,
|
||||
ignore_reason: "ignored when git hashes have been omitted for building",
|
||||
},
|
||||
];
|
||||
|
||||
let (name, comment) = match ln.split_once([':', ' ']) {
|
||||
|
|
|
@ -251,6 +251,16 @@ fn debugger() {
|
|||
assert!(check_ignore(&config, "// ignore-lldb"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn git_hash() {
|
||||
let mut config = config();
|
||||
config.git_hash = false;
|
||||
assert!(check_ignore(&config, "// needs-git-hash"));
|
||||
|
||||
config.git_hash = true;
|
||||
assert!(!check_ignore(&config, "// needs-git-hash"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sanitizers() {
|
||||
let mut config = config();
|
||||
|
|
|
@ -159,6 +159,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
|
|||
.optflag("", "nocapture", "")
|
||||
.optflag("h", "help", "show this message")
|
||||
.reqopt("", "channel", "current Rust channel", "CHANNEL")
|
||||
.optflag("", "git-hash", "run tests which rely on commit version being compiled into the binaries")
|
||||
.optopt("", "edition", "default Rust edition", "EDITION");
|
||||
|
||||
let (argv0, args_) = args.split_first().unwrap();
|
||||
|
@ -302,6 +303,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
|
|||
rustfix_coverage: matches.opt_present("rustfix-coverage"),
|
||||
has_tidy,
|
||||
channel: matches.opt_str("channel").unwrap(),
|
||||
git_hash: matches.opt_present("git-hash"),
|
||||
edition: matches.opt_str("edition"),
|
||||
|
||||
cc: matches.opt_str("cc").unwrap(),
|
||||
|
|
7
tests/run-make/issue-107094/Makefile
Normal file
7
tests/run-make/issue-107094/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
|||
# needs-git-hash
|
||||
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(BARE_RUSTC) --version --verbose | $(CGREP) -i -e "commit-hash: [0-9a-f]{40}" "commit-date: [0-9]{4}-[0-9]{2}-[0-9]{2}"
|
||||
$(BARE_RUSTDOC) --version --verbose | $(CGREP) -i -e "commit-hash: [0-9a-f]{40}" "commit-date: [0-9]{4}-[0-9]{2}-[0-9]{2}"
|
Loading…
Add table
Reference in a new issue