qemu-e2k/scripts
Markus Armbruster 75ecee7262 qapi: Enable enum member introspection to show more than name
The next commit will add feature flags to enum members.  There's a
problem, though: query-qmp-schema shows an enum type's members as an
array of member names (SchemaInfoEnum member @values).  If it showed
an array of objects with a name member, we could simply add more
members to these objects.  Since it's just strings, we can't.

I can see three ways to correct this design mistake:

1. Do it the way we should have done it, plus compatibility goo.

   We want a ['SchemaInfoEnumMember'] member in SchemaInfoEnum.  Since
   changing @values would be a compatibility break, add a new member
   @members instead.

   @values is now redundant.  In my testing, output of
   qemu-system-x86_64's query-qmp-schema grows by 11% (18.5KiB).

   We can deprecate @values now and drop it later.  This will break
   outmoded clients.  Well-behaved clients such as libvirt are
   expected to break cleanly.

2. Like 1, but omit "boring" elements of @member, and empty @member.

   @values does not become redundant.  @members augments it.  Somewhat
   cumbersome, but output of query-qmp-schema grows only as we make
   enum members non-boring.

   There is nothing to deprecate here.

3. Versioned query-qmp-schema.

   query-qmp-schema provides either @values or @members.  The QMP
   client can select which version it wants.  There is no redundant
   output.

   We can deprecate old versions and eventually drop them.  This will
   break outmoded clients.  Breaking cleanly is easier than for 1.

   While 1 and 2 operate within the common rules for compatible
   evolution apply (section "Compatibility considerations" in
   docs/devel/qapi-code-gen.rst), 3 bypasses them.  Attractive when
   operating within the rules is just too awkward.  Not the case here.

This commit implements 1.  Libvirt developers prefer it.

Deprecate @values in favour of @members.  Since query-qmp-schema
compatibility is pretty fundamental for management applications, an
extended grace period is advised.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Tested-by: Peter Krempa <pkrempa@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
Message-Id: <20211025042405.3762351-2-armbru@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
2021-10-27 17:18:43 +02:00
..
ci Jobs based on custom runners: docs and gitlab-runner setup playbook 2021-07-14 14:31:48 +01:00
coccinelle softmmu/memory: Pass ram_flags to memory_region_init_ram_shared_nomigrate() 2021-06-15 20:27:38 +02:00
codeconverter
coverity-scan coverity-model: write models fully for non-array allocation functions 2021-07-30 12:04:01 +02:00
kvm
modules
oss-fuzz fuzz: add an instrumentation filter 2021-09-01 07:33:13 -04:00
performance
qapi qapi: Enable enum member introspection to show more than name 2021-10-27 17:18:43 +02:00
qemu-guest-agent
qemugdb scripts/gdb: implement 'qemu bt' 2021-01-12 12:38:03 +01:00
qmp scripts/qmp-shell: add redirection shim 2021-06-18 16:10:07 -04:00
simplebench simplebench: add img_bench_templater.py 2021-09-15 15:54:07 +02:00
tracetool scripts/tracetool: Replace the word 'whitelist' 2021-03-09 22:14:26 +01:00
analyse-9p-simpletrace.py
analyse-locks-simpletrace.py
analyze-inclusions
analyze-migration.py analyze-migration.py: fix extract contents ('-x') errors 2021-10-23 20:28:56 +02:00
archive-source.sh
block-coroutine-wrapper.py block-coroutine-wrapper.py: support BlockBackend first argument 2021-10-15 15:51:33 -05:00
check_sparse.py
checkpatch.pl scripts/checkpatch: roll diff tweaking into checkpatch itself 2021-06-25 10:08:33 +01:00
clean-header-guards.pl
clean-includes
cleanup-trace-events.pl
cocci-macro-file.h compiler.h: remove QEMU_GNUC_PREREQ 2020-12-15 12:53:15 -05:00
cpu-x86-uarch-abi.py scripts: helper to generate x86_64 CPU ABI compat info 2021-06-17 14:11:06 -04:00
decodetree.py decodetree: Extend argument set syntax to allow types 2021-05-01 11:45:35 -07:00
device-crash-test device-crash-test: Ignore errors about a bus not being available 2021-04-01 14:28:39 +02:00
disas-objdump.pl
dump-guest-memory.py
entitlement.sh meson: Use input/output for entitlements target 2021-07-09 18:21:34 +02:00
extract-vsssdk-headers
feature_to_c.sh
fix-multiline-comments.sh docs: move CODING_STYLE into the developer documentation 2021-02-24 11:05:21 +00:00
gensyscalls.sh Hexagon (linux-user/hexagon) Linux user emulation 2021-02-18 07:48:22 -08:00
get_maintainer.pl get_maintainer: update repo URL to GitLab 2021-02-09 20:53:56 +00:00
git-submodule.sh configure: replace --enable/disable-git-update with --with-git-submodules 2021-01-29 17:07:53 +00:00
git.orderfile scripts/git.orderfile: Keep files with .inc extension sorted 2020-12-15 12:53:16 -05:00
hxtool
hxtool-conv.pl
kernel-doc scripts/kernel-doc: strip QEMU_ from function definitions 2021-03-24 14:24:40 +00:00
make-release roms/edk2: Only initialize required submodules 2021-10-20 16:26:19 -07:00
meson-buildoptions.py configure: automatically parse command line for meson -D options 2021-10-14 09:51:06 +02:00
meson-buildoptions.sh configure: automatically parse command line for meson -D options 2021-10-14 09:51:06 +02:00
meson.build trace: move configuration from configure to Meson 2021-10-14 09:50:56 +02:00
minikconf.py
modinfo-collect.py modules: collect module meta-data 2021-07-09 18:20:27 +02:00
modinfo-generate.py modules: check if all dependencies can be satisfied 2021-07-09 18:20:27 +02:00
mtest2make.py meson: switch minimum meson version to 0.58.2, minimum recommended to 0.59.2 2021-10-05 13:10:29 +02:00
nsis.py meson: Fix argument for makensis (build regression) 2020-11-18 09:28:55 +01:00
qapi-gen.py
qemu-binfmt-conf.sh scripts: fix generation update-binfmts templates 2021-05-03 10:07:41 +02:00
qemu-gdb.py scripts/gdb: implement 'qemu bt' 2021-01-12 12:38:03 +01:00
qemu-trace-stap qemu-trace-stap: changing SYSTEMTAP_TAPSET considered harmful. 2021-07-12 17:37:06 +01:00
qemu-version.sh
refresh-pxe-roms.sh
render_block_graph.py
replay-dump.py nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
shaderinclude.pl
signrom.py
simpletrace.py docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
switch-timer-api
tap-driver.pl
tap-merge.pl
test-driver.py
tracetool.py tracetool: add output filename command-line argument 2021-01-04 14:24:58 +00:00
u2f-setup-gen.py
undefsym.py
update-linux-headers.sh headers: Add udmabuf.h 2021-05-27 12:06:37 +02:00
update-mips-syscall-args.sh linux-user, mips: update syscall-args-o32.c.inc to Linux v5.13 2021-07-13 13:59:59 +02:00
update-syscalltbl.sh
userfaultfd-wrlat.py migration: introduce 'userfaultfd-wrlat.py' script 2021-02-08 11:19:51 +00:00
vmstate-static-checker.py