llvm_tools: move common functions into standalone modules

Move common functions into separate modules and update dependencies
accordingly.

BUG=chromium:1057428

TEST=local tests.

Change-Id: I40f1b613f0a41f1fc478c811379c851479aff7c3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2151708
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: George Burgess <gbiv@chromium.org>
Tested-by: Jian Cai <jiancai@google.com>
diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py
index 4ff921d..2772ca4 100755
--- a/llvm_tools/llvm_bisection.py
+++ b/llvm_tools/llvm_bisection.py
@@ -11,17 +11,14 @@
 import argparse
 import enum
 import errno
-import get_llvm_hash
 import json
 import os
 import sys
 
-from assert_not_in_chroot import VerifyOutsideChroot
-from get_llvm_hash import CreateTempLLVMRepo
-from get_llvm_hash import LLVMHash
-from modify_a_tryjob import AddTryjob
-from update_tryjob_status import FindTryjobIndex
-from update_tryjob_status import TryjobStatus
+import chroot
+import get_llvm_hash
+import modify_a_tryjob
+import update_tryjob_status
 
 
 class BisectionExitStatus(enum.Enum):
@@ -182,18 +179,20 @@
                        'go to %s and update it' % cur_tryjob_dict['link'])
 
   all_bad_revisions = [end]
-  all_bad_revisions.extend(cur_tryjob['rev']
-                           for cur_tryjob in tryjobs
-                           if cur_tryjob['status'] == TryjobStatus.BAD.value)
+  all_bad_revisions.extend(
+      cur_tryjob['rev']
+      for cur_tryjob in tryjobs
+      if cur_tryjob['status'] == update_tryjob_status.TryjobStatus.BAD.value)
 
   # The minimum value for the 'bad' field in the tryjobs is the new end
   # version.
   bad_rev = min(all_bad_revisions)
 
   all_good_revisions = [start]
-  all_good_revisions.extend(cur_tryjob['rev']
-                            for cur_tryjob in tryjobs
-                            if cur_tryjob['status'] == TryjobStatus.GOOD.value)
+  all_good_revisions.extend(
+      cur_tryjob['rev']
+      for cur_tryjob in tryjobs
+      if cur_tryjob['status'] == update_tryjob_status.TryjobStatus.GOOD.value)
 
   # The maximum value for the 'good' field in the tryjobs is the new start
   # version.
@@ -212,7 +211,7 @@
   pending_revisions = {
       tryjob['rev']
       for tryjob in tryjobs
-      if tryjob['status'] == TryjobStatus.PENDING.value and
+      if tryjob['status'] == update_tryjob_status.TryjobStatus.PENDING.value and
       good_rev < tryjob['rev'] < bad_rev
   }
 
@@ -224,7 +223,7 @@
   skip_revisions = {
       tryjob['rev']
       for tryjob in tryjobs
-      if tryjob['status'] == TryjobStatus.SKIP.value and
+      if tryjob['status'] == update_tryjob_status.TryjobStatus.SKIP.value and
       good_rev < tryjob['rev'] < bad_rev
   }
 
@@ -254,8 +253,6 @@
     A list of revisions between 'start' and 'end'.
   """
 
-  new_llvm = LLVMHash()
-
   valid_revisions = []
 
   # Start at ('start' + 1) because 'start' is the good revision.
@@ -292,10 +289,10 @@
                                 pending_revisions, skip_revisions):
   """Determines the revisions between start and end."""
 
-  new_llvm = LLVMHash()
+  new_llvm = get_llvm_hash.LLVMHash()
 
   with new_llvm.CreateTempDirectory() as temp_dir:
-    with CreateTempLLVMRepo(temp_dir) as new_repo:
+    with get_llvm_hash.CreateTempLLVMRepo(temp_dir) as new_repo:
       if not src_path:
         src_path = new_repo
 
@@ -303,7 +300,9 @@
       revisions = GetRevisionsBetweenBisection(
           start, end, parallel, src_path, pending_revisions, skip_revisions)
 
-      git_hashes = [get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions]
+      git_hashes = [
+          get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions
+      ]
 
   return revisions, git_hashes
 
@@ -329,7 +328,7 @@
   """Checks if a revision in 'revisions' exists in 'jobs' list."""
 
   for rev in revisions:
-    if FindTryjobIndex(rev, jobs) is not None:
+    if update_tryjob_status.FindTryjobIndex(rev, jobs) is not None:
       raise ValueError('Revision %d exists already in "jobs"' % rev)
 
 
@@ -340,10 +339,10 @@
 
   try:
     for svn_revision, git_hash in zip(revisions, git_hashes):
-      tryjob_dict = AddTryjob(update_packages, git_hash, svn_revision,
-                              chroot_path, patch_metadata_file,
-                              extra_change_lists, options, builder, verbose,
-                              svn_revision)
+      tryjob_dict = modify_a_tryjob.AddTryjob(
+          update_packages, git_hash, svn_revision, chroot_path,
+          patch_metadata_file, extra_change_lists, options, builder, verbose,
+          svn_revision)
 
       bisect_contents['jobs'].append(tryjob_dict)
   finally:
@@ -364,7 +363,7 @@
   if src_path:
     bad_llvm_hash = get_llvm_hash.GetGitHashFrom(src_path, end)
   else:
-    bad_llvm_hash = LLVMHash().GetLLVMHash(end)
+    bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end)
 
   print(
       'The bad revision is %d and its commit hash is %s' % (end, bad_llvm_hash))
@@ -390,7 +389,7 @@
     AssertionError: The script was run inside the chroot.
   """
 
-  VerifyOutsideChroot()
+  chroot.VerifyOutsideChroot()
 
   update_packages = [
       'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx',
@@ -458,5 +457,4 @@
 
 
 if __name__ == '__main__':
-  args_output = GetCommandLineArgs()
-  sys.exit(main(args_output))
+  sys.exit(main(GetCommandLineArgs()))