Index: support/chromite_wrapper |
diff --git a/support/chromite_wrapper b/support/chromite_wrapper |
index f459b2c6457081af33e96dd57bc3a586bf919b6d..dd2e1d133ddc7937be9c7f363b26439cf33391b2 100755 |
--- a/support/chromite_wrapper |
+++ b/support/chromite_wrapper |
@@ -29,15 +29,21 @@ import sys |
# fallback code- any/all new scripts symlinked to this script *must* exist |
# in chromite/bin/ . |
-def _FindRoot(path): |
- """Find the root of a repo checkout""" |
+def _FindChromite(path): |
+ """Find the chromite dir in a repo or gclient checkout.""" |
path = os.path.abspath(path) |
+ # Depending on the checkout type (whether repo chromeos or gclient chrome) |
+ # Chromite lives in a different location. |
+ roots = ( |
+ ('.repo', 'chromite/.git'), |
+ ('.gclient', 'src/third_party/chromite/.git'), |
+ ) |
+ |
while path != '/': |
- # Look for the chromite repository itself- it's always been at the root |
- # of a repo checkout. |
- if all(os.path.exists(os.path.join(path, x)) |
- for x in ['.repo', 'chromite/.git']): |
- return path |
+ for root, chromite_git_dir in roots: |
+ if all(os.path.exists(os.path.join(path, x)) |
+ for x in [root, chromite_git_dir]): |
+ return os.path.dirname(os.path.join(path, chromite_git_dir)) |
path = os.path.dirname(path) |
return None |
@@ -54,12 +60,12 @@ and retry. If you need to setup a Chromium OS source tree, see |
def main(): |
- root = _FindRoot(os.getcwd()) |
+ chromite_dir = _FindChromite(os.getcwd()) |
target = os.path.basename(sys.argv[0]) |
- if root is None: |
+ if chromite_dir is None: |
return _MissingErrorOut(target) |
- |
- path = os.path.join(root, 'chromite/bin', target) |
+ |
+ path = os.path.join(chromite_dir, 'bin', target) |
try: |
os.execv(path, [path] + sys.argv[1:]) |
except EnvironmentError, e: |
@@ -70,14 +76,14 @@ def main(): |
# an old (pre 6be2efcf5bb575b03862113eec097c44d8d7f93e) revision of |
# chromite. Fallback to trying to import it; this code works at least as |
# far back as branch 0.11.241.B; likely further. |
- |
+ |
if target == 'cbuildbot': |
target = 'chromite.buildbot.cbuildbot' |
else: |
target = 'chromite.bin.%s' % (target,) |
# Adjust the path importation so we can import our our target. |
- sys.path.insert(0, root) |
+ sys.path.insert(0, os.path.dirname(chromite_dir)) |
try: |
module = __import__(target, fromlist=['main']) |