diff options
author | George Burgess IV <gbiv@google.com> | 2024-04-15 10:56:37 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2024-04-16 16:56:07 +0000 |
commit | 5a25614b9561d7d6029a97118a852697450e2218 (patch) | |
tree | d980cee5cecdde759b25010aa52d8a002f0a9f84 | |
parent | 18a3ccb67c9aaaec5878d1be0b1e75cb29a8974c (diff) | |
download | toolchain-utils-5a25614b9561d7d6029a97118a852697450e2218.tar.gz |
llvm_tools: migrate nightly_revert_checker to get_llvm_hash
Yay for replacing old custom logic
BUG=b:333462347
TEST=Unittests
Change-Id: I5459942eaaa08f0b0d694dff707bf34ee8ffe8b4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/5454856
Commit-Queue: George Burgess <gbiv@chromium.org>
Tested-by: George Burgess <gbiv@chromium.org>
Reviewed-by: Bob Haarman <inglorion@chromium.org>
-rwxr-xr-x | llvm_tools/nightly_revert_checker.py | 59 | ||||
-rwxr-xr-x | llvm_tools/nightly_revert_checker_test.py | 38 |
2 files changed, 10 insertions, 87 deletions
diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 88aac9b7..6090e614 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -11,10 +11,10 @@ fires off an email. All LLVM SHAs to monitor are autodetected. import argparse import dataclasses -import io import json import logging import os +from pathlib import Path import pprint import subprocess import sys @@ -131,57 +131,18 @@ def _find_interesting_android_shas( return result -def _parse_llvm_ebuild_for_shas( - ebuild_file: io.TextIOWrapper, -) -> List[Tuple[str, str]]: - def parse_ebuild_assignment(line: str) -> str: - no_comments = line.split("#")[0] - no_assign = no_comments.split("=", 1)[1].strip() - assert no_assign.startswith('"') and no_assign.endswith('"'), no_assign - return no_assign[1:-1] - - llvm_hash, llvm_next_hash = None, None - for line in ebuild_file: - if line.startswith("LLVM_HASH="): - llvm_hash = parse_ebuild_assignment(line) - if llvm_next_hash: - break - if line.startswith("LLVM_NEXT_HASH"): - llvm_next_hash = parse_ebuild_assignment(line) - if llvm_hash: - break - if not llvm_next_hash or not llvm_hash: - raise ValueError( - "Failed to detect SHAs for llvm/llvm_next. Got: " - "llvm=%s; llvm_next=%s" % (llvm_hash, llvm_next_hash) - ) - - results: List[Tuple[str, str]] = [("llvm", llvm_hash)] - if llvm_next_hash != llvm_hash: - results.append(("llvm-next", llvm_next_hash)) - return results - - def _find_interesting_chromeos_shas( chromeos_base: str, ) -> List[Tuple[str, str]]: - llvm_dir = os.path.join( - chromeos_base, "src/third_party/chromiumos-overlay/sys-devel/llvm" - ) - candidate_ebuilds = [ - os.path.join(llvm_dir, x) - for x in os.listdir(llvm_dir) - if "_pre" in x and not os.path.islink(os.path.join(llvm_dir, x)) - ] - - if len(candidate_ebuilds) != 1: - raise ValueError( - "Expected exactly one llvm ebuild candidate; got %s" - % pprint.pformat(candidate_ebuilds) - ) - - with open(candidate_ebuilds[0], encoding="utf-8") as f: - return _parse_llvm_ebuild_for_shas(f) + chromeos_path = Path(chromeos_base) + llvm_hash = get_llvm_hash.LLVMHash() + + current_llvm = llvm_hash.GetCrOSCurrentLLVMHash(chromeos_path) + results = [("llvm", current_llvm)] + next_llvm = llvm_hash.GetCrOSLLVMNextHash() + if current_llvm != next_llvm: + results.append(("llvm-next", next_llvm)) + return results _Email = NamedTuple( diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py index 722ad125..dbcd01dd 100755 --- a/llvm_tools/nightly_revert_checker_test.py +++ b/llvm_tools/nightly_revert_checker_test.py @@ -5,7 +5,6 @@ """Tests for nightly_revert_checker.""" -import io import unittest from unittest import mock @@ -138,43 +137,6 @@ class Test(unittest.TestCase): self.assertEqual(email, expected_email) - def test_llvm_ebuild_parsing_appears_to_function(self): - llvm_ebuild = io.StringIO( - "\n".join( - ( - "foo", - '#LLVM_HASH="123"', - 'LLVM_HASH="123" # comment', - 'LLVM_NEXT_HASH="456"', - ) - ) - ) - - shas = nightly_revert_checker._parse_llvm_ebuild_for_shas(llvm_ebuild) - self.assertEqual( - shas, - [ - ("llvm", "123"), - ("llvm-next", "456"), - ], - ) - - def test_llvm_ebuild_parsing_fails_if_both_hashes_arent_present(self): - bad_bodies = [ - "", - 'LLVM_HASH="123" # comment', - 'LLVM_NEXT_HASH="123" # comment', - 'LLVM_NEXT_HASH="123" # comment\n#LLVM_HASH="123"', - ] - - for bad in bad_bodies: - with self.assertRaises(ValueError) as e: - nightly_revert_checker._parse_llvm_ebuild_for_shas( - io.StringIO(bad) - ) - - self.assertIn("Failed to detect SHAs", str(e.exception)) - @mock.patch("revert_checker.find_reverts") @mock.patch("get_upstream_patch.get_from_upstream") def test_do_cherrypick_is_called(self, do_cherrypick, find_reverts): |