aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan R Abrahams-Whitehead <ajordanr@google.com>2024-05-06 18:23:09 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-05-06 22:49:38 +0000
commit373236904b062edbe1604b4c67461118db8385d8 (patch)
tree31db46ef161a6c79ab3414da07b27a23b5380198
parent98aa05913dbdf3e8006f104c679e12d99722ed99 (diff)
downloadtoolchain-utils-373236904b062edbe1604b4c67461118db8385d8.tar.gz
llvm_tools: Rm get_upstream_patch dep in nrc
This removes the get_upstream_patch dependency in the nightly_revert_checker. get_upstream_patch is obsoleted by get_patch.py Also does some minor linting clean up while we're here. BUG=b:339010069 TEST=repo upload; ./run_python_tests.py Change-Id: I4a725bff7247b8f2f304c3543f7177304bc341de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/5518885 Tested-by: Jordan Abrahams-Whitehead <ajordanr@google.com> Reviewed-by: George Burgess <gbiv@chromium.org> Commit-Queue: Jordan Abrahams-Whitehead <ajordanr@google.com>
-rw-r--r--llvm_tools/nightly_revert_checker.py66
-rw-r--r--llvm_tools/nightly_revert_checker_test.py7
2 files changed, 55 insertions, 18 deletions
diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py
index 50227af0..bf536116 100644
--- a/llvm_tools/nightly_revert_checker.py
+++ b/llvm_tools/nightly_revert_checker.py
@@ -20,9 +20,10 @@ import time
from typing import Any, Callable, Dict, List, NamedTuple, Set, Tuple
from cros_utils import email_sender
+from cros_utils import git_utils
from cros_utils import tiny_render
from llvm_tools import get_llvm_hash
-from llvm_tools import get_upstream_patch
+from llvm_tools import get_patch
from llvm_tools import git_llvm_rev
from llvm_tools import revert_checker
@@ -126,7 +127,7 @@ def _find_interesting_chromeos_shas(
llvm_hash = get_llvm_hash.LLVMHash()
current_llvm = llvm_hash.GetCrOSCurrentLLVMHash(chromeos_path)
- results = [("llvm", current_llvm)]
+ results: List[Tuple[str, str]] = [("llvm", current_llvm)]
next_llvm = llvm_hash.GetCrOSLLVMNextHash()
if current_llvm != next_llvm:
results.append(("llvm-next", next_llvm))
@@ -334,22 +335,14 @@ def do_cherrypick(
continue
seen.add(revert_info.friendly_name)
for sha, reverted_sha in revert_info.new_reverts:
- # We upload reverts for all platforms by default, since there's
- # no real reason for them to be CrOS-specific.
- get_upstream_patch.get_from_upstream(
+ _upload_patches(
+ sha=sha,
+ reverted_sha=reverted_sha,
+ llvm_dir=llvm_dir,
chromeos_path=chromeos_path,
- create_cl=True,
- start_sha=reverted_sha,
- patches=[sha],
reviewers=reviewers,
cc=cc,
- platforms=(),
- # Skip testing for whether the patch applies, since this script
- # is much less capable of handling merge conflicts than SWEs
- # are.
- skip_application_test=True,
)
-
maybe_email_about_stale_heads(
new_state,
repository,
@@ -363,6 +356,50 @@ def do_cherrypick(
return new_state
+def _upload_patches(
+ sha: str,
+ reverted_sha: str,
+ llvm_dir: str,
+ chromeos_path: str,
+ reviewers: List[str],
+ cc: List[str],
+):
+ """Mockable helper to create and upload patches."""
+ patch_context = get_patch.PatchContext(
+ llvm_project_dir=Path(llvm_dir),
+ chromiumos_root=Path(chromeos_path),
+ start_ref=get_patch.LLVMGitRef(reverted_sha),
+ platforms=["chromiumos"],
+ )
+ patch_context.apply_patches(get_patch.LLVMGitRef(sha))
+ git_repo_path = Path(chromeos_path) / get_patch.CHROMIUMOS_OVERLAY_PATH
+ commit_message = [
+ "llvm: nightly revert patches\n",
+ ]
+ git_log_output = subprocess.run(
+ ["git", "log", "-n1", "--format=%s", sha],
+ cwd=llvm_dir,
+ stdout=subprocess.PIPE,
+ encoding="utf-8",
+ check=True,
+ ).stdout
+ commit_message.extend(
+ (
+ f"https://github.com/llvm/llvm-project/commit/{sha}",
+ "",
+ git_log_output,
+ )
+ )
+ git_utils.commit_all_changes(git_repo_path, "\n".join(commit_message))
+ git_utils.upload_to_gerrit(
+ git_repo_path,
+ remote=git_utils.CROS_EXTERNAL_REMOTE,
+ branch=git_utils.CROS_MAIN_BRANCH,
+ reviewers=reviewers,
+ cc=cc,
+ )
+
+
def prettify_sha_for_email(
sha: str,
rev: int,
@@ -566,6 +603,7 @@ def main(argv: List[str]) -> int:
repository = opts.repository
state_file = opts.state_file
reviewers = opts.reviewers if opts.reviewers else []
+ chromeos_path = ""
cc = opts.cc if opts.cc else []
if opts.repository == "chromeos":
diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py
index 47551129..5da1646d 100644
--- a/llvm_tools/nightly_revert_checker_test.py
+++ b/llvm_tools/nightly_revert_checker_test.py
@@ -9,7 +9,6 @@ import unittest
from unittest import mock
from cros_utils import tiny_render
-from llvm_tools import get_upstream_patch
from llvm_tools import nightly_revert_checker
from llvm_tools import revert_checker
@@ -138,8 +137,8 @@ class Test(unittest.TestCase):
self.assertEqual(email, expected_email)
@mock.patch.object(revert_checker, "find_reverts")
- @mock.patch.object(get_upstream_patch, "get_from_upstream")
- def test_do_cherrypick_is_called(self, do_cherrypick, find_reverts):
+ @mock.patch.object(nightly_revert_checker, "_upload_patches")
+ def test_do_cherrypick_is_called(self, upload_patches_mock, find_reverts):
find_reverts.return_value = [
revert_checker.Revert("12345abcdef", "fedcba54321")
]
@@ -153,7 +152,7 @@ class Test(unittest.TestCase):
cc=["purr@chromium.org"],
)
- do_cherrypick.assert_called_once()
+ upload_patches_mock.assert_called_once()
find_reverts.assert_called_once()
def test_sha_prettification_for_email(self):