On Thu, 31 Aug 2017, Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> wrote: > On Thu, 31 Aug 2017, Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote: >> On 08/31/17 07:17, Jonathan Corbet wrote: >>> On Thu, 31 Aug 2017 10:56:26 -0300 >>> Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> wrote: >>> >>>> It should have something to do with python version and/or to some >>>> locale info at the system, as neither I or Jon can reproduce it. >>> >>> I can't reproduce it here, but I have certainly seen situations where >>> Python 2 wants to run with the ascii codec by default. >>> >>> Note that the exception happens in our Sphinx extension, not in Sphinx >>> itself. We've had other non-ascii text in our docs, so I think Sphinx is >>> doing the right thing. The problem is with our own code. If I could >>> reproduce it, it shouldn't be too hard to track down - take out that >>> massive "except anything" block and see where it explodes. >>> >>> Randy, which distribution are you running, and are you using their version >>> of Sphinx? >> >> opensuse LEAP 42.2 >> Yes, their sphinx 1.3.1. > > What's your LANG setting? I think that's what it boils down to, and > trying to work around non-UTF-8 LANG in both python 2 and 3 compatible > ways. > > The odd thing is that I can reproduce the issue using a small python > snippet, but not through Sphinx. Your original error message suggests your Sphinx actually uses python 3. Can you check that? The clue is that it's the *decode* that fails. Does the below patch help? It avoids the implicit ascii decoding due to universal_newlines=True and your LANG setting, and does explicit utf-8 decoding instead. Fingers crossed. BR, Jani. diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py index d15e07f36881..39aa9e8697cc 100644 --- a/Documentation/sphinx/kerneldoc.py +++ b/Documentation/sphinx/kerneldoc.py @@ -27,6 +27,7 @@ # Please make sure this works on both python2 and python3. # +import codecs import os import subprocess import sys @@ -88,13 +89,10 @@ class KernelDocDirective(Directive): try: env.app.verbose('calling kernel-doc \'%s\'' % (" ".join(cmd))) - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() - # python2 needs conversion to unicode. - # python3 with universal_newlines=True returns strings. - if sys.version_info.major < 3: - out, err = unicode(out, 'utf-8'), unicode(err, 'utf-8') + out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8') if p.returncode != 0: sys.stderr.write(err) -- Jani Nikula, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html