Skip to content

Commit 2f3f7ba

Browse files
mchehabJonathan Corbet
authored andcommitted
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: Mauro Carvalho Chehab <[email protected]> Acked-by: Akira Yokosawa <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]> Message-ID: <a2cc32d5d519ed343158a915c39e8dc536a8ddb7.1747817887.git.mchehab+huawei@kernel.org>
1 parent 411c08c commit 2f3f7ba

File tree

1 file changed

+46
-64
lines changed

1 file changed

+46
-64
lines changed

Documentation/sphinx/kerneldoc.py

Lines changed: 46 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import sphinx
4141
from sphinx.util.docutils import switch_source_input
4242
from sphinx.util import logging
43+
from pprint import pformat
4344

4445
srctree = os.path.abspath(os.environ["srctree"])
4546
sys.path.insert(0, os.path.join(srctree, "scripts/lib/kdoc"))
@@ -49,7 +50,7 @@
4950

5051
__version__ = '1.0'
5152
kfiles = None
52-
logger = logging.getLogger('kerneldoc')
53+
logger = logging.getLogger(__name__)
5354

5455
def cmd_str(cmd):
5556
"""
@@ -190,46 +191,31 @@ def handle_args(self):
190191

191192
return cmd
192193

193-
def run_cmd(self):
194+
def run_cmd(self, cmd):
194195
"""
195196
Execute an external kernel-doc command.
196197
"""
197198

198199
env = self.state.document.settings.env
199-
cmd = self.handle_args()
200-
201-
if self.verbose >= 1:
202-
print(cmd_str(cmd))
203-
204200
node = nodes.section()
205201

206-
try:
207-
logger.verbose("calling kernel-doc '%s'" % (" ".join(cmd)))
208-
209-
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
210-
out, err = p.communicate()
211-
212-
out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8')
202+
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
203+
out, err = p.communicate()
213204

214-
if p.returncode != 0:
215-
sys.stderr.write(err)
205+
out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8')
216206

217-
logger.warning("kernel-doc '%s' failed with return code %d"
218-
% (" ".join(cmd), p.returncode))
219-
return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
220-
elif env.config.kerneldoc_verbosity > 0:
221-
sys.stderr.write(err)
207+
if p.returncode != 0:
208+
sys.stderr.write(err)
222209

223-
except Exception as e: # pylint: disable=W0703
224-
logger.warning("kernel-doc '%s' processing failed with: %s" %
225-
(" ".join(cmd), str(e)))
210+
logger.warning("kernel-doc '%s' failed with return code %d"
211+
% (" ".join(cmd), p.returncode))
226212
return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
213+
elif env.config.kerneldoc_verbosity > 0:
214+
sys.stderr.write(err)
227215

228216
filenames = self.parse_args["file_list"]
229217
for filename in filenames:
230-
ret = self.parse_msg(filename, node, out, cmd)
231-
if ret:
232-
return ret
218+
self.parse_msg(filename, node, out, cmd)
233219

234220
return node.children
235221

@@ -240,40 +226,31 @@ def parse_msg(self, filename, node, out, cmd):
240226

241227
env = self.state.document.settings.env
242228

243-
try:
244-
lines = statemachine.string2lines(out, self.tab_width,
245-
convert_whitespace=True)
246-
result = ViewList()
247-
248-
lineoffset = 0;
249-
line_regex = re.compile(r"^\.\. LINENO ([0-9]+)$")
250-
for line in lines:
251-
match = line_regex.search(line)
252-
if match:
253-
# sphinx counts lines from 0
254-
lineoffset = int(match.group(1)) - 1
255-
# we must eat our comments since the upset the markup
256-
else:
257-
doc = str(env.srcdir) + "/" + env.docname + ":" + str(self.lineno)
258-
result.append(line, doc + ": " + filename, lineoffset)
259-
lineoffset += 1
260-
261-
self.do_parse(result, node)
262-
263-
except Exception as e: # pylint: disable=W0703
264-
logger.warning("kernel-doc '%s' processing failed with: %s" %
265-
(cmd_str(cmd), str(e)))
266-
return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
229+
lines = statemachine.string2lines(out, self.tab_width,
230+
convert_whitespace=True)
231+
result = ViewList()
232+
233+
lineoffset = 0;
234+
line_regex = re.compile(r"^\.\. LINENO ([0-9]+)$")
235+
for line in lines:
236+
match = line_regex.search(line)
237+
if match:
238+
# sphinx counts lines from 0
239+
lineoffset = int(match.group(1)) - 1
240+
# we must eat our comments since the upset the markup
241+
else:
242+
doc = str(env.srcdir) + "/" + env.docname + ":" + str(self.lineno)
243+
result.append(line, doc + ": " + filename, lineoffset)
244+
lineoffset += 1
267245

268-
return None
246+
self.do_parse(result, node)
269247

270-
def run_kdoc(self, kfiles):
248+
def run_kdoc(self, cmd, kfiles):
271249
"""
272250
Execute kernel-doc classes directly instead of running as a separate
273251
command.
274252
"""
275253

276-
cmd = self.handle_args()
277254
env = self.state.document.settings.env
278255

279256
node = nodes.section()
@@ -282,22 +259,27 @@ def run_kdoc(self, kfiles):
282259
filenames = self.parse_args["file_list"]
283260

284261
for filename, out in kfiles.msg(**self.msg_args, filenames=filenames):
285-
if self.verbose >= 1:
286-
print(cmd_str(cmd))
287-
288-
ret = self.parse_msg(filename, node, out, cmd)
289-
if ret:
290-
return ret
262+
self.parse_msg(filename, node, out, cmd)
291263

292264
return node.children
293265

294266
def run(self):
295267
global kfiles
296268

297-
if kfiles:
298-
return self.run_kdoc(kfiles)
299-
else:
300-
return self.run_cmd()
269+
cmd = self.handle_args()
270+
if self.verbose >= 1:
271+
logger.info(cmd_str(cmd))
272+
273+
try:
274+
if kfiles:
275+
return self.run_kdoc(cmd, kfiles)
276+
else:
277+
return self.run_cmd(cmd)
278+
279+
except Exception as e: # pylint: disable=W0703
280+
logger.warning("kernel-doc '%s' processing failed with: %s" %
281+
(cmd_str(cmd), pformat(e)))
282+
return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
301283

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

0 commit comments

Comments
 (0)