commit f6d6913 'convert to markdown' breaks pdfdocs with double <para>s

Danilo Cesar Lemes de Paula danilo.cesar at collabora.co.uk
Mon Aug 17 11:26:41 PDT 2015


On 08/17/2015 01:53 PM, Graham Whaley wrote:
> Hi,
>  commit f6d6913425a560c3cd213096e34834e797ef83f8: drm/doc: Convert to
> markdown
> 
> caused some changes to the drm.xml layout, particularly in the <para>
> parts,that make pdfdocs generation unhappy.  In particular (working at
> the commit above), the following new error:
> 
>  jade:/Documentation/DocBook/drm.xml:2491:8:E: document type does not
> allow element "para" here; missing one of "footnote", "caution",
> "important", "note", "tip", "warning", "blockquote", "informalexample"
> start-tag
> 
> comes from this code:
> 
> ---- drm.xml:2488
>  <function>drm_vma_node_offset_addr</function>.
>    </para>
>    <para>
>    <para>
>    Additionally to offset management,
> ----
> 
> That code comes from:
>   drm.tmpl:888: !Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager
> 
> Before markdown/pandoc (or if you turn off MARKDOWN in the Makefile)
> this looked like this:
> 
> ---- drm.xml:2488
>    please see <function>drm_vma_node_offset_addr</function>.
>    </para><para>
>    Additionally to offset management,
> ----
> 
> I've failed to figure out exactly how/what/why markdown/pandoc is doing
> here or if it is a pandoc or kernel-doc or other error or
> incompatibility.
> As to the pdfdocs error, my suspicion is that nested <para>s are not
> allowed, but the html generation 'gets away' with it - generating HTML
> like this (grrr - Evolution is messing with the html layout below, even
> in a 'plain text' email!):
> 
> ---- drm/drm-memory-management.html:391
>    <code class="function"><a class="link" href="API-drm-vma-node-offset
> -addr.html"
> title="drm_vma_node_offset_addr">drm_vma_node_offset_addr</a>      
> </code>.                  
> </p><p>                                                                
>            
>    </p><p>                                                             
>               
>    Additionally to offset management,
> ----
> 
> The double <para> is very easy to generate from pandoc. If the
> following fragment is fed to pandoc using the same parameters as used
> in kernel-doc then you see it. I grabbed the idea of the fragment by
> enabling some of the stderr debug in kernel-doc to try and see what was
> going on.
> 
> ---- fragment.in
> </para><para>
> x
> ----
> 
> # pandoc --columns=80 -f markdown -t docbook fragment.in
> ---- stdout
> </para>
> <para>
> <para>
>   x
> </para>
> ----
> 
> There are a number of occurrences of the 'double para' in the xml now,
> but I have not figured out if there is a pattern to what makes those
> specific parts come out that way, and not others.
> 
> Anybody got any ideas?

I think I know what's going on.

Pandoc is being called too late, Kernel-doc already applies some XML
formatting before the pandoc call is made.

I did see it before (and even fixed a minor side effect of that
behavior), but since it didn't cause any real issue with the html target
(error/warning-wise and visualization-wise) I didn't pay too much
attention to it.

Perhaps pandoc should be the one dealing with all paragraphs stuff in
case we have the markdown-down flag.
I will investigate this a bit more and send a fix soon.

Thanks for testing it and letting me know.

Danilo Cesar

* adding Jonathan Corbet to the CC list as he might be interested.


More information about the dri-devel mailing list