debian-forge/osbuild/testutil/dnf4.py
Tomáš Hozza 67c7d63983 testutil: add helper function for depsolving pkgset with DNF4
This will be useful for testing SBOM implementations.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2024-09-18 12:26:36 +02:00

36 lines
1 KiB
Python

import tempfile
from typing import List, Optional
import dnf
def depsolve_pkgset(
repo_paths: List[str],
pkg_include: List[str],
pkg_exclude: Optional[List[str]] = None
) -> List[dnf.package.Package]:
"""
Perform a dependency resolution on a set of local RPM repositories.
"""
with tempfile.TemporaryDirectory() as tempdir:
conf = dnf.conf.Conf()
conf.config_file_path = "/dev/null"
conf.persistdir = f"{tempdir}{conf.persistdir}"
conf.cachedir = f"{tempdir}{conf.cachedir}"
conf.reposdir = ["/dev/null"]
conf.pluginconfpath = ["/dev/null"]
conf.varsdir = ["/dev/null"]
base = dnf.Base(conf)
for idx, repo_path in enumerate(repo_paths):
repo = dnf.repo.Repo(f"repo{idx}", conf)
repo.baseurl = f"file://{repo_path}"
base.repos.add(repo)
base.fill_sack(load_system_repo=False)
base.install_specs(pkg_include, pkg_exclude)
base.resolve()
return base.transaction.install_set