Kernel-doc requires at least version 3.6 to run, as it uses f-string.
Yet, Kernel build currently calls kernel-doc with -none on some places.
Better not to bail out when older versions are found.
Versions of Python prior to 3.7 do not guarantee to remember the insertion
order of dicts; since kernel-doc depends on that guarantee, running with
such older versions could result in output with reordered sections.
Check Python version when called via command line.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
scripts/kernel-doc.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/scripts/kernel-doc.py b/scripts/kernel-doc.py
index 12ae66f40bd7..fc3d46ef519f 100755
--- a/scripts/kernel-doc.py
+++ b/scripts/kernel-doc.py
@@ -271,6 +271,16 @@ def main():
logger.addHandler(handler)
+ python_ver = sys.version_info[:2]
+ if python_ver < (3,6):
+ logger.warning("Python 3.6 or later is required by kernel-doc")
+
+ # Return 0 here to avoid breaking compilation
+ sys.exit(0)
+
+ if python_ver < (3,7):
+ logger.warning("Python 3.7 or later is required for correct results")
+
if args.man:
out_style = ManFormat(modulename=args.modulename)
elif args.none:
--
2.50.0
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes: > Kernel-doc requires at least version 3.6 to run, as it uses f-string. > Yet, Kernel build currently calls kernel-doc with -none on some places. > Better not to bail out when older versions are found. > > Versions of Python prior to 3.7 do not guarantee to remember the insertion > order of dicts; since kernel-doc depends on that guarantee, running with > such older versions could result in output with reordered sections. > > Check Python version when called via command line. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > --- > scripts/kernel-doc.py | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/scripts/kernel-doc.py b/scripts/kernel-doc.py > index 12ae66f40bd7..fc3d46ef519f 100755 > --- a/scripts/kernel-doc.py > +++ b/scripts/kernel-doc.py > @@ -271,6 +271,16 @@ def main(): > > logger.addHandler(handler) > > + python_ver = sys.version_info[:2] > + if python_ver < (3,6): > + logger.warning("Python 3.6 or later is required by kernel-doc") Does this really work on truly old Python versions? I don't have an easy way to try it, but I would expect things to fail with a syntax error (due to the f-strings) at the import stage...? Thanks, jon
© 2016 - 2025 Red Hat, Inc.