Re: Please backport commit 00d95fcc4dee ("docs: kdoc: handle the obsolescensce of docutils.ErrorString()") to v6.17.y

From: Salvatore Bonaccorso

Date: Tue Oct 28 2025 - 16:10:48 EST


Hi,

On Mon, Oct 27, 2025 at 10:06:33AM -0600, Jonathan Corbet wrote:
> Salvatore Bonaccorso <carnil@xxxxxxxxxx> writes:
>
> > Hi,
> >
> > On Sun, Oct 26, 2025 at 08:36:00AM +0100, Andreas Radke wrote:
> >> For kernel 6.12 there's just one more place required to add the fix:
> >>
> >> --- a/Documentation/sphinx/kernel_abi.py 2025-10-23 16:20:48.000000000 +0200
> >> +++ b/Documentation/sphinx/kernel_abi.py.new 2025-10-26 08:08:33.168985951 +0100
> >> @@ -42,9 +42,11 @@
> >> from docutils import nodes, statemachine
> >> from docutils.statemachine import ViewList
> >> from docutils.parsers.rst import directives, Directive
> >> -from docutils.utils.error_reporting import ErrorString
> >> from sphinx.util.docutils import switch_source_input
> >>
> >> +def ErrorString(exc): # Shamelessly stolen from docutils
> >> + return f'{exc.__class__.__name}: {exc}'
> >> +
> >> __version__ = '1.0'
> >>
> >> def setup(app):
> >
> > Yes this is why I asked Jonathan, how to handle backports to older
> > series, if it is wanted to pick specifically as well faccc0ec64e1
> > ("docs: sphinx/kernel_abi: adjust coding style") or a partial backport
> > of it, or do a 6.12.y backport of 00d95fcc4dee with additional
> > changes (like you pointed out).
> >
> > I'm just not sure what is preferred here.
>
> I'm not sure it matters that much...the additional change suggested by
> Andreas seems fine. It's just a backport, and it shouldn't break
> anything, so doesn't seem worth a lot of worry.

Okay here is a respective backported change for the 6.12.y series as
well.

Does that look good for you?

Regards,
Salvatore
>From aceb23b9348b98fb93a57cb70149ca8c43962aec Mon Sep 17 00:00:00 2001
From: Jonathan Corbet <corbet@xxxxxxx>
Date: Tue, 9 Sep 2025 13:35:37 -0600
Subject: [PATCH] docs: kdoc: handle the obsolescensce of
docutils.ErrorString()

commit 00d95fcc4dee66dfb6980de6f2973b32f973a1eb upstream.

The ErrorString() and SafeString() docutils functions were helpers meant to
ease the handling of encodings during the Python 3 transition. There is no
real need for them after Python 3.6, and docutils 0.22 removes them,
breaking the docs build

Handle this by just injecting our own one-liner version of ErrorString(),
and removing the sole SafeString() call entirely.

Reported-by: Zhixu Liu <zhixu.liu@xxxxxxxxx>
Signed-off-by: Jonathan Corbet <corbet@xxxxxxx>
Message-ID: <87ldmnv2pi.fsf@xxxxxxxxxxxxxx>
[ Salvatore Bonaccorso: Backport to v6.17.y for context changes in
Documentation/sphinx/kernel_include.py with major refactorings for the v6.18
development cycle. Backport ErrorString definition as well to
Documentation/sphinx/kernel_abi.py file for 6.12.y where it is imported
from docutils before the faccc0ec64e1 ("docs: sphinx/kernel_abi: adjust
coding style") change. ]
Suggested-by: Andreas Radke <andreas.radke@xxxxxxxxxxx>
Signed-off-by: Salvatore Bonaccorso <carnil@xxxxxxxxxx>
---
Documentation/sphinx/kernel_abi.py | 4 +++-
Documentation/sphinx/kernel_feat.py | 4 +++-
Documentation/sphinx/kernel_include.py | 6 ++++--
Documentation/sphinx/maintainers_include.py | 4 +++-
4 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/Documentation/sphinx/kernel_abi.py b/Documentation/sphinx/kernel_abi.py
index 5911bd0d7965..51a92b371872 100644
--- a/Documentation/sphinx/kernel_abi.py
+++ b/Documentation/sphinx/kernel_abi.py
@@ -42,9 +42,11 @@ import kernellog
from docutils import nodes, statemachine
from docutils.statemachine import ViewList
from docutils.parsers.rst import directives, Directive
-from docutils.utils.error_reporting import ErrorString
from sphinx.util.docutils import switch_source_input

+def ErrorString(exc): # Shamelessly stolen from docutils
+ return f'{exc.__class__.__name}: {exc}'
+
__version__ = '1.0'

def setup(app):
diff --git a/Documentation/sphinx/kernel_feat.py b/Documentation/sphinx/kernel_feat.py
index 03ace5f01b5c..2db63dd20399 100644
--- a/Documentation/sphinx/kernel_feat.py
+++ b/Documentation/sphinx/kernel_feat.py
@@ -40,9 +40,11 @@ import sys
from docutils import nodes, statemachine
from docutils.statemachine import ViewList
from docutils.parsers.rst import directives, Directive
-from docutils.utils.error_reporting import ErrorString
from sphinx.util.docutils import switch_source_input

+def ErrorString(exc): # Shamelessly stolen from docutils
+ return f'{exc.__class__.__name}: {exc}'
+
__version__ = '1.0'

def setup(app):
diff --git a/Documentation/sphinx/kernel_include.py b/Documentation/sphinx/kernel_include.py
index 638762442336..ccbddcc4af79 100755
--- a/Documentation/sphinx/kernel_include.py
+++ b/Documentation/sphinx/kernel_include.py
@@ -34,13 +34,15 @@ u"""
import os.path

from docutils import io, nodes, statemachine
-from docutils.utils.error_reporting import SafeString, ErrorString
from docutils.parsers.rst import directives
from docutils.parsers.rst.directives.body import CodeBlock, NumberLines
from docutils.parsers.rst.directives.misc import Include

__version__ = '1.0'

+def ErrorString(exc): # Shamelessly stolen from docutils
+ return f'{exc.__class__.__name}: {exc}'
+
# ==============================================================================
def setup(app):
# ==============================================================================
@@ -111,7 +113,7 @@ class KernelInclude(Include):
raise self.severe('Problems with "%s" directive path:\n'
'Cannot encode input file path "%s" '
'(wrong locale?).' %
- (self.name, SafeString(path)))
+ (self.name, path))
except IOError as error:
raise self.severe('Problems with "%s" directive path:\n%s.' %
(self.name, ErrorString(error)))
diff --git a/Documentation/sphinx/maintainers_include.py b/Documentation/sphinx/maintainers_include.py
index dcad0fff4723..496489d634c4 100755
--- a/Documentation/sphinx/maintainers_include.py
+++ b/Documentation/sphinx/maintainers_include.py
@@ -22,10 +22,12 @@ import re
import os.path

from docutils import statemachine
-from docutils.utils.error_reporting import ErrorString
from docutils.parsers.rst import Directive
from docutils.parsers.rst.directives.misc import Include

+def ErrorString(exc): # Shamelessly stolen from docutils
+ return f'{exc.__class__.__name}: {exc}'
+
__version__ = '1.0'

def setup(app):
--
2.51.0