From 3cc91b8cb0a7e0a7b0499662ed5e79f2fc754bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Wed, 14 Apr 2021 19:03:23 +0100 Subject: [PATCH] Handle boost component requirement. --- ognibuild/buildlog.py | 4 ++++ ognibuild/requirements.py | 9 +++++++++ ognibuild/resolver/apt.py | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/ognibuild/buildlog.py b/ognibuild/buildlog.py index e366d3e..037f2c9 100644 --- a/ognibuild/buildlog.py +++ b/ognibuild/buildlog.py @@ -48,6 +48,7 @@ from buildlog_consultant.common import ( MissingRubyFile, MissingAutoconfMacro, MissingValaPackage, + MissingBoostComponents, MissingXfceDependency, MissingHaskellDependencies, MissingVagueDependency, @@ -90,6 +91,7 @@ from .requirements import ( CMakefileRequirement, HaskellPackageRequirement, MavenArtifactRequirement, + BoostComponentRequirement, GnomeCommonRequirement, JDKFileRequirement, JDKRequirement, @@ -133,6 +135,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901 return ValaPackageRequirement(problem.package) elif isinstance(problem, MissingGoPackage): return GoPackageRequirement(problem.package) + elif isinstance(problem, MissingBoostComponents): + return [BoostComponentRequirement(name) for name in problem.components] elif isinstance(problem, DhAddonLoadFailure): return DhAddonRequirement(problem.path) elif isinstance(problem, MissingPhpClass): diff --git a/ognibuild/requirements.py b/ognibuild/requirements.py index 8486d11..b3650c8 100644 --- a/ognibuild/requirements.py +++ b/ognibuild/requirements.py @@ -690,3 +690,12 @@ class PythonModuleRequirement(Requirement): return "%s(%r, python_version=%r, minimum_version=%r)" % ( type(self).__name__, self.module, self.python_version, self.minimum_version) + + +class BoostComponentRequirement(Requirement): + + name: str + + def __init__(self, name): + super(BoostComponentRequirement, self).__init__("boost-component") + self.name = name diff --git a/ognibuild/resolver/apt.py b/ognibuild/resolver/apt.py index da19d7e..a798a8d 100644 --- a/ognibuild/resolver/apt.py +++ b/ognibuild/resolver/apt.py @@ -47,6 +47,7 @@ from ..requirements import ( NodeModuleRequirement, NodePackageRequirement, LibraryRequirement, + BoostComponentRequirement, StaticLibraryRequirement, RubyFileRequirement, XmlEntityRequirement, @@ -703,6 +704,12 @@ def resolve_apt_req(apt_mgr, req): return [req] +def resolve_boost_component_req(apt_mgr, req): + return find_reqs_simple( + apt_mgr, ["/usr/lib/.*/libboost_%s" % re.escape(req.name)], + regex=True) + + APT_REQUIREMENT_RESOLVERS = [ (AptRequirement, resolve_apt_req), (BinaryRequirement, resolve_binary_req), @@ -746,6 +753,7 @@ APT_REQUIREMENT_RESOLVERS = [ (CertificateAuthorityRequirement, resolve_ca_req), (CargoCrateRequirement, resolve_cargo_crate_req), (IntrospectionTypelibRequirement, resolve_introspection_typelib_req), + (BoostComponentRequirement, resolve_boost_component_req), ]