On Thu, Jan 09, 2020 at 09:27:42AM -0500, Aaron Conole wrote: > Bruce Richardson <bruce.richard...@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.richard...@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 <acon...@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