From af3caadad222cfffc077d71b4739b94376bb0cf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Tue, 23 Mar 2021 02:19:59 +0000 Subject: [PATCH] Install ca-certificates if they are missing. --- ognibuild/buildlog.py | 4 ++++ ognibuild/requirements.py | 7 +++++++ ognibuild/resolver/apt.py | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/ognibuild/buildlog.py b/ognibuild/buildlog.py index 5609f9c..8246d87 100644 --- a/ognibuild/buildlog.py +++ b/ognibuild/buildlog.py @@ -52,6 +52,7 @@ from buildlog_consultant.common import ( MissingMavenArtifacts, GnomeCommonMissing, MissingGnomeCommonDependency, + UnknownCertificateAuthority, ) from .fix_build import BuildFixer @@ -84,6 +85,7 @@ from .requirements import ( AutoconfMacroRequirement, PythonModuleRequirement, PythonPackageRequirement, + CertificateAuthorityRequirement, ) from .resolver import UnsatisfiedRequirements @@ -137,6 +139,8 @@ def problem_to_upstream_requirement(problem): # noqa: C901 return JDKRequirement() elif isinstance(problem, MissingJRE): return JRERequirement() + elif isinstance(problem, UnknownCertificateAuthority): + return CertificateAuthorityRequirement(problem.url) elif isinstance(problem, MissingGnomeCommonDependency): if problem.package == "glib-gettext": return BinaryRequirement("glib-gettextize") diff --git a/ognibuild/requirements.py b/ognibuild/requirements.py index 51fba07..3b6fea9 100644 --- a/ognibuild/requirements.py +++ b/ognibuild/requirements.py @@ -416,6 +416,13 @@ class JRERequirement(Requirement): super(JRERequirement, self).__init__("jre") +class CertificateAuthorityRequirement(Requirement): + + def __init__(self, url): + super(CertificateAuthorityRequirement, self).__init__("ca-cert") + self.url = url + + class PerlFileRequirement(Requirement): filename: str diff --git a/ognibuild/resolver/apt.py b/ognibuild/resolver/apt.py index cdfa028..54e3186 100644 --- a/ognibuild/resolver/apt.py +++ b/ognibuild/resolver/apt.py @@ -58,6 +58,7 @@ from ..requirements import ( AutoconfMacroRequirement, PythonModuleRequirement, PythonPackageRequirement, + CertificateAuthorityRequirement, ) @@ -557,6 +558,10 @@ def resolve_cargo_crate_req(apt_mgr, req): return AptRequirement.simple(pkg_name) +def resolve_ca_req(apt_mgr, req): + return AptRequirement.simple('ca-certificates') + + APT_REQUIREMENT_RESOLVERS = [ (BinaryRequirement, resolve_binary_req), (PkgConfigRequirement, resolve_pkg_config_req), @@ -586,6 +591,7 @@ APT_REQUIREMENT_RESOLVERS = [ (AutoconfMacroRequirement, resolve_autoconf_macro_req), (PythonModuleRequirement, resolve_python_module_req), (PythonPackageRequirement, resolve_python_package_req), + (CertificateAuthorityRequirement, resolve_ca_req), (CargoCrateRequirement, resolve_cargo_crate_req), ]