llvm_tools: add Android support to the revert checker
BUG=None
TEST=Ran; received an email
Change-Id: I3db8d2e4a81fbb4e16ab1b212113c675bd0811b7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2173675
Reviewed-by: Pirama Arumuga Nainar <pirama@google.com>
Reviewed-by: Tiancong Wang <tcwang@google.com>
Tested-by: George Burgess <gbiv@chromium.org>
diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py
index 0311ccc..5b3e04d 100755
--- a/llvm_tools/nightly_revert_checker.py
+++ b/llvm_tools/nightly_revert_checker.py
@@ -20,6 +20,7 @@
import logging
import os
import pprint
+import subprocess
import sys
import typing as t
@@ -30,9 +31,27 @@
State = t.Any
-# FIXME(gbiv): we probably want to have Android compat here, too. Should be
-# easy to nab their testing version automatically with:
-# git merge-base m/llvm-toolchain aosp/upstream-master
+
+def _find_interesting_android_shas(
+ android_llvm_toolchain_dir: str) -> t.List[t.Tuple[str]]:
+ llvm_project = os.path.join(android_llvm_toolchain_dir,
+ 'toolchain/llvm-project')
+
+ def get_llvm_merge_base(branch: str) -> str:
+ return subprocess.check_output(
+ ['git', 'merge-base', branch, 'aosp/upstream-master'],
+ cwd=llvm_project,
+ encoding='utf-8',
+ ).strip()
+
+ master_legacy = get_llvm_merge_base('aosp/master-legacy')
+ testing_upstream = get_llvm_merge_base('aosp/testing-upstream')
+ result = [('master-legacy', master_legacy)]
+
+ # If these are the same SHA, there's no point in tracking both.
+ if master_legacy != testing_upstream:
+ result.append(('testing-upstream', testing_upstream))
+ return result
def _parse_llvm_ebuild_for_shas(
@@ -191,6 +210,12 @@
chromeos_subparser.add_argument(
'--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.')
+ android_subparser = subparsers.add_parser('android')
+ android_subparser.add_argument(
+ '--android_llvm_toolchain_dir',
+ required=True,
+ help='Up-to-date android-llvm-toolchain directory to use.')
+
opts = parser.parse_args(argv)
logging.basicConfig(
@@ -206,6 +231,11 @@
if repository == 'chromeos':
interesting_shas = _find_interesting_chromeos_shas(opts.chromeos_dir)
recipients = _EmailRecipients(well_known=['mage'], direct=[])
+ elif repository == 'android':
+ interesting_shas = _find_interesting_android_shas(
+ opts.android_llvm_toolchain_dir)
+ recipients = _EmailRecipients(
+ well_known=[], direct=['android-llvm-dev@google.com'])
else:
raise ValueError('Unknown repository %s' % opts.repository)