Re: [PATCH] lkmm: docs: Put LKMM documentation into dev-tools book

Mauro Carvalho Chehab <[email protected]>
Newsgroups dev.linux.lists.lkmm,dev.linux.lists.linux-kernel-mentees
Message-ID <[email protected]>
Em Tue, 10 Jun 2025 11:11:50 +0900
Akira Yokosawa <[email protected]> escreveu:

> On Mon, 09 Jun 2025 16:03:32 -0600, Jonathan Corbet wrote:
> > Akira Yokosawa <[email protected]> writes:
> >   
> >> Currently, LKMM docs are not included in any of kernel documentation
> >> books.
> >>
> >> Commit e40573a43d16 ("docs: put atomic*.txt and memory-barriers.txt
> >> into the core-api book") covered plain-text docs under Documentation/
> >> by using the "include::" directive along with the ":literal:" option.
> >>
> >> As LKMM docs are not under Documentation/, the same approach would not
> >> work due to the limit of the include:: directive. 
> >>
> >> As a matter of fact, kernel documentation has an extended directive
> >> by the name of "kernel-include::", which has no such limitation.
> >>
> >> Rather than moving LKMM docs around, use the latter with source tree's
> >> abspath passed through via the "SOURCEDIR" variable which is now defined
> >> in Documentation/Makefile, and make them included in the dev-tools book
> >> next to KCSAN.  
> > 
> > So this fell through the cracks during my May travel, sorry.  
> 
> Thank you for taking the time!
> 
> > 
> > I've taken a look at it now ... it adds a vast number of build warnings:
> > 
> > Documentation/networking/netlink_spec/rt_addr.rst:28: WARNING: duplicate label rt-addr-operation-newaddr, other instance in /stuff/k/git/kernel/Documentation/networking/netlink_spec/rt-addr.rst
> > Documentation/networking/netlink_spec/rt_addr.rst:41: WARNING: duplicate label rt-addr-operation-deladdr, other instance in /stuff/k/git/kernel/Documentation/networking/netlink_spec/rt-addr.rst
> > Documentation/networking/netlink_spec/rt_addr.rst:54: WARNING: duplicate label rt-addr-operation-getaddr, other instance in /stuff/k/git/kernel/Documentation/networking/netlink_spec/rt-addr.rst
> > [...]
> > 
> > I haven't had a chance to figure out *why* it would have this particular
> > bizarre effect...  
> 
> I don't think those new warnings have anything to do with this patch.
> 
> This is mentioned by Paolo at:
>   https://lore.kernel.org/[email protected]/
> 
>     My understanding is that this rename triggers rebuild of the related
>     doc, which in turns leads to quite a large number of htmldoc warning,
>     but it's really unharmful/pre-existing issue.
> 
> , and Donald said in his reply at:
>   https://lore.kernel.org/CAD4GDZw+Enkd2dA8f7pNxMadwURFd_tHv1sUwkXqFqxsOquHQQ@mail.gmail.com/
> 
>     Yes, Documentation/Makefile goes the extra mile to only try deleting a
>     list of .rst files generated from the list of source .yaml files. It
>     would be easier to just delete
>     Documentation/networking/netlink_spec/*.rst which would be able to
>     clean up old generated files in situations like this.
> 
> HTH.
> 
> BTW, I assumed Paul would take this patch into his lkmm branch for v6.17,
> once all is clear for the new uses of "..kernel-include::" with ":literal:".

IMO, that happens because of the extra step introduced by ynl_gen_rst.py.

Any file renames and deletes will cause troubles. Btw, with those:

	YNL_INDEX:=$(srctree)/Documentation/networking/netlink_spec/index.rst
	YNL_RST_DIR:=$(srctree)/Documentation/networking/netlink_spec
	YNL_YAML_DIR:=$(srctree)/Documentation/netlink/specs
	YNL_TOOL:=$(srctree)/tools/net/ynl/pyynl/ynl_gen_rst.py

	YNL_RST_FILES_TMP := $(patsubst %.yaml,%.rst,$(wildcard $(YNL_YAML_DIR)/*.yaml))
	YNL_RST_FILES := $(patsubst $(YNL_YAML_DIR)%,$(YNL_RST_DIR)%, $(YNL_RST_FILES_TMP))

$(YNL_INDEX): $(YNL_RST_FILES)
        $(Q)$(YNL_TOOL) -o $@ -x

$(YNL_RST_DIR)/%.rst: $(YNL_YAML_DIR)/%.yaml $(YNL_TOOL)
        $(Q)$(YNL_TOOL) -i $< -o $@

the produced ReST files aren't placed inside Documentation/output.
They're placed instead at $(srctree). This can be problematic,
specially when O= is in place.

IMO, the right solution would be to write a Sphinx extension that would
be internally calling ynl_gen_rst.py. This way, there won't be a need to
store.

There is a second option: do something similar to what we did when
media uAPI documents got migrated to Sphinx(*). The Makefile part
is at:

	Documentation/userspace-api/media/Makefile

Where generated ReST files are stored under $(BUILDDIR). We did this before 
we start writing our own Sphinx extensions. While such approach works,IMO
a Sphinx extension would be better integrated.

---

(*) the tool there ensures that the entire uAPI headers will be included
    on media documentation in a way that all symbols will have a
    cross-reference to uAPI documentation. This way, if one adds a new
    uAPI without touching docs, warnings will be generated.

> 
> Thanks,
> Akira



Thanks,
Mauro
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.