As reported by Randy, running make htmldocs on a machine
without textlive now produce warnings:
$ make O=DOCS htmldocs
../Documentation/Makefile:70: warning: overriding recipe for target 'pdfdocs'
../Documentation/Makefile:61: warning: ignoring old recipe for target 'pdfdocs'
That's because the code has now two definitions for pdfdocs in
case $PDFLATEX command is not found. With the new script, such
special case is not needed anymore, as the script checks it.
Drop the special case. Even after dropping it, on a machine
without LaTeX, it will still produce an error as expected,
as running:
$ ./tools/docs/sphinx-build-wrapper pdfdocs
Error: pdflatex or latexmk required for PDF generation
does the check. After applying the patch we have:
$ make SPHINXDIRS=peci htmldocs
Using alabaster theme
Using Python kernel-doc
$ make SPHINXDIRS=peci pdfdocs
Error: pdflatex or latexmk required for PDF generation
make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1
make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2
make: *** [Makefile:248: __sub-make] Error 2
Which is the expected behavior.
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://lore.kernel.org/linux-doc/e7c29532-71de-496b-a89f-743cef28736e@infradead.org/
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Documentation/Makefile | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index c60db1038c9c..f764604fa1ac 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -66,20 +66,15 @@ htmldocs mandocs infodocs texinfodocs latexdocs epubdocs xmldocs pdfdocs linkche
--builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \
--theme=$(DOCS_THEME) --css=$(DOCS_CSS) --paper=$(PAPER)
-# Special handling for pdfdocs
-ifneq ($(shell which $(PDFLATEX) >/dev/null 2>&1; echo $$?),0)
-pdfdocs:
- $(warning The '$(PDFLATEX)' command was not found. Make sure you have it installed and in PATH to produce PDF output.)
- @echo " SKIP Sphinx $@ target."
-endif
-htmldocs-redirects: $(srctree)/Documentation/.renames.txt
- @tools/docs/gen-redirects.py --output $(BUILDDIR) < $<
-endif # HAVE_SPHINX
+endif
# The following targets are independent of HAVE_SPHINX, and the rules should
# work or silently pass without Sphinx.
+htmldocs-redirects: $(srctree)/Documentation/.renames.txt
+ @tools/docs/gen-redirects.py --output $(BUILDDIR) < $<
+
refcheckdocs:
$(Q)cd $(srctree);scripts/documentation-file-ref-check
--
2.51.0
On Fri, 26 Sep 2025 12:16:19 +0200, Mauro Carvalho Chehab wrote: > As reported by Randy, running make htmldocs on a machine > without textlive now produce warnings: > > $ make O=DOCS htmldocs > ../Documentation/Makefile:70: warning: overriding recipe for target 'pdfdocs' > ../Documentation/Makefile:61: warning: ignoring old recipe for target 'pdfdocs' > > That's because the code has now two definitions for pdfdocs in > case $PDFLATEX command is not found. With the new script, such > special case is not needed anymore, as the script checks it. > > Drop the special case. Even after dropping it, on a machine > without LaTeX, it will still produce an error as expected, > as running: > > $ ./tools/docs/sphinx-build-wrapper pdfdocs > Error: pdflatex or latexmk required for PDF generation > > does the check. After applying the patch we have: > > $ make SPHINXDIRS=peci htmldocs > Using alabaster theme > Using Python kernel-doc > > $ make SPHINXDIRS=peci pdfdocs > Error: pdflatex or latexmk required for PDF generation > make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1 > make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2 > make: *** [Makefile:248: __sub-make] Error 2 > > Which is the expected behavior. > There seems to be a related issue. At current "docs-mw", under build environments who don't have xelatex nor latexmk, $ make SPHINXDIRS=peci latexdocs completes without any issue. In the resulting .../latex/peci directory, one can run $ make PDFLATEX="latexmk -xelatex" LATEXOPTS="-interaction=batchmode -no-shell-escape" and build peci.pdf. At current "build-scripts", I get this: $ make SPHINXDIRS=peci latexdocs Error: pdflatex or latexmk required for PDF generation make[2]: *** [Documentation/Makefile:68: latexdocs] Error 1 make[1]: *** [<srcdir>/Makefile:1806: latexdocs] Error 2 make: *** [Makefile:248: __sub-make] Error 2 Patch 2/2 doesn't change the behavior. This is yet another regression. Please teach sphinx-build-wrapper of the fact that "latexdocs" does not run those texlive commands. It is only the "pdfdocs" phase that will run them. Regards, Akira > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Link: https://lore.kernel.org/linux-doc/e7c29532-71de-496b-a89f-743cef28736e@infradead.org/ > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sorry, a quick follow-up. On Sat, 27 Sep 2025 16:35:08 +0900, Akira Yokosawa wrote: > On Fri, 26 Sep 2025 12:16:19 +0200, Mauro Carvalho Chehab wrote: >> As reported by Randy, running make htmldocs on a machine >> without textlive now produce warnings: >> >> $ make O=DOCS htmldocs >> ../Documentation/Makefile:70: warning: overriding recipe for target 'pdfdocs' >> ../Documentation/Makefile:61: warning: ignoring old recipe for target 'pdfdocs' >> >> That's because the code has now two definitions for pdfdocs in >> case $PDFLATEX command is not found. With the new script, such >> special case is not needed anymore, as the script checks it. >> >> Drop the special case. Even after dropping it, on a machine >> without LaTeX, it will still produce an error as expected, >> as running: >> >> $ ./tools/docs/sphinx-build-wrapper pdfdocs >> Error: pdflatex or latexmk required for PDF generation >> >> does the check. After applying the patch we have: >> >> $ make SPHINXDIRS=peci htmldocs >> Using alabaster theme >> Using Python kernel-doc >> >> $ make SPHINXDIRS=peci pdfdocs >> Error: pdflatex or latexmk required for PDF generation >> make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1 >> make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2 >> make: *** [Makefile:248: __sub-make] Error 2 >> >> Which is the expected behavior. >> > > There seems to be a related issue. > > At current "docs-mw", under build environments who don't have xelatex nor latexmk, > > $ make SPHINXDIRS=peci latexdocs > > completes without any issue. > > In the resulting .../latex/peci directory, one can run I meant: .../peci/latex > > $ make PDFLATEX="latexmk -xelatex" LATEXOPTS="-interaction=batchmode -no-shell-escape" > > and build peci.pdf. I failed to mention, but of course you need to transfer/share said .../peci/latex/ to another build environment who has all the required packages for "pdfdocs". I often use such heterogeneous combination of running "make latexdocs" + running make under each of .../$SPHINXDIRS/latex/ using another environment. This way, you need only one set of working texlive packages for testing against various Sphinx's latex builder releases. > > At current "build-scripts", I get this: > > $ make SPHINXDIRS=peci latexdocs > Error: pdflatex or latexmk required for PDF generation > make[2]: *** [Documentation/Makefile:68: latexdocs] Error 1 > make[1]: *** [<srcdir>/Makefile:1806: latexdocs] Error 2 > make: *** [Makefile:248: __sub-make] Error 2 > > Patch 2/2 doesn't change the behavior. > > This is yet another regression. Please teach sphinx-build-wrapper of the > fact that "latexdocs" does not run those texlive commands. It is only the > "pdfdocs" phase that will run them. > You see, "make latexdocs" is supposed to generate all the necessary files for building PDFs to be consumed by make + latexmk/xelatex. There is a clear boundary between "latexdocs" and "pdfdocs". Thanks, Akira > Regards, > Akira > >> Reported-by: Randy Dunlap <rdunlap@infradead.org> >> Link: https://lore.kernel.org/linux-doc/e7c29532-71de-496b-a89f-743cef28736e@infradead.org/ >> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Em Sat, 27 Sep 2025 18:12:19 +0900 Akira Yokosawa <akiyks@gmail.com> escreveu: > Sorry, a quick follow-up. > > On Sat, 27 Sep 2025 16:35:08 +0900, Akira Yokosawa wrote: > > On Fri, 26 Sep 2025 12:16:19 +0200, Mauro Carvalho Chehab wrote: > >> As reported by Randy, running make htmldocs on a machine > >> without textlive now produce warnings: > >> > >> $ make O=DOCS htmldocs > >> ../Documentation/Makefile:70: warning: overriding recipe for target 'pdfdocs' > >> ../Documentation/Makefile:61: warning: ignoring old recipe for target 'pdfdocs' > >> > >> That's because the code has now two definitions for pdfdocs in > >> case $PDFLATEX command is not found. With the new script, such > >> special case is not needed anymore, as the script checks it. > >> > >> Drop the special case. Even after dropping it, on a machine > >> without LaTeX, it will still produce an error as expected, > >> as running: > >> > >> $ ./tools/docs/sphinx-build-wrapper pdfdocs > >> Error: pdflatex or latexmk required for PDF generation > >> > >> does the check. After applying the patch we have: > >> > >> $ make SPHINXDIRS=peci htmldocs > >> Using alabaster theme > >> Using Python kernel-doc > >> > >> $ make SPHINXDIRS=peci pdfdocs > >> Error: pdflatex or latexmk required for PDF generation > >> make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1 > >> make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2 > >> make: *** [Makefile:248: __sub-make] Error 2 > >> > >> Which is the expected behavior. > >> > > > > There seems to be a related issue. > > > > At current "docs-mw", under build environments who don't have xelatex nor latexmk, > > > > $ make SPHINXDIRS=peci latexdocs > > > > completes without any issue. > > > > In the resulting .../latex/peci directory, one can run > > I meant: .../peci/latex > True. This is an one-line fix: @@ -650,7 +650,7 @@ class SphinxBuilder: if not sphinxbuild and target != "mandocs": sys.exit(f"Error: {self.sphinxbuild} not found in PATH.\n") - if builder == "latex": + if target == "pdfdocs": if not self.pdflatex_cmd and not self.latexmk_cmd: sys.exit("Error: pdflatex or latexmk required for PDF generation") With that: $ make SPHINXDIRS=peci latexdocs Using alabaster theme Using Python kernel-doc WARNING: dot(1) not found, for better output quality install graphviz from https://www.graphviz.org $ tree Documentation/output/ Documentation/output/ `-- peci `-- latex ... |-- Makefile ... |-- peci.tex ... $ make SPHINXDIRS=peci pdfdocs Error: pdflatex or latexmk required for PDF generation make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1 make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2 make: *** [Makefile:248: __sub-make] Error 2 $ (cd Documentation/output/peci/latex/; make) latexmk -pdf -dvi- -ps- 'peci.tex' make: latexmk: No such file or directory make: *** [Makefile:29: peci.pdf] Error 127 the original behavior is restored. > > > > $ make PDFLATEX="latexmk -xelatex" LATEXOPTS="-interaction=batchmode -no-shell-escape" > > > > and build peci.pdf. > > I failed to mention, but of course you need to transfer/share said > .../peci/latex/ to another build environment who has all the required > packages for "pdfdocs". > > I often use such heterogeneous combination of running "make latexdocs" > + running make under each of .../$SPHINXDIRS/latex/ using another > environment. > > This way, you need only one set of working texlive packages for testing > against various Sphinx's latex builder releases. > > > > > At current "build-scripts", I get this: > > > > $ make SPHINXDIRS=peci latexdocs > > Error: pdflatex or latexmk required for PDF generation > > make[2]: *** [Documentation/Makefile:68: latexdocs] Error 1 > > make[1]: *** [<srcdir>/Makefile:1806: latexdocs] Error 2 > > make: *** [Makefile:248: __sub-make] Error 2 > > > > Patch 2/2 doesn't change the behavior. > > > > This is yet another regression. Please teach sphinx-build-wrapper of the > > fact that "latexdocs" does not run those texlive commands. It is only the > > "pdfdocs" phase that will run them. > > > > You see, "make latexdocs" is supposed to generate all the necessary files > for building PDFs to be consumed by make + latexmk/xelatex. > There is a clear boundary between "latexdocs" and "pdfdocs". True. Such patch should address your usecase: it will allow building tex files on one machine and generate pdf on a different one. Thanks, Mauro
On 9/26/25 3:16 AM, Mauro Carvalho Chehab wrote: > As reported by Randy, running make htmldocs on a machine > without textlive now produce warnings: > > $ make O=DOCS htmldocs > ../Documentation/Makefile:70: warning: overriding recipe for target 'pdfdocs' > ../Documentation/Makefile:61: warning: ignoring old recipe for target 'pdfdocs' > > That's because the code has now two definitions for pdfdocs in > case $PDFLATEX command is not found. With the new script, such > special case is not needed anymore, as the script checks it. > > Drop the special case. Even after dropping it, on a machine > without LaTeX, it will still produce an error as expected, > as running: > > $ ./tools/docs/sphinx-build-wrapper pdfdocs > Error: pdflatex or latexmk required for PDF generation > > does the check. After applying the patch we have: > > $ make SPHINXDIRS=peci htmldocs > Using alabaster theme > Using Python kernel-doc > > $ make SPHINXDIRS=peci pdfdocs > Error: pdflatex or latexmk required for PDF generation > make[2]: *** [Documentation/Makefile:64: pdfdocs] Error 1 > make[1]: *** [/root/Makefile:1808: pdfdocs] Error 2 > make: *** [Makefile:248: __sub-make] Error 2 > > Which is the expected behavior. > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Link: https://lore.kernel.org/linux-doc/e7c29532-71de-496b-a89f-743cef28736e@infradead.org/ s/Link/Closes/ > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Acked-by: Randy Dunlap <rdunlap@infradead.org> Tested-by: Randy Dunlap <rdunlap@infradead.org> Thanks. > --- > Documentation/Makefile | 13 ++++--------- > 1 file changed, 4 insertions(+), 9 deletions(-) > > diff --git a/Documentation/Makefile b/Documentation/Makefile > index c60db1038c9c..f764604fa1ac 100644 > --- a/Documentation/Makefile > +++ b/Documentation/Makefile > @@ -66,20 +66,15 @@ htmldocs mandocs infodocs texinfodocs latexdocs epubdocs xmldocs pdfdocs linkche > --builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \ > --theme=$(DOCS_THEME) --css=$(DOCS_CSS) --paper=$(PAPER) > > -# Special handling for pdfdocs > -ifneq ($(shell which $(PDFLATEX) >/dev/null 2>&1; echo $$?),0) > -pdfdocs: > - $(warning The '$(PDFLATEX)' command was not found. Make sure you have it installed and in PATH to produce PDF output.) > - @echo " SKIP Sphinx $@ target." > -endif > > -htmldocs-redirects: $(srctree)/Documentation/.renames.txt > - @tools/docs/gen-redirects.py --output $(BUILDDIR) < $< > -endif # HAVE_SPHINX > +endif > > # The following targets are independent of HAVE_SPHINX, and the rules should > # work or silently pass without Sphinx. > > +htmldocs-redirects: $(srctree)/Documentation/.renames.txt > + @tools/docs/gen-redirects.py --output $(BUILDDIR) < $< > + > refcheckdocs: > $(Q)cd $(srctree);scripts/documentation-file-ref-check > -- ~Randy
© 2016 - 2025 Red Hat, Inc.