All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Linux Doc Mailing List <linux-doc@vger.kernel.org>,
	Jonathan Corbet <corbet@lwn.net>,
	Donald Hunter <donald.hunter@gmail.com>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	Matthew Wilcox <willy@infradead.org>
Subject: Re: [PATCH v8 13/13] docs: parser_yaml.py: fix backward compatibility with old docutils
Date: Wed, 9 Jul 2025 17:16:43 +0200	[thread overview]
Message-ID: <20250709171643.1780011f@sal.lan> (raw)
In-Reply-To: <57be9f77-9a94-4cde-aacb-184cae111506@gmail.com>

Em Fri, 27 Jun 2025 17:37:16 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> [Dropping most CCs, +CC: Matthew]
> 
> Hi Mauro,
> 
> On Fri, 27 Jun 2025 08:48:14 +0200, Mauro Carvalho Chehab wrote:
> > Hi Akira,
> > 
> > Em Fri, 27 Jun 2025 08:59:16 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:  
> [...]
> 
> >>
> >> opensuse/leap:15.6's Sphinx 4.2.0 has docutils 0.16 with it, but it is
> >> python 3.6 base and it does't work with the ynl integration.
> >> As opensuse/leap:15.6 provides Sphinx 7.2.6 (on top of python 3.11) as
> >> an alternative, obsoleting it should be acceptable.    
> > 
> > Thank you for the tests! At changes.rst we updated the minimum
> > python requirement to:
> > 
> > 	Python (optional)      3.9.x            python3 --version
> > 
> > So, I guess we can keep this way. 
> > 
> > The 3.9 requirement reflects the needs of most scripts. Still, for doc build, 
> > the min requirement was to support f-string, so Python 3.6.
> >   
> 
> Sorry, I was barking up the wrong tree.
> 
> An example of messages from opensuse/leap:15.6's Sphinx looks like this:
> 
> WARNING: kernel-doc './scripts/kernel-doc.py -rst -enable-lineno -export ./fs/pstore/blk.c' processing failed with: AttributeError("'str' object has no attribute 'removesuffix'",)
> 
> The "removesuffix" is already there in scripts/lib/kdoc/kdoc_parser.py at
> current docs-next.  It was added by commit 27ad33b6b349 ("kernel-doc: Fix
> symbol matching for dropped suffixes") submitted by Matthew.
> 
> But I have to ask, do we really want the compatibility with python <3.9
> restored?

I actually wrote a patch addressing that. Yet, looking at the results 
from the tests I did for the sphinx-pre-install script, what we have is:

  PASSED 1 - OS: AlmaLinux release 9.6 (Sage Margay), Python: 3.9.21, hostname: almalinux-test
  PASSED 1 - OS: Arch Linux, Python: 3.13.5
  PASSED 1 - OS: CentOS Stream release 9, Python: 3.9.23, hostname: centos-test
  PASSED 1 - OS: Debian GNU/Linux 12, Python: 3.11.2, hostname: debian-test
  PASSED 1 - OS: Devuan GNU/Linux 5, Python: 3.11.2, hostname: devuan-test
  PASSED 1 - OS: Fedora release 42 (Adams), Python: 3.13.5
  PASSED 1 - OS: Gentoo Base System release 2.17, Python: 3.13.3
  PASSED 1 - OS: Kali GNU/Linux 2025.2, Python: 3.13.3, hostname: kali-test
  PASSED 1 - OS: Mageia 9, Python: 3.10.11, hostname: mageia-test
  PASSED 1 - OS: Linux Mint 22, Python: 3.10.12, hostname: mint-test
  PASSED 1 - OS: openEuler release 25.03, Python: 3.11.11, hostname: openeuler-test
  PASSED 1 - OS: OpenMandriva Lx 4.3, Python: 3.9.8, hostname: openmandriva-test
  PASSED 1 - OS: openSUSE Tumbleweed, Python: 3.13.5, hostname: opensuse-test
  PASSED 1 - OS: Rocky Linux release 8.9 (Green Obsidian), Python: 3.6.8, hostname: rockylinux8-test
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 7.4.7, Docutils 0.21.2, Python3.9.20
  PASSED 1 - OS: Rocky Linux release 9.6 (Blue Onyx), Python: 3.9.21, hostname: rockylinux-test
  PASSED 1 - OS: Springdale Open Enterprise Linux release 9.2 (Parma), Python: 3.9.16, hostname: springdalelinux-test
  PASSED 1 - OS: Ubuntu 24.04.2 LTS, Python: 3.12.3, hostname: ubuntu-lts-test
  PASSED 1 - OS: Ubuntu 25.04, Python: 3.13.3, hostname: ubuntu-test

This is after running the script a second time after installing
either python 311 or python39 on openSUSE and OpenMandriva. On
both, it is possible to install distro-provided packages with
Python 3.9 or 3.11.

The only exception for RHEL8-based distros. On those, the
installed version is 3.6.x, which doesn't have f-strings. So,
it won't work anyway. Yet, RHEL8 powertools/epel repositories
have enough to install python 3.9 and Sphinx via venv.

With that in mind, I don't see any reason why restoring
backward-compatibility with 3.7.

But, someone things otherwise, the patch addressing it is
enclosed.


---

[PATCH] scripts: kdoc: make it backward-compatible with Python 3.7

There was a change at kdoc that ended breaking compatibility
with Python 3.7: str.removesuffix() was introduced on version
3.9.

Restore backward compatibility.

Reported-by: Akira Yokosawa <akiyks@gmail.com>
Closes: https://lore.kernel.org/linux-doc/57be9f77-9a94-4cde-aacb-184cae111506@gmail.com/
Fixes: 27ad33b6b349 ("kernel-doc: Fix symbol matching for dropped suffixes")
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

diff --git a/scripts/lib/kdoc/kdoc_parser.py b/scripts/lib/kdoc/kdoc_parser.py
index 831f061f61b8..6273141033a8 100644
--- a/scripts/lib/kdoc/kdoc_parser.py
+++ b/scripts/lib/kdoc/kdoc_parser.py
@@ -1214,7 +1214,9 @@ class KernelDoc:
         # Found an export, trim out any special suffixes
         #
         for suffix in suffixes:
-            symbol = symbol.removesuffix(suffix)
+            # Be backward compatible with Python < 3.9
+            if symbol.endswith(suffix):
+                symbol = symbol[:-len(suffix)]
         function_set.add(symbol)
         return True
 




      reply	other threads:[~2025-07-09 15:16 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-26  8:12 [PATCH v8 00/13] Don't generate netlink .rst files inside $(srctree) Mauro Carvalho Chehab
2025-06-26  8:12 ` [PATCH v8 01/13] docs: netlink: netlink-raw.rst: use :ref: instead of :doc: Mauro Carvalho Chehab
2025-06-26  8:12 ` [PATCH v8 02/13] tools: ynl_gen_rst.py: Split library from command line tool Mauro Carvalho Chehab
2025-06-27 10:29   ` Donald Hunter
2025-06-26  8:12 ` [PATCH v8 03/13] docs: netlink: index.rst: add a netlink index file Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 04/13] tools: ynl_gen_rst.py: cleanup coding style Mauro Carvalho Chehab
2025-06-27 10:41   ` Donald Hunter
2025-06-26  8:13 ` [PATCH v8 05/13] docs: sphinx: add a parser for yaml files for Netlink specs Mauro Carvalho Chehab
2025-06-27 10:25   ` Donald Hunter
2025-06-26  8:13 ` [PATCH v8 06/13] docs: use parser_yaml extension to handle " Mauro Carvalho Chehab
2025-06-27 10:28   ` Donald Hunter
2025-07-09 15:25     ` Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 07/13] docs: uapi: netlink: update netlink specs link Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 08/13] tools: ynl_gen_rst.py: drop support for generating index files Mauro Carvalho Chehab
2025-06-27 10:49   ` Donald Hunter
2025-06-26  8:13 ` [PATCH v8 09/13] docs: netlink: remove obsolete .gitignore from unused directory Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 10/13] MAINTAINERS: add netlink_yml_parser.py to linux-doc Mauro Carvalho Chehab
2025-06-27 10:50   ` Donald Hunter
2025-06-26  8:13 ` [PATCH v8 11/13] tools: netlink_yml_parser.py: add line numbers to parsed data Mauro Carvalho Chehab
2025-06-27 11:03   ` Donald Hunter
2025-07-09 15:44     ` Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 12/13] docs: parser_yaml.py: add support for line numbers from the parser Mauro Carvalho Chehab
2025-06-26  8:13 ` [PATCH v8 13/13] docs: parser_yaml.py: fix backward compatibility with old docutils Mauro Carvalho Chehab
2025-06-26 23:59   ` Akira Yokosawa
2025-06-27  6:48     ` Mauro Carvalho Chehab
2025-06-27  8:37       ` Akira Yokosawa
2025-07-09 15:16         ` Mauro Carvalho Chehab [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250709171643.1780011f@sal.lan \
    --to=mchehab+huawei@kernel.org \
    --cc=akiyks@gmail.com \
    --cc=corbet@lwn.net \
    --cc=donald.hunter@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.