#!/usr/bin/python3 import dnf import os import shutil import tempfile import logging log = logging def get_dbo(installroot, releasever): dnfbase = dnf.Base() conf = dnfbase.conf conf.install_weak_deps = False conf.releasever = releasever conf.installroot = installroot conf.prepend_installroot('persistdir') conf.tsflags = ('nodocs',) conf.module_platform_id = "platform:f29" # Use the .repo files from /etc/yum.repos.d/ conf.reposdir = ["/etc/yum.repos.d"] dnfbase.read_all_repos() dnfbase.fill_sack(load_system_repo=False) dnfbase.read_comps() return dnfbase if __name__ == '__main__': tempdir = tempfile.mkdtemp(prefix="pylorax.tmp.") if not tempdir: raise RuntimeError("Could not create tempdir") installroot = os.path.join(tempdir, "installroot") dbo = get_dbo(installroot, "29") # This should return 1 bash package, but it returns conflicting packages. p = "bash" pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(dbo.sack).filter(latest=True)] print("%s wants to install: %s" % (p, pkgnames)) # This should return 1 package, bash, but it doesn't name = "bash" version = "4.4.*" pkgnames = [pkg for pkg in dnf.subject.Subject(name).get_best_query(dbo.sack).filter(version__glob=version,latest=True)] print("%s-%s wants to install: %s" % (name, version, pkgnames)) shutil.rmtree(tempdir)