mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
meson: Detect rst2html5 and rst2man only when needed
Detect these commands in docs/meson.build, i.e. only when users enable documentation. Signed-off-by: Ivan Teterevkov <ivan.teterevkov@nutanix.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
717f1cc4d1
commit
19407e8d7d
@ -171,6 +171,47 @@ docs_lxc_api_xml = docs_api_generated[1]
|
|||||||
docs_qemu_api_xml = docs_api_generated[2]
|
docs_qemu_api_xml = docs_api_generated[2]
|
||||||
docs_admin_api_xml = docs_api_generated[3]
|
docs_admin_api_xml = docs_api_generated[3]
|
||||||
|
|
||||||
|
docs_programs_groups = [
|
||||||
|
{ 'name': 'rst2html5', 'prog': [ 'rst2html5', 'rst2html5.py', 'rst2html5-3' ] },
|
||||||
|
{ 'name': 'rst2man', 'prog': [ 'rst2man', 'rst2man.py', 'rst2man-3' ] },
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach item : docs_programs_groups
|
||||||
|
prog = find_program(item.get('prog'), dirs: libvirt_sbin_path)
|
||||||
|
varname = item.get('name').underscorify()
|
||||||
|
conf.set_quoted(varname.to_upper(), prog.path())
|
||||||
|
set_variable('@0@_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 binaries 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[1] != '(Docutils'
|
||||||
|
error('Please uninstall the rst2html5 package and install the docutils package')
|
||||||
|
endif
|
||||||
|
|
||||||
docs_rst2html5_gen = generator(
|
docs_rst2html5_gen = generator(
|
||||||
rst2html5_prog,
|
rst2html5_prog,
|
||||||
output: '@BASENAME@.html.in',
|
output: '@BASENAME@.html.in',
|
||||||
|
31
meson.build
31
meson.build
@ -788,8 +788,6 @@ required_programs = [
|
|||||||
|
|
||||||
required_programs_groups = [
|
required_programs_groups = [
|
||||||
{ 'name': 'rpcgen', 'prog': [ 'rpcgen', 'portable-rpcgen' ] },
|
{ 'name': 'rpcgen', 'prog': [ 'rpcgen', 'portable-rpcgen' ] },
|
||||||
{ 'name': 'rst2html5', 'prog': [ 'rst2html5', 'rst2html5.py', 'rst2html5-3' ] },
|
|
||||||
{ 'name': 'rst2man', 'prog': [ 'rst2man', 'rst2man.py', 'rst2man-3' ] },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if host_machine.system() == 'freebsd'
|
if host_machine.system() == 'freebsd'
|
||||||
@ -810,35 +808,6 @@ foreach item : required_programs_groups
|
|||||||
set_variable('@0@_prog'.format(varname), prog)
|
set_variable('@0@_prog'.format(varname), prog)
|
||||||
endforeach
|
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 binaries 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[1] != '(Docutils'
|
|
||||||
error('Please uninstall the rst2html5 package and install the docutils package')
|
|
||||||
endif
|
|
||||||
|
|
||||||
# optional programs
|
# optional programs
|
||||||
|
|
||||||
optional_programs = [
|
optional_programs = [
|
||||||
|
Loading…
Reference in New Issue
Block a user