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 - 2026 Red Hat, Inc.