[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <fb800900352d90a0e501e5d6732e1bea277478f2.1738020236.git.mchehab+huawei@kernel.org>
Date: Tue, 28 Jan 2025 01:06:07 +0100
From: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>
To: Linux Doc Mailing List <linux-doc@...r.kernel.org>,
Jonathan Corbet <corbet@....net>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>,
"Mauro Carvalho Chehab" <mchehab+huawei@...nel.org>,
linux-kernel@...r.kernel.org
Subject: [RFC v2 18/38] docs: sphinx/kernel_abi: use AbiParser directly
Instead of running get_abi.py script, import AbiParser class and
handle messages directly there using an interactor. This shold save some
memory, as there's no need to exec python inside the Sphinx python
extension.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>
---
Documentation/sphinx/kernel_abi.py | 26 +++++++++++++++-----------
scripts/get_abi.py | 2 +-
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/Documentation/sphinx/kernel_abi.py b/Documentation/sphinx/kernel_abi.py
index fc7500fad119..93d537d8cb6c 100644
--- a/Documentation/sphinx/kernel_abi.py
+++ b/Documentation/sphinx/kernel_abi.py
@@ -42,6 +42,11 @@ from docutils.parsers.rst import directives, Directive
from sphinx.util.docutils import switch_source_input
from sphinx.util import logging
+srctree = os.path.abspath(os.environ["srctree"])
+sys.path.insert(0, os.path.join(srctree, "scripts"))
+
+from get_abi import AbiParser
+
__version__ = "1.0"
@@ -65,7 +70,7 @@ class KernelCmd(Directive):
logger = logging.getLogger('kernel_abi')
option_spec = {
- "debug" : directives.flag,
+ "debug": directives.flag,
}
def run(self):
@@ -73,18 +78,17 @@ class KernelCmd(Directive):
if not doc.settings.file_insertion_enabled:
raise self.warning("docutils: file insertion disabled")
- srctree = os.path.abspath(os.environ["srctree"])
+ path = os.path.join(srctree, "Documentation", self.arguments[0])
+ parser = AbiParser(path, logger=self.logger)
+ parser.parse_abi()
+ parser.check_issues()
- args = [
- os.path.join(srctree, 'scripts/get_abi.py'),
- '-D', os.path.join(srctree, 'Documentation', self.arguments[0]),
- 'rest',
- '--enable-lineno',
- ]
+ msg = ""
+ for m in parser.doc(enable_lineno=True, show_file=True):
+ msg += m
- lines = subprocess.check_output(args, cwd=os.path.dirname(doc.current_source)).decode('utf-8')
- nodeList = self.nestedParse(lines, self.arguments[0])
- return nodeList
+ node = self.nested_parse(msg, self.arguments[0])
+ return node
def nested_parse(self, lines, fname):
env = self.state.document.settings.env
diff --git a/scripts/get_abi.py b/scripts/get_abi.py
index 2aec1f9dc5aa..3a8dcff85dc2 100755
--- a/scripts/get_abi.py
+++ b/scripts/get_abi.py
@@ -441,7 +441,7 @@ class AbiParser:
return new_desc + "\n\n"
- def doc(self, enable_lineno, output_in_txt, show_file=False):
+ def doc(self, enable_lineno=False, output_in_txt=False, show_file=False):
"""Print ABI at stdout"""
part = None
--
2.48.1
Powered by blists - more mailing lists