| #!/usr/bin/python2 |
| # |
| # 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) |