All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Xu" <peterx@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"John Snow" <jsnow@redhat.com>
Subject: QAPI doc generator improvements (was: [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash)
Date: Wed, 25 Oct 2023 15:17:21 +0200	[thread overview]
Message-ID: <87r0lig7tq.fsf_-_@pond.sub.org> (raw)
In-Reply-To: <87v8b5dajh.fsf@pond.sub.org> (Markus Armbruster's message of "Tue, 17 Oct 2023 08:32:02 +0200")

Markus Armbruster <armbru@redhat.com> writes:

[...]

> I can see two useful QAPI generator features:
>
> * Improved handling of missing member documentation
>
>   Problem: many members lack documentation.  We silently generate
>   documentation like
>
>       name-of-member
>           Not documented
>
>   for them.
>
>   Possible improvement: make missing member documentation a hard error,
>   create a knob to suppress the error for a type.  Open question: how to
>   best document member documentation is incomplete.
>
> * Suppress documentation for internal-only definitions
>
>   Problem: generated documentation covers everything, even types that
>   aren't visible in QMP.  The irrelevant material is distracting and
>   possibly confusing for users, and may be bothersome to maintain for
>   developers.
>
>   Possible improvement: include only the types visible in QMP in
>   documentation, similar to how we do for query-qmp-schema.  Open
>   question: what level of documentation to require for internal-only
>   types.

I expored this one, and ran into a roadblock.

I wrote a bit of code to mark the stuff we want in QMP documentation:
commands, events, and the types they use, directly or indirectly.

I then hacked QAPISchemaGenRSTVisitor.symbol() to skip entities not
so marked.

Surprisingly, this does not work: the generated QEMU QMP Reference
Manual lacks stuff that is clearly in QMP.

I double-checked, and yes, the missing stuff does get marked.  WTF?!?

I dug some, and it looks like this is due to interference between the
QEMU QMP Reference Manual (generated from qapi/qapi-schema.json) and the
QEMU Storage Daemon QMP Reference Manual (generated from
storage-daemon/qapi/qapi-schema.json).

Both qapi-schema.json include submodules from qapi/., the former all of
them, the latter only some of them.  Yes, this is a bit of a hack.

sphinx-build runs the QAPI machinery separately for each of the two.
Somehow results from one run can leak into the other one.  For instance,
type HumanReadableText is marked in one run and not the other (correct),
but its documentation is generated in *neither* run.  I suspect this is
an artifact of incremental doc building magic.

I'm shelving the idea for now.



      parent reply	other threads:[~2023-10-25 13:18 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-05 16:23 [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash Peter Xu
2023-09-05 16:23 ` [PATCH v3 1/4] migration/qmp: Fix crash on setting tls-authz with null Peter Xu
2023-09-28  4:47   ` Michael Tokarev
2023-09-28  5:36     ` Markus Armbruster
2023-09-28  6:56       ` Michael Tokarev
2023-10-04 13:58   ` Juan Quintela
2023-10-16  6:05   ` Markus Armbruster
2023-09-05 16:23 ` [PATCH v3 2/4] tests/migration-test: Add a test for null parameter setups Peter Xu
2023-10-04 13:58   ` Juan Quintela
2023-09-05 16:23 ` [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters Peter Xu
2023-09-26 20:40   ` Markus Armbruster
2023-10-02 19:52     ` Peter Xu
2023-10-09 12:25       ` Markus Armbruster
2023-10-10 15:05         ` Peter Xu
2023-10-10 19:18           ` Markus Armbruster
2023-10-10 20:09             ` Peter Xu
2023-10-11  4:28               ` Markus Armbruster
2023-10-11 14:21                 ` Markus Armbruster
2023-10-12 19:28                   ` Peter Xu
2023-10-13  5:36                     ` Markus Armbruster
2023-10-31 11:08                       ` Juan Quintela
2023-11-02 14:25                         ` Configuring migration (was: [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters) Markus Armbruster
2023-11-02 18:05                           ` Peter Xu
2023-11-14  7:27                             ` Configuring migration Markus Armbruster
2023-11-14 10:20                               ` Juan Quintela
2023-11-14  9:13                           ` Configuring migration (was: [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters) Daniel P. Berrangé
2023-11-14  9:53                             ` Configuring migration Markus Armbruster
2023-11-14  9:55                               ` Daniel P. Berrangé
2023-11-14 10:28                             ` Juan Quintela
2023-11-14 10:34                               ` Daniel P. Berrangé
2023-11-14 10:42                                 ` Juan Quintela
2023-11-14 10:45                                   ` Daniel P. Berrangé
2023-10-12 15:58                 ` [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters Peter Xu
2023-10-13  5:41                   ` Markus Armbruster
2023-09-05 16:23 ` [PATCH v3 4/4] migration/qapi: Drop @MigrationParameter enum Peter Xu
2023-09-06  4:42   ` Philippe Mathieu-Daudé
2023-09-06  9:00     ` Daniel P. Berrangé
2023-09-06 10:14       ` Philippe Mathieu-Daudé
2023-09-06 10:46         ` Daniel P. Berrangé
2023-09-26 19:05           ` Peter Xu
2023-09-26 20:43   ` Markus Armbruster
2023-10-02 20:42     ` Peter Xu
2023-10-16  6:29       ` Markus Armbruster
2023-10-16 16:16         ` Peter Xu
2023-10-16 17:36           ` Markus Armbruster
2023-09-25 12:59 ` [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash Markus Armbruster
2023-09-26 17:06   ` Peter Xu
2023-09-26 20:03     ` Markus Armbruster
2023-10-16  7:08 ` Markus Armbruster
2023-10-16 16:29   ` Peter Xu
2023-10-17  6:32     ` Markus Armbruster
2023-10-17 15:28       ` Peter Xu
2023-10-18  5:38         ` Markus Armbruster
2023-10-25 13:17       ` Markus Armbruster [this message]

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=87r0lig7tq.fsf_-_@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=farosas@suse.de \
    --cc=jsnow@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=thuth@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.