summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorKiall Mac Innes <kiall@hp.com>2014-04-11 14:02:20 +0100
committerKiall Mac Innes <kiall@hp.com>2014-04-11 14:12:31 +0100
commite9975b12d07586a301a7468cc4436b272d3fa227 (patch)
treea6b1d47467868af66d84c051072bb7b10d6749f0 /tools
parent1b08ed599cc1a69d5891a28ebba1503809910e4f (diff)
downloaddesignate-e9975b12d07586a301a7468cc4436b272d3fa227.tar.gz
Update install_venv from Oslo
Change-Id: I1879787b3ae42ffa6b26f43595429e6cb1bad06f
Diffstat (limited to 'tools')
-rw-r--r--tools/install_venv.py48
-rw-r--r--tools/install_venv_common.py80
-rwxr-xr-xtools/with_venv.sh26
3 files changed, 42 insertions, 112 deletions
diff --git a/tools/install_venv.py b/tools/install_venv.py
index 0bdfd65f..8164e68b 100644
--- a/tools/install_venv.py
+++ b/tools/install_venv.py
@@ -1,11 +1,8 @@
-#!/usr/bin/env python
-# 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 Foundation.
+# Copyright 2010 OpenStack Foundation
# Copyright 2013 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -20,46 +17,45 @@
# License for the specific language governing permissions and limitations
# under the License.
-"""
-Installation script for Designate's development virtualenv
-"""
-
import os
-import subprocess
import sys
-import install_venv_common as install_venv
+import install_venv_common as install_venv # noqa
-def print_help():
+def print_help(venv, root):
help = """
- Designate development environment setup is complete.
-
- Designate development uses virtualenv to track and manage Python dependencies
- while in development and testing.
+ Designate development environment setup is complete.
- To activate the Designate virtualenv for the extent of your current shell
- session you can run:
+ Designate development uses virtualenv to track and manage Python
+ dependencies while in development and testing.
- $ source .venv/bin/activate
+ To activate the Designate virtualenv for the extent of your current shell
+ session you can run:
- Or, if you prefer, you can run commands in the virtualenv on a case by case
- basis by running:
+ $ source %s/bin/activate
- $ tools/with_venv.sh <your command>
+ Or, if you prefer, you can run commands in the virtualenv on a case by case
+ basis by running:
- Also, make test will automatically use the virtualenv.
+ $ %s/tools/with_venv.sh <your command>
"""
- print help
+ print(help % (venv, root))
def main(argv):
root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+
+ if os.environ.get('tools_path'):
+ root = os.environ['tools_path']
venv = os.path.join(root, '.venv')
+ if os.environ.get('venv'):
+ venv = os.environ['venv']
+
pip_requires = os.path.join(root, 'requirements.txt')
test_requires = os.path.join(root, 'test-requirements.txt')
py_version = "python%s.%s" % (sys.version_info[0], sys.version_info[1])
- project = 'designate'
+ project = 'Designate'
install = install_venv.InstallVenv(root, venv, pip_requires, test_requires,
py_version, project)
options = install.parse_args(argv)
@@ -67,9 +63,7 @@ def main(argv):
install.check_dependencies()
install.create_virtualenv(no_site_packages=options.no_site_packages)
install.install_dependencies()
- install.post_process()
- print_help()
-
+ print_help(venv, root)
if __name__ == '__main__':
main(sys.argv)
diff --git a/tools/install_venv_common.py b/tools/install_venv_common.py
index 42a44e8c..46822e32 100644
--- a/tools/install_venv_common.py
+++ b/tools/install_venv_common.py
@@ -1,5 +1,3 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
# Copyright 2013 OpenStack Foundation
# Copyright 2013 IBM Corp.
#
@@ -34,12 +32,13 @@ import sys
class InstallVenv(object):
- def __init__(self, root, venv, pip_requires, test_requires, py_version,
+ def __init__(self, root, venv, requirements,
+ test_requirements, py_version,
project):
self.root = root
self.venv = venv
- self.pip_requires = pip_requires
- self.test_requires = test_requires
+ self.requirements = requirements
+ self.test_requirements = test_requirements
self.py_version = py_version
self.project = project
@@ -75,11 +74,13 @@ class InstallVenv(object):
def get_distro(self):
if (os.path.exists('/etc/fedora-release') or
os.path.exists('/etc/redhat-release')):
- return Fedora(self.root, self.venv, self.pip_requires,
- self.test_requires, self.py_version, self.project)
+ return Fedora(
+ self.root, self.venv, self.requirements,
+ self.test_requirements, self.py_version, self.project)
else:
- return Distro(self.root, self.venv, self.pip_requires,
- self.test_requires, self.py_version, self.project)
+ return Distro(
+ self.root, self.venv, self.requirements,
+ self.test_requirements, self.py_version, self.project)
def check_dependencies(self):
self.get_distro().install_virtualenv()
@@ -98,11 +99,6 @@ class InstallVenv(object):
else:
self.run_command(['virtualenv', '-q', self.venv])
print('done.')
- print('Installing pip in venv...', end=' ')
- if not self.run_command(['tools/with_venv.sh', 'easy_install',
- 'pip>1.0']).strip():
- self.die("Failed to install pip.")
- print('done.')
else:
print("venv already exists...")
pass
@@ -116,23 +112,12 @@ class InstallVenv(object):
print('Installing dependencies with pip (this can take a while)...')
# First things first, make sure our venv has the latest pip and
- # distribute.
- # NOTE: we keep pip at version 1.1 since the most recent version causes
- # the .venv creation to fail. See:
- # https://bugs.launchpad.net/nova/+bug/1047120
- self.pip_install('pip==1.1')
- self.pip_install('distribute')
-
- # Install greenlet by hand - just listing it in the requires file does
- # not
- # get it installed in the right order
- self.pip_install('greenlet')
-
- self.pip_install('-r', self.pip_requires)
- self.pip_install('-r', self.test_requires)
+ # setuptools and pbr
+ self.pip_install('pip>=1.4')
+ self.pip_install('setuptools')
+ self.pip_install('pbr')
- def post_process(self):
- self.get_distro().post_process()
+ self.pip_install('-r', self.requirements, '-r', self.test_requirements)
def parse_args(self, argv):
"""Parses command-line arguments."""
@@ -166,14 +151,6 @@ class Distro(InstallVenv):
' requires virtualenv, please install it using your'
' favorite package management tool' % self.project)
- def post_process(self):
- """Any distribution-specific post-processing gets done here.
-
- In particular, this is useful for applying patches to code inside
- the venv.
- """
- pass
-
class Fedora(Distro):
"""This covers all Fedora-based distributions.
@@ -185,10 +162,6 @@ class Fedora(Distro):
return self.run_command_with_code(['rpm', '-q', pkg],
check_exit_code=False)[1] == 0
- def apply_patch(self, originalfile, patchfile):
- self.run_command(['patch', '-N', originalfile, patchfile],
- check_exit_code=False)
-
def install_virtualenv(self):
if self.check_cmd('virtualenv'):
return
@@ -197,26 +170,3 @@ class Fedora(Distro):
self.die("Please install 'python-virtualenv'.")
super(Fedora, self).install_virtualenv()
-
- def post_process(self):
- """Workaround for a bug in eventlet.
-
- This currently affects RHEL6.1, but the fix can safely be
- applied to all RHEL and Fedora distributions.
-
- This can be removed when the fix is applied upstream.
-
- Nova: https://bugs.launchpad.net/nova/+bug/884915
- Upstream: https://bitbucket.org/eventlet/eventlet/issue/89
- RHEL: https://bugzilla.redhat.com/958868
- """
-
- # Install "patch" program if it's not there
- if not self.check_pkg('patch'):
- self.die("Please install 'patch'.")
-
- # Apply the eventlet patch
- self.apply_patch(os.path.join(self.venv, 'lib', self.py_version,
- 'site-packages',
- 'eventlet/green/subprocess.py'),
- 'contrib/redhat-eventlet.patch')
diff --git a/tools/with_venv.sh b/tools/with_venv.sh
index 5c4a271e..7303990b 100755
--- a/tools/with_venv.sh
+++ b/tools/with_venv.sh
@@ -1,21 +1,7 @@
#!/bin/bash
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2011 OpenStack Foundation.
-# All Rights Reserved.
-#
-# 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.
-
-TOOLS=`dirname $0`
-VENV=$TOOLS/../.venv
-source $VENV/bin/activate && $@
+TOOLS_PATH=${TOOLS_PATH:-$(dirname $0)}
+VENV_PATH=${VENV_PATH:-${TOOLS_PATH}}
+VENV_DIR=${VENV_NAME:-/../.venv}
+TOOLS=${TOOLS_PATH}
+VENV=${VENV:-${VENV_PATH}/${VENV_DIR}}
+source ${VENV}/bin/activate && "$@"