[v2] doc: support building HTML guides with meson
Checks
Commit Message
From: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Luca Boccassi <bluca@debian.org>
---
v2: send on behalf of Bruce on request.
- tell sphinx to create .doctrees working files in the
parent of the target directory so that they don't get
installed
- change the output directory so that it matches the legacy
makefiles directory structure (on install)
- add install_dir to fix ninja install
- add post-install calls to delete .buildinfo sphinx
temporary file and to install custom.css as the makefiles
do
The installed directory has been verified to be bit-by-bit
identical to the legacy makefiles with diffoscope.
doc/api/meson.build | 5 ++---
doc/guides/meson.build | 27 +++++++++++++++++++++++++++
doc/meson.build | 11 +++++++++++
3 files changed, 40 insertions(+), 3 deletions(-)
create mode 100644 doc/guides/meson.build
Comments
On Wed, 19 Sep 2018 14:48:27 +0100
Luca Boccassi <bluca@debian.org> wrote:
> From: Bruce Richardson <bruce.richardson@intel.com>
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> Signed-off-by: Luca Boccassi <bluca@debian.org>
> ---
> v2: send on behalf of Bruce on request.
> - tell sphinx to create .doctrees working files in the
> parent of the target directory so that they don't get
> installed
> - change the output directory so that it matches the legacy
> makefiles directory structure (on install)
> - add install_dir to fix ninja install
> - add post-install calls to delete .buildinfo sphinx
> temporary file and to install custom.css as the makefiles
> do
> The installed directory has been verified to be bit-by-bit
> identical to the legacy makefiles with diffoscope.
>
> doc/api/meson.build | 5 ++---
> doc/guides/meson.build | 27 +++++++++++++++++++++++++++
> doc/meson.build | 11 +++++++++++
> 3 files changed, 40 insertions(+), 3 deletions(-)
> create mode 100644 doc/guides/meson.build
>
> diff --git a/doc/api/meson.build b/doc/api/meson.build
> index 13fcbb8cd7..30bdc573b5 100644
> --- a/doc/api/meson.build
> +++ b/doc/api/meson.build
> @@ -50,7 +50,6 @@ if doxygen.found()
> install_dir: htmldir,
> build_by_default: false)
>
> - run_target('doc', command: 'true', depends: doxy_build)
> -else
> - run_target('doc', command: ['echo', 'doxygen', 'not', 'found'])
> + doc_targets += doxy_build
> + doc_target_names += 'Doxygen_API'
> endif
> diff --git a/doc/guides/meson.build b/doc/guides/meson.build
> new file mode 100644
> index 0000000000..24f5316c5c
> --- /dev/null
> +++ b/doc/guides/meson.build
> @@ -0,0 +1,27 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Intel Corporation
> +
> +sphinx = find_program('sphinx-build', required: get_option('enable_docs'))
> +
> +if sphinx.found()
> + htmldir = join_paths('share', 'doc', 'dpdk')
> + html_guides_build = custom_target('html_guides_build',
> + input: meson.current_source_dir(),
> + output: 'guides',
> + command: [sphinx, '-b', 'html', '@INPUT@', meson.current_build_dir() + '/guides',
> + '-d', meson.current_build_dir() + '/.doctrees'],
This on RHEL 7.5 doesn't work, since old versions of sphinx (I have
v1.1.3) need all options before the paths. I tried to move
"'-d', meson.current_build_dir() + '/.doctrees'" before "'@INPUT@'" and
it worked.
> + build_by_default: false,
> + install: get_option('enable_docs'),
> + install_dir: htmldir)
> +
> + doc_targets += html_guides_build
> + doc_target_names += 'HTML_Guides'
> +
> + # sphinx leaves a .buildinfo in the target directory, which we don't
> + # want to install. Note that sh -c has to be used, otherwise the
> + # env var does not get expanded if calling rm/install directly.
> + meson.add_install_script('sh', '-c',
> + 'rm -f $MESON_INSTALL_DESTDIR_PREFIX/share/doc/dpdk/guides/.buildinfo')
> + meson.add_install_script('sh', '-c',
> + 'install -D -m0644 $MESON_SOURCE_ROOT/doc/guides/custom.css $MESON_INSTALL_DESTDIR_PREFIX/share/doc/dpdk/guides/_static/css/')
This on RHEL 7.5 doesn't work. I had to append custom.css to DEST
($MESON_INSTALL_DESTDIR_PREFIX/share/doc/dpdk/guides/_static/css/custom.css)
to make it work.
> +endif
> diff --git a/doc/meson.build b/doc/meson.build
> index afca2e7133..c5410d85d6 100644
> --- a/doc/meson.build
> +++ b/doc/meson.build
> @@ -1,4 +1,15 @@
> # SPDX-License-Identifier: BSD-3-Clause
> # Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
>
> +doc_targets = []
> +doc_target_names = []
> subdir('api')
> +subdir('guides')
> +
> +if doc_targets.length() == 0
> + message = 'No docs targets found'
> +else
> + message = 'Building docs:'
> +endif
> +run_target('doc', command: ['echo', message, doc_target_names],
> + depends: doc_targets)
@@ -50,7 +50,6 @@ if doxygen.found()
install_dir: htmldir,
build_by_default: false)
- run_target('doc', command: 'true', depends: doxy_build)
-else
- run_target('doc', command: ['echo', 'doxygen', 'not', 'found'])
+ doc_targets += doxy_build
+ doc_target_names += 'Doxygen_API'
endif
new file mode 100644
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Intel Corporation
+
+sphinx = find_program('sphinx-build', required: get_option('enable_docs'))
+
+if sphinx.found()
+ htmldir = join_paths('share', 'doc', 'dpdk')
+ html_guides_build = custom_target('html_guides_build',
+ input: meson.current_source_dir(),
+ output: 'guides',
+ command: [sphinx, '-b', 'html', '@INPUT@', meson.current_build_dir() + '/guides',
+ '-d', meson.current_build_dir() + '/.doctrees'],
+ build_by_default: false,
+ install: get_option('enable_docs'),
+ install_dir: htmldir)
+
+ doc_targets += html_guides_build
+ doc_target_names += 'HTML_Guides'
+
+ # sphinx leaves a .buildinfo in the target directory, which we don't
+ # want to install. Note that sh -c has to be used, otherwise the
+ # env var does not get expanded if calling rm/install directly.
+ meson.add_install_script('sh', '-c',
+ 'rm -f $MESON_INSTALL_DESTDIR_PREFIX/share/doc/dpdk/guides/.buildinfo')
+ meson.add_install_script('sh', '-c',
+ 'install -D -m0644 $MESON_SOURCE_ROOT/doc/guides/custom.css $MESON_INSTALL_DESTDIR_PREFIX/share/doc/dpdk/guides/_static/css/')
+endif
@@ -1,4 +1,15 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
+doc_targets = []
+doc_target_names = []
subdir('api')
+subdir('guides')
+
+if doc_targets.length() == 0
+ message = 'No docs targets found'
+else
+ message = 'Building docs:'
+endif
+run_target('doc', command: ['echo', message, doc_target_names],
+ depends: doc_targets)