diff options
author | Jordan R Abrahams-Whitehead <ajordanr@google.com> | 2024-05-06 18:23:09 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2024-05-06 22:49:38 +0000 |
commit | 373236904b062edbe1604b4c67461118db8385d8 (patch) | |
tree | 31db46ef161a6c79ab3414da07b27a23b5380198 | |
parent | 98aa05913dbdf3e8006f104c679e12d99722ed99 (diff) | |
download | toolchain-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.py | 66 | ||||
-rw-r--r-- | llvm_tools/nightly_revert_checker_test.py | 7 |
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): |