From a705a58fe953ce95fe482e081a7d843e0b2d9c06 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Wed, 3 Mar 2021 22:11:07 -0500 Subject: [PATCH] Fix commit detected when using `download-rustc` On reflection on the issue in https://github.com/rust-lang/rust/pull/79540#discussion_r572572280, I think the bug was actually using the `compiler/` filter, not using `--author=bors`. https://github.com/rust-lang/rust/commit/9a1d6174c925f54c923599e29b09d6855e6b3a78 has no CI artifacts because it was merged as part of a rollup: ``` $ curl -I https://ci-artifacts.rust-lang.org/rustc-builds/96e843ce6ae42e0aa519ba45e148269de347fd84/rust-std-nightly-x86_64-unknown-linux-gnu.tar.xz HTTP/2 404 ``` So 9a1d6174c925f54c923599e29b09d6855e6b3a78 is the correct commit to download, and that's what `--author=bors` does: $ git log --author=bors 4aec8a5da5547d6e1c24e99dad0003b7cac107f5 commit 9a1d6174c925f54c923599e29b09d6855e6b3a78 Ideally it would look for "the most recent bors commit not followed by a change to `compiler/`", which would exclude things like documentation changes and avoid redownloading more than necessary, but - Redownloading isn't the end of the world, - That metric is hard to implement, and - Documentation-only or library-only changes are very rare anyway since they're usually rolled up with changes to the compiler. --- src/bootstrap/bootstrap.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 62bf4ffd380a0..3e7d1d54f1284 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -647,9 +647,8 @@ def maybe_download_rustc(self): compiler = "{}/compiler/".format(top_level) # Look for a version to compare to based on the current commit. - # Ideally this would just use `merge-base`, but on beta and stable branches that wouldn't - # come up with any commits, so hack it and use `author=bors` instead. - merge_base = ["git", "log", "--author=bors", "--pretty=%H", "-n1", "--", compiler] + # Only commits merged by bors will have CI artifacts. + merge_base = ["git", "log", "--author=bors", "--pretty=%H", "-n1"] commit = subprocess.check_output(merge_base, universal_newlines=True).strip() # Warn if there were changes to the compiler since the ancestor commit.