From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Linux Doc Mailing List <linux-doc@vger.kernel.org>,
Jonathan Corbet <corbet@lwn.net>
Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
"Akira Yokosawa" <akiyks@gmail.com>,
"Breno Leitao" <leitao@debian.org>,
"David S. Miller" <davem@davemloft.net>,
"Donald Hunter" <donald.hunter@gmail.com>,
"Eric Dumazet" <edumazet@google.com>,
"Ignacio Encinas Rubio" <ignacio@iencinas.com>,
"Jan Stancek" <jstancek@redhat.com>,
"Marco Elver" <elver@google.com>,
"Mauro Carvalho Chehab" <mchehab+huawei@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Ruben Wauters" <rubenru09@aol.com>,
"Shuah Khan" <skhan@linuxfoundation.org>,
joel@joelfernandes.org, linux-kernel-mentees@lists.linux.dev,
linux-kernel@vger.kernel.org, lkmm@lists.linux.dev,
netdev@vger.kernel.org, peterz@infradead.org,
stern@rowland.harvard.edu
Subject: [PATCH v4 14/14] docs: conf.py: properly handle include and exclude patterns
Date: Sat, 14 Jun 2025 10:56:08 +0200 [thread overview]
Message-ID: <2238d93ac08f9e6d3e88e0edfc6f58d13f5f9b68.1749891128.git.mchehab+huawei@kernel.org> (raw)
In-Reply-To: <cover.1749891128.git.mchehab+huawei@kernel.org>
When one does:
make SPHINXDIRS="netlink/specs" htmldocs
the build would break because a statically-defined pattern
like:
include_patterns = [
...
'netlink/specs/*.yaml',
]
would be pointing to Documentation/netlink/specs/netlink/specs,
as the path there is relative. Also, when SPHINXDIRS is used,
the exclude_pattern = [ "output" ] is also wrong.
Fix conf.py to generate relative include/exclude patterns,
relative to the SOURCEDIR sphinx-dir parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Documentation/conf.py | 58 ++++++++++++++++++++++++++++++++++---------
1 file changed, 46 insertions(+), 12 deletions(-)
diff --git a/Documentation/conf.py b/Documentation/conf.py
index 62a51ac64b95..be678bdf95d4 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -17,6 +17,52 @@ import os
import sphinx
import shutil
+# Location of Documentation/ directory
+doctree = os.path.abspath('.')
+
+# List of patterns that don't contain directory names, in glob format.
+include_patterns = ['**.rst']
+exclude_patterns = []
+
+# List of patterns that contain directory names in glob format.
+dyn_include_patterns = ['netlink/specs/**.yaml']
+dyn_exclude_patterns = ['output']
+
+def setup(app):
+ """
+ On Sphinx, all directories are relative to what it is passed as
+ SOURCEDIR parameter for sphinx-build. Due to that, all patterns
+ that have directory names on it need to be dynamically set, after
+ converting them to a relative patch.
+
+ As Sphinx doesn't include any patterns outside SOURCEDIR, we should
+ exclude relative patterns that start with "../".
+ """
+
+ sourcedir = app.srcdir # full path to the source directory
+ builddir = os.environ.get("BUILDDIR")
+
+ # setup include_patterns dynamically
+ for p in dyn_include_patterns:
+ full = os.path.join(doctree, p)
+
+ rel_path = os.path.relpath(full, start = app.srcdir)
+ if rel_path.startswith("../"):
+ continue
+
+ app.config.include_patterns.append(rel_path)
+
+ # setup exclude_patterns dynamically
+ for p in dyn_exclude_patterns:
+ full = os.path.join(doctree, p)
+
+ rel_path = os.path.relpath(full, start = app.srcdir)
+ if rel_path.startswith("../"):
+ continue
+
+ app.config.exclude_patterns.append(rel_path)
+
+
# helper
# ------
@@ -220,18 +266,6 @@ language = 'en'
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
-# List of patterns, relative to source directory, that match files and
-# directories.
-include_patterns = [
- '**.rst',
- 'netlink/specs/*.yaml',
-]
-
-# patterns to ignore when looking for source files.
-exclude_patterns = [
- 'output',
-]
-
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
--
2.49.0
prev parent reply other threads:[~2025-06-14 8:56 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-14 8:55 [PATCH v4 00/14] Don't generate netlink .rst files inside $(srctree) Mauro Carvalho Chehab
2025-06-14 8:55 ` [PATCH v4 01/14] tools: ynl_gen_rst.py: create a top-level reference Mauro Carvalho Chehab
2025-06-14 8:55 ` [PATCH v4 02/14] docs: netlink: netlink-raw.rst: use :ref: instead of :doc: Mauro Carvalho Chehab
2025-06-14 8:55 ` [PATCH v4 03/14] docs: netlink: don't ignore generated rst files Mauro Carvalho Chehab
2025-06-14 8:55 ` [PATCH v4 04/14] tools: ynl_gen_rst.py: make the index parser more generic Mauro Carvalho Chehab
2025-06-14 13:41 ` Donald Hunter
2025-06-14 14:58 ` Mauro Carvalho Chehab
2025-06-14 8:55 ` [PATCH v4 05/14] tools: ynl_gen_rst.py: Split library from command line tool Mauro Carvalho Chehab
2025-06-14 14:09 ` Donald Hunter
2025-06-14 8:56 ` [PATCH v4 06/14] scripts: lib: netlink_yml_parser.py: use classes Mauro Carvalho Chehab
2025-06-14 14:11 ` Donald Hunter
2025-06-14 8:56 ` [PATCH v4 07/14] tools: ynl_gen_rst.py: move index.rst generator to the script Mauro Carvalho Chehab
2025-06-14 14:15 ` Donald Hunter
2025-06-14 15:35 ` Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 08/14] docs: sphinx: add a parser for yaml files for Netlink specs Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 09/14] docs: use parser_yaml extension to handle " Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 10/14] docs: conf.py: don't handle yaml files outside " Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 11/14] docs: uapi: netlink: update netlink specs link Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 12/14] MAINTAINERS: add maintainers for netlink_yml_parser.py Mauro Carvalho Chehab
2025-06-14 14:22 ` Donald Hunter
2025-06-14 15:32 ` Mauro Carvalho Chehab
2025-06-14 17:37 ` Jakub Kicinski
2025-06-14 18:56 ` Mauro Carvalho Chehab
2025-06-14 19:46 ` Jakub Kicinski
2025-06-16 10:51 ` Mauro Carvalho Chehab
2025-06-19 20:06 ` Jonathan Corbet
2025-06-20 15:31 ` Mauro Carvalho Chehab
2025-06-14 8:56 ` [PATCH v4 13/14] docs: Makefile: disable check rules on make cleandocs Mauro Carvalho Chehab
2025-06-14 8:56 ` Mauro Carvalho Chehab [this message]
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=2238d93ac08f9e6d3e88e0edfc6f58d13f5f9b68.1749891128.git.mchehab+huawei@kernel.org \
--to=mchehab+huawei@kernel.org \
--cc=akiyks@gmail.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=elver@google.com \
--cc=ignacio@iencinas.com \
--cc=joel@joelfernandes.org \
--cc=jstancek@redhat.com \
--cc=leitao@debian.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel-mentees@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=lkmm@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=peterz@infradead.org \
--cc=rubenru09@aol.com \
--cc=skhan@linuxfoundation.org \
--cc=stern@rowland.harvard.edu \
/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 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 read-only IMAP folder(s) and NNTP newsgroup(s).