You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.5 KiB
87 lines
2.5 KiB
#!/usr/bin/python |
|
# |
|
# Copyright 2011 Google Inc. All Rights Reserved. |
|
"""Client for Android nightly jobs. |
|
|
|
Does the following jobs: |
|
1. Checkout android toolchain sources |
|
2. Build Android toolchain |
|
3. Build Android tree |
|
4. Checkout/build/run Android benchmarks (TODO) |
|
5. Generate size/performance dashboard ? (TODO) |
|
""" |
|
|
|
__author__ = 'jingyu@google.com (Jing Yu)' |
|
|
|
import optparse |
|
import pickle |
|
import sys |
|
import xmlrpclib |
|
|
|
from automation.clients.helper import android |
|
from automation.common import job_group |
|
from automation.common import logger |
|
|
|
|
|
class AndroidToolchainNightlyClient(object): |
|
VALID_GCC_VERSIONS = ['4.4.3', '4.6', 'google_main', 'fsf_trunk'] |
|
|
|
def __init__(self, gcc_version, is_release): |
|
assert gcc_version in self.VALID_GCC_VERSIONS |
|
self.gcc_version = gcc_version |
|
if is_release: |
|
self.build_type = 'RELEASE' |
|
else: |
|
self.build_type = 'DEVELOPMENT' |
|
|
|
def Run(self): |
|
server = xmlrpclib.Server('http://localhost:8000') |
|
server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) |
|
|
|
def CreateJobGroup(self): |
|
factory = android.JobsFactory(self.gcc_version, self.build_type) |
|
|
|
p4_androidtc_job, checkout_dir_dep = factory.CheckoutAndroidToolchain() |
|
|
|
tc_build_job, tc_prefix_dep = factory.BuildAndroidToolchain( |
|
checkout_dir_dep) |
|
|
|
tree_build_job = factory.BuildAndroidImage(tc_prefix_dep) |
|
|
|
benchmark_job = factory.Benchmark(tc_prefix_dep) |
|
|
|
all_jobs = [p4_androidtc_job, tc_build_job, tree_build_job, benchmark_job] |
|
|
|
return job_group.JobGroup('androidtoolchain_nightly', all_jobs, True, False) |
|
|
|
|
|
@logger.HandleUncaughtExceptions |
|
def Main(argv): |
|
valid_gcc_versions_string = ', '.join( |
|
AndroidToolchainNightlyClient.VALID_GCC_VERSIONS) |
|
|
|
parser = optparse.OptionParser() |
|
parser.add_option('--with-gcc-version', |
|
dest='gcc_version', |
|
default='4.6', |
|
action='store', |
|
choices=AndroidToolchainNightlyClient.VALID_GCC_VERSIONS, |
|
help='gcc version: %s.' % valid_gcc_versions_string) |
|
parser.add_option('-r', |
|
'--release', |
|
dest='is_release', |
|
default=False, |
|
action='store_true', |
|
help='Build a release toolchain?') |
|
options, _ = parser.parse_args(argv) |
|
|
|
option_list = [opt.dest for opt in parser.option_list if opt.dest] |
|
|
|
kwargs = dict((option, getattr(options, option)) for option in option_list) |
|
|
|
client = AndroidToolchainNightlyClient(**kwargs) |
|
client.Run() |
|
|
|
|
|
if __name__ == '__main__': |
|
Main(sys.argv)
|
|
|