Depending on its version, distro config, and system-setup type, inkscape(1) emits various warning messages which are harmless in command-line uses. List of such warning messages (incomplete, long ones wrapped): o Gtk-Message: hh:mm:ss.nnn: Failed to load module "canberra-gtk-module" o Unable to init server: Could not connect: Connection refused o Failed to get connection o ** (inkscape:xxx): CRITICAL **: hh:mm:ss.nnn: dbus_g_proxy_new_for_name: assertion 'connection != NULL' failed o ** (inkscape:xxx): CRITICAL **: hh:mm:ss.nnn: dbus_g_proxy_call: assertion 'DBUS_IS_G_PROXY (proxy)' failed o ** (inkscape:xxx): CRITICAL **: hh:mm:ss.nnn: dbus_g_connection_register_g_object: assertion 'connection != NULL' failed o ** (inkscape:xxx): WARNING **: hh:mm:ss.nnn: Fonts dir '/usr/share/inkscape/fonts' does not exist and will be ignored. To avoid unnecessary anxiety, redirect warning messages from inkscape(1) to /dev/null by default. The redirection can be disabled by setting SPHINX_SHOW_INKSCAPE_WARN, e.g.,: make SPHINX_SHOW_INKSCAPE_WARN=1 pdfdocs Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> Cc: Jonathan Corbet <corbet@xxxxxxx> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> --- Documentation/sphinx/kfigure.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Documentation/sphinx/kfigure.py b/Documentation/sphinx/kfigure.py index 8d7c59e52ceb..d5802e3975e5 100644 --- a/Documentation/sphinx/kfigure.py +++ b/Documentation/sphinx/kfigure.py @@ -124,6 +124,9 @@ rsvg_convert_cmd = None inkscape_cmd = None # Inkscape prior to 1.0 uses different command options inkscape_ver_one = False +# Show warning from inkscape(1), enabled by setting env var +# SPHINX_SHOW_INKSCAPE_WARN +inkscape_show_warn = False def setup(app): @@ -173,7 +176,7 @@ def setupTools(app): This function is called once, when the builder is initiated. """ global dot_cmd, convert_cmd, rsvg_convert_cmd # pylint: disable=W0603 - global inkscape_cmd, inkscape_ver_one # pylint: disable=W0603 + global inkscape_cmd, inkscape_ver_one, inkscape_show_warn # pylint: disable=W0603 kernellog.verbose(app, "kfigure: check installed tools ...") dot_cmd = which('dot') @@ -188,12 +191,19 @@ def setupTools(app): "graphviz from https://www.graphviz.org") if inkscape_cmd: kernellog.verbose(app, "use inkscape(1) from: " + inkscape_cmd) - inkscape_ver = subprocess.check_output([inkscape_cmd, '--version']) + inkscape_ver = subprocess.check_output([inkscape_cmd, '--version'], + stderr=subprocess.DEVNULL) ver_one_ptn = b'Inkscape 1' inkscape_ver_one = re.search(ver_one_ptn, inkscape_ver) convert_cmd = None rsvg_convert_cmd = None + try: + if os.environ['SPHINX_SHOW_INKSCAPE_WARN']: + inkscape_show_warn = True + except KeyError: + pass + else: if convert_cmd: kernellog.verbose(app, "use convert(1) from: " + convert_cmd) @@ -360,7 +370,11 @@ def svg2pdf(app, svg_fname, pdf_fname): cmd = [inkscape_cmd, '-z', '--export-pdf=%s' % pdf_fname, svg_fname] # use stdout and stderr from parent - exit_code = subprocess.call(cmd) + if inkscape_show_warn: + exit_code = subprocess.call(cmd) + else: + exit_code = subprocess.call(cmd, stderr=subprocess.DEVNULL) + if exit_code != 0: kernellog.warn(app, "Error #%d when calling: %s" % (exit_code, " ".join(cmd))) return bool(exit_code == 0) -- 2.17.1