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()
|
targeted = set()
|
||||||
default = not targeted
|
default = not targeted
|
||||||
|
|
||||||
pypy_pkg = get_package_for_python_module(context.apt, error.module, "pypy", None)
|
if error.minimum_version:
|
||||||
py2_pkg = get_package_for_python_module(context.apt, error.module, "python2", None)
|
specs = [('>=', error.minimum_version)]
|
||||||
py3_pkg = get_package_for_python_module(context.apt, error.module, "python3", None)
|
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 = []
|
extra_build_deps = []
|
||||||
if error.python_version == 2:
|
if error.python_version == 2:
|
||||||
|
|
|
@ -62,7 +62,7 @@ class AptRequirement(Requirement):
|
||||||
self.minimum_version = minimum_version
|
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":
|
if python_version == "pypy":
|
||||||
pkg_name = apt_mgr.get_package_for_paths(
|
pkg_name = apt_mgr.get_package_for_paths(
|
||||||
["/usr/lib/pypy/dist-packages/%s-.*.egg-info/PKG-INFO" % package],
|
["/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:
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
# TODO(jelmer): Dealing with epoch, etc?
|
# 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:
|
if pkg_name is not None:
|
||||||
return AptRequirement(pkg_name, minimum_version)
|
return AptRequirement(pkg_name, minimum_version)
|
||||||
return None
|
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":
|
if python_version == "python3":
|
||||||
paths = [
|
paths = [
|
||||||
posixpath.join(
|
posixpath.join(
|
||||||
|
@ -136,6 +144,14 @@ def get_package_for_python_module(apt_mgr, module, python_version, minimum_versi
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
raise AssertionError("unknown python version %r" % python_version)
|
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)
|
pkg_name = apt_mgr.get_package_for_paths(paths, regex=True)
|
||||||
if pkg_name is not None:
|
if pkg_name is not None:
|
||||||
return AptRequirement(pkg_name, minimum_version=minimum_version)
|
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):
|
def resolve_python_module_req(apt_mgr, req):
|
||||||
if req.python_version == 2:
|
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):
|
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:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def resolve_python_package_req(apt_mgr, req):
|
def resolve_python_package_req(apt_mgr, req):
|
||||||
if req.python_version == 2:
|
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):
|
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:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue