linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* typedef output question/issue?
@ 2024-11-21  4:59 Randy Dunlap
  2024-11-21 11:19 ` Jani Nikula
  0 siblings, 1 reply; 6+ messages in thread
From: Randy Dunlap @ 2024-11-21  4:59 UTC (permalink / raw)
  To: open list:DOCUMENTATION

Hi,

If I print a typedef in html (make htmldocs) from a .rst file,
I see:

type dma_cookie_t
    an opaque DMA cookie

Description

if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code

~~~~~~~~~~~~~~~~~~~

If I print the same typedef in man format, it says 'typedef' instead of
'type', which is what I expect to see.

man formatted output:

Kernel API(9)                     API Manual                     Kernel API(9)

NAME
       typedef dma_cookie_t - an opaque DMA cookie

Description
       if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code

November 2024                    dma_cookie_t                    Kernel API(9)



I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.

[internet search ...]

The $internet says that one option is to install and use:
Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
I tried that but now I get:
Extension error:
Unknown event name: autodoc-process-signature

Another option is to try a different theme so I reverted to
sphinx_rtd_theme but that didn't help either.

Does anyone know a good solution to this?

thanks.
-- 
~Randy

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: typedef output question/issue?
  2024-11-21  4:59 typedef output question/issue? Randy Dunlap
@ 2024-11-21 11:19 ` Jani Nikula
  2024-11-21 11:19   ` Jani Nikula
  0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2024-11-21 11:19 UTC (permalink / raw)
  To: Randy Dunlap, open list:DOCUMENTATION

On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
> Hi,
>
> If I print a typedef in html (make htmldocs) from a .rst file,
> I see:
>
> type dma_cookie_t
>     an opaque DMA cookie
>
> Description
>
> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>
> ~~~~~~~~~~~~~~~~~~~
>
> If I print the same typedef in man format, it says 'typedef' instead of
> 'type', which is what I expect to see.

I'm sorry, it's unambigous to me which one you expect.

> man formatted output:
>
> Kernel API(9)                     API Manual                     Kernel API(9)
>
> NAME
>        typedef dma_cookie_t - an opaque DMA cookie
>
> Description
>        if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
>
> November 2024                    dma_cookie_t                    Kernel API(9)

How do you generate the man pages?

> I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.
>
> [internet search ...]
>
> The $internet says that one option is to install and use:
> Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
> I tried that but now I get:
> Extension error:
> Unknown event name: autodoc-process-signature

The kernel-doc thing is not hooked up in the Sphinx autodoc processing,
which is more geared towards Python. I presume sphinx_autodoc_typehints
uses autodoc-process-signature which isn't there because the autodoc
Sphinx extension isn't loaded, and even if it were, would not be called
on kernel-doc handling.


BR,
Jani.


>
> Another option is to try a different theme so I reverted to
> sphinx_rtd_theme but that didn't help either.
>
> Does anyone know a good solution to this?
>
> thanks.

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: typedef output question/issue?
  2024-11-21 11:19 ` Jani Nikula
@ 2024-11-21 11:19   ` Jani Nikula
  2024-11-21 17:38     ` Randy Dunlap
  0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2024-11-21 11:19 UTC (permalink / raw)
  To: Randy Dunlap, open list:DOCUMENTATION

On Thu, 21 Nov 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>> Hi,
>>
>> If I print a typedef in html (make htmldocs) from a .rst file,
>> I see:
>>
>> type dma_cookie_t
>>     an opaque DMA cookie
>>
>> Description
>>
>> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>>
>> ~~~~~~~~~~~~~~~~~~~
>>
>> If I print the same typedef in man format, it says 'typedef' instead of
>> 'type', which is what I expect to see.
>
> I'm sorry, it's unambigous to me which one you expect.

*ambiguous, obvs!

>
>> man formatted output:
>>
>> Kernel API(9)                     API Manual                     Kernel API(9)
>>
>> NAME
>>        typedef dma_cookie_t - an opaque DMA cookie
>>
>> Description
>>        if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
>>
>> November 2024                    dma_cookie_t                    Kernel API(9)
>
> How do you generate the man pages?
>
>> I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.
>>
>> [internet search ...]
>>
>> The $internet says that one option is to install and use:
>> Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
>> I tried that but now I get:
>> Extension error:
>> Unknown event name: autodoc-process-signature
>
> The kernel-doc thing is not hooked up in the Sphinx autodoc processing,
> which is more geared towards Python. I presume sphinx_autodoc_typehints
> uses autodoc-process-signature which isn't there because the autodoc
> Sphinx extension isn't loaded, and even if it were, would not be called
> on kernel-doc handling.
>
>
> BR,
> Jani.
>
>
>>
>> Another option is to try a different theme so I reverted to
>> sphinx_rtd_theme but that didn't help either.
>>
>> Does anyone know a good solution to this?
>>
>> thanks.

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: typedef output question/issue?
  2024-11-21 11:19   ` Jani Nikula
@ 2024-11-21 17:38     ` Randy Dunlap
  2024-11-21 19:28       ` Jani Nikula
  0 siblings, 1 reply; 6+ messages in thread
From: Randy Dunlap @ 2024-11-21 17:38 UTC (permalink / raw)
  To: Jani Nikula, open list:DOCUMENTATION



On 11/21/24 3:19 AM, Jani Nikula wrote:
> On Thu, 21 Nov 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
>> On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>>> Hi,
>>>
>>> If I print a typedef in html (make htmldocs) from a .rst file,
>>> I see:
>>>
>>> type dma_cookie_t
>>>     an opaque DMA cookie
>>>
>>> Description
>>>
>>> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>>>
>>> ~~~~~~~~~~~~~~~~~~~
>>>
>>> If I print the same typedef in man format, it says 'typedef' instead of
>>> 'type', which is what I expect to see.
>>
>> I'm sorry, it's unambigous to me which one you expect.
> 
> *ambiguous, obvs!

Sorry about that. I would like to see 'typedef' instead of 'type'.

Thanks.

> 
>>
>>> man formatted output:
>>>
>>> Kernel API(9)                     API Manual                     Kernel API(9)
>>>
>>> NAME
>>>        typedef dma_cookie_t - an opaque DMA cookie
>>>
>>> Description
>>>        if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
>>>
>>> November 2024                    dma_cookie_t                    Kernel API(9)
>>
>> How do you generate the man pages?

One function or identifier (struct, union, enum, or typedef) at a time.
Just for testing.

$ scripts/kernel-doc -man -function function_or_identifier file | nroff -man | less

e.g.:
$ scripts/kernel-doc  -man -function dma_cookie_t  include/linux/dmaengine.h  | nroff -man  | less

>>
>>> I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.
>>>
>>> [internet search ...]
>>>
>>> The $internet says that one option is to install and use:
>>> Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
>>> I tried that but now I get:
>>> Extension error:
>>> Unknown event name: autodoc-process-signature
>>
>> The kernel-doc thing is not hooked up in the Sphinx autodoc processing,
>> which is more geared towards Python. I presume sphinx_autodoc_typehints
>> uses autodoc-process-signature which isn't there because the autodoc
>> Sphinx extension isn't loaded, and even if it were, would not be called
>> on kernel-doc handling.
>>

OK, thanks. I'll just try to ignore it. :(

>>
>> BR,
>> Jani.
>>
>>
>>>
>>> Another option is to try a different theme so I reverted to
>>> sphinx_rtd_theme but that didn't help either.
>>>
>>> Does anyone know a good solution to this?
>>>
>>> thanks.
> 

-- 
~Randy


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: typedef output question/issue?
  2024-11-21 17:38     ` Randy Dunlap
@ 2024-11-21 19:28       ` Jani Nikula
  2024-11-25  0:05         ` Randy Dunlap
  0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2024-11-21 19:28 UTC (permalink / raw)
  To: Randy Dunlap, open list:DOCUMENTATION

On Thu, 21 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 11/21/24 3:19 AM, Jani Nikula wrote:
>> On Thu, 21 Nov 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
>>> On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>>>> Hi,
>>>>
>>>> If I print a typedef in html (make htmldocs) from a .rst file,
>>>> I see:
>>>>
>>>> type dma_cookie_t
>>>>     an opaque DMA cookie
>>>>
>>>> Description
>>>>
>>>> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>>>>
>>>> ~~~~~~~~~~~~~~~~~~~
>>>>
>>>> If I print the same typedef in man format, it says 'typedef' instead of
>>>> 'type', which is what I expect to see.
>>>
>>> I'm sorry, it's unambigous to me which one you expect.
>> 
>> *ambiguous, obvs!
>
> Sorry about that. I would like to see 'typedef' instead of 'type'.

Right, so looking into it, Sphinx actually has two forms for documenting
types, described at [1]:

.. c:type:: foo_t

.. c:type:: int foo_t

The former is simple, and becomes a generic "type" in rendered
documentation, while the latter can contain a "typedef-like
declaration", and becomes "typedef" in rendered documentation.

So, if you can make kernel-doc emit a proper typedef for the c:type
directive, the output will contain typedef, but otherwise remains just
type. Whether having the actual typedef declaration in the output is
something you also want, is a different matter.

The man page output doesn't go through Sphinx at all, and is just
whatever kernel-doc outputs.

HTH,
Jani.


[1] https://www.sphinx-doc.org/en/master/usage/domains/c.html#directive-c-type


>
> Thanks.
>
>> 
>>>
>>>> man formatted output:
>>>>
>>>> Kernel API(9)                     API Manual                     Kernel API(9)
>>>>
>>>> NAME
>>>>        typedef dma_cookie_t - an opaque DMA cookie
>>>>
>>>> Description
>>>>        if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
>>>>
>>>> November 2024                    dma_cookie_t                    Kernel API(9)
>>>
>>> How do you generate the man pages?
>
> One function or identifier (struct, union, enum, or typedef) at a time.
> Just for testing.
>
> $ scripts/kernel-doc -man -function function_or_identifier file | nroff -man | less
>
> e.g.:
> $ scripts/kernel-doc  -man -function dma_cookie_t  include/linux/dmaengine.h  | nroff -man  | less
>
>>>
>>>> I am using python311-Sphinx 8.0.2-1.2-noarch from openSUSE.
>>>>
>>>> [internet search ...]
>>>>
>>>> The $internet says that one option is to install and use:
>>>> Add 'sphinx_autodoc_typehints' to the extensions list in your conf.py file.
>>>> I tried that but now I get:
>>>> Extension error:
>>>> Unknown event name: autodoc-process-signature
>>>
>>> The kernel-doc thing is not hooked up in the Sphinx autodoc processing,
>>> which is more geared towards Python. I presume sphinx_autodoc_typehints
>>> uses autodoc-process-signature which isn't there because the autodoc
>>> Sphinx extension isn't loaded, and even if it were, would not be called
>>> on kernel-doc handling.
>>>
>
> OK, thanks. I'll just try to ignore it. :(
>
>>>
>>> BR,
>>> Jani.
>>>
>>>
>>>>
>>>> Another option is to try a different theme so I reverted to
>>>> sphinx_rtd_theme but that didn't help either.
>>>>
>>>> Does anyone know a good solution to this?
>>>>
>>>> thanks.
>> 

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: typedef output question/issue?
  2024-11-21 19:28       ` Jani Nikula
@ 2024-11-25  0:05         ` Randy Dunlap
  0 siblings, 0 replies; 6+ messages in thread
From: Randy Dunlap @ 2024-11-25  0:05 UTC (permalink / raw)
  To: Jani Nikula, open list:DOCUMENTATION

Hi Jani,

On 11/21/24 11:28 AM, Jani Nikula wrote:
> On Thu, 21 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>> On 11/21/24 3:19 AM, Jani Nikula wrote:
>>> On Thu, 21 Nov 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
>>>> On Wed, 20 Nov 2024, Randy Dunlap <rdunlap@infradead.org> wrote:
>>>>> Hi,
>>>>>
>>>>> If I print a typedef in html (make htmldocs) from a .rst file,
>>>>> I see:
>>>>>
>>>>> type dma_cookie_t
>>>>>     an opaque DMA cookie
>>>>>
>>>>> Description
>>>>>
>>>>> if dma_cookie_t is >0 it’s a DMA request cookie, <0 it’s an error code
>>>>>
>>>>> ~~~~~~~~~~~~~~~~~~~
>>>>>
>>>>> If I print the same typedef in man format, it says 'typedef' instead of
>>>>> 'type', which is what I expect to see.
>>>>
>>>> I'm sorry, it's unambigous to me which one you expect.
>>>
>>> *ambiguous, obvs!
>>
>> Sorry about that. I would like to see 'typedef' instead of 'type'.
> 
> Right, so looking into it, Sphinx actually has two forms for documenting
> types, described at [1]:
> 
> .. c:type:: foo_t
> 
> .. c:type:: int foo_t
> 
> The former is simple, and becomes a generic "type" in rendered
> documentation, while the latter can contain a "typedef-like
> declaration", and becomes "typedef" in rendered documentation.
> 
> So, if you can make kernel-doc emit a proper typedef for the c:type

What a big "if"!  Not your problem though.

What this exercise has shown me is that the scripts/kernel-doc processing of
'typedef' is sorely lacking. I.e., "typedef [many options]" is too complex for it. ;)

My test case has 3 typedefs in a row and scripts/kernel-doc sees only the first one
as a typedef, skips the second one, and parses the third one as a macro. (!)


> directive, the output will contain typedef, but otherwise remains just
> type. Whether having the actual typedef declaration in the output is
> something you also want, is a different matter.

Thanks for your assistance.

-- 
~Randy


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-11-25  0:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-21  4:59 typedef output question/issue? Randy Dunlap
2024-11-21 11:19 ` Jani Nikula
2024-11-21 11:19   ` Jani Nikula
2024-11-21 17:38     ` Randy Dunlap
2024-11-21 19:28       ` Jani Nikula
2024-11-25  0:05         ` Randy Dunlap

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 NNTP newsgroup(s).