docs: sphinx: kerneldoc: verbose kernel-doc command if V=1

It is useful to know what kernel-doc command was used during
document build time, as it allows one to check the output the same
way as Sphinx extension does.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/a2f01590814b111e138f278e8a721024fdf2d445.1744106242.git.mchehab+huawei@kernel.org
This commit is contained in:
Mauro Carvalho Chehab 2025-04-08 18:09:22 +08:00 committed by Jonathan Corbet
parent 02df8e3b33
commit 668b9d1dce

View file

@ -43,6 +43,29 @@ from sphinx.util import logging
__version__ = '1.0'
def cmd_str(cmd):
"""
Helper function to output a command line that can be used to produce
the same records via command line. Helpful to debug troubles at the
script.
"""
cmd_line = ""
for w in cmd:
if w == "" or " " in w:
esc_cmd = "'" + w + "'"
else:
esc_cmd = w
if cmd_line:
cmd_line += " " + esc_cmd
continue
else:
cmd_line = esc_cmd
return cmd_line
class KernelDocDirective(Directive):
"""Extract kernel-doc comments from the specified file"""
required_argument = 1
@ -57,6 +80,7 @@ class KernelDocDirective(Directive):
}
has_content = False
logger = logging.getLogger('kerneldoc')
verbose = 0
def run(self):
env = self.state.document.settings.env
@ -65,6 +89,13 @@ class KernelDocDirective(Directive):
filename = env.config.kerneldoc_srctree + '/' + self.arguments[0]
export_file_patterns = []
verbose = os.environ.get("V")
if verbose:
try:
self.verbose = int(verbose)
except ValueError:
pass
# Tell sphinx of the dependency
env.note_dependency(os.path.abspath(filename))
@ -104,6 +135,9 @@ class KernelDocDirective(Directive):
cmd += [filename]
if self.verbose >= 1:
print(cmd_str(cmd))
try:
self.logger.verbose("calling kernel-doc '%s'" % (" ".join(cmd)))