summaryrefslogtreecommitdiff
path: root/Documentation/sphinx/kerneldoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/sphinx/kerneldoc.py')
-rw-r--r--Documentation/sphinx/kerneldoc.py60
1 files changed, 11 insertions, 49 deletions
diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
index d8cdf068ef35..c1cadb4eb099 100644
--- a/Documentation/sphinx/kerneldoc.py
+++ b/Documentation/sphinx/kerneldoc.py
@@ -47,6 +47,10 @@ sys.path.insert(0, os.path.join(srctree, "tools/lib/python"))
from kdoc.kdoc_files import KernelFiles
from kdoc.kdoc_output import RestFormat
+# Used when verbose is active to show how to reproduce kernel-doc
+# issues via command line
+kerneldoc_bin = "tools/docs/kernel-doc"
+
__version__ = '1.0'
kfiles = None
logger = logging.getLogger(__name__)
@@ -95,7 +99,7 @@ class KernelDocDirective(Directive):
def handle_args(self):
env = self.state.document.settings.env
- cmd = [env.config.kerneldoc_bin, '-rst', '-enable-lineno']
+ cmd = [kerneldoc_bin, '-rst', '-enable-lineno']
filename = env.config.kerneldoc_srctree + '/' + self.arguments[0]
@@ -190,35 +194,7 @@ class KernelDocDirective(Directive):
return cmd
- def run_cmd(self, cmd):
- """
- Execute an external kernel-doc command.
- """
-
- env = self.state.document.settings.env
- node = nodes.section()
-
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- out, err = p.communicate()
-
- out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8')
-
- if p.returncode != 0:
- sys.stderr.write(err)
-
- logger.warning("kernel-doc '%s' failed with return code %d"
- % (" ".join(cmd), p.returncode))
- return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
- elif env.config.kerneldoc_verbosity > 0:
- sys.stderr.write(err)
-
- filenames = self.parse_args["file_list"]
- for filename in filenames:
- self.parse_msg(filename, node, out, cmd)
-
- return node.children
-
- def parse_msg(self, filename, node, out, cmd):
+ def parse_msg(self, filename, node, out):
"""
Handles a kernel-doc output for a given file
"""
@@ -244,7 +220,7 @@ class KernelDocDirective(Directive):
self.do_parse(result, node)
- def run_kdoc(self, cmd, kfiles):
+ def run_kdoc(self, kfiles):
"""
Execute kernel-doc classes directly instead of running as a separate
command.
@@ -258,23 +234,17 @@ class KernelDocDirective(Directive):
filenames = self.parse_args["file_list"]
for filename, out in kfiles.msg(**self.msg_args, filenames=filenames):
- self.parse_msg(filename, node, out, cmd)
+ self.parse_msg(filename, node, out)
return node.children
def run(self):
- global kfiles
-
cmd = self.handle_args()
if self.verbose >= 1:
logger.info(cmd_str(cmd))
try:
- if kfiles:
- return self.run_kdoc(cmd, kfiles)
- else:
- return self.run_cmd(cmd)
-
+ return self.run_kdoc(kfiles)
except Exception as e: # pylint: disable=W0703
logger.warning("kernel-doc '%s' processing failed with: %s" %
(cmd_str(cmd), pformat(e)))
@@ -286,19 +256,11 @@ class KernelDocDirective(Directive):
def setup_kfiles(app):
global kfiles
-
- kerneldoc_bin = app.env.config.kerneldoc_bin
-
- if kerneldoc_bin and kerneldoc_bin.endswith("kernel-doc.py"):
- print("Using Python kernel-doc")
- out_style = RestFormat()
- kfiles = KernelFiles(out_style=out_style, logger=logger)
- else:
- print(f"Using {kerneldoc_bin}")
+ out_style = RestFormat()
+ kfiles = KernelFiles(out_style=out_style, logger=logger)
def setup(app):
- app.add_config_value('kerneldoc_bin', None, 'env')
app.add_config_value('kerneldoc_srctree', None, 'env')
app.add_config_value('kerneldoc_verbosity', 1, 'env')