Add support for finding cmake files.

This commit is contained in:
Jelmer Vernooij 2021-03-27 09:07:59 +00:00
parent de2c26664e
commit e1b8a90747
3 changed files with 20 additions and 0 deletions

View file

@ -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):

View file

@ -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

View file

@ -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),