summaryrefslogtreecommitdiff
path: root/tools/install_venv.py
diff options
context:
space:
mode:
authorjaypipes@gmail.com <>2010-08-11 02:02:17 +0000
committerTarmac <>2010-08-11 02:02:17 +0000
commit49e5701d23f4a474dedfb8fbca3c1620b4d96699 (patch)
treef5ff8445b32c1cef4d4ca8775acfa64230b1dfed /tools/install_venv.py
parent21d0023d70e88d0a707caed841c876cafd2b9c0d (diff)
parentf5695429db27110d8a95df3b66e4045c59d88c6a (diff)
downloadnova-49e5701d23f4a474dedfb8fbca3c1620b4d96699.tar.gz
Changes the run_tests.sh and /tools/install_venv.py scripts to be
more user-friendly and not depend on PIP while not in the virtual environment.
Diffstat (limited to 'tools/install_venv.py')
-rw-r--r--tools/install_venv.py60
1 files changed, 46 insertions, 14 deletions
diff --git a/tools/install_venv.py b/tools/install_venv.py
index 96bb12efb1..e1a270638d 100644
--- a/tools/install_venv.py
+++ b/tools/install_venv.py
@@ -1,3 +1,23 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+# Copyright 2010 OpenStack, LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
"""
Installation script for Nova's development virtualenv
"""
@@ -12,15 +32,15 @@ VENV = os.path.join(ROOT, '.nova-venv')
PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires')
TWISTED_NOVA='http://nova.openstack.org/Twisted-10.0.0Nova.tar.gz'
-
def die(message, *args):
print >>sys.stderr, message % args
sys.exit(1)
def run_command(cmd, redirect_output=True, error_ok=False):
- # Useful for debugging:
- #print >>sys.stderr, ' '.join(cmd)
+ """Runs a command in an out-of-process shell, returning the
+ output of that command
+ """
if redirect_output:
stdout = subprocess.PIPE
else:
@@ -33,32 +53,44 @@ def run_command(cmd, redirect_output=True, error_ok=False):
return output
+HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install']).strip())
+HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv']).strip())
+
+
def check_dependencies():
- """Make sure pip and virtualenv are on the path."""
- print 'Checking for pip...',
- if not run_command(['which', 'pip']).strip():
- die('ERROR: pip not found.\n\nNova development requires pip,'
- ' please install it using your favorite package management tool')
- print 'done.'
+ """Make sure virtualenv is in the path."""
print 'Checking for virtualenv...',
- if not run_command(['which', 'virtualenv']).strip():
- die('ERROR: virtualenv not found.\n\nNova development requires virtualenv,'
- ' please install it using your favorite package management tool')
+ if not HAS_VIRTUALENV:
+ print 'not found.'
+ # Try installing it via easy_install...
+ if HAS_EASY_INSTALL:
+ print 'Installing virtualenv via easy_install...',
+ if not run_command(['which', 'easy_install']):
+ die('ERROR: virtualenv not found.\n\nNova development requires virtualenv,'
+ ' please install it using your favorite package management tool')
+ print 'done.'
print 'done.'
def create_virtualenv(venv=VENV):
+ """Creates the virtual environment and installs PIP only into the
+ virtual environment
+ """
print 'Creating venv...',
run_command(['virtualenv', '-q', '--no-site-packages', VENV])
print 'done.'
+ print 'Installing pip in virtualenv...',
+ if not run_command(['tools/with_venv.sh', 'easy_install', 'pip']).strip():
+ die("Failed to install pip.")
+ print 'done.'
def install_dependencies(venv=VENV):
print 'Installing dependencies with pip (this can take a while)...'
- run_command(['pip', 'install', '-E', venv, '-r', PIP_REQUIRES],
+ run_command(['tools/with_venv.sh', 'pip', 'install', '-E', venv, '-r', PIP_REQUIRES],
redirect_output=False)
- run_command(['pip', 'install', '-E', venv, TWISTED_NOVA],
+ run_command(['tools/with_venv.sh', 'pip', 'install', '-E', venv, TWISTED_NOVA],
redirect_output=False)