docs: maintainers_include: add external profile URLs

Some subsystem profiles are maintained elsewhere. Add them to
the output.

Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Message-ID: <b80639a38abdc934589e88bc9fc3029ad5c20bfe.1777295258.git.mchehab+huawei@kernel.org>
This commit is contained in:
Mauro Carvalho Chehab 2026-04-27 16:22:23 +02:00 committed by Jonathan Corbet
parent b01f7f29f7
commit a2560483c6

View File

@ -37,6 +37,7 @@ class MaintainersParser:
def __init__(self, base_path, path):
self.profiles = {}
self.profile_urls = {}
result = list()
result.append(".. _maintainers:")
@ -81,6 +82,16 @@ class MaintainersParser:
else:
self.profiles[fname] += f", {subsystem_name}"
match = re.match(r"P:\s*(https?://.*)", line)
if match:
url = match.group(1).strip()
if url not in self.profile_urls:
if self.profile_urls.get(url) is None:
self.profile_urls[url] = subsystem_name
else:
self.profile_urls[url] += f", {subsystem_name}"
# Linkify all non-wildcard refs to ReST files in Documentation/.
pat = r'(Documentation/([^\s\?\*]*)\.rst)'
m = re.search(pat, line)
@ -219,18 +230,31 @@ class MaintainersProfile(Include):
def emit(self, base_path, path):
"""Parse all the MAINTAINERS lines looking for profile entries"""
profiles = MaintainersParser(base_path, path).profiles
maint = MaintainersParser(base_path, path)
output = ".. toctree::\n"
output += " :maxdepth: 2\n\n"
items = sorted(profiles.items(), key=lambda kv: (kv[1] or "", kv[0]))
items = sorted(maint.profiles.items(),
key=lambda kv: (kv[1] or "", kv[0]))
for fname, profile in items:
if profile:
output += f" {profile} <{fname}>\n"
else:
output += f" {fname}\n"
output += "\n**External profiles**\n\n"
items = sorted(maint.profile_urls.items(),
key=lambda kv: (kv[1] or "", kv[0]))
for url, profile in items:
if profile:
output += f"- {profile} <{url}>\n"
else:
output += f"- {url}\n"
output += "\n"
self.state_machine.insert_input(statemachine.string2lines(output), path)
def run(self):