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