Em Fri, 27 Jun 2025 17:37:16 +0900 Akira Yokosawa <akiyks@xxxxxxxxx> 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@xxxxxxxxx> 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@xxxxxxxxx> Closes: https://lore.kernel.org/linux-doc/57be9f77-9a94-4cde-aacb-184cae111506@xxxxxxxxx/ Fixes: 27ad33b6b349 ("kernel-doc: Fix symbol matching for dropped suffixes") Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> 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