tools/docs,scripts: sphinx-*: prevent sphinx-build crashes
On a properly set system, LANG and LC_ALL is always defined. However, some distros like Debian, Gentoo and their variants start with those undefioned. When Sphinx tries to set a locale with: locale.setlocale(locale.LC_ALL, '') It raises an exception, making Sphinx fail. This is more likely to happen with test containers. Add a logic to detect and workaround such issue by setting locale to C. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Message-ID: <1d0afad8fe3d83182be3a08eb00dd71322e23e69.1758196090.git.mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
1 parent
08e14bc17e
commit
82c294d453
2 files changed
+24
-1
No files matched your search
@@ -26,6 +26,7 @@ system pacage install is recommended.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import locale
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
@@ -422,8 +423,19 @@ class MissingCheckers(AncillaryMethods):
|
||||
"""
|
||||
Gets sphinx-build version.
|
||||
"""
|
||||
env = os.environ.copy()
|
||||
|
||||
# The sphinx-build tool has a bug: internally, it tries to set
|
||||
# locale with locale.setlocale(locale.LC_ALL, ''). This causes a
|
||||
# crash if language is not set. Detect and fix it.
|
||||
try:
|
||||
result = self.run([cmd, "--version"],
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except Exception:
|
||||
env["LC_ALL"] = "C"
|
||||
env["LANG"] = "C"
|
||||
|
||||
try:
|
||||
result = self.run([cmd, "--version"], env=env,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True, check=True)
|
||||
|
||||
Reference in new issue
Block a user