about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2020-09-23 19:03:52 -0400
committerMark Rousskov <mark.simulacrum@gmail.com>2020-09-23 19:03:52 -0400
commitdf004df3a79b70b4af2b8c267457a5be76bb0d85 (patch)
tree5c39e1d5ac6cdc94d93d80a009a68bb534f7b9cc /src/bootstrap
parent8b4085359ae798dedb05c95ad42520557bd25320 (diff)
downloadrust-df004df3a79b70b4af2b8c267457a5be76bb0d85.tar.gz
rust-df004df3a79b70b4af2b8c267457a5be76bb0d85.zip
Re-download LLVM on submodule updates only
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/bootstrap.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py
index 1f0b55a7869..5c9184f4506 100644
--- a/src/bootstrap/bootstrap.py
+++ b/src/bootstrap/bootstrap.py
@@ -424,8 +424,19 @@ class RustBuild(object):
                     rustfmt_stamp.write(self.date + self.rustfmt_channel)
 
         if self.downloading_llvm():
-            llvm_sha = subprocess.check_output(["git", "log", "--author=bors",
-                "--format=%H", "-n1"]).decode(sys.getdefaultencoding()).strip()
+            # We want the most recent LLVM submodule update to avoid downloading
+            # LLVM more often than necessary.
+            #
+            # This git command finds that commit SHA, looking for bors-authored
+            # merges that modified src/llvm-project.
+            #
+            # This works even in a repository that has not yet initialized
+            # submodules.
+            llvm_sha = subprocess.check_output([
+                "git", "log", "--author=bors", "--format=%H", "-n1",
+                "-m", "--first-parent",
+                "--", "src/llvm-project"
+            ]).decode(sys.getdefaultencoding()).strip()
             llvm_assertions = self.get_toml('assertions', 'llvm') == 'true'
             if self.program_out_of_date(self.llvm_stamp(), llvm_sha + str(llvm_assertions)):
                 self._download_ci_llvm(llvm_sha, llvm_assertions)