From: Markus Armbruster <armbru@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PATCH v5 00/20] Convert QAPI doc comments to generate rST instead of texinfo
Date: Fri, 04 Sep 2020 16:34:06 +0200 [thread overview]
Message-ID: <87d0314nmp.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <CAFEAcA9cyKVwONYuzG3oPcQQ9sibpdtetCjcBe3133gd09Aa9w@mail.gmail.com> (Peter Maydell's message of "Thu, 27 Aug 2020 12:25:53 +0100")
Peter Maydell <peter.maydell@linaro.org> writes:
> On Mon, 10 Aug 2020 at 20:50, Peter Maydell <peter.maydell@linaro.org> wrote:
>> This series switches all our QAPI doc comments over from
>> texinfo format to rST. It then removes all the texinfo
>> machinery, because this was the last user of texinfo.
>>
>> This is largely just a rebase of patchset v4 to current master.
It needs another rebase now, for the Meson build system.
>> There are a few things I have left out of this initial series:
>
> I realized there is something I forgot to add to this "left out" list:
>
> Sphinx needs to know what all the input files which go into
> a document are, as it builds up dependencies to tell it whether
> to rebuild the output or not. The docs/sphinx/qapidoc.py
> plugin adds such a dependency on the file that the .rst
> docs reference (eg qapi/qapi-schema.json)
In QAPIDocDirective.run():
# Tell sphinx of the dependency
env.note_dependency(os.path.abspath(qapifile))
> but it does not
> have a mechanism for adding dependencies when that .json
> file uses an 'include' to pull in other .json files.
>
> I'm not sure whether the scripts/qapi code supports telling
> a consumer of the parsed info about this -- is it sufficient
> for QAPISchemaGenRSTVisitor to implement the 'visit_include'
> method, find the path to the included .qapi file from the
> arguments and call Sphinx's env.notedependency(), or do we
> need to do something more complicated to get the list of
> all the included .qapi files ?
Visitors can implement visit_include() to see include directives.
QAPISchemaModularCVisitor does, to generate #include that mirror the
source schema. This is not what your want.
You want visit_module(). The appended hack makes qapi-gen.py spit out
the modules when it generates types, e.g.:
$ python3 -B scripts/qapi-gen.py -o scratch tests/qapi-schema/qapi-schema-test.json
### None
### 'qapi-schema-test.json'
### 'include/sub-module.json'
### 'sub-sub-module.json'
As you can see, the module names are file names relative to the main
module's directory.
Module None is for built-ins.
Unfortunately, your qapidoc.py bypasses the regular schema.visit() just
like old doc.py does, and for the same reason: it wants to iterate over
doc comments, not definitions. Doc comments were bolted on later, and
it still shows.
I figure the clean solution is making schema.visit() pass doc comments
just like it passes entities. Gets rid of the need to bypass
schema.visit(). Requires surgery to QAPISchema and QAPISchemaParser.
A quick hack: use a trivial QAPISchemaVisitor just to collect the
modules.
Questions?
diff --git a/scripts/qapi/types.py b/scripts/qapi/types.py
index 3ad33af4ee..cec89e199c 100644
--- a/scripts/qapi/types.py
+++ b/scripts/qapi/types.py
@@ -274,6 +274,10 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor):
# gen_object() is recursive, ensure it doesn't visit the empty type
objects_seen.add(schema.the_empty_object_type.name)
+ def visit_module(self, name):
+ print('### %r' % name)
+ super().visit_module(name)
+
def _gen_type_cleanup(self, name):
self._genh.add(gen_type_cleanup_decl(name))
self._genc.add(gen_type_cleanup(name))
next prev parent reply other threads:[~2020-09-04 14:35 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-10 19:49 [PATCH v5 00/20] Convert QAPI doc comments to generate rST instead of texinfo Peter Maydell
2020-08-10 19:50 ` [PATCH v5 01/20] qapi/migration.json: Fix indentation Peter Maydell
2020-08-10 19:50 ` [PATCH v5 02/20] qapi: Fix indentation, again Peter Maydell
2020-08-14 18:39 ` Richard Henderson
2020-08-10 19:50 ` [PATCH v5 03/20] qapi/block-core.json: Fix nbd-server-start docs Peter Maydell
2020-08-14 18:39 ` Richard Henderson
2020-08-10 19:50 ` [PATCH v5 04/20] qapi/qapi-schema.json: Put headers in their own doc-comment blocks Peter Maydell
2020-08-10 19:50 ` [PATCH v5 05/20] qapi/machine.json: Escape a literal '*' in doc comment Peter Maydell
2020-08-10 19:50 ` [PATCH v5 06/20] tests/qapi/doc-good.json: Prepare for qapi-doc Sphinx extension Peter Maydell
2020-09-04 8:10 ` Markus Armbruster
2020-09-04 12:17 ` Peter Maydell
2020-08-10 19:50 ` [PATCH v5 07/20] scripts/qapi: Move doc-comment whitespace stripping to doc.py Peter Maydell
2020-08-10 19:50 ` [PATCH v5 08/20] scripts/qapi/parser.py: improve doc comment indent handling Peter Maydell
2020-09-04 9:03 ` Markus Armbruster
2020-09-21 15:06 ` Peter Maydell
2020-09-22 7:27 ` Markus Armbruster
2020-09-22 11:48 ` Peter Maydell
2020-09-22 14:08 ` Markus Armbruster
2020-09-22 15:28 ` Peter Maydell
2020-08-10 19:50 ` [PATCH v5 09/20] docs/sphinx: Add new qapi-doc Sphinx extension Peter Maydell
2020-08-14 18:40 ` Richard Henderson
2020-09-04 12:29 ` Markus Armbruster
2020-09-21 18:06 ` Peter Maydell
2020-09-22 11:42 ` Markus Armbruster
2020-09-24 13:25 ` Peter Maydell
2020-09-24 16:30 ` Peter Maydell
2020-09-25 5:51 ` Markus Armbruster
2020-09-04 14:44 ` Markus Armbruster
2020-09-04 14:52 ` Peter Maydell
2020-09-21 16:50 ` Peter Maydell
2020-09-22 11:47 ` Markus Armbruster
2020-08-10 19:50 ` [PATCH v5 10/20] docs/interop: Convert qemu-ga-ref to rST Peter Maydell
2020-09-04 13:16 ` Markus Armbruster
2020-09-04 13:18 ` Peter Maydell
2020-09-21 15:30 ` Peter Maydell
2020-09-22 12:00 ` Markus Armbruster
2020-09-22 12:58 ` Peter Maydell
2020-09-22 14:13 ` Markus Armbruster
2020-09-22 14:21 ` Peter Maydell
2020-09-22 14:42 ` Markus Armbruster
2020-08-10 19:50 ` [PATCH v5 11/20] docs/interop: Convert qemu-qmp-ref " Peter Maydell
2020-08-10 19:50 ` [PATCH v5 12/20] qapi: Use rST markup for literal blocks Peter Maydell
2020-09-04 13:02 ` Markus Armbruster
2020-08-10 19:50 ` [PATCH v5 13/20] qga/qapi-schema.json: Add some headings Peter Maydell
2020-08-10 19:50 ` [PATCH v5 14/20] scripts/qapi: Remove texinfo generation support Peter Maydell
2020-09-04 13:37 ` Markus Armbruster
2020-09-24 18:14 ` Peter Maydell
2020-09-25 6:48 ` Markus Armbruster
2020-08-10 19:50 ` [PATCH v5 15/20] docs/devel/qapi-code-gen.txt: Update to new rST backend conventions Peter Maydell
2020-09-17 9:24 ` Markus Armbruster
2020-08-10 19:50 ` [PATCH v5 16/20] Makefile: Remove redundant Texinfo related rules Peter Maydell
2020-08-10 19:50 ` [PATCH v5 17/20] scripts/texi2pod: Delete unused script Peter Maydell
2020-08-10 19:50 ` [PATCH v5 18/20] Remove Texinfo related files from .gitignore and git.orderfile Peter Maydell
2020-08-10 19:50 ` [PATCH v5 19/20] configure: Drop texinfo requirement Peter Maydell
2020-08-10 19:50 ` [PATCH v5 20/20] Remove texinfo dependency from docker and CI configs Peter Maydell
2020-08-27 11:25 ` [PATCH v5 00/20] Convert QAPI doc comments to generate rST instead of texinfo Peter Maydell
2020-09-04 14:34 ` Markus Armbruster [this message]
2020-09-04 14:48 ` Peter Maydell
2020-09-04 15:54 ` Markus Armbruster
2020-09-04 16:05 ` Peter Maydell
2020-09-24 14:13 ` Peter Maydell
2020-09-24 14:49 ` 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=87d0314nmp.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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.