All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/23] qapi: Remove simple unions from the schema language
@ 2021-09-17 14:31 Markus Armbruster
  2021-09-17 14:31 ` [PATCH v2 01/23] qapi: Tidy up unusual line breaks Markus Armbruster
                   ` (22 more replies)
  0 siblings, 23 replies; 27+ messages in thread
From: Markus Armbruster @ 2021-09-17 14:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	Eduardo Habkost, Stefan Berger, michael.roth, eblake,
	Hanna Reitz, Gerd Hoffmann, Paolo Bonzini, marcandre.lureau,
	jsnow

Simple unions predate flat unions.  Having both complicates the QAPI
schema language and the QAPI generator.  We haven't been using simple
unions in new code for a long time, because they are less flexible and
somewhat awkward on the wire.

Get rid of them.  We should've done this long ago.

This adds some boilerplate to the schema:

    $ git-diff --shortstat master qapi
     7 files changed, 461 insertions(+), 59 deletions(-)

Well worth the language simplification, in my opinion:

    $ git-diff --stat master scripts/ docs/
     docs/devel/qapi-code-gen.rst | 137 ++++++++++---------------------------------
     scripts/qapi/common.py       |  19 ++----
     scripts/qapi/expr.py         |  48 +++++++--------
     scripts/qapi/schema.py       | 101 +++++++------------------------
     4 files changed, 80 insertions(+), 225 deletions(-)

The complete diffstat looks even better, but is somewhat misleading,
because it's dominated by two tests rewritten in a much more compact
way.

v2:
* PATCH 03-10: Since tags tidied up [Eric]
* PATCH 19: Commit message typo fixed, -Union2 renamed to -Union
  [Eric]
* PATCH 22: New

Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Hanna Reitz <hreitz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Stefan Berger <stefanb@linux.vnet.ibm.com>

Markus Armbruster (23):
  qapi: Tidy up unusual line breaks
  qapi: Stop enforcing "type name should not end in 'Kind'
  qapi: Convert simple union KeyValue to flat one
  qapi: Convert simple union InputEvent to flat one
  qapi: Convert simple union TpmTypeOptions to flat one
  qapi: Convert simple union MemoryDeviceInfo to flat one
  qapi: Convert simple union ChardevBackend to flat one
  qapi: Convert simple union SocketAddressLegacy to flat one
  qapi: Convert simple union ImageInfoSpecific to flat one
  qapi: Convert simple union TransactionAction to flat one
  tests/qapi-schema: Prepare for simple union UserDefListUnion removal
  test-qobject-input-visitor: Wean off UserDefListUnion
  test-qobject-output-visitor: Wean off UserDefListUnion
  test-clone-visitor: Wean off UserDefListUnion
  tests/qapi-schema: Wean off UserDefListUnion
  tests/qapi-schema: Simple union UserDefListUnion is now unused, drop
  tests/qapi-schema: Rewrite simple union TestIfUnion to be flat
  test-clone-visitor: Wean off __org.qemu_x-Union1
  tests/qapi-schema: Drop simple union __org.qemu_x-Union1
  tests/qapi-schema: Purge simple unions from tests
  qapi: Drop simple unions
  tests/qapi-schema: Rename flat-union-* test cases to union-*
  test-clone-visitor: Correct an accidental rename

 docs/devel/qapi-code-gen.rst                  | 137 ++----
 qapi/block-core.json                          |  59 ++-
 qapi/char.json                                | 187 ++++++-
 qapi/machine.json                             |  42 +-
 qapi/sockets.json                             |  46 +-
 qapi/tpm.json                                 |  24 +-
 qapi/transaction.json                         | 139 +++++-
 qapi/ui.json                                  |  72 ++-
 backends/tpm/tpm_emulator.c                   |   2 +-
 backends/tpm/tpm_passthrough.c                |   2 +-
 chardev/char-socket.c                         |   6 +-
 chardev/char-udp.c                            |   4 +-
 monitor/hmp-cmds.c                            |   8 +-
 tests/unit/test-clone-visitor.c               |  98 ++--
 tests/unit/test-qmp-cmds.c                    |  18 +-
 tests/unit/test-qobject-input-visitor.c       | 460 ++++++------------
 tests/unit/test-qobject-output-visitor.c      | 391 ++++-----------
 tests/unit/test-yank.c                        |   6 +-
 util/qemu-sockets.c                           |   8 +-
 scripts/qapi/expr.py                          |  27 +-
 scripts/qapi/schema.py                        | 101 +---
 tests/qapi-schema/args-union.err              |   2 +-
 tests/qapi-schema/args-union.json             |   8 +-
 tests/qapi-schema/bad-base.err                |   2 +-
 tests/qapi-schema/bad-base.json               |   8 +-
 tests/qapi-schema/doc-good.json               |  13 +-
 tests/qapi-schema/doc-good.out                |  22 -
 tests/qapi-schema/doc-good.txt                |  20 -
 tests/qapi-schema/enum-if-invalid.json        |   4 +-
 tests/qapi-schema/flat-union-array-branch.err |   2 -
 tests/qapi-schema/flat-union-bad-base.err     |   2 -
 .../flat-union-bad-discriminator.err          |   2 -
 tests/qapi-schema/flat-union-base-any.err     |   2 -
 tests/qapi-schema/flat-union-base-union.err   |   2 -
 tests/qapi-schema/flat-union-clash-member.err |   2 -
 .../flat-union-discriminator-bad-name.err     |   2 -
 tests/qapi-schema/flat-union-empty.err        |   2 -
 tests/qapi-schema/flat-union-empty.json       |   4 -
 .../flat-union-inline-invalid-dict.err        |   2 -
 tests/qapi-schema/flat-union-int-branch.err   |   2 -
 .../flat-union-invalid-branch-key.err         |   2 -
 .../flat-union-invalid-discriminator.err      |   2 -
 .../flat-union-invalid-if-discriminator.err   |   2 -
 tests/qapi-schema/flat-union-no-base.err      |   2 -
 .../flat-union-optional-discriminator.err     |   2 -
 .../flat-union-string-discriminator.err       |   2 -
 .../flat-union-string-discriminator.out       |   0
 tests/qapi-schema/meson.build                 |  35 +-
 tests/qapi-schema/qapi-schema-test.json       |  51 +-
 tests/qapi-schema/qapi-schema-test.out        | 116 ++---
 tests/qapi-schema/reserved-member-u.json      |   2 +-
 tests/qapi-schema/reserved-type-kind.err      |   2 -
 tests/qapi-schema/reserved-type-kind.json     |   2 -
 tests/qapi-schema/reserved-type-kind.out      |   0
 tests/qapi-schema/union-array-branch.err      |   2 +
 ...ay-branch.json => union-array-branch.json} |   2 +-
 ...rray-branch.out => union-array-branch.out} |   0
 tests/qapi-schema/union-bad-base.err          |   2 +
 ...nion-bad-base.json => union-bad-base.json} |   0
 ...-union-bad-base.out => union-bad-base.out} |   0
 tests/qapi-schema/union-bad-discriminator.err |   2 +
 ...ator.json => union-bad-discriminator.json} |   0
 ...inator.out => union-bad-discriminator.out} |   0
 tests/qapi-schema/union-base-any.err          |   2 +
 ...nion-base-any.json => union-base-any.json} |   0
 ...-union-base-any.out => union-base-any.out} |   0
 tests/qapi-schema/union-base-empty.json       |   2 +-
 .../union-base-no-discriminator.err           |   2 +-
 .../union-base-no-discriminator.json          |   2 +-
 tests/qapi-schema/union-base-union.err        |   2 +
 ...-base-union.json => union-base-union.json} |   3 +
 ...on-base-union.out => union-base-union.out} |   0
 tests/qapi-schema/union-branch-case.err       |   2 -
 tests/qapi-schema/union-branch-case.json      |   2 -
 tests/qapi-schema/union-branch-case.out       |   0
 .../qapi-schema/union-branch-invalid-dict.err |   2 +-
 .../union-branch-invalid-dict.json            |   4 +
 tests/qapi-schema/union-clash-branches.err    |   2 -
 tests/qapi-schema/union-clash-branches.json   |   7 -
 tests/qapi-schema/union-clash-branches.out    |   0
 tests/qapi-schema/union-clash-member.err      |   2 +
 ...sh-member.json => union-clash-member.json} |   0
 ...lash-member.out => union-clash-member.out} |   0
 .../union-discriminator-bad-name.err          |   2 +
 ...json => union-discriminator-bad-name.json} |   0
 ...e.out => union-discriminator-bad-name.out} |   0
 tests/qapi-schema/union-empty.err             |   2 +-
 tests/qapi-schema/union-empty.json            |   6 +-
 .../qapi-schema/union-inline-invalid-dict.err |   2 +
 ...ct.json => union-inline-invalid-dict.json} |   0
 ...mpty.out => union-inline-invalid-dict.out} |   0
 tests/qapi-schema/union-int-branch.err        |   2 +
 ...-int-branch.json => union-int-branch.json} |   2 +-
 ...-invalid-dict.out => union-int-branch.out} |   0
 .../qapi-schema/union-invalid-branch-key.err  |   2 +
 ...key.json => union-invalid-branch-key.json} |   0
 ...ranch.out => union-invalid-branch-key.out} |   0
 .../union-invalid-discriminator.err           |   2 +
 ....json => union-invalid-discriminator.json} |   0
 ...ey.out => union-invalid-discriminator.out} |   0
 .../union-invalid-if-discriminator.err        |   2 +
 ...on => union-invalid-if-discriminator.json} |   0
 ...out => union-invalid-if-discriminator.out} |   0
 tests/qapi-schema/union-no-base.err           |   2 +
 ...-union-no-base.json => union-no-base.json} |   2 +-
 ...if-discriminator.out => union-no-base.out} |   0
 tests/qapi-schema/union-optional-branch.err   |   2 -
 tests/qapi-schema/union-optional-branch.json  |   2 -
 tests/qapi-schema/union-optional-branch.out   |   0
 .../union-optional-discriminator.err          |   2 +
 ...json => union-optional-discriminator.json} |   0
 ...e.out => union-optional-discriminator.out} |   0
 .../union-string-discriminator.err            |   2 +
 ...r.json => union-string-discriminator.json} |   0
 ...tor.out => union-string-discriminator.out} |   0
 tests/qapi-schema/union-unknown.err           |   2 +-
 tests/qapi-schema/union-unknown.json          |   5 +-
 117 files changed, 1020 insertions(+), 1223 deletions(-)
 delete mode 100644 tests/qapi-schema/flat-union-array-branch.err
 delete mode 100644 tests/qapi-schema/flat-union-bad-base.err
 delete mode 100644 tests/qapi-schema/flat-union-bad-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-base-any.err
 delete mode 100644 tests/qapi-schema/flat-union-base-union.err
 delete mode 100644 tests/qapi-schema/flat-union-clash-member.err
 delete mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.err
 delete mode 100644 tests/qapi-schema/flat-union-empty.err
 delete mode 100644 tests/qapi-schema/flat-union-empty.json
 delete mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.err
 delete mode 100644 tests/qapi-schema/flat-union-int-branch.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-branch-key.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-no-base.err
 delete mode 100644 tests/qapi-schema/flat-union-optional-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.out
 delete mode 100644 tests/qapi-schema/reserved-type-kind.err
 delete mode 100644 tests/qapi-schema/reserved-type-kind.json
 delete mode 100644 tests/qapi-schema/reserved-type-kind.out
 create mode 100644 tests/qapi-schema/union-array-branch.err
 rename tests/qapi-schema/{flat-union-array-branch.json => union-array-branch.json} (86%)
 rename tests/qapi-schema/{flat-union-array-branch.out => union-array-branch.out} (100%)
 create mode 100644 tests/qapi-schema/union-bad-base.err
 rename tests/qapi-schema/{flat-union-bad-base.json => union-bad-base.json} (100%)
 rename tests/qapi-schema/{flat-union-bad-base.out => union-bad-base.out} (100%)
 create mode 100644 tests/qapi-schema/union-bad-discriminator.err
 rename tests/qapi-schema/{flat-union-bad-discriminator.json => union-bad-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-bad-discriminator.out => union-bad-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-base-any.err
 rename tests/qapi-schema/{flat-union-base-any.json => union-base-any.json} (100%)
 rename tests/qapi-schema/{flat-union-base-any.out => union-base-any.out} (100%)
 create mode 100644 tests/qapi-schema/union-base-union.err
 rename tests/qapi-schema/{flat-union-base-union.json => union-base-union.json} (86%)
 rename tests/qapi-schema/{flat-union-base-union.out => union-base-union.out} (100%)
 delete mode 100644 tests/qapi-schema/union-branch-case.err
 delete mode 100644 tests/qapi-schema/union-branch-case.json
 delete mode 100644 tests/qapi-schema/union-branch-case.out
 delete mode 100644 tests/qapi-schema/union-clash-branches.err
 delete mode 100644 tests/qapi-schema/union-clash-branches.json
 delete mode 100644 tests/qapi-schema/union-clash-branches.out
 create mode 100644 tests/qapi-schema/union-clash-member.err
 rename tests/qapi-schema/{flat-union-clash-member.json => union-clash-member.json} (100%)
 rename tests/qapi-schema/{flat-union-clash-member.out => union-clash-member.out} (100%)
 create mode 100644 tests/qapi-schema/union-discriminator-bad-name.err
 rename tests/qapi-schema/{flat-union-discriminator-bad-name.json => union-discriminator-bad-name.json} (100%)
 rename tests/qapi-schema/{flat-union-discriminator-bad-name.out => union-discriminator-bad-name.out} (100%)
 create mode 100644 tests/qapi-schema/union-inline-invalid-dict.err
 rename tests/qapi-schema/{flat-union-inline-invalid-dict.json => union-inline-invalid-dict.json} (100%)
 rename tests/qapi-schema/{flat-union-empty.out => union-inline-invalid-dict.out} (100%)
 create mode 100644 tests/qapi-schema/union-int-branch.err
 rename tests/qapi-schema/{flat-union-int-branch.json => union-int-branch.json} (86%)
 rename tests/qapi-schema/{flat-union-inline-invalid-dict.out => union-int-branch.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-branch-key.err
 rename tests/qapi-schema/{flat-union-invalid-branch-key.json => union-invalid-branch-key.json} (100%)
 rename tests/qapi-schema/{flat-union-int-branch.out => union-invalid-branch-key.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-discriminator.err
 rename tests/qapi-schema/{flat-union-invalid-discriminator.json => union-invalid-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-invalid-branch-key.out => union-invalid-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-if-discriminator.err
 rename tests/qapi-schema/{flat-union-invalid-if-discriminator.json => union-invalid-if-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-invalid-discriminator.out => union-invalid-if-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-no-base.err
 rename tests/qapi-schema/{flat-union-no-base.json => union-no-base.json} (90%)
 rename tests/qapi-schema/{flat-union-invalid-if-discriminator.out => union-no-base.out} (100%)
 delete mode 100644 tests/qapi-schema/union-optional-branch.err
 delete mode 100644 tests/qapi-schema/union-optional-branch.json
 delete mode 100644 tests/qapi-schema/union-optional-branch.out
 create mode 100644 tests/qapi-schema/union-optional-discriminator.err
 rename tests/qapi-schema/{flat-union-optional-discriminator.json => union-optional-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-no-base.out => union-optional-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-string-discriminator.err
 rename tests/qapi-schema/{flat-union-string-discriminator.json => union-string-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-optional-discriminator.out => union-string-discriminator.out} (100%)

-- 
2.31.1



^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2021-09-25  5:03 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-17 14:31 [PATCH v2 00/23] qapi: Remove simple unions from the schema language Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 01/23] qapi: Tidy up unusual line breaks Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 02/23] qapi: Stop enforcing "type name should not end in 'Kind' Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 03/23] qapi: Convert simple union KeyValue to flat one Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 04/23] qapi: Convert simple union InputEvent " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 05/23] qapi: Convert simple union TpmTypeOptions " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 06/23] qapi: Convert simple union MemoryDeviceInfo " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 07/23] qapi: Convert simple union ChardevBackend " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 08/23] qapi: Convert simple union SocketAddressLegacy " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 09/23] qapi: Convert simple union ImageInfoSpecific " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 10/23] qapi: Convert simple union TransactionAction " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 11/23] tests/qapi-schema: Prepare for simple union UserDefListUnion removal Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 12/23] test-qobject-input-visitor: Wean off UserDefListUnion Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 13/23] test-qobject-output-visitor: " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 14/23] test-clone-visitor: " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 15/23] tests/qapi-schema: " Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 16/23] tests/qapi-schema: Simple union UserDefListUnion is now unused, drop Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 17/23] tests/qapi-schema: Rewrite simple union TestIfUnion to be flat Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 18/23] test-clone-visitor: Wean off __org.qemu_x-Union1 Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 19/23] tests/qapi-schema: Drop simple union __org.qemu_x-Union1 Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 20/23] tests/qapi-schema: Purge simple unions from tests Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 21/23] qapi: Drop simple unions Markus Armbruster
2021-09-17 14:31 ` [PATCH v2 22/23] tests/qapi-schema: Rename flat-union-* test cases to union-* Markus Armbruster
2021-09-20 21:49   ` Eric Blake
2021-09-17 14:31 ` [PATCH v2 23/23] test-clone-visitor: Correct an accidental rename Markus Armbruster
2021-09-21  5:17   ` Philippe Mathieu-Daudé
2021-09-25  5:01     ` Markus Armbruster

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.