1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Copyright 2015 The Chromium Authors. All rights reserved. 2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Use of this source code is governed by a BSD-style license that can be 3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# found in the LICENSE file. 4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezimport os 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom devil import devil_env 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom devil.utils import lazy 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezwith devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH): 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez import dependency_manager # pylint: disable=import-error 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef GetPath(build_tool): 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez try: 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return devil_env.config.LocalPath(build_tool) 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez except dependency_manager.NoPathFoundError: 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez pass 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez try: 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return _PathInLocalSdk(build_tool) 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez except dependency_manager.NoPathFoundError: 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez pass 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return devil_env.config.FetchPath(build_tool) 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef _PathInLocalSdk(build_tool): 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez build_tools_path = _build_tools_path.read() 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return (os.path.join(build_tools_path, build_tool) if build_tools_path 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez else None) 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef _FindBuildTools(): 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez android_sdk_path = devil_env.config.LocalPath('android_sdk') 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if not android_sdk_path: 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return None 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez build_tools_contents = os.listdir( 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez os.path.join(android_sdk_path, 'build-tools')) 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if not build_tools_contents: 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return None 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez else: 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if len(build_tools_contents) > 1: 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez build_tools_contents.sort() 47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return os.path.join(android_sdk_path, 'build-tools', 48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez build_tools_contents[-1]) 49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 51645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez_build_tools_path = lazy.WeakConstant(_FindBuildTools) 52