summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaypipes@gmail.com <>2010-08-10 12:44:38 -0400
committerjaypipes@gmail.com <>2010-08-10 12:44:38 -0400
commit8c7558ed5ae7dd0b78a91a385dbd9b044ec7c8db (patch)
treed19bf216f184b0e7b84dc0bbb53f4a450020f8af
parente1199140315e7cc85249820e92ab8b7998e50ae2 (diff)
downloadnova-8c7558ed5ae7dd0b78a91a385dbd9b044ec7c8db.tar.gz
nova-8c7558ed5ae7dd0b78a91a385dbd9b044ec7c8db.tar.xz
nova-8c7558ed5ae7dd0b78a91a385dbd9b044ec7c8db.zip
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. Running run_tests.sh should not just work out of the box on all systems supporting easy_install...
-rwxr-xr-xrun_tests.sh7
-rw-r--r--tools/install_venv.py59
2 files changed, 47 insertions, 19 deletions
diff --git a/run_tests.sh b/run_tests.sh
index 9b2de7aea..85d7c8834 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -6,8 +6,7 @@ with_venv=tools/with_venv.sh
if [ -e ${venv} ]; then
${with_venv} python run_tests.py $@
else
- echo "You need to install the Nova virtualenv before you can run this."
- echo ""
- echo "Please run tools/install_venv.py"
- exit 1
+ echo "No virtual environment found...creating one"
+ python tools/install_venv.py
+ ${with_venv} python run_tests.py $@
fi
diff --git a/tools/install_venv.py b/tools/install_venv.py
index 0b35fc8e9..adf24b365 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,14 @@ 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:
@@ -32,33 +51,43 @@ def run_command(cmd, redirect_output=True, error_ok=False):
die('Command "%s" failed.\n%s', ' '.join(cmd), output)
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:
+ if not run_command(['which', 'easy_install']):
+ print 'Installing virtualenv via 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)