diff --git a/ognibuild/buildlog.py b/ognibuild/buildlog.py index b5d2c8d..fabb279 100644 --- a/ognibuild/buildlog.py +++ b/ognibuild/buildlog.py @@ -56,6 +56,7 @@ from buildlog_consultant.common import ( GnomeCommonMissing, MissingGnomeCommonDependency, UnknownCertificateAuthority, + CMakeFilesMissing, MissingLibtool, MissingQt, MissingX11, @@ -80,6 +81,7 @@ from .requirements import ( XmlEntityRequirement, SprocketsFileRequirement, JavaClassRequirement, + CMakefileRequirement, HaskellPackageRequirement, MavenArtifactRequirement, GnomeCommonRequirement, @@ -140,6 +142,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901 return SprocketsFileRequirement(problem.content_type, problem.name) elif isinstance(problem, MissingJavaClass): return JavaClassRequirement(problem.classname) + elif isinstance(problem, CMakeFilesMissing): + return [CMakefileRequirement(filename) for filename in problem.filenames] elif isinstance(problem, MissingHaskellDependencies): return [HaskellPackageRequirement.from_string(dep) for dep in problem.deps] elif isinstance(problem, MissingMavenArtifacts): diff --git a/ognibuild/requirements.py b/ognibuild/requirements.py index 7491b19..014bee9 100644 --- a/ognibuild/requirements.py +++ b/ognibuild/requirements.py @@ -453,6 +453,15 @@ class JavaClassRequirement(Requirement): self.classname = classname +class CMakefileRequirement(Requirement): + + filename: str + + def __init__(self, filename: str): + super(CMakefileRequirement, self).__init__("cmake-file") + self.filename = filename + + class HaskellPackageRequirement(Requirement): package: str diff --git a/ognibuild/resolver/apt.py b/ognibuild/resolver/apt.py index f672836..618206c 100644 --- a/ognibuild/resolver/apt.py +++ b/ognibuild/resolver/apt.py @@ -51,6 +51,7 @@ from ..requirements import ( XmlEntityRequirement, SprocketsFileRequirement, JavaClassRequirement, + CMakefileRequirement, HaskellPackageRequirement, MavenArtifactRequirement, GnomeCommonRequirement, @@ -478,6 +479,11 @@ def resolve_java_class_req(apt_mgr, req): return find_reqs_simple(apt_mgr, [classpath]) +def resolve_cmake_file_req(apt_mgr, req): + paths = ['/usr/lib/.*/cmake/.*/%s' % re.escape(req.filename)] + return find_reqs_simple(apt_mgr, paths, regex=True) + + def resolve_haskell_package_req(apt_mgr, req): path = "/var/lib/ghc/package\\.conf\\.d/%s-.*\\.conf" % re.escape(req.deps[0][0]) return find_reqs_simple(apt_mgr, [path], regex=True) @@ -645,6 +651,7 @@ APT_REQUIREMENT_RESOLVERS = [ (XmlEntityRequirement, resolve_xml_entity_req), (SprocketsFileRequirement, resolve_sprockets_file_req), (JavaClassRequirement, resolve_java_class_req), + (CMakefileRequirement, resolve_cmake_file_req), (HaskellPackageRequirement, resolve_haskell_package_req), (MavenArtifactRequirement, resolve_maven_artifact_req), (GnomeCommonRequirement, resolve_gnome_common_req),