From be24ed6b4fc941b63cd6c808d1f2cac402096e1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Thu, 25 Feb 2021 03:37:09 +0000 Subject: [PATCH] More refactoring. --- ognibuild/debian/fix_build.py | 12 ++++++++++++ ognibuild/fix_build.py | 1 + ognibuild/requirements.py | 16 +++++++++++++++- ognibuild/resolver/apt.py | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ognibuild/debian/fix_build.py b/ognibuild/debian/fix_build.py index 50ecc24..2a5b4a4 100644 --- a/ognibuild/debian/fix_build.py +++ b/ognibuild/debian/fix_build.py @@ -136,6 +136,8 @@ from ..requirements import ( PerlModuleRequirement, PerlFileRequirement, AutoconfMacroRequirement, + PythonModuleRequirement, + PythonPackageRequirement, ) from .build import attempt_build, DEFAULT_BUILDER @@ -509,6 +511,16 @@ def problem_to_upstream_requirement(problem, context): return PerlFileRequirement(filename=problem.filename) elif isinstance(problem, MissingAutoconfMacro): return AutoconfMacroRequirement(problem.macro) + elif isinstance(problem, MissingPythonModule): + return PythonModuleRequirement( + problem.module, + python_version=problem.python_version, + minimum_version=problem.minimum_version) + elif isinstance(problem, MissingPythonDistribution): + return PythonPackageRequirement( + problem.module, + python_version=problem.python_version, + minimum_version=problem.minimum_version) else: return None diff --git a/ognibuild/fix_build.py b/ognibuild/fix_build.py index 5b6aef0..4b4bbf0 100644 --- a/ognibuild/fix_build.py +++ b/ognibuild/fix_build.py @@ -71,6 +71,7 @@ class DependencyContext(object): ): self.tree = tree self.apt = apt + from .resolver.apt import AptResolver self.resolver = AptResolver(apt) self.subpath = subpath self.committer = committer diff --git a/ognibuild/requirements.py b/ognibuild/requirements.py index 45c176a..24e9e88 100644 --- a/ognibuild/requirements.py +++ b/ognibuild/requirements.py @@ -26,9 +26,11 @@ class PythonPackageRequirement(UpstreamRequirement): package: str - def __init__(self, package): + def __init__(self, package, python_version=None, minimum_version=None): super(PythonPackageRequirement, self).__init__('python-package') self.package = package + self.python_version = python_version + self.minimum_version = minimum_version class BinaryRequirement(UpstreamRequirement): @@ -269,3 +271,15 @@ class AutoconfMacroRequirement(UpstreamRequirement): def __init__(self, macro: str): super(AutoconfMacroRequirement, self).__init__('autoconf-macro') self.macro = macro + + +class PythonModuleRequirement(UpstreamRequirement): + + module: str + python_version: Optional[str] + minimum_version: Optional[str] + + def __init__(self, module, python_version=None, minimum_version=None): + super(PythonModuleRequirement, self).__init__('python-module') + self.python_version = python_version + self.minimum_version = minimum_version diff --git a/ognibuild/resolver/apt.py b/ognibuild/resolver/apt.py index a5a5cc5..bb5cb5a 100644 --- a/ognibuild/resolver/apt.py +++ b/ognibuild/resolver/apt.py @@ -16,6 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import logging +import os import posixpath from ..debian.apt import AptManager