103 lines
3.5 KiB
Diff
103 lines
3.5 KiB
Diff
|
From 762090ae1a67b040b37cc4863f1ceb0b45c66717 Mon Sep 17 00:00:00 2001
|
||
|
From: Petr Lautrbach <lautrbach@redhat.com>
|
||
|
Date: Fri, 18 Nov 2022 13:51:52 +0100
|
||
|
Subject: [PATCH] python/sepolicy: Fix sepolicy manpage -w ...
|
||
|
Content-type: text/plain
|
||
|
|
||
|
Commit 7494bb1298b3 ("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>
|
||
|
---
|
||
|
python/sepolicy/sepolicy.py | 13 +++++++++++--
|
||
|
python/sepolicy/sepolicy/manpage.py | 12 +++++-------
|
||
|
2 files changed, 16 insertions(+), 9 deletions(-)
|
||
|
|
||
|
diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py
|
||
|
index 733d40484709..82ff6af2bc2d 100755
|
||
|
--- a/python/sepolicy/sepolicy.py
|
||
|
+++ b/python/sepolicy/sepolicy.py
|
||
|
@@ -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()
|
||
|
|
||
|
diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py
|
||
|
index 3e61e333193f..de72cb6cda5f 100755
|
||
|
--- a/python/sepolicy/sepolicy/manpage.py
|
||
|
+++ b/python/sepolicy/sepolicy/manpage.py
|
||
|
@@ -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()
|
||
|
|
||
|
--
|
||
|
2.38.1
|
||
|
|