Skip to content

Commit

Permalink
Rollup merge of rust-lang#109981 - duckymirror:issue-107094, r=albert…
Browse files Browse the repository at this point in the history
…larsan68

Set commit information environment variables when building tools

This fixes rust-lang#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).
  • Loading branch information
matthiaskrgr authored Apr 17, 2023
2 parents 7f92747 + 0a763c9 commit 578a8d8
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/bootstrap/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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}"));
}
Expand Down
6 changes: 6 additions & 0 deletions src/bootstrap/tool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
3 changes: 3 additions & 0 deletions src/tools/compiletest/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,

Expand Down
5 changes: 5 additions & 0 deletions src/tools/compiletest/src/header/needs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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([':', ' ']) {
Expand Down
10 changes: 10 additions & 0 deletions src/tools/compiletest/src/header/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 2 additions & 0 deletions src/tools/compiletest/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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(),
Expand Down
7 changes: 7 additions & 0 deletions tests/run-make/issue-107094/Makefile
Original file line number Diff line number Diff line change
@@ -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}"

0 comments on commit 578a8d8

Please sign in to comment.