All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Conole <aconole@redhat.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: david.marchand@redhat.com, john.mcnamara@intel.com,
	bluca@debian.org, dev@dpdk.org, thomas@monjalon.net
Subject: Re: [dpdk-dev] [PATCH v2 5/6] doc/guides: rebuild with meson whenever a file changes
Date: Thu, 09 Jan 2020 09:27:42 -0500	[thread overview]
Message-ID: <f7t8smgyaap.fsf@dhcp-25.97.bos.redhat.com> (raw)
In-Reply-To: <20200109120801.500394-6-bruce.richardson@intel.com> (Bruce Richardson's message of "Thu, 9 Jan 2020 12:08:00 +0000")

Bruce Richardson <bruce.richardson@intel.com> writes:

> Add proper support for calling sphinx whenever a file in the doc
> directory changes. This is accomplished by using a wrapper script
> for sphinx, which runs sphinx but also emits a gcc-format dependency
> file listing all the doc files. This is used by ninja so that any
> change to the doc files triggers a rebuild of the docs.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>  buildtools/call-sphinx-build.py | 29 +++++++++++++++++++++++++++++
>  buildtools/meson.build          |  6 ++++--
>  doc/guides/meson.build          | 22 ++++++++--------------
>  3 files changed, 41 insertions(+), 16 deletions(-)
>  create mode 100755 buildtools/call-sphinx-build.py
>

Acked-by: Aaron Conole <aconole@redhat.com>

Some nits follow - it would be good to clean them up before applying but
they are fairly inconsequential.

> diff --git a/buildtools/call-sphinx-build.py b/buildtools/call-sphinx-build.py
> new file mode 100755
> index 000000000..027317b9b
> --- /dev/null
> +++ b/buildtools/call-sphinx-build.py
> @@ -0,0 +1,29 @@
> +#! /usr/bin/env python3
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2019 Intel Corporation
> +#
> +
> +import sys
> +import os
> +import os.path
> +import subprocess
> +
> +sphinx = sys.argv[1]
> +src = sys.argv[2]
> +dst = sys.argv[3]
> +depfile = os.path.join(dst,'.html.d')
                              ^ whitespace here
> +
> +# find all the files sphinx will process so we can write them as dependencies
> +srcfiles = []
> +for root, dirs, files in os.walk(src):
> +    for f in files:
> +        srcfiles.append(os.path.join(root, f))
> +
> +# run sphinx, putting the html output in a "html" directory
> +subprocess.run([sphinx, '-j', 'auto', '-b', 'html', src,
> +                os.path.join(dst, 'html')], check = True)
                                                    ^ no whitespace
                                                      around =
> +
> +# create a gcc format .d file giving all the dependencies of this doc build
> +with open(depfile, 'w') as d:
> +    d.write('html: ' + ' '.join(srcfiles) + '\n')
> +subprocess.run(['cp', '-f', depfile, '/tmp'])
> diff --git a/buildtools/meson.build b/buildtools/meson.build
> index 6ef2c5721..cd1d05403 100644
> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> @@ -10,10 +10,12 @@ check_experimental_syms = find_program('check-experimental-syms.sh')
>  # set up map-to-def script using python, either built-in or external
>  python3 = import('python').find_installation(required: false)
>  if python3.found()
> -	map_to_def_cmd = [python3, files('map_to_def.py')]
> +	py3 = [python3]
>  else
> -	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
> +	py3 = ['meson', 'runpython']
>  endif
> +map_to_def_cmd = py3 + files('map_to_def.py')
> +sphinx_wrapper = py3 + files('call-sphinx-build.py')
>  
>  # stable ABI always starts with "DPDK_"
>  is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> diff --git a/doc/guides/meson.build b/doc/guides/meson.build
> index 80c21d168..732e7ad3a 100644
> --- a/doc/guides/meson.build
> +++ b/doc/guides/meson.build
> @@ -7,24 +7,18 @@ if not sphinx.found()
>  	subdir_done()
>  endif
>  
> -htmldir = join_paths('share', 'doc', 'dpdk')
> +htmldir = join_paths(get_option('datadir'), 'doc', 'dpdk')
>  html_guides = custom_target('html_guides',
> -	input: meson.current_source_dir(),
> -	output: 'guides',
> -	command: [sphinx, '-b', 'html',
> -		'-d', meson.current_build_dir() + '/.doctrees',
> -		'@INPUT@', meson.current_build_dir() + '/guides'],
> +	input: files('index.rst'),
> +	output: 'html',
> +	command: [sphinx_wrapper, sphinx, meson.current_source_dir(), meson.current_build_dir()],
> +	depfile: '.html.d',
>  	build_by_default: get_option('enable_docs'),
>  	install: get_option('enable_docs'),
>  	install_dir: htmldir)
>  
> +install_data(files('custom.css'),
> +			install_dir: join_paths(htmldir,'_static', 'css'))
> +
>  doc_targets += html_guides
>  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/custom.css')


  reply	other threads:[~2020-01-09 14:27 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-09 11:56 [dpdk-dev] [PATCH 0/6] meson build improvements Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 1/6] kernel/linux/kni: fix meson warning about console keyword Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 2/6] build: skip processing docs folder if docs disabled Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 3/6] doc/api: fix warning with meson build Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 4/6] doc/guides: reduce whitespace in meson build file Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 5/6] doc/guides: rebuild with meson whenever a file changes Bruce Richardson
2020-01-09 11:56 ` [dpdk-dev] [PATCH 6/6] doc/api: reduce indentation in meson build file Bruce Richardson
2020-01-09 12:07 ` [dpdk-dev] [PATCH v2 0/6] meson build improvements Bruce Richardson
2020-01-09 12:07 ` Bruce Richardson
2020-01-09 12:07   ` [dpdk-dev] [PATCH v2 1/6] kernel/linux/kni: fix meson warning about console keyword Bruce Richardson
2020-01-09 14:17     ` Aaron Conole
2020-01-09 12:07   ` [dpdk-dev] [PATCH v2 2/6] build: skip processing docs folder if docs disabled Bruce Richardson
2020-01-09 14:18     ` Aaron Conole
2020-01-09 12:07   ` [dpdk-dev] [PATCH v2 3/6] doc/api: fix warning with meson build Bruce Richardson
2020-01-09 14:19     ` Aaron Conole
2020-01-09 12:07   ` [dpdk-dev] [PATCH v2 4/6] doc/guides: reduce whitespace in meson build file Bruce Richardson
2020-01-09 14:20     ` Aaron Conole
2020-01-09 12:08   ` [dpdk-dev] [PATCH v2 5/6] doc/guides: rebuild with meson whenever a file changes Bruce Richardson
2020-01-09 14:27     ` Aaron Conole [this message]
2020-01-09 14:52       ` Bruce Richardson
2020-01-09 12:08   ` [dpdk-dev] [PATCH v2 6/6] doc/api: reduce indentation in meson build file Bruce Richardson
2020-01-09 14:28     ` Aaron Conole
2020-01-09 15:30   ` [dpdk-dev] [PATCH v2 0/6] meson build improvements Luca Boccassi
2020-01-09 15:31 ` [dpdk-dev] [PATCH v3 " Bruce Richardson
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 1/6] kernel/linux/kni: fix meson warning about console keyword Bruce Richardson
2020-01-09 18:02     ` David Marchand
2020-01-10 19:40       ` Kevin Traynor
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 2/6] build: skip processing docs folder if docs disabled Bruce Richardson
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 3/6] doc/api: fix warning with meson build Bruce Richardson
2020-01-09 18:03     ` David Marchand
2020-01-10  9:16       ` Bruce Richardson
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 4/6] doc/guides: reduce whitespace in meson build file Bruce Richardson
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 5/6] doc/guides: rebuild with meson whenever a file changes Bruce Richardson
2020-01-09 18:03     ` David Marchand
2020-01-09 18:06       ` David Marchand
2020-01-10  9:15         ` Bruce Richardson
2020-01-10 15:51     ` Bruce Richardson
2020-01-09 15:31   ` [dpdk-dev] [PATCH v3 6/6] doc/api: reduce indentation in meson build file Bruce Richardson
2020-01-10 21:51 ` [dpdk-dev] [PATCH v4 0/6] meson build improvements Bruce Richardson
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 1/6] kernel/linux/kni: fix meson warning about console keyword Bruce Richardson
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 2/6] build: skip processing docs folder if docs disabled Bruce Richardson
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 3/6] doc/api: fix warning with meson build Bruce Richardson
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 4/6] doc/guides: reduce whitespace in meson build file Bruce Richardson
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 5/6] doc/guides: rebuild with meson whenever a file changes Bruce Richardson
2020-01-14 15:59     ` David Marchand
2020-01-14 16:17       ` Bruce Richardson
2020-01-17 11:15       ` Richardson, Bruce
2020-01-10 21:52   ` [dpdk-dev] [PATCH v4 6/6] doc/api: reduce indentation in meson build file Bruce Richardson
2020-01-14 16:00   ` [dpdk-dev] [PATCH v4 0/6] meson build improvements David Marchand
2020-01-14 16:19     ` Bruce Richardson
2020-01-14 16:26       ` David Marchand
2020-01-14 16:35       ` Luca Boccassi
2020-01-14 17:35         ` Bruce Richardson
2020-01-15  8:50           ` David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7t8smgyaap.fsf@dhcp-25.97.bos.redhat.com \
    --to=aconole@redhat.com \
    --cc=bluca@debian.org \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=john.mcnamara@intel.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.