blob: 5c496e7c79ef33819c96c1f079d52a628b794c07 [file] [log] [blame]
mcgrathr3ffcc862015-10-27 07:07:51 +09001#!/usr/bin/env python
2# Copyright (c) 2011 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5"""Small utility function to find depot_tools and add it to the python path.
6
7Will throw an ImportError exception if depot_tools can't be found since it
8imports breakpad.
9
10This can also be used as a standalone script to print out the depot_tools
11directory location.
12"""
13
14import os
15import sys
16
17
Dan Jacquesdbf5f8d2017-06-03 08:59:16 +090018# Path to //src
19SRC = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
20
21
mcgrathr3ffcc862015-10-27 07:07:51 +090022def IsRealDepotTools(path):
cco3ffc2dd32017-05-23 02:03:27 +090023 expanded_path = os.path.expanduser(path)
24 return os.path.isfile(os.path.join(expanded_path, 'gclient.py'))
mcgrathr3ffcc862015-10-27 07:07:51 +090025
26
27def add_depot_tools_to_path():
28 """Search for depot_tools and add it to sys.path."""
Dan Jacquesdbf5f8d2017-06-03 08:59:16 +090029 # First, check if we have a DEPS'd in "depot_tools".
30 deps_depot_tools = os.path.join(SRC, 'third_party', 'depot_tools')
31 if IsRealDepotTools(deps_depot_tools):
Mike Bjorge9783fdc2017-10-11 06:36:39 +090032 # Put the pinned version at the start of the sys.path, in case there
33 # are other non-pinned versions already on the sys.path.
34 sys.path.insert(0, deps_depot_tools)
Dan Jacquesdbf5f8d2017-06-03 08:59:16 +090035 return deps_depot_tools
36
37 # Then look if depot_tools is already in PYTHONPATH.
mcgrathr3ffcc862015-10-27 07:07:51 +090038 for i in sys.path:
39 if i.rstrip(os.sep).endswith('depot_tools') and IsRealDepotTools(i):
40 return i
41 # Then look if depot_tools is in PATH, common case.
42 for i in os.environ['PATH'].split(os.pathsep):
43 if IsRealDepotTools(i):
44 sys.path.append(i.rstrip(os.sep))
45 return i
46 # Rare case, it's not even in PATH, look upward up to root.
47 root_dir = os.path.dirname(os.path.abspath(__file__))
48 previous_dir = os.path.abspath(__file__)
49 while root_dir and root_dir != previous_dir:
50 i = os.path.join(root_dir, 'depot_tools')
51 if IsRealDepotTools(i):
52 sys.path.append(i)
53 return i
54 previous_dir = root_dir
55 root_dir = os.path.dirname(root_dir)
56 print >> sys.stderr, 'Failed to find depot_tools'
57 return None
58
59DEPOT_TOOLS_PATH = add_depot_tools_to_path()
60
61# pylint: disable=W0611
62import breakpad
63
64
65def main():
66 if DEPOT_TOOLS_PATH is None:
67 return 1
68 print DEPOT_TOOLS_PATH
69 return 0
70
71
72if __name__ == '__main__':
73 sys.exit(main())