aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJian Cai <jiancai@google.com>2020-07-27 16:27:32 -0700
committerJian Cai <jiancai@google.com>2020-07-28 23:27:56 +0000
commit0869ed00c33f5ca17553cb84c75f82dfed280c18 (patch)
tree6496f54ba499d12fbbc234745405d4584ec9678e
parentd81dc939e7a1778b1e93f16f022c8634f509c9a8 (diff)
downloadtoolchain-utils-0869ed00c33f5ca17553cb84c75f82dfed280c18.tar.gz
llvm_tools: check for uncommited changes before cherry-picks
Exit when uncommited changes in chromiumos-overlay repo is detected. BUG=chromium:1057428 TEST=local tests. Change-Id: I6dacfb67028036b415672c8fba622b49c4ae8b76 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321560 Tested-by: Jian Cai <jiancai@google.com> Reviewed-by: George Burgess <gbiv@chromium.org> Reviewed-by: Luis Lozano <llozano@chromium.org>
-rwxr-xr-xllvm_tools/cherrypick_cl.py34
1 files changed, 18 insertions, 16 deletions
diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py
index 78330d19..9e306725 100755
--- a/llvm_tools/cherrypick_cl.py
+++ b/llvm_tools/cherrypick_cl.py
@@ -170,32 +170,34 @@ def main():
help='Automatically create a CL if specified')
args = parser.parse_args()
- llvm_config = git_llvm_rev.LLVMConfig(
- remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools())
-
llvm_symlink = chroot.ConvertChrootPathsToAbsolutePaths(
args.chroot_path,
chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm']))[0]
+ llvm_symlink_dir = os.path.dirname(llvm_symlink)
+
+ git_status = subprocess.check_output(['git', 'status', '-s'],
+ cwd=llvm_symlink_dir,
+ encoding='utf-8')
+ if git_status:
+ raise ValueError('Uncommited changes detected in %s' %
+ os.path.dirname(os.path.dirname(llvm_symlink_dir)))
+
start_sha = args.start_sha
if start_sha == 'llvm':
- start_sha = parse_ebuild_for_assignment(
- os.path.dirname(llvm_symlink), 'LLVM_HASH')
+ start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_HASH')
elif start_sha == 'llvm-next':
- start_sha = parse_ebuild_for_assignment(
- os.path.dirname(llvm_symlink), 'LLVM_NEXT_HASH')
+ start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_NEXT_HASH')
logging.info('Base llvm hash == %s', start_sha)
+ llvm_config = git_llvm_rev.LLVMConfig(
+ remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools())
+
start_sha = resolve_llvm_ref(llvm_config.dir, start_sha)
start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha)
if args.create_cl:
branch = 'cherry-pick'
- symlink = os.path.dirname(
- chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm'])[0])
- symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path,
- [symlink])[0]
- symlink_dir = os.path.dirname(symlink)
- git.CreateBranch(symlink_dir, branch)
+ git.CreateBranch(llvm_symlink_dir, branch)
symlinks_to_uprev = []
commit_messages = [
'llvm: cherry-pick CLs from upstream\n',
@@ -221,9 +223,9 @@ def main():
relative_patches_dir = 'cherry' if package == 'llvm' else ''
patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir)
logging.info('Cherrypicking %s (%s) into %s', rev, sha, package)
+
add_cherrypick(patches_json_path, patches_dir, relative_patches_dir,
start_rev, llvm_config.dir, rev, sha, package)
-
if args.create_cl:
symlinks_to_uprev.extend(symlinks)
commit_messages.extend([
@@ -240,8 +242,8 @@ def main():
for symlink in symlinks_to_uprev:
update_chromeos_llvm_hash.UprevEbuildSymlink(symlink)
subprocess.check_output(['git', 'add', '--all'], cwd=symlink_dir)
- git.UploadChanges(symlink_dir, branch, commit_messages)
- git.DeleteBranch(symlink_dir, branch)
+ git.UploadChanges(llvm_symlink_dir, branch, commit_messages)
+ git.DeleteBranch(llvm_symlink_dir, branch)
if __name__ == '__main__':