blob: 79b8bcec73fcf51383df7f6670640fe922322964 [file] [log] [blame]
Kuang-che Wu708310b2018-03-28 17:24:34 +08001#!/usr/bin/env python2
2# Copyright 2018 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5"""Switcher for ChromeOS ARC container prebuilt.
6
7Typical usage:
8 $ bisect_android_build_id.py config switch ./switch_arc_prebuilt.py
9
Kuang-che Wuacb6efd2018-04-25 18:52:58 +080010It is implemented by calling Android's push_to_device.py.
Kuang-che Wu708310b2018-03-28 17:24:34 +080011"""
12
13from __future__ import print_function
14import argparse
15import logging
16
17from bisect_kit import android_util
18from bisect_kit import arc_util
19from bisect_kit import cli
20from bisect_kit import common
21from bisect_kit import configure
22from bisect_kit import core
23from bisect_kit import cros_util
24
25logger = logging.getLogger(__name__)
26
27
28def create_argument_parser():
29 parser = argparse.ArgumentParser(description=__doc__)
30 common.add_common_arguments(parser)
31 parser.add_argument(
32 'dut',
33 nargs='?',
34 type=cli.argtype_notempty,
35 metavar='DUT',
36 default=configure.get('DUT', ''))
37 parser.add_argument(
38 'build_id',
39 nargs='?',
40 type=android_util.argtype_android_build_id,
41 metavar='ANDROID_BUILD_ID',
42 default=configure.get('ANDROID_BUILD_ID', ''))
43 parser.add_argument(
44 '--flavor',
45 metavar='ANDROID_FLAVOR',
46 default=configure.get('ANDROID_FLAVOR'),
47 help='example: cheets_x86-user')
48 parser.add_argument(
49 '--android_root',
50 type=cli.argtype_dir_path,
51 default=configure.get('ANDROID_ROOT'),
52 help='Android tree to search push_to_device.py')
53
54 return parser
55
56
57def main(args=None):
58 common.init()
59 parser = create_argument_parser()
60 opts = parser.parse_args(args)
61 common.config_logging(opts)
62
63 if not opts.flavor:
64 opts.flavor = arc_util.query_flavor(opts.dut)
65 assert opts.flavor
66 logger.info('use flavor=%s', opts.flavor)
67
68 arc_util.push_prebuilt_to_device(
69 opts.dut, opts.flavor, opts.build_id, android_root=opts.android_root)
70
71 arc_version = cros_util.query_dut_lsb_release(
72 opts.dut).get('CHROMEOS_ARC_VERSION')
73 if str(opts.build_id) in arc_version:
74 logger.info('updated to "%s", done', arc_version)
75 else:
76 raise core.ExecutionFatalError(
77 'arc version is expected matching "%s" but actual "%s"' %
78 (opts.build_id, arc_version))
79
80
81if __name__ == '__main__':
82 main()