lkmm.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
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


      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).