The end is nearly in sight! Last August, I started a process of cleaning up qapi on top of Markus' introspection work. Several hundred emails later, and numerous intermediate series out of the way, I'm finally at the end of my queue of patches that were originally sent in v5: https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg05410.html
v6 was here (yes, 5 months ago): https://www.mail-archive.com/qemu-devel@nongnu.org/msg343192.html Prerequisites: My clone/JSON visitor (weak; this series is mostly orthogonal to that one, if we want to swap the order of the two based on review complexity): https://www.mail-archive.com/qemu-devel%40nongnu.org/msg371555.html Once my series are in, we should focus on Marc-Andre's cleanups. Ideas for further qapi work - which I have NOT coded yet: - convert more clients to use boxed commands - get rid of has_FOO when FOO is pointer - support default values (and get rid of has_FOO when FOO has default) - finally QAPI-fy device_add - consider swapping blockdev-add to use QAPI structs throughout the code-base, rather than converting back into flat QDict and using QemuOpts - introspection of command line options diffstat to v6: 001/15:[down] 'qapi: Consolidate object visitors' 002/15:[0048] [FC] 'net: use Netdev instead of NetClientOptions in client init' 003/15:[down] 'qapi: Require all branches of flat union enum to be covered' 004/15:[----] [-C] 'qapi: Hide tag_name data member of variants' 005/15:[0001] [FC] 'qapi: Add type.is_empty() helper' 006/15:[0074] [FC] 'qapi: Plumb in 'box' to qapi generator lower levels' 007/15:[0031] [FC] 'qapi: Implement boxed types for commands/events' 008/15:[down] 'block: Simplify block_set_io_throttle' 009/15:[down] 'block: Simplify drive-mirror' 010/15:[down] 'qapi-event: Reduce chance of collision with event data' 011/15:[0084] [FC] 'qapi: Change Netdev into a flat union' 012/15:[----] [-C] 'net: Use correct type for bool flag' 013/15:[----] [--] 'net: Complete qapi-fication of netdev_add' 014/15:[down] 'qapi: Allow anonymous branch types in flat union' 015/15:[down] 'schema: Drop pointless empty type CpuInfoOther' Eric Blake (13): qapi: Consolidate object visitors qapi: Require all branches of flat union enum to be covered qapi: Hide tag_name data member of variants qapi: Add type.is_empty() helper qapi: Plumb in 'box' to qapi generator lower levels qapi: Implement boxed types for commands/events block: Simplify block_set_io_throttle block: Simplify drive-mirror qapi-event: Reduce chance of collision with event data net: Use correct type for bool flag net: Complete qapi-fication of netdev_add qapi: Allow anonymous branch types in flat union schema: Drop pointless empty type CpuInfoOther Kővágó, Zoltán (2): net: use Netdev instead of NetClientOptions in client init qapi: Change Netdev into a flat union qapi-schema.json | 74 +++++---- qapi/block-core.json | 37 ++++- scripts/qapi.py | 123 +++++++++----- scripts/qapi-commands.py | 21 ++- scripts/qapi-event.py | 67 +++++--- scripts/qapi-introspect.py | 14 +- scripts/qapi-types.py | 25 +-- scripts/qapi-visit.py | 26 +-- include/net/net.h | 7 +- net/clients.h | 20 +-- blockdev.c | 183 ++++++++------------- hmp.c | 72 +++----- hw/arm/musicpal.c | 2 +- hw/core/qdev-properties-system.c | 2 +- hw/net/allwinner_emac.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/e1000.c | 2 +- hw/net/eepro100.c | 2 +- hw/net/etraxfs_eth.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/imx_fec.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lance.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/milkymist-minimac2.c | 2 +- hw/net/mipsnet.c | 2 +- hw/net/ne2000-isa.c | 2 +- hw/net/ne2000.c | 2 +- hw/net/opencores_eth.c | 2 +- hw/net/pcnet-pci.c | 2 +- hw/net/rocker/rocker_fp.c | 2 +- hw/net/rtl8139.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/spapr_llan.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/vhost_net.c | 18 +- hw/net/virtio-net.c | 10 +- hw/net/vmxnet3.c | 2 +- hw/net/xen_nic.c | 2 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/usb/dev-network.c | 4 +- monitor.c | 14 +- net/dump.c | 8 +- net/hub.c | 24 +-- net/l2tpv3.c | 8 +- net/net.c | 161 +++++++++++------- net/netmap.c | 6 +- net/slirp.c | 8 +- net/socket.c | 10 +- net/tap-win32.c | 8 +- net/tap.c | 28 ++-- net/vde.c | 8 +- net/vhost-user.c | 20 +-- tests/test-qmp-commands.c | 12 ++ docs/qapi-code-gen.txt | 24 ++- qmp-commands.hx | 2 +- tests/Makefile | 4 + tests/qapi-schema/args-bad-box.err | 1 + tests/qapi-schema/args-bad-box.exit | 1 + tests/qapi-schema/args-bad-box.json | 2 + tests/qapi-schema/args-bad-box.out | 0 tests/qapi-schema/args-box-anon.err | 1 + tests/qapi-schema/args-box-anon.exit | 1 + tests/qapi-schema/args-box-anon.json | 2 + tests/qapi-schema/args-box-anon.out | 0 tests/qapi-schema/args-union.err | 2 +- tests/qapi-schema/args-union.json | 3 +- tests/qapi-schema/event-case.out | 1 + tests/qapi-schema/flat-union-incomplete-branch.err | 1 + .../qapi-schema/flat-union-incomplete-branch.exit | 1 + .../qapi-schema/flat-union-incomplete-branch.json | 9 + tests/qapi-schema/flat-union-incomplete-branch.out | 0 tests/qapi-schema/flat-union-inline.err | 2 +- tests/qapi-schema/flat-union-inline.json | 5 +- tests/qapi-schema/ident-with-escape.out | 2 +- tests/qapi-schema/indented-expr.out | 4 +- tests/qapi-schema/qapi-schema-test.json | 11 +- tests/qapi-schema/qapi-schema-test.out | 45 ++++- tests/qapi-schema/test-qapi.py | 21 +-- tests/qapi-schema/union-inline.err | 1 + tests/qapi-schema/union-inline.exit | 1 + tests/qapi-schema/union-inline.json | 4 + tests/qapi-schema/union-inline.out | 0 86 files changed, 691 insertions(+), 534 deletions(-) create mode 100644 tests/qapi-schema/args-bad-box.err create mode 100644 tests/qapi-schema/args-bad-box.exit create mode 100644 tests/qapi-schema/args-bad-box.json create mode 100644 tests/qapi-schema/args-bad-box.out create mode 100644 tests/qapi-schema/args-box-anon.err create mode 100644 tests/qapi-schema/args-box-anon.exit create mode 100644 tests/qapi-schema/args-box-anon.json create mode 100644 tests/qapi-schema/args-box-anon.out create mode 100644 tests/qapi-schema/flat-union-incomplete-branch.err create mode 100644 tests/qapi-schema/flat-union-incomplete-branch.exit create mode 100644 tests/qapi-schema/flat-union-incomplete-branch.json create mode 100644 tests/qapi-schema/flat-union-incomplete-branch.out create mode 100644 tests/qapi-schema/union-inline.err create mode 100644 tests/qapi-schema/union-inline.exit create mode 100644 tests/qapi-schema/union-inline.json create mode 100644 tests/qapi-schema/union-inline.out -- 2.5.5