doc: make sphinx comply with meson werror option
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 1 Oct 2020 11:14:01 +0000 (12:14 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 5 Oct 2020 21:52:02 +0000 (23:52 +0200)
When the --werror meson build option is set, we can pass the "-W",
warning-as-errors, flag to sphinx to get the same behaviour for doc
building as for building the rest of DPDK. This can help catch
documentation errors sooner in the development process.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
buildtools/call-sphinx-build.py
doc/guides/meson.build

index 0dce59f..26b1992 100755 (executable)
@@ -9,7 +9,8 @@ from os.path import join
 from subprocess import run, PIPE, STDOUT
 from distutils.version import StrictVersion
 
-(sphinx, version, src, dst) = sys.argv[1:]  # assign parameters to variables
+# assign parameters to variables
+(sphinx, version, src, dst, *extra_args) = sys.argv[1:]
 
 # set the version in environment for sphinx to pick up
 os.environ['DPDK_VERSION'] = version
@@ -17,7 +18,7 @@ os.environ['DPDK_VERSION'] = version
 # for sphinx version >= 1.7 add parallelism using "-j auto"
 ver = run([sphinx, '--version'], stdout=PIPE,
           stderr=STDOUT).stdout.decode().split()[-1]
-sphinx_cmd = [sphinx]
+sphinx_cmd = [sphinx] + extra_args
 if StrictVersion(ver) >= StrictVersion('1.7'):
     sphinx_cmd += ['-j', 'auto']
 
@@ -29,9 +30,10 @@ for root, dirs, files in os.walk(src):
 # run sphinx, putting the html output in a "html" directory
 with open(join(dst, 'sphinx_html.out'), 'w') as out:
     process = run(sphinx_cmd + ['-b', 'html', src, join(dst, 'html')],
-                  check=True,
                   stdout=out)
 
 # 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')
+
+sys.exit(process.returncode)
index daab139..9c35efb 100644 (file)
@@ -7,12 +7,18 @@ if not sphinx.found()
        subdir_done()
 endif
 
+extra_sphinx_args = []
+if get_option('werror')
+       extra_sphinx_args += '-W'
+endif
+
 htmldir = join_paths(get_option('datadir'), 'doc', 'dpdk')
 html_guides = custom_target('html_guides',
        input: files('index.rst'),
        output: 'html',
        command: [sphinx_wrapper, sphinx, meson.project_version(),
-               meson.current_source_dir(), meson.current_build_dir()],
+               meson.current_source_dir(), meson.current_build_dir(),
+               extra_sphinx_args],
        depfile: '.html.d',
        build_by_default: get_option('enable_docs'),
        install: get_option('enable_docs'),