summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJustin Santa Barbara <justin@fathomdb.com>2010-08-18 22:14:24 +0100
committerJustin Santa Barbara <justin@fathomdb.com>2010-08-18 22:14:24 +0100
commitd8f8d121a00173cb3f5fb5e496cc010dc179cf19 (patch)
tree79ae8953421d065a13309ae5052a0faaee94b485 /tools
parent993563b6cc9db9f24480678cf8b2d0750aee7a92 (diff)
parent2af3bad97be40c135fb73f2e595e7fda86f17900 (diff)
Merged with trunk
Diffstat (limited to 'tools')
-rw-r--r--tools/install_venv.py79
-rw-r--r--tools/pip-requires5
2 files changed, 62 insertions, 22 deletions
diff --git a/tools/install_venv.py b/tools/install_venv.py
index 3cff8051d..a9154fc33 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
"""
@@ -7,64 +27,79 @@ import subprocess
import sys
-ROOT = os.path.dirname(os.path.dirname(__file__))
+ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
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, check_exit_code=True):
- # Useful for debugging:
- #print >>sys.stderr, ' '.join(cmd)
+def run_command(cmd, redirect_output=True, check_exit_code=False):
+ """
+ Runs a command in an out-of-process shell, returning the
+ output of that command. Working directory is ROOT.
+ """
if redirect_output:
stdout = subprocess.PIPE
else:
stdout = None
- proc = subprocess.Popen(cmd, stdout=stdout)
+ proc = subprocess.Popen(cmd, cwd=ROOT, stdout=stdout)
output = proc.communicate()[0]
if check_exit_code and proc.returncode != 0:
die('Command "%s" failed.\n%s', ' '.join(cmd), output)
return output
-def check_dependencies():
- """Make sure pip and virtualenv are on the path."""
- # Perl also has a pip program. Hopefully the user has installed the right one!
- print 'Checking for pip...',
- if not run_command(['which', 'pip'], check_exit_code=False).strip():
- die('ERROR: pip not found.\n\nNova development requires pip,'
- ' please install it using your favorite package management tool '
- ' (e.g. "sudo apt-get install python-pip")')
- print 'done.'
+HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install'], check_exit_code=False).strip())
+HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv'], check_exit_code=False).strip())
- print 'Checking for virtualenv...',
- if not run_command(['which', 'virtualenv'], check_exit_code=False).strip():
- die('ERROR: virtualenv not found.\n\nNova development requires virtualenv,'
- ' please install it using your favorite package management tool '
- ' (e.g. "sudo easy_install virtualenv")')
+
+def check_dependencies():
+ """Make sure virtualenv is in the path."""
+
+ 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)
+ # Tell the virtual env how to "import nova"
+ pathfile=os.path.join(venv, "lib", "python2.6", "site-packages", "nova.pth")
+ f=open(pathfile, 'w')
+ f.write("%s\n" % ROOT)
+
+
def print_help():
help = """
Nova development environment setup is complete.
diff --git a/tools/pip-requires b/tools/pip-requires
index 4eb47ca2b..13e8e5f45 100644
--- a/tools/pip-requires
+++ b/tools/pip-requires
@@ -1,14 +1,19 @@
+pep8==0.5.0
+pylint==0.19
IPy==0.70
M2Crypto==0.20.2
amqplib==0.6.1
anyjson==0.2.4
boto==2.0b1
carrot==0.10.5
+eventlet==0.9.10
lockfile==0.8
python-daemon==1.5.5
python-gflags==1.3
redis==2.0.0
+routes==1.12.3
tornado==1.0
+webob==0.9.8
wsgiref==0.1.2
zope.interface==3.6.1
mox==0.5.0