From: Markus Armbruster <armbru@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "John Snow" <jsnow@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
qemu-devel@nongnu.org, "Stefan Hajnoczi" <stefanha@redhat.com>,
"Michael Roth" <mdroth@linux.vnet.ibm.com>
Subject: Re: [PATCH v4 02/18] qapi/qapi-schema.json: Put headers in their own doc-comment blocks
Date: Fri, 20 Mar 2020 10:54:07 +0100 [thread overview]
Message-ID: <87v9mz5p34.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20200309154405.13548-3-peter.maydell@linaro.org> (Peter Maydell's message of "Mon, 9 Mar 2020 15:43:49 +0000")
Peter Maydell <peter.maydell@linaro.org> writes:
> Our current QAPI doc-comment markup allows section headers
> (introduced with a leading '=' or '==') anywhere in any documentation
> comment. This works for texinfo because the texi generator simply
> prints a texinfo heading directive at that point in the output
> stream. For rST generation, since we're assembling a tree of
> docutils nodes, this is awkward because a new section implies
> starting a new section node at the top level of the tree and
> generating text into there.
>
> New section headings in the middle of the documentation of a command
> or event would be pretty nonsensical, and in fact we only ever output
> new headings using 'freeform' doc comment blocks whose only content
> is the single line of the heading, with two exceptions, which are in
> the introductory freeform-doc-block at the top of
> qapi/qapi-schema.json.
>
> Split that doc-comment up so that the heading lines are in their own
> doc-comment. This will allow us to tighten the specification to
> insist that heading lines are always standalone, rather than
> requiring the rST document generator to look at every line in a doc
> comment block and handle headings in odd places.
>
> This change makes no difference to the generated texi.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> qapi/qapi-schema.json | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> index fe980ce4370..ff5aea59451 100644
> --- a/qapi/qapi-schema.json
> +++ b/qapi/qapi-schema.json
> @@ -1,7 +1,9 @@
> # -*- Mode: Python -*-
> ##
> # = Introduction
> -#
> +##
> +
> +##
> # This document describes all commands currently supported by QMP.
> #
> # Most of the time their usage is exactly the same as in the user Monitor, this
> @@ -25,9 +27,13 @@
> #
> # Please, refer to the QMP specification (docs/interop/qmp-spec.txt) for
> # detailed information on the Server command and response formats.
> -#
> +##
> +
> +##
> # = Stability Considerations
> -#
> +##
> +
> +##
> # The current QMP command set (described in this file) may be useful for a
> # number of use cases, however it's limited and several commands have bad
> # defined semantics, specially with regard to command completion.
The restriction you add is tolerable. But how does the doc generator
behave when I get it wrong? The test case for getting it wrong is
tests/qapi-schema/doc-bad-section.json.
In current master (commit f57587c7d47b35b2d9b31def3a74d81bdb5475d7),
$ scripts/qapi-gen.py tests/qapi-schema/doc-bad-section.json
produces this qapi-doc.texi:
@c AUTOMATICALLY GENERATED, DO NOT MODIFY
@deftp {Enum} Enum
@subsection Produces @strong{invalid} texinfo
@b{Values:}
@table @asis
@item @code{one}
The @emph{one} @{and only@}
@item @code{two}
Not documented
@end table
@code{two} is undocumented
@end deftp
This is invalid Texinfo:
$ makeinfo qapi-doc.texi
qapi-output-master/qapi-doc.texi:4: warning: entry for index `tp' outside of any node
qapi-output-master/qapi-doc.texi:6: @subsection seen before @end deftp
qapi-output-master/qapi-doc.texi:17: unmatched `@end deftp'
[Exit 1 ]
Ignore the warning, it's due to the harmlessly lazy test case.
A developer who puts a section heading in the wrong place in the schema
gets to divine his mistake from makeinfo's error messages. Not nice.
After your rST conversion[*], ... Well, I tried to figure out how to
build .html from tests/qapi-schema/doc-bad-section.json, but failed.
Alright, use a heavier hammer: append that file to qapi-schema.json.
Build succeeds, and produces a qemu-qmp-ref.7 that /usr/bin/man renders
like this:
Enum (Enum)
== No good here
Values
one The _one_ {and only}
two Not documented
two is undocumented
I consider this even worse than before.
With my "[PATCH 1/2] qapi: Reject section markup in definition
documentation", qapi-gen.py rejects it cleanly:
tests/qapi-schema/doc-bad-section.json:5:1: unexpected '=' markup in
definition documentation
I believe it won't hinder your .rST conversion work. It might even
help. Maybe only together with PATCH 2/2, but that's for you to decide.
[*] Fetched from
https://git.linaro.org/people/peter.maydell/qemu-arm.git
sphinx-conversions
next prev parent reply other threads:[~2020-03-20 9:55 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-09 15:43 [PATCH v4 00/18] Convert QAPI doc comments to generate rST instead of texinfo Peter Maydell
2020-03-09 15:43 ` [PATCH v4 01/18] qapi/migration.json: Fix indentation Peter Maydell
2020-03-11 6:06 ` Richard Henderson
2020-03-11 15:12 ` Markus Armbruster
2020-03-09 15:43 ` [PATCH v4 02/18] qapi/qapi-schema.json: Put headers in their own doc-comment blocks Peter Maydell
2020-03-11 6:06 ` Richard Henderson
2020-03-20 9:54 ` Markus Armbruster [this message]
2020-03-09 15:43 ` [PATCH v4 03/18] qapi/machine.json: Escape a literal '*' in doc comment Peter Maydell
2020-03-11 6:06 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 04/18] tests/qapi/doc-good.json: Clean up markup Peter Maydell
2020-03-11 6:07 ` Richard Henderson
2020-08-05 13:03 ` Markus Armbruster
2020-08-05 13:41 ` Peter Maydell
2020-08-06 14:46 ` Markus Armbruster
2020-08-06 15:33 ` Peter Maydell
2020-03-09 15:43 ` [PATCH v4 05/18] scripts/qapi: Move doc-comment whitespace stripping to doc.py Peter Maydell
2020-03-11 6:07 ` Richard Henderson
2020-08-06 15:06 ` Markus Armbruster
2020-03-09 15:43 ` [PATCH v4 06/18] scripts/qapi/parser.py: improve doc comment indent handling Peter Maydell
2020-03-11 6:08 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 07/18] docs/sphinx: Add new qapi-doc Sphinx extension Peter Maydell
2020-03-09 15:43 ` [PATCH v4 08/18] docs/interop: Convert qemu-ga-ref to rST Peter Maydell
2020-03-11 6:10 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 09/18] docs/interop: Convert qemu-qmp-ref " Peter Maydell
2020-03-11 6:11 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 10/18] qapi: Use rST markup for literal blocks Peter Maydell
2020-03-11 6:22 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 11/18] qga/qapi-schema.json: Add some headings Peter Maydell
2020-03-11 6:22 ` Richard Henderson
2020-03-09 15:43 ` [PATCH v4 12/18] scripts/qapi: Remove texinfo generation support Peter Maydell
2020-03-11 6:23 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 13/18] docs/devel/qapi-code-gen.txt: Update to new rST backend conventions Peter Maydell
2020-03-11 6:25 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 14/18] Makefile: Remove redundant Texinfo related rules Peter Maydell
2020-03-11 6:27 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 15/18] scripts/texi2pod: Delete unused script Peter Maydell
2020-03-11 6:29 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 16/18] Remove Texinfo related files from .gitignore and git.orderfile Peter Maydell
2020-03-11 6:30 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 17/18] configure: Drop texinfo requirement Peter Maydell
2020-03-11 6:31 ` Richard Henderson
2020-03-09 15:44 ` [PATCH v4 18/18] Remove texinfo dependency from docker and CI configs Peter Maydell
2020-03-11 6:32 ` Richard Henderson
2020-08-05 13:01 ` [PATCH v4 00/18] Convert QAPI doc comments to generate rST instead of texinfo Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87v9mz5p34.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=jsnow@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.