blob: ad9f30cbfe3b5718a0f9a70baa5ebeb2a07a75bb [file] [log] [blame]
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Switcher for ChromeOS ARC container prebuilt.
Typical usage:
$ bisect_android_build_id.py config switch ./switch_arc_prebuilt.py
It is implemented by calling Android's push_to_device.py.
"""
from __future__ import print_function
import argparse
import logging
from bisect_kit import android_util
from bisect_kit import arc_util
from bisect_kit import cli
from bisect_kit import common
from bisect_kit import configure
from bisect_kit import core
from bisect_kit import cros_util
logger = logging.getLogger(__name__)
def create_argument_parser():
parser = argparse.ArgumentParser(description=__doc__)
common.add_common_arguments(parser)
parser.add_argument(
'dut',
nargs='?',
type=cli.argtype_notempty,
metavar='DUT',
default=configure.get('DUT', ''))
parser.add_argument(
'build_id',
nargs='?',
type=android_util.argtype_android_build_id,
metavar='ANDROID_BUILD_ID',
default=configure.get('ANDROID_BUILD_ID', ''))
parser.add_argument(
'--flavor',
metavar='ANDROID_FLAVOR',
default=configure.get('ANDROID_FLAVOR'),
help='example: cheets_x86-user')
parser.add_argument(
'--android_root',
type=cli.argtype_dir_path,
default=configure.get('ANDROID_ROOT', ''),
help='Android tree to search push_to_device.py')
return parser
def main(args=None):
common.init()
parser = create_argument_parser()
opts = parser.parse_args(args)
common.config_logging(opts)
if not opts.flavor:
opts.flavor = arc_util.query_flavor(opts.dut)
assert opts.flavor
logger.info('use flavor=%s', opts.flavor)
arc_util.push_prebuilt_to_device(opts.android_root, opts.dut, opts.flavor,
opts.build_id)
arc_version = cros_util.query_dut_lsb_release(
opts.dut).get('CHROMEOS_ARC_VERSION')
if str(opts.build_id) in arc_version:
logger.info('updated to "%s", done', arc_version)
else:
raise core.ExecutionFatalError(
'arc version is expected matching "%s" but actual "%s"' %
(opts.build_id, arc_version))
if __name__ == '__main__':
main()