From: Vegard Nossum <vegard.nossum@oracle.com>
To: Jonathan Corbet <corbet@lwn.net>, linux-doc@vger.kernel.org
Cc: Akira Yokosawa <akiyks@gmail.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Jani Nikula <jani.nikula@intel.com>
Subject: Re: PDF misery
Date: Sun, 18 Feb 2024 14:07:07 +0100 [thread overview]
Message-ID: <c6817759-62fc-48c8-9446-e985b6234745@oracle.com> (raw)
In-Reply-To: <ec394023-1dc4-4dc9-8f90-77665b297823@oracle.com>
[-- Attachment #1: Type: text/plain, Size: 866 bytes --]
On 18/02/2024 11:08, Vegard Nossum wrote:
> I think the "bug" here is really that Sphinx generated LaTeX code that
> doesn't build -- and that it didn't warn about the problem in other
> modes (maybe it does in newer versions, or maybe we overlooked the
> warnings?).
>
> If we'd had those warnings then we could have stopped those constructs
> from entering the documentation sources to start with.
With the attached patch I get:
$ make htmldocs SPHINXDIRS=filesystems/xfs
make[3]: Nothing to be done for 'html'.
Using alabaster theme
source directory: filesystems/xfs
WARNING: xfs-online-fsck-design.rst:2096: heading "Case Study: Sorting
xfarrays" has nesting level 7; consider restructuring
Maybe we can do the same for itemize lists.
I didn't check what impact this potentially has on running time. Also
only tested with Sphinx 4.3.2.
Thoughts?
Vegard
[-- Attachment #2: kvalidate.patch --]
[-- Type: text/x-patch, Size: 1958 bytes --]
diff --git a/Documentation/conf.py b/Documentation/conf.py
index 5830b01c5642..1cfcea4e487d 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -55,7 +55,8 @@ needs_sphinx = '2.4.4'
extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include',
'kfigure', 'sphinx.ext.ifconfig', 'automarkup',
'maintainers_include', 'sphinx.ext.autosectionlabel',
- 'kernel_abi', 'kernel_feat', 'translations']
+ 'kernel_abi', 'kernel_feat', 'translations',
+ 'kvalidate']
if major >= 3:
if (major > 3) or (minor > 0 or patch >= 2):
diff --git a/Documentation/sphinx/kvalidate.py b/Documentation/sphinx/kvalidate.py
new file mode 100644
index 000000000000..3302e936db77
--- /dev/null
+++ b/Documentation/sphinx/kvalidate.py
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright © 2024, Oracle and/or its affiliates.
+# Author: Vegard Nossum <vegard.nossum@oracle.com>
+#
+# Validate doc tree against kernel-specific rules.
+#
+
+import os
+
+import docutils
+from sphinx.util import logging
+
+logger = logging.getLogger('kerneldoc')
+
+max_heading_levels = 5
+
+def process_doctree(app, doctree):
+ env = app.env
+ srcdir = env.srcdir
+
+ for node in doctree.traverse(docutils.nodes.title):
+ heading_level = 0
+
+ ancestor = node.parent
+ while ancestor is not None:
+ if isinstance(ancestor, docutils.nodes.section):
+ heading_level = heading_level + 1
+
+ ancestor = ancestor.parent
+
+ if heading_level > max_heading_levels:
+ logger.warning("%s:%u: heading \"%s\" has nesting level %u; consider restructuring",
+ os.path.relpath(node.source, srcdir), node.line, node.astext(), heading_level + 1)
+
+def setup(app):
+ app.connect('doctree-read', process_doctree)
+
+ return {
+ 'parallel_read_safe': True,
+ 'parallel_write_safe': True,
+ }
next prev parent reply other threads:[~2024-02-18 13:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-17 21:29 PDF misery Jonathan Corbet
2024-02-18 0:40 ` Mauro Carvalho Chehab
2024-02-18 9:58 ` Akira Yokosawa
2024-02-18 10:17 ` Mauro Carvalho Chehab
2024-02-19 17:49 ` Jonathan Corbet
2024-02-18 10:08 ` Vegard Nossum
2024-02-18 13:07 ` Vegard Nossum [this message]
2024-02-18 15:49 ` Akira Yokosawa
2024-02-18 19:57 ` Mauro Carvalho Chehab
2024-02-18 22:15 ` Jonathan Corbet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c6817759-62fc-48c8-9446-e985b6234745@oracle.com \
--to=vegard.nossum@oracle.com \
--cc=akiyks@gmail.com \
--cc=corbet@lwn.net \
--cc=jani.nikula@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=mchehab@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.