Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 2 additions & 15 deletions Documentation/maintainer/maintainer-entry-profile.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,5 @@ Existing profiles
For now, existing maintainer profiles are listed here; we will likely want
to do something different in the near future.

.. toctree::
:maxdepth: 1

../doc-guide/maintainer-profile
../nvdimm/maintainer-entry-profile
../arch/riscv/patch-acceptance
../process/maintainer-soc
../process/maintainer-soc-clean-dts
../driver-api/media/maintainer-entry-profile
../process/maintainer-netdev
../driver-api/vfio-pci-device-specific-driver-acceptance
../nvme/feature-and-quirk-policy
../filesystems/nfs/nfsd-maintainer-entry-profile
../filesystems/xfs/xfs-maintainer-entry-profile
../mm/damon/maintainer-profile
See Documentation/process/maintainer-handbooks.rst for subsystem-specific
profiles.
10 changes: 1 addition & 9 deletions Documentation/process/maintainer-handbooks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,4 @@ which is supplementary to the general development process handbook

Contents:

.. toctree::
:numbered:
:maxdepth: 2

maintainer-netdev
maintainer-soc
maintainer-soc-clean-dts
maintainer-tip
maintainer-kvm-x86
.. maintainers-profile-toc::
93 changes: 76 additions & 17 deletions Documentation/sphinx/maintainers_include.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import re
import os.path

from textwrap import indent

from docutils import statemachine
from docutils.parsers.rst import Directive
from docutils.parsers.rst.directives.misc import Include
Expand All @@ -30,20 +32,11 @@ def ErrorString(exc): # Shamelessly stolen from docutils

__version__ = '1.0'

def setup(app):
app.add_directive("maintainers-include", MaintainersInclude)
return dict(
version = __version__,
parallel_read_safe = True,
parallel_write_safe = True
)
class MaintainersParser:
"""Parse MAINTAINERS file(s) content"""

class MaintainersInclude(Include):
"""MaintainersInclude (``maintainers-include``) directive"""
required_arguments = 0

def parse_maintainers(self, path):
"""Parse all the MAINTAINERS lines into ReST for human-readability"""
def __init__(self, base_path, path):
self.profiles = list()

result = list()
result.append(".. _maintainers:")
Expand Down Expand Up @@ -78,6 +71,12 @@ def parse_maintainers(self, path):
# Drop needless input whitespace.
line = line.rstrip()

match = re.match(r"P:\s*(Documentation/\S+)\.rst", line)
if match:
fname = os.path.relpath(match.group(1), base_path)
if fname not in self.profiles:
self.profiles.append(fname)

# Linkify all non-wildcard refs to ReST files in Documentation/.
pat = r'(Documentation/([^\s\?\*]*)\.rst)'
m = re.search(pat, line)
Expand Down Expand Up @@ -165,12 +164,62 @@ def parse_maintainers(self, path):
for separated in field_content.split('\n'):
result.append(separated)

output = "\n".join(result)
self.output = "\n".join(result)

# Create a TOC class

class MaintainersInclude(Include):
"""MaintainersInclude (``maintainers-include``) directive"""
required_arguments = 0

def emit(self, base_path, path):
"""Parse all the MAINTAINERS lines into ReST for human-readability"""

output = MaintainersParser(base_path, path).output

# For debugging the pre-rendered results...
#print(output, file=open("/tmp/MAINTAINERS.rst", "w"))

self.state_machine.insert_input(
statemachine.string2lines(output), path)
self.state_machine.insert_input(statemachine.string2lines(output), path)

def run(self):
"""Include the MAINTAINERS file as part of this reST file."""
if not self.state.document.settings.file_insertion_enabled:
raise self.warning('"%s" directive disabled.' % self.name)

# Walk up source path directories to find Documentation/../
path = self.state_machine.document.attributes['source']
path = os.path.realpath(path)
tail = path
while tail != "Documentation" and tail != "":
(path, tail) = os.path.split(path)

# Append "MAINTAINERS"
path = os.path.join(path, "MAINTAINERS")
base_path = os.path.dirname(self.state.document.document.current_source)

try:
self.state.document.settings.record_dependencies.add(path)
lines = self.emit(base_path, path)
except IOError as error:
raise self.severe('Problems with "%s" directive path:\n%s.' %
(self.name, ErrorString(error)))

return []

class MaintainersProfile(Include):
required_arguments = 0

def emit(self, base_path, path):
"""Parse all the MAINTAINERS lines looking for profile entries"""

profiles = MaintainersParser(base_path, path).profiles

output = ".. toctree::\n"
output += " :maxdepth: 2\n\n"
output += indent("\n".join(profiles), " ")

self.state_machine.insert_input(statemachine.string2lines(output), path)

def run(self):
"""Include the MAINTAINERS file as part of this reST file."""
Expand All @@ -186,12 +235,22 @@ def run(self):

# Append "MAINTAINERS"
path = os.path.join(path, "MAINTAINERS")
base_path = os.path.dirname(self.state.document.document.current_source)

try:
self.state.document.settings.record_dependencies.add(path)
lines = self.parse_maintainers(path)
lines = self.emit(base_path, path)
except IOError as error:
raise self.severe('Problems with "%s" directive path:\n%s.' %
(self.name, ErrorString(error)))

return []

def setup(app):
app.add_directive("maintainers-include", MaintainersInclude)
app.add_directive("maintainers-profile-toc", MaintainersProfile)
return dict(
version = __version__,
parallel_read_safe = True,
parallel_write_safe = True
)
2 changes: 2 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -16108,6 +16108,7 @@ S: Maintained
W: https://linuxtv.org
Q: http://patchwork.kernel.org/project/linux-media/list/
T: git git://linuxtv.org/media.git
P: Documentation/driver-api/media/maintainer-entry-profile.rst
F: Documentation/admin-guide/media/
F: Documentation/devicetree/bindings/media/
F: Documentation/driver-api/media/
Expand Down Expand Up @@ -28547,6 +28548,7 @@ M: Ingo Molnar <mingo@redhat.com>
M: Borislav Petkov <bp@alien8.de>
M: Dave Hansen <dave.hansen@linux.intel.com>
M: x86@kernel.org
P: Documentation/process/maintainer-tip.rst
R: "H. Peter Anvin" <hpa@zytor.com>
L: linux-kernel@vger.kernel.org
S: Maintained
Expand Down
Loading