Initial import.
This commit is contained in:
commit
b788389acc
11
README.rst
Normal file
11
README.rst
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Global dependencies for OpenStack Projects
|
||||||
|
|
||||||
|
To use this, run:
|
||||||
|
|
||||||
|
python update.py path/to/project
|
||||||
|
|
||||||
|
Entries in tools/pip-requires and tools/test-requires
|
||||||
|
will have their versions updated to match the entires
|
||||||
|
listed here. Any entries in the target project which
|
||||||
|
do not first exist here will be removed. No entries
|
||||||
|
will be added.
|
58
tools/pip-requires
Normal file
58
tools/pip-requires
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Babel>=0.9.6 # precise=0.9.6,oneiric=0.9.6
|
||||||
|
BeautifulSoup>=3.2,<3.3 # precise=3.2.0,oneiric=3.2.0
|
||||||
|
Cheetah>=2.4.4,<2.4.5 # precise=2.4.4,oneiric=2.4.4
|
||||||
|
Django>=1.4,<1.5 # needs to be packaged for ubuntu
|
||||||
|
MySQL-python>=1.2.3,<1.2.4 # precise=1.2.3,oneiric=1.2.3
|
||||||
|
Paste>=1.7.5.1,<1.7.6 # precise=1.7.5.1,oneiric=1.7.5.1
|
||||||
|
PasteDeploy>=1.5.0,<1.5.1 # precise=1.5.0,oneiric=1.5.0
|
||||||
|
PasteScript>=1.7.3,<1.7.6 # precise=1.7.5.1,oneiric=1.7.3
|
||||||
|
SQLAlchemy>=0.7.3,<0.8 # precise=0.7.4,oneiric=0.6.8
|
||||||
|
WebOb>=1.0.8,<1.2 # precise=1.1,oneiric=1.0.8
|
||||||
|
amqplib>=1.0.0 # precise=1.0.0,oneiric=1.0.0
|
||||||
|
anyjson>=0.3.1,<0.3.2 # precise=0.3.1,oneiric=0.3.1
|
||||||
|
argparse>=1.1,<2 # precise=1.1,oneiric=1.1
|
||||||
|
boto>=2.0,<2.3 # precise=2.2.2,oneiric=2.0
|
||||||
|
carrot>=0.10.7,<0.10.8 # precise=0.10.7,oneiric=0.10.7
|
||||||
|
cliff>=1.0,<2.0 # needs to be pacakged for ubuntu
|
||||||
|
configobj>=4.7.1,<4.7.3 # precise=4.7.2,oneiric=4.7.2
|
||||||
|
django-openstack-auth
|
||||||
|
django-compressor
|
||||||
|
eventlet>=0.9.15,<0.9.17 # precise=0.6.16,oneiric=0.9.15
|
||||||
|
factory_boy # needs to be packaged for ubuntu
|
||||||
|
feedparser>=5.0.1,<5.2 # precise=5.1,oneiric=5.0.1
|
||||||
|
greenlet>=0.3.1,<0.4 # precise=0.3.1,oneiric=0.3.1
|
||||||
|
glance>=2011.3.1
|
||||||
|
httplib2>=0.7.2 # precise=0.7.2,oneiric=0.7.2
|
||||||
|
iso8601>=0.1.4 # precise==0.1.4,oneiric=0.1.4
|
||||||
|
jsonschema # need to be packaged for ubuntu
|
||||||
|
kombu>=1.0.4,<1.4.4 # precise==1.4.3,oneiric=1.0.4
|
||||||
|
lockfile>=0.8,<0.9 # precise=0.8,oneiric=0.8
|
||||||
|
lxml>=2.3,<2.4 # precise=2.3.2,oneiric=2.3
|
||||||
|
netaddr>=0.7.5,<0.8 # precise=0.7.5,oneiric=0.7.5
|
||||||
|
netifaces>=0.5,<0.7 # precise=0.6,oneiric=0.5
|
||||||
|
numpy>=1.5.1,<1.6.2 # precise=1.6.1,oneiric=1.5.1
|
||||||
|
pam==0.1.4 # needs to be packaged for ubuntu
|
||||||
|
paramiko>=1.7.7.1 # precise=1.7.7.1,oneiric=1.7.7.1
|
||||||
|
passlib>=1.5.2,<1.6 # precise=1.5.3,oneiric=1.5.2
|
||||||
|
prettytable>=0.6,0.7 # precise=0.5,oneiric=0.5
|
||||||
|
py-bcrypt>=0.1,<0.2 # precise=0.1,oneiric=0.1
|
||||||
|
pycrypto>=2.3 # precise=2.4.1,oneiric=2.3
|
||||||
|
pysendfile==2.0.0 # needs to be packaged for ubuntu
|
||||||
|
pysqlite>=2.6.3,<2.6.4 # precise=2.6.3,oneiric=2.6.3
|
||||||
|
python-cloudfiles
|
||||||
|
python-daemon>=1.5.5,<1.5.6 # precise=1.5.5,oneiric=1.5.5
|
||||||
|
python-dateutil>=1.4.1,<1.6 # precise=1.5,oneiric=1.4.1
|
||||||
|
python-gflags>=1.5.1,<1.6 # precise=1.5.1,oneiric=1.5.1
|
||||||
|
python-glanceclient
|
||||||
|
python-keystoneclient
|
||||||
|
python-novaclient
|
||||||
|
python-swiftclient
|
||||||
|
python-warlock # needs to be packaged for ubuntu
|
||||||
|
pyyaml>=3.10 # precise=3.10,oneiric=3.10
|
||||||
|
routes>=1.12.3,<1.13 # precise=1.12.3,oneiric=1.12.3
|
||||||
|
simplejson>=2.1.6,<2.4 # precise=2.3.2,oneiric=2.1.6
|
||||||
|
sqlalchemy-migrate>=0.7.1,<0.8 # precise=0.7.2,oneiric=0.7.1
|
||||||
|
suds>=0.4,<0.5 # precise=0.4.1,oneiric=0.4.1
|
||||||
|
tempita>=0.5.1,<0.5.2 # precise=0.5.1,oneiric=0.5.1
|
||||||
|
wsgiref>=0.1.2,<0.1.3 # in python>=2.6
|
||||||
|
xattr>=0.6 # precise=0.6.2,oneiric=0.6
|
26
tools/test-requires
Normal file
26
tools/test-requires
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Babel>=0.9.6 # precise=0.9.6,oneiric=0.9.6
|
||||||
|
MySQL-python>=1.2.3,<1.2.4 # precise=1.2.3,oneiric=1.2.3
|
||||||
|
Sphinx>=1.1.2 # required to build documentation
|
||||||
|
coverage # computes code coverage percentages
|
||||||
|
distribute>=0.6.24 # precise=0.6.24,oneiric=0.6.16
|
||||||
|
django-nose>=0.1.2 # precise=0.1.3,oneiric=0.1.2
|
||||||
|
eventlet>=0.9.15,<0.9.17 # precise=0.6.16,oneiric=0.9.15
|
||||||
|
httplib2>=0.7.2 # precise=0.7.2,oneiric=0.7.2
|
||||||
|
iso8601>=0.1.4 # precise==0.1.4,oneiric=0.1.4
|
||||||
|
mock>=0.7.1 # precise=0.7.2,oneiric=0.7.1
|
||||||
|
mox>=0.5.3 # precise=0.5.3,oneiric=0.5.3
|
||||||
|
netaddr>=0.7.5,<0.8 # precise=0.7.5,oneiric=0.7.5
|
||||||
|
netifaces>=0.5,<0.7 # precise=0.6,oneiric=0.5
|
||||||
|
nose # for test discovery and console feedback
|
||||||
|
nose-exclude # needs to be packaged for ubuntu
|
||||||
|
nosexcover>=1.0.7 # precise=1.0.7
|
||||||
|
openstack.nose_plugin>=0.7
|
||||||
|
prettytable>=0.5 # precise=0.5,oneiric=0.5
|
||||||
|
python-keystoneclient
|
||||||
|
python-ldap==2.3.13 # authenticate against an existing LDAP server
|
||||||
|
python-memcached
|
||||||
|
requests>=0.5.0 # precise=0.8.2,oneiric=0.5.0
|
||||||
|
selenium # needs to be packaged for ubuntu
|
||||||
|
setuptools_git>=0.4 # needs to be packaged for ubuntu
|
||||||
|
unittest2 # precise=0.5.1,oneiric=0.5.1 backport of unittest lib in python 2.7
|
||||||
|
webtest # precise=1.3.3,oneiric=1.2.3 test wsgi apps without starting an http server
|
94
update.py
Normal file
94
update.py
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
# Copyright 2012 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.
|
||||||
|
|
||||||
|
r"""
|
||||||
|
A simple script to update the requirements files from a global set of
|
||||||
|
allowable requirements.
|
||||||
|
|
||||||
|
The script can be called like this:
|
||||||
|
|
||||||
|
$> python update.py ../myproj
|
||||||
|
|
||||||
|
Any requirements listed in the target files will have their versions
|
||||||
|
updated to match the global requirements. Requirements not in the global
|
||||||
|
files will be dropped.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from pip import req
|
||||||
|
|
||||||
|
|
||||||
|
def _mod_to_path(mod):
|
||||||
|
return os.path.join(*mod.split('.'))
|
||||||
|
|
||||||
|
|
||||||
|
def _dest_path(path, base, dest_dir):
|
||||||
|
return os.path.join(dest_dir, _mod_to_path(base), path)
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_reqs(filename):
|
||||||
|
|
||||||
|
reqs = dict()
|
||||||
|
|
||||||
|
pip_requires = open(filename, "r").readlines()
|
||||||
|
for pip in pip_requires:
|
||||||
|
pip = pip.strip()
|
||||||
|
if pip.startswith("#") or len(pip) == 0:
|
||||||
|
continue
|
||||||
|
install_require = req.InstallRequirement.from_line(pip)
|
||||||
|
if install_require.editable:
|
||||||
|
reqs[pip] = pip
|
||||||
|
elif install_require.url:
|
||||||
|
reqs[pip] = pip
|
||||||
|
else:
|
||||||
|
reqs[install_require.req.key] = pip
|
||||||
|
return reqs
|
||||||
|
|
||||||
|
|
||||||
|
def _copy_requires(req, dest_dir):
|
||||||
|
"""Copy requirements files."""
|
||||||
|
|
||||||
|
dest_path = _dest_path(req, 'tools', dest_dir)
|
||||||
|
source_path = os.path.join('tools', req)
|
||||||
|
|
||||||
|
source_reqs = _parse_reqs(source_path)
|
||||||
|
dest_reqs = _parse_reqs(dest_path)
|
||||||
|
dest_keys = [key.lower() for key in dest_reqs.keys()]
|
||||||
|
dest_keys.sort()
|
||||||
|
|
||||||
|
print "Syncing %s" % req
|
||||||
|
with open(dest_path, 'w') as new_reqs:
|
||||||
|
new_reqs.write("# This file is managed by openstack-depends\n")
|
||||||
|
for old_require in dest_keys:
|
||||||
|
# Special cases:
|
||||||
|
# versions of our stuff from tarballs.openstack.org are ok
|
||||||
|
# projects need to align pep8 version on their own time
|
||||||
|
if old_require in source_reqs or \
|
||||||
|
"http://tarballs.openstack.org" in old_require:
|
||||||
|
new_reqs.write("%s\n" % source_reqs[old_require])
|
||||||
|
if "pep8" in old_require:
|
||||||
|
new_reqs.write("%s\n" % dest_reqs[old_require])
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
for req in ('pip-requires', 'test-requires'):
|
||||||
|
_copy_requires(req, argv[0])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv[1:])
|
Loading…
x
Reference in New Issue
Block a user