Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: chromite

Issue 6299018: Add chromite wrapper to depot_tools.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:executable
+ *
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright (c) 2011 The Chromium OS 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
6 """Wrapper for the chromite shell.
7
8 This script is intended to run in several ways:
9 - Outside the chroot, it should be _copied_ to someplace that is in the
10 path (like depot_tools). It will search for the right chromite by looking
11 for a file 'chromite/shell/main.py' upward based on the CWD.
12 - Inside the chroot, it might be _either_ copied to someplace in the path (since
13 depot_tools is in the path in the chroot) or it might run from chromite/bin
14 directly, which should be in the PATH. In any case, we'll look for the
15 real 'chromite/shell/main.py' based on the environment variable
16 CROS_WORKON_SRCROOT, so it doesn't matter what the CWD is.
17
18 If you're looking at a copy and want to know where the original looks at, look
19 here:
20 http://git.chromium.org/gitweb/?p=chromite.git;a=blob;f=bin/chromite
21
22 Since this script is _copied_, it should remain small and not use internal libs.
23 """
24
25 # Python imports.
26 import os
27 import sys
28
29 if __name__ == '__main__':
30 # Look relative to CROS_WORKON_SRCROOT if that variable exists. This is
31 # the "inside the chroot" case.
32 if 'CROS_WORKON_SRCROOT' in os.environ:
33 chromite_path = os.path.join(os.environ['CROS_WORKON_SRCROOT'],
34 'chromite', 'shell', 'main.py')
35 if os.path.isfile(chromite_path):
36 # Exec the script, which will never return.
37 os.execv(chromite_path, sys.argv)
38 else:
39 print (
40 "ERROR: Couldn't find the chromite tool.\n"
41 "\n"
42 "You may need to update your chroot. If you need help, see:\n"
43 " http://www.chromium.org/chromium-os/developer-guide"
44 )
45 sys.exit(1)
46
47 # Outside the chroot, search upward until the "parent" dir doesn't change
48 # (on Linux, that means we're at '/'). That is an error case.
49 dir = os.getcwd()
50 prev_dir = None
51 while dir != prev_dir:
52 chromite_path = os.path.join(dir, 'chromite', 'shell', 'main.py')
53 if os.path.isfile(chromite_path):
54 # Add the directory above chromite to PYTHONPATH before executing, so
55 # that "import chromite.abc.xyz" works...
56 env = os.environ.copy()
57 if 'PYTHONPATH' in env:
58 env['PYTHONPATH'] += ':%s' % dir
59 else:
60 env['PYTHONPATH'] = dir
61
62 # Exec the script, which will never return.
63 os.execve(chromite_path, sys.argv, env)
64
65 prev_dir = dir
66 dir = os.path.dirname(dir)
67
68 # TODO(dianders): Should we actually print out the 'repo init' call that
69 # the user should use?
70 print (
71 "ERROR: Couldn't find the chromite tool.\n"
72 "\n"
73 "Please change to a directory inside your Chromium OS source tree\n"
74 "and retry. If you need to setup a Chromium OS source tree, see:\n"
75 " http://www.chromium.org/chromium-os/developer-guide"
76 )
77 sys.exit(1)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698