| Index: build/android/buildbot/bb_host_steps.py
|
| diff --git a/build/android/buildbot/bb_host_steps.py b/build/android/buildbot/bb_host_steps.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..d31c3380f86aed66c70a86e34d5260f03d42b97b
|
| --- /dev/null
|
| +++ b/build/android/buildbot/bb_host_steps.py
|
| @@ -0,0 +1,137 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import json
|
| +import os
|
| +import sys
|
| +
|
| +import bb_utils
|
| +
|
| +sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
|
| +from pylib import buildbot_report
|
| +from pylib import constants
|
| +
|
| +
|
| +SLAVE_SCRIPTS_DIR = os.path.join(bb_utils.BB_BUILD_DIR, 'scripts', 'slave')
|
| +VALID_HOST_TESTS = set(['check_webview_licenses', 'findbugs'])
|
| +EXPERIMENTAL_TARGETS = ['android_experimental']
|
| +
|
| +# Short hand for RunCmd which is used extensively in this file.
|
| +RunCmd = bb_utils.RunCmd
|
| +
|
| +
|
| +def SrcPath(*path):
|
| + return os.path.join(constants.DIR_SOURCE_ROOT, *path)
|
| +
|
| +
|
| +def CheckWebViewLicenses():
|
| + buildbot_report.PrintNamedStep('Check licenses for WebView')
|
| + RunCmd([SrcPath('android_webview', 'tools', 'webview_licenses.py'), 'scan'],
|
| + warning_code=1)
|
| +
|
| +
|
| +def RunHooks():
|
| + buildbot_report.PrintNamedStep('runhooks')
|
| + RunCmd(['gclient', 'runhooks'], halt_on_failure=True)
|
| +
|
| +
|
| +def Compile(build_type, args, experimental=False):
|
| + cmd = [os.path.join(SLAVE_SCRIPTS_DIR, 'compile.py'),
|
| + '--build-tool=ninja',
|
| + '--compiler=goma',
|
| + '--target=%s' % build_type,
|
| + '--goma-dir=%s' % os.path.join(bb_utils.BB_BUILD_DIR, 'goma')]
|
| + if experimental:
|
| + for compile_target in args:
|
| + buildbot_report.PrintNamedStep('Experimental Compile %s' % compile_target)
|
| + RunCmd(cmd + ['--build-args=%s' % compile_target], flunk_on_failure=False)
|
| + else:
|
| + buildbot_report.PrintNamedStep('compile')
|
| + RunCmd(cmd + ['--build-args=%s' % ' '.join(args)], halt_on_failure=True)
|
| +
|
| +
|
| +def ZipBuild(factory_properties, build_properties):
|
| + buildbot_report.PrintNamedStep('Zip build')
|
| + RunCmd([os.path.join(SLAVE_SCRIPTS_DIR, 'zip_build.py'),
|
| + '--src-dir', constants.DIR_SOURCE_ROOT,
|
| + '--build-dir', SrcPath('out'),
|
| + '--exclude-files', 'lib.target,gen,android_webview,jingle_unittests',
|
| + '--factory-properties', json.dumps(factory_properties),
|
| + '--build-properties', json.dumps(build_properties)])
|
| +
|
| +
|
| +def ExtractBuild(factory_properties, build_properties):
|
| + buildbot_report.PrintNamedStep('Download and extract build')
|
| + RunCmd([os.path.join(SLAVE_SCRIPTS_DIR, 'extract_build.py'),
|
| + '--build-dir', SrcPath('build'),
|
| + '--build-output-dir', SrcPath('out'),
|
| + '--factory-properties', json.dumps(factory_properties),
|
| + '--build-properties', json.dumps(build_properties)],
|
| + warning_code=1)
|
| +
|
| +
|
| +def FindBugs(is_release):
|
| + buildbot_report.PrintNamedStep('findbugs')
|
| + build_type = []
|
| + if is_release:
|
| + build_type = ['--release-build']
|
| + RunCmd([SrcPath('build', 'android', 'findbugs_diff.py')] + build_type)
|
| + RunCmd([SrcPath(
|
| + 'tools', 'android', 'findbugs_plugin', 'test',
|
| + 'run_findbugs_plugin_tests.py')] + build_type)
|
| +
|
| +
|
| +def UpdateClang():
|
| + RunCmd([SrcPath('tools', 'clang', 'scripts', 'update.sh')])
|
| +
|
| +
|
| +def main(argv):
|
| + parser = bb_utils.GetParser()
|
| + parser.add_option('--host-tests', help='Comma separated list of host tests.')
|
| + parser.add_option('--build-args', default='All',
|
| + help='Comma separated list of build targets.')
|
| + parser.add_option('--compile', action='store_true',
|
| + help='Indicate whether a compile step should be run.')
|
| + parser.add_option('--experimental', action='store_true',
|
| + help='Indicate whether to compile experimental targets.')
|
| + parser.add_option('--zip-build', action='store_true',
|
| + help='Indicate whether the build should be zipped.')
|
| + parser.add_option('--extract-build', action='store_true',
|
| + help='Indicate whether a build should be downloaded.')
|
| + parser.add_option('--update-clang', action='store_true',
|
| + help='Download or build the ASan runtime library.')
|
| +
|
| + options, args = parser.parse_args(argv[1:])
|
| + if args:
|
| + return sys.exit('Unused args %s' % args)
|
| +
|
| + host_tests = []
|
| + if options.host_tests:
|
| + host_tests = options.host_tests.split(',')
|
| + unknown_tests = set(host_tests) - VALID_HOST_TESTS
|
| + if unknown_tests:
|
| + return sys.exit('Unknown host tests %s' % list(unknown_tests))
|
| +
|
| + build_type = options.factory_properties.get('target', 'Debug')
|
| +
|
| + if options.compile:
|
| + if 'check_webview_licenses' in host_tests:
|
| + CheckWebViewLicenses()
|
| + RunHooks()
|
| + Compile(build_type, options.build_args.split(','))
|
| + if options.experimental:
|
| + Compile(build_type, EXPERIMENTAL_TARGETS, True)
|
| + if 'findbugs' in host_tests:
|
| + FindBugs(build_type == 'Release')
|
| + if options.zip_build:
|
| + ZipBuild(options.factory_properties, options.build_properties)
|
| + if options.update_clang:
|
| + UpdateClang()
|
| + if options.extract_build:
|
| + ExtractBuild(options.factory_properties, options.build_properties)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv))
|
|
|