On Tue, Nov 15, 2022 at 8:49 PM Petr Lautrbach <plautrba@xxxxxxxxxx> wrote: > > From: Petr Lautrbach <lautrbach@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > 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..2ca02ee9a0cf 100755 > --- a/python/sepolicy/sepolicy.py > +++ b/python/sepolicy/sepolicy.py [...] > @@ -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])) > + results = map(lambda x: x.get(), async_results) > + for result in results: > + manpage_domains.update(set(result[0])) > + manpage_roles.update(set(result[1])) The above four lines can be written a bit more nicely as follows: for result in async_results: domains, roles = result.get() manpage_domains.update(domains) manpage_roles.update(roles) Note that set.update() accepts any iterable, it doesn't need to be a set. > + > p.close() > p.join() > [...] -- Ondrej Mosnacek Senior Software Engineer, Linux Security - SELinux kernel Red Hat, Inc.