All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: david.marchand@redhat.com, john.mcnamara@intel.com, bluca@debian.org
Cc: dev@dpdk.org, aconole@redhat.com, thomas@monjalon.net,
	Bruce Richardson <bruce.richardson@intel.com>
Subject: [dpdk-dev] [PATCH v4 5/6] doc/guides: rebuild with meson whenever a file changes
Date: Fri, 10 Jan 2020 21:52:04 +0000	[thread overview]
Message-ID: <20200110215205.513185-6-bruce.richardson@intel.com> (raw)
In-Reply-To: <20200110215205.513185-1-bruce.richardson@intel.com>

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>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
---
 MAINTAINERS                     |  1 +
 buildtools/call-sphinx-build.py | 31 +++++++++++++++++++++++++++++++
 buildtools/meson.build          |  6 ++++--
 doc/guides/meson.build          | 22 ++++++++--------------
 4 files changed, 44 insertions(+), 16 deletions(-)
 create mode 100755 buildtools/call-sphinx-build.py

diff --git a/MAINTAINERS b/MAINTAINERS
index 4395d8df1..aa32bfc59 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -128,6 +128,7 @@ F: meson.build
 F: lib/librte_eal/freebsd/BSDmakefile.meson
 F: meson_options.txt
 F: config/rte_config.h
+F: buildtools/call-sphinx-build.py
 F: buildtools/gen-pmdinfo-cfile.sh
 F: buildtools/map_to_def.py
 F: buildtools/symlink-drivers-solibs.sh
diff --git a/buildtools/call-sphinx-build.py b/buildtools/call-sphinx-build.py
new file mode 100755
index 000000000..b9a3994e1
--- /dev/null
+++ b/buildtools/call-sphinx-build.py
@@ -0,0 +1,31 @@
+#! /usr/bin/env python3
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+#
+
+import sys
+import os
+from os.path import join
+from subprocess import run, PIPE
+from distutils.version import StrictVersion
+
+(sphinx, src, dst) = sys.argv[1:]  # assign parameters to variables
+
+# for sphinx version >= 1.7 add parallelism using "-j auto"
+ver = run([sphinx, '--version'], stdout=PIPE).stdout.decode().split()[-1]
+sphinx_cmd = [sphinx]
+if StrictVersion(ver) >= StrictVersion('1.7'):
+    sphinx_cmd += ['-j', 'auto']
+
+# find all the files sphinx will process so we can write them as dependencies
+srcfiles = []
+for root, dirs, files in os.walk(src):
+    srcfiles.extend([join(root, f) for f in files])
+
+# run sphinx, putting the html output in a "html" directory
+process = run(sphinx_cmd + ['-b', 'html', src, join(dst, 'html')], check=True)
+print(str(process.args) + ' Done OK')
+
+# create a gcc format .d file giving all the dependencies of this doc build
+with open(join(dst, '.html.d'), 'w') as d:
+    d.write('html: ' + ' '.join(srcfiles) + '\n')
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')
-- 
2.24.1


  parent reply	other threads:[~2020-01-10 21:52 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
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   ` Bruce Richardson [this message]
2020-01-14 15:59     ` [dpdk-dev] [PATCH v4 5/6] doc/guides: rebuild with meson whenever a file changes 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=20200110215205.513185-6-bruce.richardson@intel.com \
    --to=bruce.richardson@intel.com \
    --cc=aconole@redhat.com \
    --cc=bluca@debian.org \
    --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.