[libvirt PATCH 2/2] meson: Detect and reject invalid rst2html5 command

Andrea Bolognani abologna at redhat.com
Mon Aug 9 15:13:29 UTC 2021


The version coming from the rst2html5 package instead of the
docutils package is unable to successfully generate the libvirt
documentation.

Examples of users encountering build issues because of the wrong
version of rst2html5 being installed on their systems:

  https://gitlab.com/libvirt/libvirt/-/issues/40
  https://gitlab.com/libvirt/libvirt/-/issues/139
  https://gitlab.com/libvirt/libvirt/-/issues/169
  https://gitlab.com/libvirt/libvirt/-/issues/195

Signed-off-by: Andrea Bolognani <abologna at redhat.com>
---
 meson.build | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/meson.build b/meson.build
index 32ad688c9c..02357a2678 100644
--- a/meson.build
+++ b/meson.build
@@ -813,6 +813,34 @@ foreach item : required_programs_groups
   set_variable('@0 at _prog'.format(varname), prog)
 endforeach
 
+# There are two versions of rst2html5 in the wild: one is the version
+# coming from the docutils package, and the other is the one coming
+# from the rst2html5 package. These versions are subtly different,
+# and the libvirt documentation can only be successfully generated
+# using the docutils version. Every now and then, users will report
+# build failures that can be traced back to having the wrong version
+# installed.
+#
+# The only reliable way to tell the two binaris apart seems to be
+# looking look at their version information: the docutils version
+# will report
+#
+#   rst2html5 (Docutils ..., Python ..., on ...)
+#
+# whereas the rst2html5 version will report
+#
+#   rst2html5 ... (Docutils ..., Python ..., on ...)
+#
+# with the additional bit of information being the version number for
+# the rst2html5 package itself.
+#
+# Use this knowledge to detect the version that we know doesn't work
+# for building libvirt and reject it
+rst2html5_version = run_command(rst2html5_prog, '--version')
+rst2html5_version = rst2html5_version.stdout().split('(')
+if rst2html5_version[0] != 'rst2html5 '
+  error('Please uninstall the rst2html5 package and install the docutils package')
+endif
 
 # optional programs
 
-- 
2.31.1




More information about the libvir-list mailing list