Re: scripts/kernel-doc does not handle duplicate struct & function names (e.g., in amdgpu)

From: Mauro Carvalho Chehab
Date: Wed Jul 12 2023 - 01:43:11 EST


Em Tue, 11 Jul 2023 20:45:18 -0700
Randy Dunlap <rdunlap@xxxxxxxxxxxxx> escreveu:

> On 7/11/23 20:32, Akira Yokosawa wrote:
> > Hi Randy,
> >
> >> [just documenting this for posterity or in case someone wants to fix it.]
> >>
> >> In drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c, one can find both
> >>
> >> struct amdgpu_vm_tlb_seq_cb {...};
> >>
> >> and
> >> static void amdgpu_vm_tlb_seq_cb(...)
> >>
> >> Of course C has no problem with this, but kernel-doc reports:
> >>
> >> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:833: WARNING: Duplicate C declaration, also defined at gpu/amdgpu/driver-core:115.
> >>
> >> And of course, if the name of one of them is changed, kernel-doc is all happy...
> >> not that I am suggesting that one of them should be changed.
> >>
> >> I just want to make people aware of this. (or maybe people are already aware of this?)
> >
> > The duplicate warning is emitted from Sphinx, not kernel-doc.
> >
> > This is a bug of Sphinx >=3.1, first reported by Mauro back in September 2020 at:
> >
> > https://github.com/sphinx-doc/sphinx/issues/8241
> >
> > It was closed when a local fix was presented. Unfortunately, it was not
> > merged at the time and a subsequent pull request was opened at:
> >
> > https://github.com/sphinx-doc/sphinx/pull/8313
> >
> > It is not merged yet and carries a milestone of Sphinx 7.x.
> >
> > Looks like we need to wait patiently.
> >
> > Thanks, Akira
>
> Ooooh, thanks for your assistance. Waiting.... :)

Yeah, we've been waiting this since Sphinx version 3.x times :-(

It seems that applying the fix would break an extension
(intersphinx). We don't use at the Kernel, so it won't affect
us, but it seems to be a popular extension, as it allows one
web server to have cross-references to Sphinx docs produced
elsewhere. Btw, such extension could be interesting on partial
doc builds (e. g. make SPHNXDIRS="foo_dir" htmldocs), as the
non-existing cross-references would be pointing, for instance,
to the docs stored at kernel.doc latest docs.

Btw, I'm still using version 2.4.4 when building the docs
to avoid the wrong duplicate warnings with 3.1+ due to this bug.

Thanks,
Mauro