Try even harder.
This commit is contained in:
parent
dc9909553a
commit
f7a258a510
4 changed files with 49 additions and 7 deletions
|
@ -64,6 +64,7 @@ from buildlog_consultant.common import (
|
|||
MissingPerlPredeclared,
|
||||
MissingLatexFile,
|
||||
MissingCargoCrate,
|
||||
MissingStaticLibrary,
|
||||
)
|
||||
from buildlog_consultant.apt import UnsatisfiedAptDependencies
|
||||
|
||||
|
@ -108,6 +109,7 @@ from .requirements import (
|
|||
PerlPreDeclaredRequirement,
|
||||
LatexPackageRequirement,
|
||||
CargoCrateRequirement,
|
||||
StaticLibraryRequirement,
|
||||
)
|
||||
from .resolver import UnsatisfiedRequirements
|
||||
|
||||
|
@ -139,6 +141,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901
|
|||
return RPackageRequirement(problem.package, problem.minimum_version)
|
||||
elif isinstance(problem, MissingNodeModule):
|
||||
return NodeModuleRequirement(problem.module)
|
||||
elif isinstance(problem, MissingStaticLibrary):
|
||||
return StaticLibraryRequirement(problem.library, problem.filename)
|
||||
elif isinstance(problem, MissingNodePackage):
|
||||
return NodePackageRequirement(problem.package)
|
||||
elif isinstance(problem, MissingLatexFile):
|
||||
|
|
|
@ -1473,13 +1473,16 @@ class PerlBuildTiny(BuildSystem):
|
|||
|
||||
def get_declared_dependencies(self, session, fixers=None):
|
||||
self.setup(session, fixers)
|
||||
try:
|
||||
run_with_build_fixers(session, ["./Build", "distmeta"], fixers)
|
||||
except UnidentifiedError as e:
|
||||
if "No such action 'distmeta'" in e.lines:
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
if self.minilla:
|
||||
pass # Minilla doesn't seem to have a way to just regenerate the metadata :(
|
||||
else:
|
||||
try:
|
||||
run_with_build_fixers(session, ["./Build", "distmeta"], fixers)
|
||||
except UnidentifiedError as e:
|
||||
if "No such action 'distmeta'" in e.lines:
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
try:
|
||||
with open(os.path.join(self.path, 'META.yml'), 'r') as f:
|
||||
yield from _declared_deps_from_meta_yml(f)
|
||||
|
|
|
@ -460,6 +460,18 @@ class LibraryRequirement(Requirement):
|
|||
self.library = library
|
||||
|
||||
|
||||
|
||||
class StaticLibraryRequirement(Requirement):
|
||||
|
||||
library: str
|
||||
filename: str
|
||||
|
||||
def __init__(self, library: str, filename: str):
|
||||
super(StaticLibraryRequirement, self).__init__("static-lib")
|
||||
self.library = library
|
||||
self.filename = filename
|
||||
|
||||
|
||||
class RubyFileRequirement(Requirement):
|
||||
|
||||
filename: str
|
||||
|
|
|
@ -47,6 +47,7 @@ from ..requirements import (
|
|||
NodeModuleRequirement,
|
||||
NodePackageRequirement,
|
||||
LibraryRequirement,
|
||||
StaticLibraryRequirement,
|
||||
RubyFileRequirement,
|
||||
XmlEntityRequirement,
|
||||
SprocketsFileRequirement,
|
||||
|
@ -335,6 +336,19 @@ def resolve_vague_dep_req(apt_mgr, req):
|
|||
options.append(AptRequirement.simple(vague_map[name], minimum_version=req.minimum_version))
|
||||
for x in req.expand():
|
||||
options.extend(resolve_requirement_apt(apt_mgr, x))
|
||||
# Try even harder
|
||||
if not options:
|
||||
options.extend(find_reqs_simple(
|
||||
apt_mgr,
|
||||
[
|
||||
posixpath.join("/usr/lib", ".*", "pkgconfig", re.escape(req.module) + ".*\\.pc"),
|
||||
posixpath.join("/usr/lib/pkgconfig", re.escape(req.module) + "-.*\\.pc")
|
||||
],
|
||||
regex=True,
|
||||
case_insensitive=True,
|
||||
minimum_version=req.minimum_version
|
||||
))
|
||||
|
||||
return options
|
||||
|
||||
|
||||
|
@ -469,6 +483,14 @@ def resolve_library_req(apt_mgr, req):
|
|||
return find_reqs_simple(apt_mgr, paths, regex=True)
|
||||
|
||||
|
||||
def resolve_static_library_req(apt_mgr, req):
|
||||
paths = [
|
||||
posixpath.join("/usr/lib/%s$" % re.escape(req.filename)),
|
||||
posixpath.join("/usr/lib/.*/%s$" % re.escape(req.filename)),
|
||||
]
|
||||
return find_reqs_simple(apt_mgr, paths, regex=True)
|
||||
|
||||
|
||||
def resolve_ruby_file_req(apt_mgr, req):
|
||||
paths = [posixpath.join("/usr/lib/ruby/vendor_ruby/%s.rb" % req.filename)]
|
||||
reqs = find_reqs_simple(apt_mgr, paths, regex=False)
|
||||
|
@ -697,6 +719,7 @@ APT_REQUIREMENT_RESOLVERS = [
|
|||
(NodeModuleRequirement, resolve_node_module_req),
|
||||
(NodePackageRequirement, resolve_node_package_req),
|
||||
(LibraryRequirement, resolve_library_req),
|
||||
(StaticLibraryRequirement, resolve_static_library_req),
|
||||
(RubyFileRequirement, resolve_ruby_file_req),
|
||||
(XmlEntityRequirement, resolve_xml_entity_req),
|
||||
(SprocketsFileRequirement, resolve_sprockets_file_req),
|
||||
|
|
Loading…
Add table
Reference in a new issue