By default, we use LaTeX batch mode to build docs. This way, when an error happens, the build fails. This is good for normal builds, but when debugging problems with pdf generation, the best is to use interactive mode. We already support it via LATEXOPTS, but having a command line argument makes it easier: Interactive mode: ./scripts/sphinx-build-wrapper pdfdocs --sphinxdirs peci -v -i ... Running 'xelatex --no-pdf -no-pdf -recorder ".../Documentation/output/peci/latex/peci.tex"' ... Default batch mode: ./scripts/sphinx-build-wrapper pdfdocs --sphinxdirs peci -v ... Running 'xelatex --no-pdf -no-pdf -interaction=batchmode -no-shell-escape -recorder ".../Documentation/output/peci/latex/peci.tex"' ... Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> --- tools/docs/sphinx-build-wrapper | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/docs/sphinx-build-wrapper b/tools/docs/sphinx-build-wrapper index b34389f65076..1ba3afec6e65 100755 --- a/tools/docs/sphinx-build-wrapper +++ b/tools/docs/sphinx-build-wrapper @@ -173,7 +173,8 @@ class SphinxBuilder: if not verbose: self.sphinxopts += ["-q"] - def __init__(self, builddir, venv=None, verbose=False, n_jobs=None): + def __init__(self, builddir, venv=None, verbose=False, n_jobs=None, + interactive=None): """Initialize internal variables""" self.venv = venv self.verbose = None @@ -184,7 +185,11 @@ class SphinxBuilder: self.kernelversion = os.environ.get("KERNELVERSION", "unknown") self.kernelrelease = os.environ.get("KERNELRELEASE", "unknown") self.pdflatex = os.environ.get("PDFLATEX", "xelatex") - self.latexopts = os.environ.get("LATEXOPTS", "-interaction=batchmode -no-shell-escape") + + if not interactive: + self.latexopts = os.environ.get("LATEXOPTS", "-interaction=batchmode -no-shell-escape") + else: + self.latexopts = os.environ.get("LATEXOPTS", "") if not verbose: verbose = bool(os.environ.get("KBUILD_VERBOSE", "") != "") @@ -584,6 +589,9 @@ def main(): parser.add_argument('-j', '--jobs', type=jobs_type, help="Sets number of jobs to use with sphinx-build") + parser.add_argument('-i', '--interactive', action='store_true', + help="Change latex default to run in interactive mode") + parser.add_argument("-V", "--venv", nargs='?', const=f'{VENV_DEFAULT}', default=None, help=f'If used, run Sphinx from a venv dir (default dir: {VENV_DEFAULT})') @@ -593,7 +601,8 @@ def main(): PythonVersion.check_python(MIN_PYTHON_VERSION) builder = SphinxBuilder(builddir=args.builddir, venv=args.venv, - verbose=args.verbose, n_jobs=args.jobs) + verbose=args.verbose, n_jobs=args.jobs, + interactive=args.interactive) builder.build(args.target, sphinxdirs=args.sphinxdirs, conf=args.conf, theme=args.theme, css=args.css, paper=args.paper) -- 2.51.0