Commit 2f3f7ba1 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Jonathan Corbet
Browse files

docs: kerneldoc.py: simplify exception handling logic



Get rid of logger.verbose() which is causing the logger to not
work.

Also, instead of having try/except everywhere, place them on a
common place.

While here, get rid of some bogus logs.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Acked-by: default avatarAkira Yokosawa <akiyks@gmail.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
Message-ID: <a2cc32d5d519ed343158a915c39e8dc536a8ddb7.1747817887.git.mchehab+huawei@kernel.org>
parent 411c08cc
Loading
Loading
Loading
Loading
+46 −64
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ from docutils.parsers.rst import directives, Directive
import sphinx
from sphinx.util.docutils import switch_source_input
from sphinx.util import logging
from pprint import pformat

srctree = os.path.abspath(os.environ["srctree"])
sys.path.insert(0, os.path.join(srctree, "scripts/lib/kdoc"))
@@ -49,7 +50,7 @@ from kdoc_output import RestFormat

__version__  = '1.0'
kfiles = None
logger = logging.getLogger('kerneldoc')
logger = logging.getLogger(__name__)

def cmd_str(cmd):
    """
@@ -190,22 +191,14 @@ class KernelDocDirective(Directive):

        return cmd

    def run_cmd(self):
    def run_cmd(self, cmd):
        """
        Execute an external kernel-doc command.
        """

        env = self.state.document.settings.env
        cmd = self.handle_args()

        if self.verbose >= 1:
            print(cmd_str(cmd))

        node = nodes.section()

        try:
            logger.verbose("calling kernel-doc '%s'" % (" ".join(cmd)))

        p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()

@@ -220,16 +213,9 @@ class KernelDocDirective(Directive):
        elif env.config.kerneldoc_verbosity > 0:
            sys.stderr.write(err)

        except Exception as e:  # pylint: disable=W0703
            logger.warning("kernel-doc '%s' processing failed with: %s" %
                                (" ".join(cmd), str(e)))
            return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]

        filenames = self.parse_args["file_list"]
        for filename in filenames:
            ret = self.parse_msg(filename, node, out, cmd)
            if ret:
                return ret
            self.parse_msg(filename, node, out, cmd)

        return node.children

@@ -240,7 +226,6 @@ class KernelDocDirective(Directive):

        env = self.state.document.settings.env

        try:
        lines = statemachine.string2lines(out, self.tab_width,
                                            convert_whitespace=True)
        result = ViewList()
@@ -260,20 +245,12 @@ class KernelDocDirective(Directive):

        self.do_parse(result, node)

        except Exception as e:  # pylint: disable=W0703
            logger.warning("kernel-doc '%s' processing failed with: %s" %
                                (cmd_str(cmd), str(e)))
            return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]

        return None

    def run_kdoc(self, kfiles):
    def run_kdoc(self, cmd, kfiles):
        """
        Execute kernel-doc classes directly instead of running as a separate
        command.
        """

        cmd = self.handle_args()
        env = self.state.document.settings.env

        node = nodes.section()
@@ -282,22 +259,27 @@ class KernelDocDirective(Directive):
        filenames = self.parse_args["file_list"]

        for filename, out in kfiles.msg(**self.msg_args, filenames=filenames):
            if self.verbose >= 1:
                print(cmd_str(cmd))

            ret = self.parse_msg(filename, node, out, cmd)
            if ret:
                return ret
            self.parse_msg(filename, node, out, cmd)

        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(kfiles)
                return self.run_kdoc(cmd, kfiles)
            else:
            return self.run_cmd()
                return self.run_cmd(cmd)

        except Exception as e:  # pylint: disable=W0703
            logger.warning("kernel-doc '%s' processing failed with: %s" %
                           (cmd_str(cmd), pformat(e)))
            return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]

    def do_parse(self, result, node):
        with switch_source_input(self.state, result):