build: Pre-generate man pages at dist time

The man pages don't change very often, but draw in both docbook and
asciidoc. The latter is particularly problematic, as some distros
still ship only a python2 version of the tool.

Address this by generating the man pages at dist time, and including
the result in the tarball.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1553>
This commit is contained in:
Florian Müllner 2020-12-15 19:23:14 +01:00
parent 88ac08b542
commit 9ef9a5ff8a
3 changed files with 39 additions and 5 deletions

View File

@ -37,6 +37,7 @@ gst_req = '>= 0.11.92'
nm_req = '>= 1.10.4'
secret_req = '>= 0.18'
fs = import('fs')
gnome = import('gnome')
i18n = import('i18n')
@ -126,8 +127,12 @@ else
endif
if get_option('man')
a2x = find_program('a2x')
subdir('man')
if fs.exists('man/gnome-shell.1')
install_man('man/gnome-shell.1')
else
a2x = find_program('a2x')
subdir('man')
endif
endif
mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
@ -287,6 +292,7 @@ if get_option('gtk_doc')
endif
meson.add_install_script('meson/postinstall.py')
meson.add_dist_script('meson/generate-manpages.py')
summary_options = {
'networkmanager': get_option('networkmanager'),

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
import os
from pathlib import PurePath
from asciidocapi import AsciiDocAPI
man_pages = [
'man/gnome-shell.1',
'subprojects/extensions-tool/man/gnome-extensions.1',
]
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
asciidoc = AsciiDocAPI()
for man_page in man_pages:
page_path = PurePath(man_page)
src = PurePath(sourceroot, page_path.with_suffix('.txt'))
dst = PurePath(distroot, page_path)
stylesheet = src.with_name('stylesheet.xsl')
asciidoc.options('--xsl-file', os.fspath(stylesheet))
asciidoc.execute(os.fspath(src), outfile=os.fspath(dst))

View File

@ -6,6 +6,7 @@ project('gnome-extensions-tool', 'c',
gio_req = '>= 2.56.0'
fs = import('fs')
gnome = import('gnome')
i18n = import('i18n')
@ -46,9 +47,12 @@ if bash_completion.found()
endif
if get_option('man')
a2x = find_program('a2x')
subdir('man')
if fs.exists('man/gnome-extensions.1')
install_man('man/gnome-extensions.1')
else
a2x = find_program('a2x')
subdir('man')
endif
endif
if not meson.is_subproject()