[dpdk-dev] [PATCH v2 5/6] doc/guides: rebuild with meson whenever a file changes

Bruce Richardson bruce.richardson at intel.com
Thu Jan 9 15:52:45 CET 2020


On Thu, Jan 09, 2020 at 09:27:42AM -0500, Aaron Conole wrote:
> Bruce Richardson <bruce.richardson at 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 at 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 at 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'])

Ok, will fix. I also see I left in an unnecessary subprocess.run at the end
to copy the file to /tmp. This was for debugging only since ninja deletes
the .d files after processing them.
[https://ninja-build.org/manual.html#_deps, see behaviour for deps=gcc]

/Bruce


More information about the dev mailing list