| From 2404dad1f67f8917e30fc22a85e0dbcc85b99955 Mon Sep 17 00:00:00 2001 |
| From: Jonathan Corbet <corbet@lwn.net> |
| Date: Tue, 21 May 2019 14:42:34 -0600 |
| Subject: doc: Cope with the deprecation of AutoReporter |
| |
| From: Jonathan Corbet <corbet@lwn.net> |
| |
| commit 2404dad1f67f8917e30fc22a85e0dbcc85b99955 upstream. |
| |
| AutoReporter is going away; recent versions of sphinx emit a warning like: |
| |
| Documentation/sphinx/kerneldoc.py:125: |
| RemovedInSphinx20Warning: AutodocReporter is now deprecated. |
| Use sphinx.util.docutils.switch_source_input() instead. |
| |
| Make the switch. But switch_source_input() only showed up in 1.7, so we |
| have to do ugly version checks to keep things working in older versions. |
| |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Jonathan Corbet <corbet@lwn.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| Documentation/sphinx/kerneldoc.py | 34 ++++++++++++++++++++++++++-------- |
| 1 file changed, 26 insertions(+), 8 deletions(-) |
| |
| --- a/Documentation/sphinx/kerneldoc.py |
| +++ b/Documentation/sphinx/kerneldoc.py |
| @@ -37,7 +37,17 @@ import glob |
| from docutils import nodes, statemachine |
| from docutils.statemachine import ViewList |
| from docutils.parsers.rst import directives, Directive |
| -from sphinx.ext.autodoc import AutodocReporter |
| + |
| +# |
| +# AutodocReporter is only good up to Sphinx 1.7 |
| +# |
| +import sphinx |
| + |
| +Use_SSI = sphinx.__version__[:3] >= '1.7' |
| +if Use_SSI: |
| + from sphinx.util.docutils import switch_source_input |
| +else: |
| + from sphinx.ext.autodoc import AutodocReporter |
| |
| __version__ = '1.0' |
| |
| @@ -121,13 +131,7 @@ class KernelDocDirective(Directive): |
| lineoffset += 1 |
| |
| node = nodes.section() |
| - buf = self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter |
| - self.state.memo.reporter = AutodocReporter(result, self.state.memo.reporter) |
| - self.state.memo.title_styles, self.state.memo.section_level = [], 0 |
| - try: |
| - self.state.nested_parse(result, 0, node, match_titles=1) |
| - finally: |
| - self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter = buf |
| + self.do_parse(result, node) |
| |
| return node.children |
| |
| @@ -136,6 +140,20 @@ class KernelDocDirective(Directive): |
| (" ".join(cmd), str(e))) |
| return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))] |
| |
| + def do_parse(self, result, node): |
| + if Use_SSI: |
| + with switch_source_input(self.state, result): |
| + self.state.nested_parse(result, 0, node, match_titles=1) |
| + else: |
| + save = self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter |
| + self.state.memo.reporter = AutodocReporter(result, self.state.memo.reporter) |
| + self.state.memo.title_styles, self.state.memo.section_level = [], 0 |
| + try: |
| + self.state.nested_parse(result, 0, node, match_titles=1) |
| + finally: |
| + self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter = save |
| + |
| + |
| def setup(app): |
| app.add_config_value('kerneldoc_bin', None, 'env') |
| app.add_config_value('kerneldoc_srctree', None, 'env') |