summaryrefslogtreecommitdiffstats
path: root/openstack
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-02-09 08:34:15 +0000
committerGerrit Code Review <review@openstack.org>2012-02-09 08:34:15 +0000
commit6f08fb4edabd0be6a61fca91b3cee15433bc110f (patch)
treed7c42a3524e7a72d29956b42dd55f2df8a41b54a /openstack
parent54f0d4eb858143b07df9a026088f0d4e02bfad87 (diff)
parent2ca2b4b49367d6033bdd2c5e47d17392e7aba318 (diff)
downloadoslo-6f08fb4edabd0be6a61fca91b3cee15433bc110f.tar.gz
oslo-6f08fb4edabd0be6a61fca91b3cee15433bc110f.tar.xz
oslo-6f08fb4edabd0be6a61fca91b3cee15433bc110f.zip
Merge "Updated tox config for multi-python testing."
Diffstat (limited to 'openstack')
-rw-r--r--openstack/common/setup.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/openstack/common/setup.py b/openstack/common/setup.py
index 7966cf7..28f5e6f 100644
--- a/openstack/common/setup.py
+++ b/openstack/common/setup.py
@@ -40,3 +40,48 @@ def str_dict_replace(s, mapping):
for s1, s2 in mapping.iteritems():
s = s.replace(s1, s2)
return s
+
+
+# Get requirements from the first file that exists
+def get_reqs_from_files(requirements_files):
+ reqs_in = []
+ for requirements_file in requirements_files:
+ if os.path.exists(requirements_file):
+ return open(requirements_file, 'r').read().split('\n')
+ return []
+
+
+def parse_requirements(requirements_files=['requirements.txt',
+ 'tools/pip-requires']):
+ requirements = []
+ for line in get_reqs_from_files(requirements_files):
+ if re.match(r'\s*-e\s+', line):
+ requirements.append(re.sub(r'\s*-e\s+.*#egg=(.*)$', r'\1',
+ line))
+ elif re.match(r'\s*-f\s+', line):
+ pass
+ else:
+ requirements.append(line)
+
+ return requirements
+
+
+def parse_dependency_links(requirements_files=['requirements.txt',
+ 'tools/pip-requires']):
+ dependency_links = []
+ for line in get_reqs_from_files(requirements_files):
+ if re.match(r'(\s*#)|(\s*$)', line):
+ continue
+ if re.match(r'\s*-[ef]\s+', line):
+ dependency_links.append(re.sub(r'\s*-[ef]\s+', '', line))
+ return dependency_links
+
+
+def write_requirements():
+ venv = os.environ.get('VIRTUAL_ENV', None)
+ if venv is not None:
+ with open("requirements.txt", "w") as req_file:
+ output = subprocess.Popen(["pip", "-E", venv, "freeze", "-l"],
+ stdout=subprocess.PIPE)
+ requirements = output.communicate()[0].strip()
+ req_file.write(requirements)