aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Burgess IV <gbiv@google.com>2024-04-15 10:56:37 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-04-16 16:56:07 +0000
commit5a25614b9561d7d6029a97118a852697450e2218 (patch)
treed980cee5cecdde759b25010aa52d8a002f0a9f84
parent18a3ccb67c9aaaec5878d1be0b1e75cb29a8974c (diff)
downloadtoolchain-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-xllvm_tools/nightly_revert_checker.py59
-rwxr-xr-xllvm_tools/nightly_revert_checker_test.py38
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):