python/sepolicy: Fix sepolicy manpage -w ...

Commit 7494bb1298 ("sepolicy: generate man pages in parallel")
improved sepolicy performance but broke `sepolicy manpage -w ...` as it
didn't collect data about domains and roles from ManPage() and so
HTMLManPages() generated only empty page. This is fixed now, domains
and roles are being collected and used for HTML pages.

Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
Acked-by: James Carter <jwcart2@gmail.com>
This commit is contained in:
Petr Lautrbach 2022-11-18 13:51:52 +01:00 committed by James Carter
parent d31280c26e
commit 7fd9628dd4
2 changed files with 16 additions and 9 deletions

View File

@ -332,9 +332,10 @@ def manpage_work(domain, path, root, source_files, web):
from sepolicy.manpage import ManPage
m = ManPage(domain, path, root, source_files, web)
print(m.get_man_page_path())
return (m.manpage_domains, m.manpage_roles)
def manpage(args):
from sepolicy.manpage import HTMLManPages, manpage_domains, manpage_roles, gen_domains
from sepolicy.manpage import HTMLManPages, gen_domains
path = args.path
if not args.policy and args.root != "/":
@ -347,9 +348,17 @@ def manpage(args):
else:
test_domains = args.domain
manpage_domains = set()
manpage_roles = set()
p = Pool()
async_results = []
for domain in test_domains:
p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web])
async_results.append(p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web]))
for result in async_results:
domains, roles = result.get()
manpage_domains.update(domains)
manpage_roles.update(roles)
p.close()
p.join()

View File

@ -21,7 +21,7 @@
# 02111-1307 USA
#
#
__all__ = ['ManPage', 'HTMLManPages', 'manpage_domains', 'manpage_roles', 'gen_domains']
__all__ = ['ManPage', 'HTMLManPages', 'gen_domains']
import string
import selinux
@ -147,10 +147,6 @@ def _gen_types():
def prettyprint(f, trim):
return " ".join(f[:-len(trim)].split("_"))
# for HTML man pages
manpage_domains = []
manpage_roles = []
fedora_releases = ["Fedora17", "Fedora18"]
rhel_releases = ["RHEL6", "RHEL7"]
@ -408,6 +404,8 @@ class ManPage:
"""
modules_dict = None
enabled_str = ["Disabled", "Enabled"]
manpage_domains = []
manpage_roles = []
def __init__(self, domainname, path="/tmp", root="/", source_files=False, html=False):
self.html = html
@ -453,10 +451,10 @@ class ManPage:
if self.domainname + "_r" in self.all_roles:
self.__gen_user_man_page()
if self.html:
manpage_roles.append(self.man_page_path)
self.manpage_roles.append(self.man_page_path)
else:
if self.html:
manpage_domains.append(self.man_page_path)
self.manpage_domains.append(self.man_page_path)
self.__gen_man_page()
self.fd.close()