Handle perl predeclared functions.
This commit is contained in:
parent
7629a1932e
commit
d906ec1d1c
3 changed files with 42 additions and 0 deletions
|
@ -61,6 +61,7 @@ from buildlog_consultant.common import (
|
||||||
MissingLibtool,
|
MissingLibtool,
|
||||||
MissingQt,
|
MissingQt,
|
||||||
MissingX11,
|
MissingX11,
|
||||||
|
MissingPerlPredeclared,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .fix_build import BuildFixer
|
from .fix_build import BuildFixer
|
||||||
|
@ -101,6 +102,7 @@ from .requirements import (
|
||||||
LibtoolRequirement,
|
LibtoolRequirement,
|
||||||
VagueDependencyRequirement,
|
VagueDependencyRequirement,
|
||||||
IntrospectionTypelibRequirement,
|
IntrospectionTypelibRequirement,
|
||||||
|
PerlPreDeclaredRequirement,
|
||||||
)
|
)
|
||||||
from .resolver import UnsatisfiedRequirements
|
from .resolver import UnsatisfiedRequirements
|
||||||
|
|
||||||
|
@ -173,6 +175,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901
|
||||||
return LibtoolRequirement()
|
return LibtoolRequirement()
|
||||||
elif isinstance(problem, UnknownCertificateAuthority):
|
elif isinstance(problem, UnknownCertificateAuthority):
|
||||||
return CertificateAuthorityRequirement(problem.url)
|
return CertificateAuthorityRequirement(problem.url)
|
||||||
|
elif isinstance(problem, MissingPerlPredeclared):
|
||||||
|
return PerlPreDeclaredRequirement(problem.name)
|
||||||
elif isinstance(problem, MissingSetupPyCommand):
|
elif isinstance(problem, MissingSetupPyCommand):
|
||||||
if problem.command == "test":
|
if problem.command == "test":
|
||||||
return PythonPackageRequirement("setuptools")
|
return PythonPackageRequirement("setuptools")
|
||||||
|
|
|
@ -192,6 +192,32 @@ class NodePackageRequirement(Requirement):
|
||||||
return "%s(%r)" % (type(self).__name__, self.package)
|
return "%s(%r)" % (type(self).__name__, self.package)
|
||||||
|
|
||||||
|
|
||||||
|
class PerlPreDeclaredRequirement(Requirement):
|
||||||
|
|
||||||
|
name: str
|
||||||
|
|
||||||
|
# TODO(jelmer): Can we obtain this information elsewhere?
|
||||||
|
KNOWN_MODULES = {
|
||||||
|
'auto_set_repository': 'Module::Install::Repository',
|
||||||
|
'author_tests': 'Module::Install::AuthorTests',
|
||||||
|
'readme_from': 'Module::Install::ReadmeFromPod',
|
||||||
|
'catalyst': 'Module::Install::Catalyst',
|
||||||
|
'githubmeta': 'Module::Install::GithubMeta',
|
||||||
|
'use_ppport': 'Module::Install::XSUtil',
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self, name):
|
||||||
|
super(PerlPreDeclaredRequirement, self).__init__("perl-predeclared")
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def lookup_module(self):
|
||||||
|
module = self.KNOWN_MODULES[self.name]
|
||||||
|
return PerlModuleRequirement(module=module)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "%s(%r)" % (type(self).__name__, self.name)
|
||||||
|
|
||||||
|
|
||||||
class NodeModuleRequirement(Requirement):
|
class NodeModuleRequirement(Requirement):
|
||||||
|
|
||||||
module: str
|
module: str
|
||||||
|
|
|
@ -68,6 +68,7 @@ from ..requirements import (
|
||||||
CertificateAuthorityRequirement,
|
CertificateAuthorityRequirement,
|
||||||
LibtoolRequirement,
|
LibtoolRequirement,
|
||||||
VagueDependencyRequirement,
|
VagueDependencyRequirement,
|
||||||
|
PerlPreDeclaredRequirement,
|
||||||
IntrospectionTypelibRequirement,
|
IntrospectionTypelibRequirement,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -117,6 +118,16 @@ class AptRequirement(Requirement):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def resolve_perl_predeclared_req(apt_mgr, req):
|
||||||
|
try:
|
||||||
|
req = req.lookup_module()
|
||||||
|
except KeyError:
|
||||||
|
logging.warning(
|
||||||
|
'Unable to map predeclared function %s to a perl module', req.name)
|
||||||
|
return None
|
||||||
|
return resolve_perl_module_req(apt_mgr, req)
|
||||||
|
|
||||||
|
|
||||||
def find_package_names(
|
def find_package_names(
|
||||||
apt_mgr: AptManager, paths: List[str], regex: bool = False, case_insensitive=False
|
apt_mgr: AptManager, paths: List[str], regex: bool = False, case_insensitive=False
|
||||||
) -> List[str]:
|
) -> List[str]:
|
||||||
|
@ -639,6 +650,7 @@ APT_REQUIREMENT_RESOLVERS = [
|
||||||
(AptRequirement, resolve_apt_req),
|
(AptRequirement, resolve_apt_req),
|
||||||
(BinaryRequirement, resolve_binary_req),
|
(BinaryRequirement, resolve_binary_req),
|
||||||
(VagueDependencyRequirement, resolve_vague_dep_req),
|
(VagueDependencyRequirement, resolve_vague_dep_req),
|
||||||
|
(PerlPreDeclaredRequirement, resolve_perl_predeclared_req),
|
||||||
(PkgConfigRequirement, resolve_pkg_config_req),
|
(PkgConfigRequirement, resolve_pkg_config_req),
|
||||||
(PathRequirement, resolve_path_req),
|
(PathRequirement, resolve_path_req),
|
||||||
(CHeaderRequirement, resolve_c_header_req),
|
(CHeaderRequirement, resolve_c_header_req),
|
||||||
|
|
Loading…
Add table
Reference in a new issue