cache: Handle trailing garbage when untarring via pbzip2.

pbzip2 doesn't appear to successfully decompress some tbz2 files used
in simple chrome without this arg:
https://ci.chromium.org/p/chrome/builders/ci/chromeos-betty-pi-arc-chrome/8769
https://ci.chromium.org/p/chrome/builders/ci/chromeos-kevin-chrome/9633

So pass in 'ignore-trailing-garbage=1' to pbzip2.

BUG=chromium:1034063
TEST=unittest
TEST=installed pbzip2 and simplechrome'ed locally

Change-Id: Ibffd6aeaf8936a28eb1d373ab6cc32e08243a0b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2392079
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
Tested-by: Ben Pastene <bpastene@chromium.org>
diff --git a/lib/cache.py b/lib/cache.py
index 780c240..b17ade1 100644
--- a/lib/cache.py
+++ b/lib/cache.py
@@ -325,7 +325,10 @@
   comp = cros_build_lib.CompressionExtToType(path)
   cmd = ['tar']
   if comp != cros_build_lib.COMP_NONE:
-    cmd += ['-I', cros_build_lib.FindCompressor(comp)]
+    extra_comp_args = [cros_build_lib.FindCompressor(comp)]
+    if os.path.basename(extra_comp_args[0]) == 'pbzip2':
+      extra_comp_args.append('--ignore-trailing-garbage=1')
+    cmd += ['-I', ' '.join(extra_comp_args)]
   functor(cmd + ['-xpf', path], cwd=cwd, debug_level=logging.DEBUG, quiet=True)
 
 
diff --git a/lib/cache_unittest.py b/lib/cache_unittest.py
index 63cb40d..2b95e0e 100644
--- a/lib/cache_unittest.py
+++ b/lib/cache_unittest.py
@@ -326,3 +326,14 @@
     cache.Untar('/some/tarball.tar.xz', '/')
     self.assertCommandContains(
         ['tar', '-I', '/bin/custom/xz', '-xpf', '/some/tarball.tar.xz'])
+
+  @mock.patch('chromite.lib.cros_build_lib.CompressionExtToType')
+  @mock.patch('chromite.lib.cros_build_lib.FindCompressor')
+  def testPbzip2Compression(self, mock_find_compressor, mock_compression_type):
+    """Tests decompressing a tarball using pbzip2."""
+    mock_compression_type.return_value = 'some-compression'
+    mock_find_compressor.return_value = '/bin/custom/pbzip2'
+    cache.Untar('/some/tarball.tbz2', '/')
+    self.assertCommandContains(
+        ['tar', '-I', '/bin/custom/pbzip2 --ignore-trailing-garbage=1',
+         '-xpf', '/some/tarball.tbz2'])