llvm_tools: pass cl number as str to avoid type error

llvm_bisection.py invokes the Gerrit CLI to abandon CLs created as part of the bisection. It passes a CL number to the command. Before this change, the CL number was passed as an int, which leads to the following error:

  Traceback (most recent call last):
    File "./auto_llvm_bisection.py", line 103, in main
      bisection_ret = llvm_bisection.main(args_output)
    File "/usr/local/google/home/inglorion/chromiumos/src/third_party/toolchain-utils/llvm_tools/llvm_bisection.py", line 364, in main
      subprocess.check_output([gerrit, 'abandon', build['cl']],
    File "/usr/lib/python3.8/subprocess.py", line 411, in check_output
      return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
    File "/usr/lib/python3.8/subprocess.py", line 489, in run
      with Popen(*popenargs, **kwargs) as process:
    File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
      self._execute_child(args, executable, preexec_fn, close_fds,
    File "/usr/lib/python3.8/subprocess.py", line 1637, in _execute_child
      self.pid = _posixsubprocess.fork_exec(
  TypeError: expected str, bytes or os.PathLike object, not int

With this change, we convert the value to an str first, avoiding the type error.

BUG=chromium:1151325
TEST=run auto_llvm_bisection.py

Change-Id: I2b151c76757067f536712f69b14d6be549ee7c75
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2551789
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Jian Cai <jiancai@google.com>
Tested-by: Bob Haarman <inglorion@chromium.org>
diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py
index c8d694c..b1898ea 100755
--- a/llvm_tools/llvm_bisection.py
+++ b/llvm_tools/llvm_bisection.py
@@ -357,13 +357,14 @@
       print(skip_revisions_message)
 
     if args_output.cleanup:
-      # Abondon all the CLs created for bisection
+      # Abandon all the CLs created for bisection
       gerrit = os.path.join(args_output.chroot_path, 'chromite/bin/gerrit')
       for build in bisect_state['jobs']:
         try:
-          subprocess.check_output([gerrit, 'abandon', build['cl']],
-                                  stderr=subprocess.STDOUT,
-                                  encoding='utf-8')
+          subprocess.check_output(
+              [gerrit, 'abandon', str(build['cl'])],
+              stderr=subprocess.STDOUT,
+              encoding='utf-8')
         except subprocess.CalledProcessError as err:
           # the CL may have been abandoned
           if 'chromite.lib.gob_util.GOBError' not in err.output:
diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py
index a40770a..cc22dfa 100755
--- a/llvm_tools/llvm_bisection_unittest.py
+++ b/llvm_tools/llvm_bisection_unittest.py
@@ -301,7 +301,7 @@
             [
                 os.path.join(args_output.chroot_path, 'chromite/bin/gerrit'),
                 'abandon',
-                cl,
+                str(cl),
             ],
             stderr=subprocess.STDOUT,
             encoding='utf-8',