| #!/usr/bin/env python3 |
| # Copyright 2011 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Small utility function to find depot_tools and add it to the python path. |
| |
| Will throw an ImportError exception if depot_tools can't be found since it |
| imports breakpad. |
| |
| This can also be used as a standalone script to print out the depot_tools |
| directory location. |
| """ |
| |
| |
| import os |
| import sys |
| |
| |
| # Path to //src |
| SRC= os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) |
| |
| |
| defIsRealDepotTools(path): |
| expanded_path= os.path.expanduser(path) |
| return os.path.isfile(os.path.join(expanded_path,'gclient.py')) |
| |
| |
| def add_depot_tools_to_path(): |
| """Search for depot_tools and add it to sys.path.""" |
| # First, check if we have a DEPS'd in "depot_tools". |
| deps_depot_tools= os.path.join(SRC,'third_party','depot_tools') |
| ifIsRealDepotTools(deps_depot_tools): |
| # Put the pinned version at the start of the sys.path, in case there |
| # are other non-pinned versions already on the sys.path. |
| sys.path.insert(0, deps_depot_tools) |
| return deps_depot_tools |
| |
| # Then look if depot_tools is already in PYTHONPATH. |
| for iin sys.path: |
| if i.rstrip(os.sep).endswith('depot_tools')andIsRealDepotTools(i): |
| return i |
| # Then look if depot_tools is in PATH, common case. |
| for iin os.environ['PATH'].split(os.pathsep): |
| ifIsRealDepotTools(i): |
| sys.path.append(i.rstrip(os.sep)) |
| return i |
| # Rare case, it's not even in PATH, look upward up to root. |
| root_dir= os.path.dirname(os.path.abspath(__file__)) |
| previous_dir= os.path.abspath(__file__) |
| while root_dirand root_dir!= previous_dir: |
| i= os.path.join(root_dir,'depot_tools') |
| ifIsRealDepotTools(i): |
| sys.path.append(i) |
| return i |
| previous_dir= root_dir |
| root_dir= os.path.dirname(root_dir) |
| print('Failed to find depot_tools', file=sys.stderr) |
| returnNone |
| |
| DEPOT_TOOLS_PATH= add_depot_tools_to_path() |
| |
| # pylint: disable=W0611 |
| import breakpad |
| |
| |
| def main(): |
| if DEPOT_TOOLS_PATHisNone: |
| return1 |
| print(DEPOT_TOOLS_PATH) |
| return0 |
| |
| |
| if __name__=='__main__': |
| sys.exit(main()) |