Re: [RFC PATCH 1/2] scripts/kernel-doc: Auto-detect common code-blocks

From: Daniel Vetter
Date: Thu Jul 05 2018 - 11:40:14 EST


On Mon, May 14, 2018 at 1:03 PM, Jani Nikula
<jani.nikula@xxxxxxxxxxxxxxx> wrote:
> On Thu, 10 May 2018, Jonathan Corbet <corbet@xxxxxxx> wrote:
>> On Thu, 10 May 2018 09:34:56 -0700
>> Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>>
>>> I think this is a bit fragile. Why not just search for ':\n'? Is
>>> there ever a case where we want to write:
>>>
>>> /**
>>> * foo is a bar:
>>> * wibble
>>> */
>>> and have wibble not be a code-block?
>>
>> Yeah, we might want to write something like:
>>
>> - Leading off a bulleted list
>>
>> 1) or a numbered list
>>
>> for example. That's why I was thinking of looking for explicit markers
>> for such lists.
>>
>> It'll take some playing around with to have a hope of getting right,
>> methinks.
>
> We had serious trouble with the old DocBook toolchain because the tool
> pipeline was so long, and each step had its own expectations and quirks.
> For example, remember the escaping needed for xml in kernel-doc? Or tmpl
> xml files being invalid xml because of the docproc directives? One of
> the big benefits of the current toolchain is minimizing the amount of
> special casing magic required.
>
> The more we add custom syntax sugar in kernel-doc, the more we run the
> risk of running into hard problems later on in the Sphinx phase. For
> example, our own syntax preventing the use of legitimate rst syntax. And
> now we get somewhat reasonable error messages from Sphinx when things go
> wrong; we didn't get that when the impedance mismatches caused issues
> with the old toolchain. They were hard to debug and mostly nobody even
> bothered. We should work to reduce the amount of special processing in
> kernel-doc, not the other way round.
>
> The use of "::" is a valid and arguably rather non-invasive rst token
> for indicating the following indented block is a literal block. Adding
> heuristics (especially ones based on English language magic words) will
> lead to bigger problems than it's trying to solve.

Very late +1 on this. I think :: plus a 4 char indent is a very
non-intrusive way to shut up sphinx, and most reasonable maintainers
can be convinced of the same. Some insists on making docs worse for
everyone for some ideal of plain text purity in comments
unfortunately.

And I also fully agree with Jani on maintainability headaches with
custom syntax and heuristics. It just makes debugging toolchain issues
extremely painful. What we have right now is about the bare minimu
that was required for a smooth transition, and no more.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch