87 lines
2.5 KiB
Python
Executable file
87 lines
2.5 KiB
Python
Executable file
#!/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)
|