If in buildbot mode, ensure we have required binaries.
Currently that's just pbzip2, but for generating sdk's, we need it.
For builder speed reasons, any cros_sdk rebuild/setup needs it too.
Allowing pbzip2 to be missing leads to weirdness like sdk's sometimes
being single-threaded in decompression, sometimes parallelized.
BUG=chromium-os:26014
TEST=cbuildbot --buildbot options w/, and w/out pbzip2 installed.
Change-Id: I77edc03716d355479a10cc4aa956e236d02922d4
Reviewed-on: https://gerrit.chromium.org/gerrit/17772
Tested-by: Brian Harring <ferringb@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Brian Harring <ferringb@chromium.org>
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 66190aa..7136441 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -45,6 +45,7 @@
_DISTRIBUTED_TYPES = [constants.COMMIT_QUEUE_TYPE, constants.PFQ_TYPE,
constants.CANARY_TYPE, constants.CHROME_PFQ_TYPE,
constants.PALADIN_TYPE]
+_BUILDBOT_REQUIRED_BINARIES = ('pbzip2',)
def _PrintValidConfigs(trybot_only=True):
@@ -924,6 +925,21 @@
parser.error('Option --buildbot was given, but this system does not '
'support cgroups. Failing.')
+ missing = []
+ for program in _BUILDBOT_REQUIRED_BINARIES:
+ ret = cros_lib.RunCommand('which %s' % program, shell=True,
+ redirect_stderr=True, redirect_stdout=True,
+ error_code_ok=True, print_cmd=False)
+ if ret.returncode != 0:
+ missing.append(program)
+
+ if missing:
+ parser.error("Option --buildbot requires the following binaries which "
+ "couldn't be found in $PATH: %s"
+ % (', '.join(missing)))
+
+
+
if options.reference_repo:
options.reference_repo = os.path.abspath(options.reference_repo)