This script can be used to choose the best machine type in the appropriate cases. Also we have to check compat_props of the old MT after changes to be sure that they haven't broken old the MT. For example, pc_compat_3_1 of pc-q35-3.1 has Icelake-Client which was removed.
v6 -> v5: * add ability to compare different QEMU binaries * replace abstract drivers by its implementations * improve human-readable format * code refactoring v5 -> v4: * minor fixes v4 -> v3: * increase read buffer limit to limit value in libvirt * add caching of qmp requests to speed up the script v3 -> v2: * simplify adding new methods for getting QEMU default values * add typing * change concept from fixed dictionaries to classes v2 -> v1: * fix script code style and descriptions * reorder patches v1 -> previous iteration: * new default value print concept * QEMU python library is used to collect qmp data * remove auxiliary patches (that was used to fix `->get` sematics) * print compat_props in the correct order * delete `absract` field to reduce output JSON size Maksim Davydov (4): qom: add default value qmp: add dump machine type compatible properties python: add binary scripts: add script to compare compatible properties hw/core/machine-qmp-cmds.c | 23 +- python/qemu/machine/machine.py | 5 + qapi/machine.json | 54 +++- qom/qom-qmp-cmds.c | 1 + scripts/compare_mt.py | 484 +++++++++++++++++++++++++++++++++ tests/qtest/fuzz/qos_fuzz.c | 2 +- 6 files changed, 565 insertions(+), 4 deletions(-) create mode 100755 scripts/compare_mt.py -- 2.34.1