| Index: build/android/devil/android/sdk/adb_wrapper.py
|
| diff --git a/build/android/devil/android/sdk/adb_wrapper.py b/build/android/devil/android/sdk/adb_wrapper.py
|
| index 3ab7ddc096a9dad266c15a48df30e2ced45ed4d4..c184c77acb82dedbd3a37e03853ca911e2df8ca7 100644
|
| --- a/build/android/devil/android/sdk/adb_wrapper.py
|
| +++ b/build/android/devil/android/sdk/adb_wrapper.py
|
| @@ -14,11 +14,15 @@ import logging
|
| import os
|
| import re
|
|
|
| +from devil import devil_env
|
| from devil.android import decorators
|
| from devil.android import device_errors
|
| from devil.utils import cmd_helper
|
| +from devil.utils import lazy
|
| from devil.utils import timeout_retry
|
| -from pylib import constants
|
| +
|
| +with devil_env.SysPath(devil_env.CATAPULT_BASE_PATH):
|
| + from catapult_base import dependency_manager # pylint: disable=import-error
|
|
|
|
|
| _DEFAULT_TIMEOUT = 30
|
| @@ -42,6 +46,21 @@ def VerifyLocalFileExists(path):
|
| raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), path)
|
|
|
|
|
| +def _FindAdb():
|
| + try:
|
| + return devil_env.config.LocalPath('adb')
|
| + except dependency_manager.NoPathFoundError:
|
| + pass
|
| +
|
| + try:
|
| + return os.path.join(devil_env.config.LocalPath('android_sdk'),
|
| + 'platform-tools', 'adb')
|
| + except dependency_manager.NoPathFoundError:
|
| + pass
|
| +
|
| + return devil_env.config.FetchPath('adb')
|
| +
|
| +
|
| DeviceStat = collections.namedtuple('DeviceStat',
|
| ['st_mode', 'st_size', 'st_time'])
|
|
|
| @@ -49,6 +68,8 @@ DeviceStat = collections.namedtuple('DeviceStat',
|
| class AdbWrapper(object):
|
| """A wrapper around a local Android Debug Bridge executable."""
|
|
|
| + _adb_path = lazy.WeakConstant(_FindAdb)
|
| +
|
| def __init__(self, device_serial):
|
| """Initializes the AdbWrapper.
|
|
|
| @@ -59,19 +80,21 @@ class AdbWrapper(object):
|
| raise ValueError('A device serial must be specified')
|
| self._device_serial = str(device_serial)
|
|
|
| - # pylint: disable=unused-argument
|
| + @classmethod
|
| + def GetAdbPath(cls):
|
| + return cls._adb_path.read()
|
| +
|
| @classmethod
|
| def _BuildAdbCmd(cls, args, device_serial, cpu_affinity=None):
|
| if cpu_affinity is not None:
|
| cmd = ['taskset', '-c', str(cpu_affinity)]
|
| else:
|
| cmd = []
|
| - cmd.append(constants.GetAdbPath())
|
| + cmd.append(cls.GetAdbPath())
|
| if device_serial is not None:
|
| cmd.extend(['-s', device_serial])
|
| cmd.extend(args)
|
| return cmd
|
| - # pylint: enable=unused-argument
|
|
|
| # pylint: disable=unused-argument
|
| @classmethod
|
|
|