diff options
| author | termie <github@anarkystic.com> | 2011-11-07 14:34:13 -0800 |
|---|---|---|
| committer | termie <github@anarkystic.com> | 2011-11-07 14:34:13 -0800 |
| commit | 2bc437609d0ab1faa2e474f5710665fc427f74f9 (patch) | |
| tree | b1c34b983985f21e07038811fc4bf5d4ab732a44 /tools | |
| parent | d17e1cf533e72d0912eeed76c133357da4b60123 (diff) | |
add run_tests.sh and pep8 stuff
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/install_venv.py | 132 | ||||
| -rw-r--r-- | tools/pip-requires-test | 12 | ||||
| -rwxr-xr-x | tools/with_venv.sh | 4 |
3 files changed, 148 insertions, 0 deletions
diff --git a/tools/install_venv.py b/tools/install_venv.py new file mode 100644 index 00000000..c2489f29 --- /dev/null +++ b/tools/install_venv.py @@ -0,0 +1,132 @@ +# 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 2011 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. + +""" +virtualenv installation script +""" + +import os +import subprocess +import sys + + +ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +VENV = os.path.join(ROOT, '.ksl-venv') +PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires-test') +PY_VERSION = "python%s.%s" % (sys.version_info[0], sys.version_info[1]) + + +def die(message, *args): + print >>sys.stderr, message % args + sys.exit(1) + + +def check_python_version(): + if sys.version_info < (2, 6): + die("Need Python Version >= 2.6") + + +def run_command(cmd, redirect_output=True, check_exit_code=True): + """ + 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, 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 + + +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()) + + +def check_dependencies(): + """Make sure virtualenv is in the path.""" + + print 'Checking for virtualenv...' + 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']) and + run_command(['easy_install', 'virtualenv'])): + 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(['tools/with_venv.sh', 'pip', 'install', '-E', venv, '-r', + PIP_REQUIRES], redirect_output=False) + + +def print_help(): + help = """ + Virtual environment configuration complete. + + To activate the virtualenv for the extent of your current shell + session you can run: + + $ source %s/bin/activate + + Or, if you prefer, you can run commands in the virtualenv on a case by case + basis by running: + + $ tools/with_venv.sh <your command> + + """ % VENV + print help + + +def main(argv): + check_python_version() + check_dependencies() + create_virtualenv() + install_dependencies() + print_help() + +if __name__ == '__main__': + main(sys.argv) diff --git a/tools/pip-requires-test b/tools/pip-requires-test index 769396eb..257c0f7e 100644 --- a/tools/pip-requires-test +++ b/tools/pip-requires-test @@ -1,2 +1,14 @@ +# keystonelight dependencies +pam==0.1.4 +WebOb==0.9.8 +eventlet==0.9.12 +PasteDeploy +paste +routes + +# keystonelight testing dependencies +nose + # for python-keystoneclient httplib2 +pep8 diff --git a/tools/with_venv.sh b/tools/with_venv.sh new file mode 100755 index 00000000..0ed2ef72 --- /dev/null +++ b/tools/with_venv.sh @@ -0,0 +1,4 @@ +#!/bin/bash +TOOLS=`dirname $0` +VENV=$TOOLS/../.ksl-venv +source $VENV/bin/activate && $@ |
