Merge "Handle -/_ ambiguity in package names"
This commit is contained in:
commit
b457191d14
@ -52,6 +52,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
import ConfigParser as configparser
|
import ConfigParser as configparser
|
||||||
|
|
||||||
|
import pkg_resources as prAPI
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
@ -120,6 +121,26 @@ def write_new_constraints_file(constraints, packages):
|
|||||||
return constraints_file.name
|
return constraints_file.name
|
||||||
|
|
||||||
|
|
||||||
|
def _get_package_root(name, sibling_packages):
|
||||||
|
'''
|
||||||
|
Returns a package root from the sibling packages dict.
|
||||||
|
|
||||||
|
If name is not found in sibling_packages, tries again using the 'filename'
|
||||||
|
form of the name returned by the setuptools package resource API.
|
||||||
|
|
||||||
|
:param name: package name
|
||||||
|
:param sibling_packages: dict of python packages that zuul has cloned
|
||||||
|
:returns: the package root (str)
|
||||||
|
:raises: KeyError
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
pkg_root = sibling_packages[name]
|
||||||
|
except KeyError:
|
||||||
|
pkg_root = sibling_packages[prAPI.to_filename(name)]
|
||||||
|
|
||||||
|
return pkg_root
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=dict(
|
argument_spec=dict(
|
||||||
@ -179,7 +200,8 @@ def main():
|
|||||||
log.append(
|
log.append(
|
||||||
"Found {name} python package installed".format(
|
"Found {name} python package installed".format(
|
||||||
name=dep_name))
|
name=dep_name))
|
||||||
if dep_name == package_name:
|
if (dep_name == package_name or
|
||||||
|
prAPI.to_filename(dep_name) == package_name):
|
||||||
# We don't need to re-process ourself. We've filtered ourselves
|
# We don't need to re-process ourself. We've filtered ourselves
|
||||||
# from the source dir list, but let's be sure nothing is weird.
|
# from the source dir list, but let's be sure nothing is weird.
|
||||||
log.append(
|
log.append(
|
||||||
@ -192,7 +214,16 @@ def main():
|
|||||||
name=dep_name,
|
name=dep_name,
|
||||||
root=sibling_python_packages[dep_name]))
|
root=sibling_python_packages[dep_name]))
|
||||||
changed = True
|
changed = True
|
||||||
|
found_sibling_packages.append(dep_name)
|
||||||
|
elif prAPI.to_filename(dep_name) in sibling_python_packages:
|
||||||
|
real_name = prAPI.to_filename(dep_name)
|
||||||
|
log.append(
|
||||||
|
"Package {name} ({pkg_name}) on system in {root}".format(
|
||||||
|
name=dep_name,
|
||||||
|
pkg_name=real_name,
|
||||||
|
root=sibling_python_packages[real_name]))
|
||||||
|
changed = True
|
||||||
|
# need to use dep_name here for later constraint file rewrite
|
||||||
found_sibling_packages.append(dep_name)
|
found_sibling_packages.append(dep_name)
|
||||||
|
|
||||||
if constraints:
|
if constraints:
|
||||||
@ -210,24 +241,29 @@ def main():
|
|||||||
args = [tox_python, '-m', 'pip', 'install']
|
args = [tox_python, '-m', 'pip', 'install']
|
||||||
if constraints:
|
if constraints:
|
||||||
args.extend(['-c', constraints_file])
|
args.extend(['-c', constraints_file])
|
||||||
|
|
||||||
|
pkg_root = _get_package_root(sibling_package,
|
||||||
|
sibling_python_packages)
|
||||||
log.append(
|
log.append(
|
||||||
"Installing {name} from {root} for deps".format(
|
"Installing {name} from {root} for deps".format(
|
||||||
name=sibling_package,
|
name=sibling_package,
|
||||||
root=sibling_python_packages[sibling_package]))
|
root=pkg_root))
|
||||||
args.append(sibling_python_packages[sibling_package])
|
args.append(pkg_root)
|
||||||
|
|
||||||
install_output = subprocess.check_output(args)
|
install_output = subprocess.check_output(args)
|
||||||
log.extend(install_output.decode('utf-8').split('\n'))
|
log.extend(install_output.decode('utf-8').split('\n'))
|
||||||
|
|
||||||
for sibling_package in found_sibling_packages:
|
for sibling_package in found_sibling_packages:
|
||||||
|
pkg_root = _get_package_root(sibling_package,
|
||||||
|
sibling_python_packages)
|
||||||
log.append(
|
log.append(
|
||||||
"Installing {name} from {root}".format(
|
"Installing {name} from {root}".format(
|
||||||
name=sibling_package,
|
name=sibling_package,
|
||||||
root=sibling_python_packages[sibling_package]))
|
root=pkg_root))
|
||||||
|
|
||||||
install_output = subprocess.check_output(
|
install_output = subprocess.check_output(
|
||||||
[tox_python, '-m', 'pip', 'install', '--no-deps',
|
[tox_python, '-m', 'pip', 'install', '--no-deps',
|
||||||
sibling_python_packages[sibling_package]])
|
pkg_root])
|
||||||
log.extend(install_output.decode('utf-8').split('\n'))
|
log.extend(install_output.decode('utf-8').split('\n'))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
tb = traceback.format_exc()
|
tb = traceback.format_exc()
|
||||||
|
Loading…
Reference in New Issue
Block a user