diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py index b6df3e9116..cb2325a86c 100644 --- a/python/sepolicy/sepolicy/generate.py +++ b/python/sepolicy/sepolicy/generate.py @@ -1262,13 +1262,24 @@ def write_fc(self, out_dir): return fcfile def __extract_rpms(self): - import yum - yb = yum.YumBase() - yb.setCacheDir() + + import dnf - for pkg in yb.rpmdb.searchProvides(self.program): + base = dnf.Base() + base.read_all_repos() + base.fill_sack(load_system_repo=True) + + query = base.sack.query() + + a = query.available() + a = a.filter(file='/usr/bin/mysqld_safe') + + # query = libdnf5.rpm.PackageQuery(base) + # query.filter_file([self.program]) + + for pkg in a: self.rpms.append(pkg.name) - for fname in pkg.dirlist + pkg.filelist + pkg.ghostlist: + for fname in pkg.files: for b in self.DEFAULT_DIRS: if b == "/etc": continue @@ -1277,9 +1288,10 @@ def __extract_rpms(self): self.add_file(fname) else: self.add_dir(fname) - - for bpkg in yb.rpmdb.searchNames([pkg.base_package_name]): - for fname in bpkg.dirlist + bpkg.filelist + bpkg.ghostlist: + b = query.available() + b = b.filter(provides=pkg.source_name) + for bpkg in b: + for fname in bpkg.files: for b in self.DEFAULT_DIRS: if b == "/etc": continue @@ -1289,20 +1301,6 @@ def __extract_rpms(self): else: self.add_dir(fname) - # some packages have own systemd subpackage - # tor-systemd for example - binary_name = self.program.split("/")[-1] - for bpkg in yb.rpmdb.searchNames(["%s-systemd" % binary_name]): - for fname in bpkg.filelist + bpkg.ghostlist + bpkg.dirlist: - for b in self.DEFAULT_DIRS: - if b == "/etc": - continue - if fname.startswith(b): - if os.path.isfile(fname): - self.add_file(fname) - else: - self.add_dir(fname) - def gen_writeable(self): try: self.__extract_rpms()