Python specs.
This commit is contained in:
parent
a8663e0eaa
commit
693b6382ae
2 changed files with 30 additions and 9 deletions
|
@ -349,9 +349,14 @@ def fix_missing_python_module(error, context):
|
|||
targeted = set()
|
||||
default = not targeted
|
||||
|
||||
pypy_pkg = get_package_for_python_module(context.apt, error.module, "pypy", None)
|
||||
py2_pkg = get_package_for_python_module(context.apt, error.module, "python2", None)
|
||||
py3_pkg = get_package_for_python_module(context.apt, error.module, "python3", None)
|
||||
if error.minimum_version:
|
||||
specs = [('>=', error.minimum_version)]
|
||||
else:
|
||||
specs = []
|
||||
|
||||
pypy_pkg = get_package_for_python_module(context.apt, error.module, "pypy", specs)
|
||||
py2_pkg = get_package_for_python_module(context.apt, error.module, "python2", specs)
|
||||
py3_pkg = get_package_for_python_module(context.apt, error.module, "python3", specs)
|
||||
|
||||
extra_build_deps = []
|
||||
if error.python_version == 2:
|
||||
|
|
|
@ -62,7 +62,7 @@ class AptRequirement(Requirement):
|
|||
self.minimum_version = minimum_version
|
||||
|
||||
|
||||
def get_package_for_python_package(apt_mgr, package, python_version, minimum_version=None):
|
||||
def get_package_for_python_package(apt_mgr, package, python_version, specs=None):
|
||||
if python_version == "pypy":
|
||||
pkg_name = apt_mgr.get_package_for_paths(
|
||||
["/usr/lib/pypy/dist-packages/%s-.*.egg-info/PKG-INFO" % package],
|
||||
|
@ -78,12 +78,20 @@ def get_package_for_python_package(apt_mgr, package, python_version, minimum_ver
|
|||
else:
|
||||
raise NotImplementedError
|
||||
# TODO(jelmer): Dealing with epoch, etc?
|
||||
if not specs:
|
||||
minimum_version = None
|
||||
else:
|
||||
for spec in specs:
|
||||
if spec[0] == '>=':
|
||||
minimum_version = spec[1]
|
||||
else:
|
||||
raise NotImplementedError(spec)
|
||||
if pkg_name is not None:
|
||||
return AptRequirement(pkg_name, minimum_version)
|
||||
return None
|
||||
|
||||
|
||||
def get_package_for_python_module(apt_mgr, module, python_version, minimum_version):
|
||||
def get_package_for_python_module(apt_mgr, module, python_version, specs):
|
||||
if python_version == "python3":
|
||||
paths = [
|
||||
posixpath.join(
|
||||
|
@ -136,6 +144,14 @@ def get_package_for_python_module(apt_mgr, module, python_version, minimum_versi
|
|||
]
|
||||
else:
|
||||
raise AssertionError("unknown python version %r" % python_version)
|
||||
if not specs:
|
||||
minimum_version = None
|
||||
else:
|
||||
for spec in specs:
|
||||
if spec[0] == '>=':
|
||||
minimum_version = spec[1]
|
||||
else:
|
||||
raise NotImplementedError(spec)
|
||||
pkg_name = apt_mgr.get_package_for_paths(paths, regex=True)
|
||||
if pkg_name is not None:
|
||||
return AptRequirement(pkg_name, minimum_version=minimum_version)
|
||||
|
@ -449,18 +465,18 @@ def resolve_autoconf_macro_req(apt_mgr, req):
|
|||
|
||||
def resolve_python_module_req(apt_mgr, req):
|
||||
if req.python_version == 2:
|
||||
return get_package_for_python_module(apt_mgr, req.module, "cpython2", req.minimum_version)
|
||||
return get_package_for_python_module(apt_mgr, req.module, "cpython2", req.specs)
|
||||
elif req.python_version in (None, 3):
|
||||
return get_package_for_python_module(apt_mgr, req.module, "cpython3", req.minimum_version)
|
||||
return get_package_for_python_module(apt_mgr, req.module, "cpython3", req.specs)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def resolve_python_package_req(apt_mgr, req):
|
||||
if req.python_version == 2:
|
||||
return get_package_for_python_package(apt_mgr, req.package, "cpython2", req.minimum_version)
|
||||
return get_package_for_python_package(apt_mgr, req.package, "cpython2", req.specs)
|
||||
elif req.python_version in (None, 3):
|
||||
return get_package_for_python_package(apt_mgr, req.package, "cpython3", req.minimum_version)
|
||||
return get_package_for_python_package(apt_mgr, req.package, "cpython3", req.specs)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue