diff options
author | George Burgess IV <gbiv@google.com> | 2020-04-29 15:48:37 -0700 |
---|---|---|
committer | George Burgess <gbiv@chromium.org> | 2020-05-01 18:32:01 +0000 |
commit | 0794a6d5f401b7aecf864daffc8f0b4dd562ea1d (patch) | |
tree | 90992201cab702a5f4e8c5708d1365c7ff7b9102 | |
parent | 959acd577eefa5769103bb6f909d7375bbf6656d (diff) | |
download | toolchain-utils-0794a6d5f401b7aecf864daffc8f0b4dd562ea1d.tar.gz |
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>
-rwxr-xr-x | llvm_tools/nightly_revert_checker.py | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 0311ccc4..5b3e04dc 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -20,6 +20,7 @@ import json import logging import os import pprint +import subprocess import sys import typing as t @@ -30,9 +31,27 @@ import revert_checker 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 @@ def main(argv: t.List[str]) -> None: 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 @@ def main(argv: t.List[str]) -> None: 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) |