diff options
author | jbudorick <jbudorick@chromium.org> | 2015-10-23 06:42:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-23 13:42:37 +0000 |
commit | 814dac5c6b2e257aa493fc7b0541412a04440ff2 (patch) | |
tree | 53c7a98885b8a71cf8b64c354b7e67b57a138cdd | |
parent | f15687fe1858585d48970916e6e1e4a6e1d592ef (diff) | |
download | chromium_src-814dac5c6b2e257aa493fc7b0541412a04440ff2.zip chromium_src-814dac5c6b2e257aa493fc7b0541412a04440ff2.tar.gz chromium_src-814dac5c6b2e257aa493fc7b0541412a04440ff2.tar.bz2 |
Revert of [Android] Add a configurable environment for devil/. (RELAND) (patchset #12 id:220001 of https://codereview.chromium.org/1399273002/ )
Reason for revert:
broke cluster telemetry: https://code.google.com/p/skia/issues/detail?id=4506
Original issue's description:
> [Android] Add a configurable environment for devil/. (RELAND)
>
> This is a reland of https://codereview.chromium.org/1316413003/
>
> BUG=476719
>
> Committed: https://crrev.com/06869eebcab4b41d21e96ea2df732a2b40914fe4
> Cr-Commit-Position: refs/heads/master@{#355683}
TBR=aiolos@chromium.org,nednguyen@google.com,mikecase@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=476719
Review URL: https://codereview.chromium.org/1415413005
Cr-Commit-Position: refs/heads/master@{#355774}
37 files changed, 98 insertions, 535 deletions
diff --git a/build/android/PRESUBMIT.py b/build/android/PRESUBMIT.py index 278e950..c97194f 100644 --- a/build/android/PRESUBMIT.py +++ b/build/android/PRESUBMIT.py @@ -12,12 +12,9 @@ details on the presubmit API built into depot_tools. def CommonChecks(input_api, output_api): output = [] - build_android_dir = input_api.PresubmitLocalPath() - chromium_src_dir = input_api.os_path.join(build_android_dir, '..', '..') - def J(*dirs): """Returns a path relative to presubmit directory.""" - return input_api.os_path.join(build_android_dir, *dirs) + return input_api.os_path.join(input_api.PresubmitLocalPath(), *dirs) build_pys = [ r'gyp/.*\.py$', @@ -43,7 +40,7 @@ def CommonChecks(input_api, output_api): pylib_test_env = dict(input_api.environ) pylib_test_env.update({ - 'PYTHONPATH': build_android_dir, + 'PYTHONPATH': input_api.PresubmitLocalPath(), 'PYTHONDONTWRITEBYTECODE': '1', }) output.extend(input_api.canned_checks.RunUnitTests( @@ -51,6 +48,12 @@ def CommonChecks(input_api, output_api): output_api, unit_tests=[ J('.', 'emma_coverage_stats_test.py'), + J('devil', 'android', 'battery_utils_test.py'), + J('devil', 'android', 'device_utils_test.py'), + J('devil', 'android', 'md5sum_test.py'), + J('devil', 'android', 'logcat_monitor_test.py'), + J('devil', 'utils', 'cmd_helper_test.py'), + J('devil', 'utils', 'timeout_retry_unittest.py'), J('gyp', 'util', 'md5_check_test.py'), J('pylib', 'base', 'test_dispatcher_unittest.py'), J('pylib', 'gtest', 'gtest_test_instance_test.py'), @@ -59,26 +62,6 @@ def CommonChecks(input_api, output_api): J('pylib', 'results', 'json_results_test.py'), ], env=pylib_test_env)) - - - devil_test_env = dict(pylib_test_env) - devil_test_env.update({ - 'DEVIL_ENV_CONFIG': - input_api.os_path.join(chromium_src_dir, 'build', 'android', - 'devil_chromium.json') - }) - output.extend(input_api.canned_checks.RunUnitTests( - input_api, - output_api, - unit_tests=[ - J('devil', 'android', 'battery_utils_test.py'), - J('devil', 'android', 'device_utils_test.py'), - J('devil', 'android', 'md5sum_test.py'), - J('devil', 'android', 'logcat_monitor_test.py'), - J('devil', 'utils', 'cmd_helper_test.py'), - J('devil', 'utils', 'timeout_retry_unittest.py'), - ], - env=devil_test_env)) return output diff --git a/build/android/adb_install_apk.py b/build/android/adb_install_apk.py index 5cda6e8..011509b 100755 --- a/build/android/adb_install_apk.py +++ b/build/android/adb_install_apk.py @@ -12,8 +12,6 @@ import logging import os import sys -import devil_chromium - from devil.android import apk_helper from devil.android import device_blacklist from devil.android import device_errors @@ -64,8 +62,6 @@ def main(): run_tests_helper.SetLogLevel(args.verbose) constants.SetBuildType(args.build_type) - devil_chromium.Initialize(output_directory=constants.GetOutDirectory()) - apk = args.apk_path or args.apk_name if not apk.endswith('.apk'): apk += '.apk' diff --git a/build/android/buildbot/bb_device_status_check.py b/build/android/buildbot/bb_device_status_check.py index ab4d317..ff9afc3f 100755 --- a/build/android/buildbot/bb_device_status_check.py +++ b/build/android/buildbot/bb_device_status_check.py @@ -16,7 +16,6 @@ import signal import sys sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) -import devil_chromium from devil.android import battery_utils from devil.android import device_blacklist from devil.android import device_errors @@ -307,8 +306,6 @@ def main(): run_tests_helper.SetLogLevel(args.verbose) - devil_chromium.Initialize() - blacklist = (device_blacklist.Blacklist(args.blacklist_file) if args.blacklist_file else None) diff --git a/build/android/devil/android/battery_utils_test.py b/build/android/devil/android/battery_utils_test.py index 472b6c1..64253a5 100755 --- a/build/android/devil/android/battery_utils_test.py +++ b/build/android/devil/android/battery_utils_test.py @@ -10,17 +10,19 @@ Unit tests for the contents of battery_utils.py # pylint: disable=protected-access,unused-argument import logging +import os import sys import unittest -from devil import devil_env from devil.android import battery_utils from devil.android import device_errors from devil.android import device_utils from devil.android import device_utils_test from devil.utils import mock_calls +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=F0401 _DUMPSYS_OUTPUT = [ diff --git a/build/android/devil/android/device_utils.py b/build/android/devil/android/device_utils.py index dd0aeeb..b169240 100644 --- a/build/android/devil/android/device_utils.py +++ b/build/android/devil/android/device_utils.py @@ -22,7 +22,6 @@ import time import zipfile from devil import base_error -from devil import devil_env from devil.utils import cmd_helper from devil.android import apk_helper from devil.android import device_signal @@ -41,6 +40,7 @@ from devil.utils import parallelizer from devil.utils import reraiser_thread from devil.utils import timeout_retry from devil.utils import zip_utils +from pylib import constants from pylib.device.commands import install_commands _DEFAULT_TIMEOUT = 30 @@ -105,8 +105,7 @@ def GetAVDs(): A list containing the configured AVDs. """ lines = cmd_helper.GetCmdOutput([ - os.path.join(devil_env.config.LocalPath('android_sdk'), - 'tools', 'android'), + os.path.join(constants.ANDROID_SDK_ROOT, 'tools', 'android'), 'list', 'avd']).splitlines() avds = [] for line in lines: diff --git a/build/android/devil/android/device_utils_test.py b/build/android/devil/android/device_utils_test.py index ab7d3eb..99d3c83 100755 --- a/build/android/devil/android/device_utils_test.py +++ b/build/android/devil/android/device_utils_test.py @@ -11,10 +11,10 @@ Unit tests for the contents of device_utils.py (mostly DeviceUtils). # pylint: disable=unused-argument import logging +import os import sys import unittest -from devil import devil_env from devil.android import device_errors from devil.android import device_signal from devil.android import device_utils @@ -23,8 +23,10 @@ from devil.android.sdk import intent from devil.android.sdk import version_codes from devil.utils import cmd_helper from devil.utils import mock_calls +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=F0401 @@ -69,21 +71,17 @@ class DeviceUtilsInitTest(unittest.TestCase): class DeviceUtilsGetAVDsTest(mock_calls.TestCase): def testGetAVDs(self): - mocked_attrs = { - 'android_sdk': '/my/sdk/path' - } - with mock.patch('devil.devil_env._Environment.LocalPath', - mock.Mock(side_effect=lambda a: mocked_attrs[a])): - with self.assertCall( - mock.call.devil.utils.cmd_helper.GetCmdOutput( - [mock.ANY, 'list', 'avd']), - 'Available Android Virtual Devices:\n' - ' Name: my_android5.0\n' - ' Path: /some/path/to/.android/avd/my_android5.0.avd\n' - ' Target: Android 5.0 (API level 21)\n' - ' Tag/ABI: default/x86\n' - ' Skin: WVGA800\n'): - self.assertEquals(['my_android5.0'], device_utils.GetAVDs()) + with self.assertCall( + mock.call.devil.utils.cmd_helper.GetCmdOutput( + [mock.ANY, 'list', 'avd']), + 'Available Android Virtual Devices:\n' + ' Name: my_android5.0\n' + ' Path: /some/path/to/.android/avd/my_android5.0.avd\n' + ' Target: Android 5.0 (API level 21)\n' + ' Tag/ABI: default/x86\n' + ' Skin: WVGA800\n'): + self.assertEquals(['my_android5.0'], + device_utils.GetAVDs()) class DeviceUtilsRestartServerTest(mock_calls.TestCase): diff --git a/build/android/devil/android/logcat_monitor_test.py b/build/android/devil/android/logcat_monitor_test.py index 8f806b7..2b7969c 100755 --- a/build/android/devil/android/logcat_monitor_test.py +++ b/build/android/devil/android/logcat_monitor_test.py @@ -6,14 +6,16 @@ # pylint: disable=protected-access import itertools +import os import sys import unittest -from devil import devil_env from devil.android import logcat_monitor from devil.android.sdk import adb_wrapper +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=F0401 diff --git a/build/android/devil/android/md5sum.py b/build/android/devil/android/md5sum.py index bae134d..dbd988f 100644 --- a/build/android/devil/android/md5sum.py +++ b/build/android/devil/android/md5sum.py @@ -6,9 +6,9 @@ import os import posixpath import re -from devil import devil_env from devil.android import device_errors from devil.utils import cmd_helper +from pylib import constants MD5SUM_DEVICE_LIB_PATH = '/data/local/tmp/md5sum' MD5SUM_DEVICE_BIN_PATH = MD5SUM_DEVICE_LIB_PATH + '/md5sum_bin' @@ -30,7 +30,8 @@ def CalculateHostMd5Sums(paths): if isinstance(paths, basestring): paths = [paths] - md5sum_bin_host_path = devil_env.config.FetchPath('md5sum_host') + md5sum_bin_host_path = os.path.join( + constants.GetOutDirectory(), 'md5sum_bin_host') if not os.path.exists(md5sum_bin_host_path): raise IOError('File not built: %s' % md5sum_bin_host_path) out = cmd_helper.GetCmdOutput([md5sum_bin_host_path] + [p for p in paths]) @@ -57,12 +58,8 @@ def CalculateDeviceMd5Sums(paths, device): # Allow generators paths = list(paths) - md5sum_dist_path = devil_env.config.FetchPath('md5sum_device', device=device) - - if os.path.isdir(md5sum_dist_path): - md5sum_dist_bin_path = os.path.join(md5sum_dist_path, 'md5sum_bin') - else: - md5sum_dist_bin_path = md5sum_dist_path + md5sum_dist_path = os.path.join(constants.GetOutDirectory(), 'md5sum_dist') + md5sum_dist_bin_path = os.path.join(md5sum_dist_path, 'md5sum_bin') if not os.path.exists(md5sum_dist_path): raise IOError('File not built: %s' % md5sum_dist_path) @@ -98,13 +95,7 @@ def CalculateDeviceMd5Sums(paths, device): # actually fail. So, wipe the directory first. device.RunShellCommand(['rm', '-rf', MD5SUM_DEVICE_LIB_PATH], as_root=True, check_return=True) - if os.path.isdir(md5sum_dist_path): - device.adb.Push(md5sum_dist_path, MD5SUM_DEVICE_LIB_PATH) - else: - mkdir_cmd = 'a=%s;[[ -e $a ]] || mkdir $a' % MD5SUM_DEVICE_LIB_PATH - device.RunShellCommand(mkdir_cmd, check_return=True) - device.adb.Push(md5sum_dist_bin_path, MD5SUM_DEVICE_BIN_PATH) - + device.adb.Push(md5sum_dist_path, MD5SUM_DEVICE_LIB_PATH) out = device.RunShellCommand(md5sum_script, check_return=True) else: raise diff --git a/build/android/devil/android/md5sum_test.py b/build/android/devil/android/md5sum_test.py index 86023f7..e9481b6 100755 --- a/build/android/devil/android/md5sum_test.py +++ b/build/android/devil/android/md5sum_test.py @@ -7,29 +7,25 @@ import os import sys import unittest -from devil import devil_env from devil.android import device_errors from devil.android import md5sum +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append( + os.path.join(constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=import-error TEST_OUT_DIR = os.path.join('test', 'out', 'directory') HOST_MD5_EXECUTABLE = os.path.join(TEST_OUT_DIR, 'md5sum_bin_host') -MD5_DIST = os.path.join(TEST_OUT_DIR, 'md5sum_dist') class Md5SumTest(unittest.TestCase): def setUp(self): - mocked_attrs = { - 'md5sum_host': HOST_MD5_EXECUTABLE, - 'md5sum_device': MD5_DIST, - } self._patchers = [ - mock.patch('devil.devil_env._Environment.FetchPath', - mock.Mock(side_effect=lambda a, device=None: mocked_attrs[a])), - mock.patch('os.path.exists', - new=mock.Mock(return_value=True)), + mock.patch('pylib.constants.GetOutDirectory', + new=mock.Mock(return_value=TEST_OUT_DIR)), + mock.patch('os.path.exists', + new=mock.Mock(return_value=True)), ] for p in self._patchers: p.start() @@ -221,8 +217,7 @@ class Md5SumTest(unittest.TestCase): device.RunShellCommand = mock.Mock( side_effect=(error, '', device_md5sum_output)) - with mock.patch('os.path.isdir', return_value=True), ( - mock.patch('os.path.getsize', return_value=1337)): + with mock.patch('os.path.getsize', return_value=1337): out = md5sum.CalculateDeviceMd5Sums(test_path, device) self.assertEquals(1, len(out)) self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) diff --git a/build/android/devil/android/sdk/aapt.py b/build/android/devil/android/sdk/aapt.py index 62b37d7..1c051e0 100644 --- a/build/android/devil/android/sdk/aapt.py +++ b/build/android/devil/android/sdk/aapt.py @@ -4,9 +4,12 @@ """This module wraps the Android Asset Packaging Tool.""" -from devil import devil_env +import os + from devil.utils import cmd_helper +from pylib import constants +_AAPT_PATH = os.path.join(constants.ANDROID_SDK_TOOLS, 'aapt') def _RunAaptCmd(args): """Runs an aapt command. @@ -17,15 +20,13 @@ def _RunAaptCmd(args): Returns: The output of the command. """ - aapt_path = devil_env.config.FetchPath('aapt') - cmd = [aapt_path] + args + cmd = [_AAPT_PATH] + args status, output = cmd_helper.GetCmdStatusAndOutput(cmd) if status != 0: raise Exception('Failed running aapt command: "%s" with output "%s".' % (' '.join(cmd), output)) return output - def Dump(what, apk, assets=None): """Returns the output of the aapt dump command. diff --git a/build/android/devil/android/sdk/adb_wrapper.py b/build/android/devil/android/sdk/adb_wrapper.py index 184568f..5a81c7f 100644 --- a/build/android/devil/android/sdk/adb_wrapper.py +++ b/build/android/devil/android/sdk/adb_wrapper.py @@ -13,13 +13,12 @@ import errno import logging import os import re -import threading -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 timeout_retry +from pylib import constants _DEFAULT_TIMEOUT = 30 @@ -50,9 +49,6 @@ DeviceStat = collections.namedtuple('DeviceStat', class AdbWrapper(object): """A wrapper around a local Android Debug Bridge executable.""" - _adb_path = None - _adb_path_lock = threading.Lock() - def __init__(self, device_serial): """Initializes the AdbWrapper. @@ -63,25 +59,19 @@ class AdbWrapper(object): raise ValueError('A device serial must be specified') self._device_serial = str(device_serial) - @classmethod - def _GetAdbPath(cls): - if not cls._adb_path: - with cls._adb_path_lock: - if not cls._adb_path: - cls._adb_path = devil_env.config.FetchPath('adb') - return cls._adb_path - + # pylint: disable=unused-argument @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(cls._GetAdbPath()) + cmd.append(constants.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 diff --git a/build/android/devil/android/sdk/dexdump.py b/build/android/devil/android/sdk/dexdump.py index 5660ecb..48d810f 100644 --- a/build/android/devil/android/sdk/dexdump.py +++ b/build/android/devil/android/sdk/dexdump.py @@ -2,9 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -from devil import devil_env +import os + from devil.utils import cmd_helper +from pylib import constants +_DEXDUMP_PATH = os.path.join(constants.ANDROID_SDK_TOOLS, 'dexdump') def DexDump(dexfiles, file_summary=False): """A wrapper around the Android SDK's dexdump tool. @@ -19,7 +22,7 @@ def DexDump(dexfiles, file_summary=False): # TODO(jbudorick): Add support for more options as necessary. if isinstance(dexfiles, basestring): dexfiles = [dexfiles] - args = [devil_env.config.FetchPath('dexdump')] + dexfiles + args = [_DEXDUMP_PATH] + dexfiles if file_summary: args.append('-f') diff --git a/build/android/devil/android/sdk/shared_prefs_test.py b/build/android/devil/android/sdk/shared_prefs_test.py index 6eba2295..63d9aec 100755 --- a/build/android/devil/android/sdk/shared_prefs_test.py +++ b/build/android/devil/android/sdk/shared_prefs_test.py @@ -8,14 +8,16 @@ Unit tests for the contents of shared_prefs.py (mostly SharedPrefs). """ import logging +import os import sys import unittest -from devil import devil_env from devil.android import device_utils from devil.android.sdk import shared_prefs +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=import-error diff --git a/build/android/devil/android/sdk/split_select.py b/build/android/devil/android/sdk/split_select.py index 11e77c2..47fcea3c 100644 --- a/build/android/devil/android/sdk/split_select.py +++ b/build/android/devil/android/sdk/split_select.py @@ -4,9 +4,12 @@ """This module wraps Android's split-select tool.""" -from devil import devil_env +import os + from devil.utils import cmd_helper +from pylib import constants +_SPLIT_SELECT_PATH = os.path.join(constants.ANDROID_SDK_TOOLS, 'split-select') def _RunSplitSelectCmd(args): """Runs a split-select command. @@ -17,8 +20,7 @@ def _RunSplitSelectCmd(args): Returns: The output of the command. """ - split_select_path = devil_env.config.FetchPath('split-select') - cmd = [split_select_path] + args + cmd = [_SPLIT_SELECT_PATH] + args status, output = cmd_helper.GetCmdStatusAndOutput(cmd) if status != 0: raise Exception('Failed running command "%s" with output "%s".' % diff --git a/build/android/devil/devil_dependencies.json b/build/android/devil/devil_dependencies.json deleted file mode 100644 index f55a983..0000000 --- a/build/android/devil/devil_dependencies.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "config_type": "BaseConfig", - "dependencies": { - "aapt": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "7448de3cb5e834afdedeaad8b40ba63ac53f3dc4", - "download_path": "../bin/aapt" - } - } - }, - "adb": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "0c2043552619c8ec8bb5d986ba75703a598611fc", - "download_path": "../bin/adb" - } - } - }, - "android_build_tools_libc++": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "52d150a7ccde835f38b4337392152f3013d5f303", - "download_path": "../bin/lib/libc++.so" - } - } - }, - "dexdump": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "38765b5b358c29003e56b1d214606ea13467b6fe", - "download_path": "../bin/dexdump" - } - } - }, - "forwarder_device": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_armeabi-v7a": { - "cloud_storage_hash": "4858c9e41da72ad8ff24414731feae2137229361", - "download_path": "../bin/armeabi-v7a/forwarder_device" - }, - "android_arm64-v8a": { - "cloud_storage_hash": "8cbd1ac2079ee82ce5f1cf4d3e85fc1e53a8f018", - "download_path": "../bin/arm64-v8a/forwarder_device" - } - } - }, - "forwarder_host": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "b3dda9fbdd4a3fb933b64111c11070aa809c7ed4", - "download_path": "../bin/forwarder_host" - } - } - }, - "md5sum_device": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_armeabi-v7a": { - "cloud_storage_hash": "c8894480be71d5e49118483d83ba7a6e0097cba6", - "download_path": "../bin/armeabi-v7a/md5sum_device" - }, - "android_arm64-v8a": { - "cloud_storage_hash": "bbe410e2ffb48367ac4ca0874598d4f85fd16d9d", - "download_path": "../bin/arm64-v8a/md5sum_device" - } - } - }, - "md5sum_host": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "49e36c9c4246cfebef26cbd07436c1a8343254aa", - "download_path": "../bin/md5sum_host" - } - } - }, - "pymock": { - "file_info": { - "android_host": { - "local_paths": [ - "../../../tools/telemetry/third_party/mock" - ] - } - } - }, - "split-select": { - "cloud_storage_bucket": "chromium-telemetry", - "cloud_storage_base_folder": "binary_dependencies", - "file_info": { - "android_host": { - "cloud_storage_hash": "3327881fa3951a503b9467425ea8e781cdffeb9f", - "download_path": "../bin/split-select" - } - } - } - } -} diff --git a/build/android/devil/devil_env.py b/build/android/devil/devil_env.py deleted file mode 100644 index 5669fd2..0000000 --- a/build/android/devil/devil_env.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import json -import os -import sys -import tempfile -import threading - -# TODO(jbudorick): Update this once dependency_manager moves to catapult. -_TELEMETRY_PATH = os.path.abspath(os.path.join( - os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, - 'tools', 'telemetry')) -sys.path.append(_TELEMETRY_PATH) -from catapult_base import dependency_manager # pylint: disable=import-error - -_ANDROID_BUILD_TOOLS = {'aapt', 'dexdump', 'split-select'} - -_DEVIL_DEFAULT_CONFIG = os.path.abspath(os.path.join( - os.path.dirname(__file__), 'devil_dependencies.json')) - - -class _Environment(object): - - def __init__(self): - self._config = None - self._config_init_lock = threading.Lock() - self._dm = None - - def Initialize(self, configs=None, config_files=None): - """Initialize devil's environment from configuration files. - - This uses all configurations provided via |configs| and |config_files| - to determine the locations of devil's dependencies. Configurations should - all take the form described by catapult_base.dependency_manager.BaseConfig. - If no configurations are provided, a default one will be used if available. - - Args: - configs: An optional list of dict configurations. - config_files: An optional list of files to load - """ - - # Make sure we only initialize self._config once. - with self._config_init_lock: - if self._config is not None: - return - self._config = {} - - self._InitializeRecursive( - configs=configs, config_files=config_files) - - def _InitializeRecursive(self, configs=None, config_files=None): - # This recurses through configs to create temporary files for each and - # take advantage of context managers to appropriately close those files. - # TODO(jbudorick): Remove this recursion if/when dependency_manager - # supports loading configurations directly from a dict. - if configs: - with tempfile.NamedTemporaryFile() as next_config_file: - next_config_file.write(json.dumps(configs[0])) - next_config_file.flush() - self._InitializeRecursive( - configs=configs[1:], - config_files=[next_config_file.name] + (config_files or [])) - else: - config_files = config_files or [] - if 'DEVIL_ENV_CONFIG' in os.environ: - config_files.append(os.environ.get('DEVIL_ENV_CONFIG')) - config_files.append(_DEVIL_DEFAULT_CONFIG) - - self._dm = dependency_manager.DependencyManager( - [dependency_manager.BaseConfig(c) for c in config_files]) - - def FetchPath(self, dependency, arch=None, device=None): - if self._dm is None: - self.Initialize() - if dependency in _ANDROID_BUILD_TOOLS: - self.FetchPath('android_build_tools_libc++', arch=arch, device=device) - return self._dm.FetchPath(dependency, _GetPlatform(arch, device)) - - def LocalPath(self, dependency, arch=None, device=None): - if self._dm is None: - self.Initialize() - return self._dm.LocalPath(dependency, _GetPlatform(arch, device)) - - -def _GetPlatform(arch, device): - if not arch: - arch = device.product_cpu_abi if device else 'host' - return 'android_%s' % arch - - -config = _Environment() - diff --git a/build/android/devil/utils/lsusb.py b/build/android/devil/utils/lsusb.py index d322e5c..9c98fa6 100644 --- a/build/android/devil/utils/lsusb.py +++ b/build/android/devil/utils/lsusb.py @@ -5,7 +5,7 @@ import logging import re -from devil.utils import cmd_helper +from pylib import cmd_helper _INDENTATION_RE = re.compile(r'^( *)') _LSUSB_BUS_DEVICE_RE = re.compile(r'^Bus (\d{3}) Device (\d{3}):') diff --git a/build/android/devil/utils/mock_calls.py b/build/android/devil/utils/mock_calls.py index bc3b54a..59167ba 100644 --- a/build/android/devil/utils/mock_calls.py +++ b/build/android/devil/utils/mock_calls.py @@ -6,12 +6,14 @@ A test facility to assert call sequences while mocking their behavior. """ +import os import sys import unittest -from devil import devil_env +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=F0401 diff --git a/build/android/devil/utils/mock_calls_test.py b/build/android/devil/utils/mock_calls_test.py index 290c184b..ae2acbb 100755 --- a/build/android/devil/utils/mock_calls_test.py +++ b/build/android/devil/utils/mock_calls_test.py @@ -12,11 +12,12 @@ import os import sys import unittest -from devil import devil_env from devil.android.sdk import version_codes from devil.utils import mock_calls +from pylib import constants -sys.path.append(devil_env.config.LocalPath('pymock')) +sys.path.append(os.path.join( + constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) import mock # pylint: disable=F0401 diff --git a/build/android/devil_chromium.json b/build/android/devil_chromium.json deleted file mode 100644 index 99aabad..0000000 --- a/build/android/devil_chromium.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "config_type": "BaseConfig", - "dependencies": { - "aapt": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/android_tools/sdk/build-tools/23.0.0/aapt" - ] - } - } - }, - "adb": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/android_tools/sdk/platform-tools/adb" - ] - } - } - }, - "android_sdk": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/android_tools/sdk" - ] - } - } - }, - "dexdump": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/android_tools/sdk/build-tools/23.0.0/dexdump" - ] - } - } - }, - "split-select": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/android_tools/sdk/build-tools/23.0.0/split-select" - ] - } - } - }, - "pymock": { - "file_info": { - "android_host": { - "local_paths": [ - "../../third_party/pymock" - ] - } - } - } - } -} diff --git a/build/android/devil_chromium.py b/build/android/devil_chromium.py deleted file mode 100644 index 50f4128..0000000 --- a/build/android/devil_chromium.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2015 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Configures devil for use in chromium.""" - -import os - -from devil import devil_env - - -_DEVIL_CONFIG = os.path.abspath( - os.path.join(os.path.dirname(__file__), 'devil_chromium.json')) - -_DEVIL_BUILD_PRODUCT_DEPS = { - 'forwarder_device': { - 'armeabi-v7a': 'forwarder_dist', - 'arm64-v8a': 'forwarder_dist', - }, - 'forwarder_host': { - 'any': 'host_forwarder', - }, - 'md5sum_device': { - 'armeabi-v7a': 'md5sum_dist', - 'arm64-v8a': 'md5sum_dist', - }, - 'md5sum_host': { - 'any': 'md5sum_bin_host', - }, -} - - -def Initialize(output_directory=None): - """Initializes devil with chromium's binaries and third-party libraries. - - This includes: - - Libraries: - - the android SDK ("android_sdk") - - pymock ("pymock") - - Build products: - - host & device forwarder binaries - ("forwarder_device" and "forwarder_host") - - host & device md5sum binaries ("md5sum_device" and "md5sum_host") - - Args: - output_directory: An optional path to the output directory. If not set, - no built dependencies are configured. - """ - - devil_dynamic_deps = {} - - if output_directory: - for dep_name, arch_dict in _DEVIL_BUILD_PRODUCT_DEPS.iteritems(): - devil_dynamic_deps[dep_name] = {} - for arch, name in arch_dict.iteritems(): - devil_dynamic_deps[dep_name][arch] = os.path.join( - output_directory, name) - - devil_dynamic_config = { - 'config_type': 'BaseConfig', - 'dependencies': { - dep_name: { - 'file_info': { - 'android_%s' % arch: { - 'local_paths': [path] - } - for arch, path in arch_dict.iteritems() - } - } - for dep_name, arch_dict in devil_dynamic_deps.iteritems() - } - } - - devil_env.config.Initialize( - configs=[devil_dynamic_config], config_files=[_DEVIL_CONFIG]) - diff --git a/build/android/gyp/apk_install.py b/build/android/gyp/apk_install.py index 9c90763..33697ca 100755 --- a/build/android/gyp/apk_install.py +++ b/build/android/gyp/apk_install.py @@ -17,11 +17,9 @@ from util import build_device from util import build_utils from util import md5_check -BUILD_ANDROID_DIR = os.path.abspath( - os.path.join(os.path.dirname(__file__), '..')) +BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), '..') sys.path.append(BUILD_ANDROID_DIR) -import devil_chromium from devil.android import apk_helper from pylib import constants @@ -76,20 +74,15 @@ def main(): help='Path to touch on success.') parser.add_option('--configuration-name', help='The build CONFIGURATION_NAME') - parser.add_option('--output-directory', - help='The output directory.') options, _ = parser.parse_args() - constants.SetBuildType(options.configuration_name) - - devil_chromium.Initialize( - output_directory=os.path.abspath(options.output_directory)) - device = build_device.GetBuildDeviceFromPath( options.build_device_configuration) if not device: return + constants.SetBuildType(options.configuration_name) + serial_number = device.GetSerialNumber() apk_package = apk_helper.GetPackageName(options.apk_path) diff --git a/build/android/gyp/create_device_library_links.py b/build/android/gyp/create_device_library_links.py index 6b0b24d..8c155a0 100755 --- a/build/android/gyp/create_device_library_links.py +++ b/build/android/gyp/create_device_library_links.py @@ -18,11 +18,9 @@ import sys from util import build_device from util import build_utils -BUILD_ANDROID_DIR = os.path.abspath( - os.path.join(os.path.dirname(__file__), '..')) +BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), '..') sys.path.append(BUILD_ANDROID_DIR) -import devil_chromium from devil.android import apk_helper from pylib import constants @@ -98,8 +96,6 @@ def main(args): help='Path to build device configuration.') parser.add_option('--configuration-name', help='The build CONFIGURATION_NAME') - parser.add_option('--output-directory', - help='The output directory') options, _ = parser.parse_args(args) required_options = ['apk', 'libraries', 'script_host_path', @@ -107,9 +103,6 @@ def main(args): build_utils.CheckOptions(options, parser, required=required_options) constants.SetBuildType(options.configuration_name) - devil_chromium.Initialize( - output_directory=os.path.abspath(options.output_directory)) - CreateSymlinkScript(options) TriggerSymlinkScript(options) diff --git a/build/android/gyp/get_device_configuration.py b/build/android/gyp/get_device_configuration.py index 780f8ff..390eb2f 100755 --- a/build/android/gyp/get_device_configuration.py +++ b/build/android/gyp/get_device_configuration.py @@ -11,29 +11,18 @@ install to and what needs to be installed to those devices. """ import optparse -import os import sys -from util import build_device from util import build_utils - -BUILD_ANDROID_DIR = os.path.abspath( - os.path.join(os.path.dirname(__file__), '..')) -sys.path.apend(BUILD_ANDROID_DIR) - -import devil_chromium +from util import build_device def main(argv): parser = optparse.OptionParser() parser.add_option('--stamp', action='store') parser.add_option('--output', action='store') - parser.add_option('--output-directory', action='store') options, _ = parser.parse_args(argv) - devil_chromium.Initialize( - output_directory=os.path.abspath(options.output_directory)) - devices = build_device.GetAttachedDevices() device_configurations = [] diff --git a/build/android/gyp/push_libraries.py b/build/android/gyp/push_libraries.py index 452b873..6b31a2e 100755 --- a/build/android/gyp/push_libraries.py +++ b/build/android/gyp/push_libraries.py @@ -12,8 +12,7 @@ import optparse import os import sys -BUILD_ANDROID_DIR = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir)) +BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), os.pardir) sys.path.append(BUILD_ANDROID_DIR) from pylib import constants diff --git a/build/android/gyp/util/build_device.py b/build/android/gyp/util/build_device.py index 34484ac..a19045b 100644 --- a/build/android/gyp/util/build_device.py +++ b/build/android/gyp/util/build_device.py @@ -13,8 +13,7 @@ import sys from util import build_utils -BUILD_ANDROID_DIR = os.path.abspath( - os.path.join(os.path.dirname(__file__), '..', '..')) +BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), '..', '..') sys.path.append(BUILD_ANDROID_DIR) from devil.android import device_errors diff --git a/build/android/incremental_install/installer.py b/build/android/incremental_install/installer.py index f38852c..b5ed5ce 100755 --- a/build/android/incremental_install/installer.py +++ b/build/android/incremental_install/installer.py @@ -14,9 +14,7 @@ import posixpath import shutil import sys -sys.path.append( - os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))) -import devil_chromium +sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir)) from devil.android import apk_helper from devil.android import device_utils from devil.android import device_errors @@ -234,8 +232,6 @@ def main(): if args.output_directory: constants.SetOutputDirectory(args.output_directory) - devil_chromium.Initialize(output_directory=constants.GetOutputDirectory()) - if args.device: # Retries are annoying when commands fail for legitimate reasons. Might want # to enable them if this is ever used on bots though. diff --git a/build/android/provision_devices.py b/build/android/provision_devices.py index 95aebaa..39c3095 100755 --- a/build/android/provision_devices.py +++ b/build/android/provision_devices.py @@ -21,7 +21,6 @@ import subprocess import sys import time -import devil_chromium from devil.android import battery_utils from devil.android import device_blacklist from devil.android import device_errors @@ -485,8 +484,6 @@ def main(): run_tests_helper.SetLogLevel(args.verbose) - devil_chromium.Initialize() - return ProvisionDevices(args) diff --git a/build/android/pylib/forwarder.py b/build/android/pylib/forwarder.py index 1a0050a..17a0114 100644 --- a/build/android/pylib/forwarder.py +++ b/build/android/pylib/forwarder.py @@ -9,7 +9,6 @@ import logging import os import psutil -from devil import devil_env from devil.utils import cmd_helper from pylib import constants from pylib import valgrind_tools @@ -78,7 +77,7 @@ class Forwarder(object): device_serial = str(device) redirection_commands = [ - ['--adb=' + devil_env.config.FetchPath('adb'), + ['--adb=' + constants.GetAdbPath(), '--serial-id=' + device_serial, '--map', str(device_port), str(host_port)] for device_port, host_port in port_pairs] @@ -198,8 +197,11 @@ class Forwarder(object): self._initialized_devices = set() self._device_to_host_port_map = dict() self._host_to_device_port_map = dict() - self._host_forwarder_path = devil_env.config.FetchPath('forwarder_host') + self._host_forwarder_path = os.path.join( + constants.GetOutDirectory(), 'host_forwarder') assert os.path.exists(self._host_forwarder_path), 'Please build forwarder2' + self._device_forwarder_path_on_host = os.path.join( + constants.GetOutDirectory(), 'forwarder_dist') self._InitHostLocked() @staticmethod @@ -214,7 +216,7 @@ class Forwarder(object): if not serial_with_port in instance._device_to_host_port_map: logging.error('Trying to unmap non-forwarded port %d', device_port) return - redirection_command = ['--adb=' + devil_env.config.FetchPath('adb'), + redirection_command = ['--adb=' + constants.GetAdbPath(), '--serial-id=' + serial, '--unmap', str(device_port)] logging.info('Undo forwarding using command: %s', redirection_command) @@ -277,16 +279,9 @@ class Forwarder(object): if device_serial in self._initialized_devices: return Forwarder._KillDeviceLocked(device, tool) - forwarder_device_path_on_host = devil_env.config.FetchPath( - 'forwarder_device', device=device) - forwarder_device_path_on_device = ( - Forwarder._DEVICE_FORWARDER_FOLDER - if os.path.isdir(forwarder_device_path_on_host) - else Forwarder._DEVICE_FORWARDER_PATH) device.PushChangedFiles([( - forwarder_device_path_on_host, - forwarder_device_path_on_device)]) - + self._device_forwarder_path_on_host, + Forwarder._DEVICE_FORWARDER_FOLDER)]) cmd = '%s %s' % (tool.GetUtilWrapper(), Forwarder._DEVICE_FORWARDER_PATH) device.RunShellCommand( cmd, env={'LD_LIBRARY_PATH': Forwarder._DEVICE_FORWARDER_FOLDER}, diff --git a/build/android/pylib/perf/test_runner.py b/build/android/pylib/perf/test_runner.py index 8bcbe7b..6beb117 100644 --- a/build/android/pylib/perf/test_runner.py +++ b/build/android/pylib/perf/test_runner.py @@ -74,7 +74,6 @@ _GIT_CR_POS_RE = re.compile(r'^Cr-Commit-Position: refs/heads/master@{#(\d+)}$') def _GetChromiumRevision(): - # pylint: disable=line-too-long """Get the git hash and commit position of the chromium master branch. See: https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/runtest.py#212 @@ -82,7 +81,6 @@ def _GetChromiumRevision(): Returns: A dictionary with 'revision' and 'commit_pos' keys. """ - # pylint: enable=line-too-long status, output = cmd_helper.GetCmdStatusAndOutput( ['git', 'log', '-n', '1', '--pretty=format:%H%n%B', 'HEAD'], constants.DIR_SOURCE_ROOT) diff --git a/build/android/pylintrc b/build/android/pylintrc index 8005a5d..9c2ab5a 100644 --- a/build/android/pylintrc +++ b/build/android/pylintrc @@ -1,7 +1,3 @@ -[FORMAT] - -max-line-length=80 - [MESSAGES CONTROL] disable=abstract-class-not-used,bad-continuation,bad-indentation,duplicate-code,fixme,invalid-name,locally-disabled,locally-enabled,missing-docstring,star-args,too-few-public-methods,too-many-arguments,too-many-branches,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-statements, diff --git a/build/android/setup.gyp b/build/android/setup.gyp index 0ef0531..419ed98 100644 --- a/build/android/setup.gyp +++ b/build/android/setup.gyp @@ -42,7 +42,6 @@ 'action': [ 'python', 'gyp/get_device_configuration.py', '--output=<(build_device_config_path)', - '--output-directory=<(PRODUCT_DIR)', ], } ], diff --git a/build/android/test_runner.py b/build/android/test_runner.py index d8828a2..dc683cb 100755 --- a/build/android/test_runner.py +++ b/build/android/test_runner.py @@ -16,8 +16,6 @@ import sys import threading import unittest -import devil_chromium - from devil import base_error from devil.android import apk_helper from devil.android import device_blacklist @@ -49,10 +47,6 @@ from pylib.results import json_results from pylib.results import report_results -_DEVIL_STATIC_CONFIG_FILE = os.path.abspath(os.path.join( - constants.DIR_SOURCE_ROOT, 'build', 'android', 'devil_config.json')) - - def AddCommonOptions(parser): """Adds all common options to |parser|.""" @@ -117,9 +111,6 @@ def ProcessCommonOptions(args): constants.SetOutputDirectory(args.output_directory) if args.adb_path: constants.SetAdbPath(args.adb_path) - - devil_chromium.Initialize(output_directory=constants.GetOutDirectory()) - # Some things such as Forwarder require ADB to be in the environment path. adb_dir = os.path.dirname(constants.GetAdbPath()) if adb_dir and adb_dir not in os.environ['PATH'].split(os.pathsep): diff --git a/build/android/tombstones.py b/build/android/tombstones.py index 1dd2739..c961d75 100755 --- a/build/android/tombstones.py +++ b/build/android/tombstones.py @@ -18,8 +18,6 @@ import subprocess import sys import optparse -import devil_chromium - from devil.android import device_blacklist from devil.android import device_errors from devil.android import device_utils @@ -240,8 +238,6 @@ def main(): if options.blacklist_file else None) - devil_chromium.Initialize() - if options.device: devices = [device_utils.DeviceUtils(options.device)] else: diff --git a/build/java_apk.gypi b/build/java_apk.gypi index aa7fbf0..174ec4d 100644 --- a/build/java_apk.gypi +++ b/build/java_apk.gypi @@ -542,7 +542,6 @@ '--apk=<(incomplete_apk_path)', '--stamp=<(link_stamp)', '--configuration-name=<(CONFIGURATION_NAME)', - '--output-directory=<(PRODUCT_DIR)', ], }, ], @@ -690,7 +689,6 @@ '--install-record=<(apk_install_record)', '--configuration-name=<(CONFIGURATION_NAME)', '--android-sdk-tools', '<(android_sdk_tools)', - '--output-directory', '<(PRODUCT_DIR)', ], 'conditions': [ ['create_abi_split == 1', { diff --git a/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py b/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py index e925d1a..9e1de84 100644 --- a/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py +++ b/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py @@ -89,6 +89,8 @@ class DependencyManager(object): """ dependency_info = self._GetDependencyInfo(dependency, platform) if not dependency_info: + logging.error( + 'The dependency_manager was not initialized with the dependency.') if not try_support_binaries: raise exceptions.NoPathFoundError(dependency, platform) # TODO(aiolos): Remove the support_binaries call and always raise @@ -139,6 +141,8 @@ class DependencyManager(object): # system. dependency_info = self._GetDependencyInfo(dependency, platform) if not dependency_info: + logging.error( + 'The dependency_manager was not initialized with the dependency.') if not try_support_binaries: raise exceptions.NoPathFoundError(dependency, platform) return support_binaries.FindLocallyBuiltPath(dependency) diff --git a/tools/telemetry/telemetry/internal/util/binary_manager.py b/tools/telemetry/telemetry/internal/util/binary_manager.py index fb89615..e277b70 100644 --- a/tools/telemetry/telemetry/internal/util/binary_manager.py +++ b/tools/telemetry/telemetry/internal/util/binary_manager.py @@ -10,7 +10,6 @@ import os from catapult_base import dependency_manager from telemetry.core import exceptions from telemetry.core import util -from devil import devil_env TELEMETRY_PROJECT_CONFIG = os.path.join( @@ -35,8 +34,6 @@ def InitDependencyManager(environment_config): configs.insert(0, dependency_manager.BaseConfig(environment_config)) _dependency_manager = dependency_manager.DependencyManager(configs) - devil_env.config.Initialize() - def FetchPath(binary_name, arch, platform): """ Return a path to the appropriate executable for <binary_name>, downloading |