* [PATCH 0/2] A couple patches for sphinx-build-wrapper
@ 2025-09-19 15:09 Mauro Carvalho Chehab
2025-09-19 15:09 ` [PATCH 1/2] tools/docs: sphinx-build-wrapper: handle sphinx-build errors Mauro Carvalho Chehab
2025-09-19 15:10 ` [PATCH 2/2] docs: conf.py: get rid of load_config.py Mauro Carvalho Chehab
0 siblings, 2 replies; 5+ messages in thread
From: Mauro Carvalho Chehab @ 2025-09-19 15:09 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel,
Jonathan Corbet
Hi Jon,
This small series is against docs/build-script branch.
The first patch addresses the lack of a check after running
sphinx-build to see if it returned some error code.
The second patch is a bonus cleanup: it get rids with
load_config.py, replacing it by a single line at conf.py,
simplifying even further docs Makefile. Thanks for
reminding me about that legacy code that we can drop!
-
I didn't implement yet Akira's suggestion of having a way
to use make -i to ignore errors from latexdocs while
doing pdf builds. I have a couple of ideas on my head.
I'm tempting to implement a:
--no-sphinx
command line argument at sphinx-build-wrapper, which would
make it ignore the sphinx-build step. this way a makefile
rule like:
pdf-after-latex: latexdocs
+$(Q)$(PYTHON3) $(BUILD_WRAPPER) $@ $(RUSTDOC) \
--sphinxdirs="$(SPHINXDIRS)" \
--builddir="$(BUILDDIR)" --deny-vf=$(FONTS_CONF_DENY_VF) \
--css=$(DOCS_CSS) --paper=$(PAPER) --no-sphinx
would allow people to play with "-i", "-k", "--output-sync" and
other make arguments.
However, Friday's happy hour is quickly approaching here... Not the
best time to implement new ideas :-D
I'll try to materialize it next week.
Have a nice weekend!
Mauro
Mauro Carvalho Chehab (2):
tools/docs: sphinx-build-wrapper: handle sphinx-build errors
docs: conf.py: get rid of load_config.py
Documentation/Makefile | 4 --
Documentation/conf.py | 15 +++-----
Documentation/sphinx/load_config.py | 60 -----------------------------
tools/docs/sphinx-build-wrapper | 9 ++++-
4 files changed, 12 insertions(+), 76 deletions(-)
delete mode 100644 Documentation/sphinx/load_config.py
--
2.51.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] tools/docs: sphinx-build-wrapper: handle sphinx-build errors 2025-09-19 15:09 [PATCH 0/2] A couple patches for sphinx-build-wrapper Mauro Carvalho Chehab @ 2025-09-19 15:09 ` Mauro Carvalho Chehab 2025-09-19 15:10 ` [PATCH 2/2] docs: conf.py: get rid of load_config.py Mauro Carvalho Chehab 1 sibling, 0 replies; 5+ messages in thread From: Mauro Carvalho Chehab @ 2025-09-19 15:09 UTC (permalink / raw) To: Linux Doc Mailing List Cc: Mauro Carvalho Chehab, Jonathan Corbet, Mauro Carvalho Chehab, linux-kernel If sphinx-build returns an error, exit the script. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- tools/docs/sphinx-build-wrapper | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/docs/sphinx-build-wrapper b/tools/docs/sphinx-build-wrapper index 6ed3d58ec277..b7e97c10d7dc 100755 --- a/tools/docs/sphinx-build-wrapper +++ b/tools/docs/sphinx-build-wrapper @@ -275,7 +275,7 @@ class SphinxBuilder: if self.venv: cmd = ["python"] else: - cmd = [sys.executable,] + cmd = [sys.executable] cmd += [sphinx_build] cmd += [f"-j{n_jobs}"] @@ -718,7 +718,12 @@ class SphinxBuilder: self.handle_man(kerneldoc, docs_dir, src_dir, output_dir) else: try: - self.run_sphinx(sphinxbuild, build_args, env=self.env) + result = self.run_sphinx(sphinxbuild, build_args, + env=self.env) + + if result: + sys.exit(f"Build failed: return code: {result}") + except (OSError, ValueError, subprocess.SubprocessError) as e: sys.exit(f"Build failed: {repr(e)}") -- 2.51.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] docs: conf.py: get rid of load_config.py 2025-09-19 15:09 [PATCH 0/2] A couple patches for sphinx-build-wrapper Mauro Carvalho Chehab 2025-09-19 15:09 ` [PATCH 1/2] tools/docs: sphinx-build-wrapper: handle sphinx-build errors Mauro Carvalho Chehab @ 2025-09-19 15:10 ` Mauro Carvalho Chehab 2025-09-19 21:38 ` Jonathan Corbet 1 sibling, 1 reply; 5+ messages in thread From: Mauro Carvalho Chehab @ 2025-09-19 15:10 UTC (permalink / raw) To: Linux Doc Mailing List Cc: Mauro Carvalho Chehab, Jonathan Corbet, Mauro Carvalho Chehab, Kees Cook, linux-kernel The code here was meant to handle 3 functions: 1. allow having a separate conf.py file, per subdir; 2. generate a list of latex documents. 3. set "subproject" tag if SPHINXDIRS points to a subdir. We don't have (1) anymore, and (3) is now properly handled entirely inside conf.py. So, only (3) is still needed, and this is a single-line change at conf.py. So, drop it, moving the remaining code to conf.py. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- Documentation/Makefile | 4 -- Documentation/conf.py | 15 +++----- Documentation/sphinx/load_config.py | 60 ----------------------------- 3 files changed, 5 insertions(+), 74 deletions(-) delete mode 100644 Documentation/sphinx/load_config.py diff --git a/Documentation/Makefile b/Documentation/Makefile index 6ccd5db1dcbd..9663e7a31feb 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -24,7 +24,6 @@ SPHINXDIRS = . DOCS_THEME = DOCS_CSS = RUSTDOC = -SPHINX_CONF = conf.py PAPER = BUILDDIR = $(obj)/output PDFLATEX = xelatex @@ -108,9 +107,6 @@ dochelp: @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' @echo ' valid values for SPHINXDIRS are: $(_SPHINXDIRS)' @echo - @echo ' make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build' - @echo ' configuration. This is e.g. useful to build with nit-picking config.' - @echo @echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.' @echo @echo ' make DOCS_CSS={a .css file} adds a DOCS_CSS override file for html/epub output.' diff --git a/Documentation/conf.py b/Documentation/conf.py index 574896cca198..1ea2ae5c6276 100644 --- a/Documentation/conf.py +++ b/Documentation/conf.py @@ -18,8 +18,6 @@ import sphinx # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath("sphinx")) -from load_config import loadConfig # pylint: disable=C0413,E0401 - # Minimal supported version needs_sphinx = "3.4.3" @@ -93,8 +91,12 @@ def config_init(app, config): # LaTeX and PDF output require a list of documents with are dependent # of the app.srcdir. Add them here - # When SPHINXDIRS is used, we just need to get index.rst, if it exists + # Handle the case where SPHINXDIRS is used if not os.path.samefile(doctree, app.srcdir): + # Add a tag to mark that the build is actually a subproject + tags.add("subproject") + + # get index.rst, if it exists doc = os.path.basename(app.srcdir) fname = "index" if os.path.exists(os.path.join(app.srcdir, fname + ".rst")): @@ -583,13 +585,6 @@ pdf_documents = [ kerneldoc_bin = "../scripts/kernel-doc.py" kerneldoc_srctree = ".." -# ------------------------------------------------------------------------------ -# Since loadConfig overwrites settings from the global namespace, it has to be -# the last statement in the conf.py file -# ------------------------------------------------------------------------------ -loadConfig(globals()) - - def setup(app): """Patterns need to be updated at init time on older Sphinx versions""" diff --git a/Documentation/sphinx/load_config.py b/Documentation/sphinx/load_config.py deleted file mode 100644 index 1afb0c97f06b..000000000000 --- a/Documentation/sphinx/load_config.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8; mode: python -*- -# SPDX-License-Identifier: GPL-2.0 -# pylint: disable=R0903, C0330, R0914, R0912, E0401 - -import os -import sys -from sphinx.util.osutil import fs_encoding - -# ------------------------------------------------------------------------------ -def loadConfig(namespace): -# ------------------------------------------------------------------------------ - - """Load an additional configuration file into *namespace*. - - The name of the configuration file is taken from the environment - ``SPHINX_CONF``. The external configuration file extends (or overwrites) the - configuration values from the origin ``conf.py``. With this you are able to - maintain *build themes*. """ - - config_file = os.environ.get("SPHINX_CONF", None) - if (config_file is not None - and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ): - config_file = os.path.abspath(config_file) - - # Let's avoid one conf.py file just due to latex_documents - start = config_file.find('Documentation/') - if start >= 0: - start = config_file.find('/', start + 1) - - end = config_file.rfind('/') - if start >= 0 and end > 0: - dir = config_file[start + 1:end] - - print("source directory: %s" % dir) - new_latex_docs = [] - latex_documents = namespace['latex_documents'] - - for l in latex_documents: - if l[0].find(dir + '/') == 0: - has = True - fn = l[0][len(dir) + 1:] - new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) - break - - namespace['latex_documents'] = new_latex_docs - - # If there is an extra conf.py file, load it - if os.path.isfile(config_file): - sys.stdout.write("load additional sphinx-config: %s\n" % config_file) - config = namespace.copy() - config['__file__'] = config_file - with open(config_file, 'rb') as f: - code = compile(f.read(), fs_encoding, 'exec') - exec(code, config) - del config['__file__'] - namespace.update(config) - else: - config = namespace.copy() - config['tags'].add("subproject") - namespace.update(config) -- 2.51.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] docs: conf.py: get rid of load_config.py 2025-09-19 15:10 ` [PATCH 2/2] docs: conf.py: get rid of load_config.py Mauro Carvalho Chehab @ 2025-09-19 21:38 ` Jonathan Corbet 2025-09-20 9:36 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 5+ messages in thread From: Jonathan Corbet @ 2025-09-19 21:38 UTC (permalink / raw) To: Mauro Carvalho Chehab, Linux Doc Mailing List Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, Kees Cook, linux-kernel Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes: > The code here was meant to handle 3 functions: > 1. allow having a separate conf.py file, per subdir; > 2. generate a list of latex documents. > 3. set "subproject" tag if SPHINXDIRS points to a subdir. > > We don't have (1) anymore, and (3) is now properly handled > entirely inside conf.py. > > So, only (3) is still needed, and this is a single-line change > at conf.py. > > So, drop it, moving the remaining code to conf.py. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > --- > Documentation/Makefile | 4 -- > Documentation/conf.py | 15 +++----- > Documentation/sphinx/load_config.py | 60 ----------------------------- > 3 files changed, 5 insertions(+), 74 deletions(-) > delete mode 100644 Documentation/sphinx/load_config.py > > diff --git a/Documentation/Makefile b/Documentation/Makefile > index 6ccd5db1dcbd..9663e7a31feb 100644 > --- a/Documentation/Makefile > +++ b/Documentation/Makefile > @@ -24,7 +24,6 @@ SPHINXDIRS = . > DOCS_THEME = > DOCS_CSS = > RUSTDOC = > -SPHINX_CONF = conf.py > PAPER = > BUILDDIR = $(obj)/output > PDFLATEX = xelatex > @@ -108,9 +107,6 @@ dochelp: > @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' > @echo ' valid values for SPHINXDIRS are: $(_SPHINXDIRS)' > @echo > - @echo ' make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build' > - @echo ' configuration. This is e.g. useful to build with nit-picking config.' > - @echo > @echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.' So probably I'm a little slow today, but this confuses me. Even after this change, the makefile still uses SPHINX_CONF, so I'm not sure how it is supposed to be set? Thanks, jon ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] docs: conf.py: get rid of load_config.py 2025-09-19 21:38 ` Jonathan Corbet @ 2025-09-20 9:36 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 5+ messages in thread From: Mauro Carvalho Chehab @ 2025-09-20 9:36 UTC (permalink / raw) To: Jonathan Corbet; +Cc: Linux Doc Mailing List, linux-kernel Em Fri, 19 Sep 2025 15:38:56 -0600 Jonathan Corbet <corbet@lwn.net> escreveu: > Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes: > > > The code here was meant to handle 3 functions: > > 1. allow having a separate conf.py file, per subdir; > > 2. generate a list of latex documents. > > 3. set "subproject" tag if SPHINXDIRS points to a subdir. > > > > We don't have (1) anymore, and (3) is now properly handled > > entirely inside conf.py. > > > > So, only (3) is still needed, and this is a single-line change > > at conf.py. > > > > So, drop it, moving the remaining code to conf.py. > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > > --- > > Documentation/Makefile | 4 -- > > Documentation/conf.py | 15 +++----- > > Documentation/sphinx/load_config.py | 60 ----------------------------- > > 3 files changed, 5 insertions(+), 74 deletions(-) > > delete mode 100644 Documentation/sphinx/load_config.py > > > > diff --git a/Documentation/Makefile b/Documentation/Makefile > > index 6ccd5db1dcbd..9663e7a31feb 100644 > > --- a/Documentation/Makefile > > +++ b/Documentation/Makefile > > @@ -24,7 +24,6 @@ SPHINXDIRS = . > > DOCS_THEME = > > DOCS_CSS = > > RUSTDOC = > > -SPHINX_CONF = conf.py > > PAPER = > > BUILDDIR = $(obj)/output > > PDFLATEX = xelatex > > @@ -108,9 +107,6 @@ dochelp: > > @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2' > > @echo ' valid values for SPHINXDIRS are: $(_SPHINXDIRS)' > > @echo > > - @echo ' make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build' > > - @echo ' configuration. This is e.g. useful to build with nit-picking config.' > > - @echo > > @echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.' > > So probably I'm a little slow today, but this confuses me. Even after > this change, the makefile still uses SPHINX_CONF, so I'm not sure how it > is supposed to be set? Heh, incomplete patch, sorry for that. I'll send a v2 of this series. Thanks, Mauro ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-09-20 9:36 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-19 15:09 [PATCH 0/2] A couple patches for sphinx-build-wrapper Mauro Carvalho Chehab 2025-09-19 15:09 ` [PATCH 1/2] tools/docs: sphinx-build-wrapper: handle sphinx-build errors Mauro Carvalho Chehab 2025-09-19 15:10 ` [PATCH 2/2] docs: conf.py: get rid of load_config.py Mauro Carvalho Chehab 2025-09-19 21:38 ` Jonathan Corbet 2025-09-20 9:36 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).