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