diff options
| author | Justin Santa Barbara <justin@fathomdb.com> | 2010-08-18 22:14:24 +0100 |
|---|---|---|
| committer | Justin Santa Barbara <justin@fathomdb.com> | 2010-08-18 22:14:24 +0100 |
| commit | d8f8d121a00173cb3f5fb5e496cc010dc179cf19 (patch) | |
| tree | 79ae8953421d065a13309ae5052a0faaee94b485 /tools | |
| parent | 993563b6cc9db9f24480678cf8b2d0750aee7a92 (diff) | |
| parent | 2af3bad97be40c135fb73f2e595e7fda86f17900 (diff) | |
Merged with trunk
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/install_venv.py | 79 | ||||
| -rw-r--r-- | tools/pip-requires | 5 |
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 |
