Index: chromite |
=================================================================== |
--- chromite (revision 0) |
+++ chromite (revision 0) |
@@ -0,0 +1,77 @@ |
+#!/usr/bin/python |
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""Wrapper for the chromite shell. |
+ |
+This script is intended to run in several ways: |
+- Outside the chroot, it should be _copied_ to someplace that is in the |
+ path (like depot_tools). It will search for the right chromite by looking |
+ for a file 'chromite/shell/main.py' upward based on the CWD. |
+- Inside the chroot, it might be _either_ copied to someplace in the path (since |
+ depot_tools is in the path in the chroot) or it might run from chromite/bin |
+ directly, which should be in the PATH. In any case, we'll look for the |
+ real 'chromite/shell/main.py' based on the environment variable |
+ CROS_WORKON_SRCROOT, so it doesn't matter what the CWD is. |
+ |
+If you're looking at a copy and want to know where the original looks at, look |
+here: |
+ http://git.chromium.org/gitweb/?p=chromite.git;a=blob;f=bin/chromite |
+ |
+Since this script is _copied_, it should remain small and not use internal libs. |
+""" |
+ |
+# Python imports. |
+import os |
+import sys |
+ |
+if __name__ == '__main__': |
+ # Look relative to CROS_WORKON_SRCROOT if that variable exists. This is |
+ # the "inside the chroot" case. |
+ if 'CROS_WORKON_SRCROOT' in os.environ: |
+ chromite_path = os.path.join(os.environ['CROS_WORKON_SRCROOT'], |
+ 'chromite', 'shell', 'main.py') |
+ if os.path.isfile(chromite_path): |
+ # Exec the script, which will never return. |
+ os.execv(chromite_path, sys.argv) |
+ else: |
+ print ( |
+ "ERROR: Couldn't find the chromite tool.\n" |
+ "\n" |
+ "You may need to update your chroot. If you need help, see:\n" |
+ " http://www.chromium.org/chromium-os/developer-guide" |
+ ) |
+ sys.exit(1) |
+ |
+ # Outside the chroot, search upward until the "parent" dir doesn't change |
+ # (on Linux, that means we're at '/'). That is an error case. |
+ dir = os.getcwd() |
+ prev_dir = None |
+ while dir != prev_dir: |
+ chromite_path = os.path.join(dir, 'chromite', 'shell', 'main.py') |
+ if os.path.isfile(chromite_path): |
+ # Add the directory above chromite to PYTHONPATH before executing, so |
+ # that "import chromite.abc.xyz" works... |
+ env = os.environ.copy() |
+ if 'PYTHONPATH' in env: |
+ env['PYTHONPATH'] += ':%s' % dir |
+ else: |
+ env['PYTHONPATH'] = dir |
+ |
+ # Exec the script, which will never return. |
+ os.execve(chromite_path, sys.argv, env) |
+ |
+ prev_dir = dir |
+ dir = os.path.dirname(dir) |
+ |
+ # TODO(dianders): Should we actually print out the 'repo init' call that |
+ # the user should use? |
+ print ( |
+ "ERROR: Couldn't find the chromite tool.\n" |
+ "\n" |
+ "Please change to a directory inside your Chromium OS source tree\n" |
+ "and retry. If you need to setup a Chromium OS source tree, see:\n" |
+ " http://www.chromium.org/chromium-os/developer-guide" |
+ ) |
+ sys.exit(1) |
Property changes on: chromite |
___________________________________________________________________ |
Added: svn:executable |
+ * |