Skip to content

Commit

Permalink
Auto merge of #87532 - tlyu:bootstrap-rev-list, r=jyn514
Browse files Browse the repository at this point in the history
bootstrap.py: use `git rev-list` for robustness

Use `git rev-list` instead of `git log` to be more robust against
UI changes in git. Also, use the full email address for bors,
because `--author` uses a substring match.

Based on #87513, but is separate because it's less minimal and may require additional manual testing.

~Open questions:~
* ~Should the `merge_base` search also use `--first-parent`?~
* ~Do we exclude non-merge commits from bors? There are a few, and I'm not sure what they have in common. Some of them look like squashes, and some look like they're in rollup branches.~

r? `@jyn514`
`@rustbot` label +A-rustbuild +C-cleanup
  • Loading branch information
bors committed Aug 5, 2021
2 parents d4ad1cf + e0d7a59 commit 2ddb65c
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/bootstrap/bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,16 +464,17 @@ def download_toolchain(self, stage0=True, rustc_channel=None):
# LLVM more often than necessary.
#
# This git command finds that commit SHA, looking for bors-authored
# merges that modified src/llvm-project.
# merges that modified src/llvm-project or other relevant version
# stamp files.
#
# This works even in a repository that has not yet initialized
# submodules.
top_level = subprocess.check_output([
"git", "rev-parse", "--show-toplevel",
]).decode(sys.getdefaultencoding()).strip()
llvm_sha = subprocess.check_output([
"git", "log", "--author=bors", "--format=%H", "-n1",
"--no-patch", "--first-parent",
"git", "rev-list", "--author=bors@rust-lang.org", "-n1",
"--merges", "--first-parent", "HEAD",
"--",
"{}/src/llvm-project".format(top_level),
"{}/src/bootstrap/download-ci-llvm-stamp".format(top_level),
Expand Down Expand Up @@ -665,7 +666,10 @@ def maybe_download_ci_toolchain(self):

# Look for a version to compare to based on the current commit.
# Only commits merged by bors will have CI artifacts.
merge_base = ["git", "log", "--author=bors", "--pretty=%H", "-n1"]
merge_base = [
"git", "rev-list", "--author=bors@rust-lang.org", "-n1",
"--merges", "--first-parent", "HEAD"
]
commit = subprocess.check_output(merge_base, universal_newlines=True).strip()

# Warn if there were changes to the compiler or standard library since the ancestor commit.
Expand Down

0 comments on commit 2ddb65c

Please sign in to comment.