[PATCH v3 0/5] qapi: Add feature flags to enum members

Markus Armbruster posted 5 patches 2 years, 5 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211021102001.803780-1-armbru@redhat.com
Maintainers: Michael Roth <michael.roth@amd.com>, Markus Armbruster <armbru@redhat.com>, Eric Blake <eblake@redhat.com>
There is a newer version of this series
docs/devel/qapi-code-gen.rst                  | 29 ++++++++++++++-----
qapi/compat.json                              |  3 ++
qapi/introspect.json                          | 24 +++++++++++++--
qapi/transaction.json                         |  6 +++-
include/qapi/qobject-input-visitor.h          |  4 ---
include/qapi/qobject-output-visitor.h         |  4 ---
include/qapi/util.h                           |  6 +++-
include/qapi/visitor-impl.h                   |  3 ++
include/qapi/visitor.h                        |  9 ++++++
qapi/qapi-visit-core.c                        | 27 +++++++++++++++--
qapi/qmp-dispatch.c                           |  4 +--
qapi/qobject-input-visitor.c                  | 14 +--------
qapi/qobject-output-visitor.c                 | 14 +--------
scripts/qapi/expr.py                          |  3 +-
scripts/qapi/introspect.py                    | 19 +++++++++---
scripts/qapi/schema.py                        | 22 ++++++++++++--
scripts/qapi/types.py                         | 17 ++++++++++-
tests/qapi-schema/doc-good.json               |  5 +++-
tests/qapi-schema/doc-good.out                |  3 ++
tests/qapi-schema/doc-good.txt                |  3 ++
.../qapi-schema/enum-dict-member-unknown.err  |  2 +-
tests/qapi-schema/qapi-schema-test.json       |  3 +-
tests/qapi-schema/qapi-schema-test.out        |  1 +
tests/qapi-schema/test-qapi.py                |  1 +
24 files changed, 164 insertions(+), 62 deletions(-)
[PATCH v3 0/5] qapi: Add feature flags to enum members
Posted by Markus Armbruster 2 years, 5 months ago
PATCH 1+2 add feature flags to enum members.  Awkward due to an
introspection design mistake; see PATCH 1 for details.

PATCH 3+4 implement policy deprecated-input={reject,crash} for enum
values.

Policy deprecated-output=hide is not implemented, because we can't
hide a value without hiding the entire member, which is almost
certainly more than the requester of this policy bargained for.
Perhaps we want a new policy deprecated-output=hide-or-else-crash to
help us catch unwanted use of deprecated enum values.  Perhaps we want
deprecated-output=hide to behave that way together with
deprecated-input=crash.  Or even always.  Thoughts?

PATCH 5 puts the new feature flags to use.  It's RFC because it makes
sense only on top of Vladimir's deprecation of drive-backup.  See its
commit message for a reference.

I prefer to commit new features together with a use outside tests/.
PATCH 5 adds such a use, but it's RFC, because it depends on
Vladimir's work.  Perhaps another use pops up.  I can delay this work
in the hope of a use becoming ready, but the feature flags work I have
in the pipeline will eventually force my hand.

v3:
* PATCH 1+2: Update qapi-code-gen.rst [Kevin, Eric]
* PATCH 4: Commit message typo [Eric], doc update moved to PATCH 2
* PATCH 5: Doc comment FIXME resolved [Kevin]

v2:
* Rebased with straightforward conflicts.
* PATCH 1-4: No longer RFC.
* PATCH 1: "Since" information fixed [Eric].  Commit message updated
  to reflect feedback.
* PATCH 2: Commit message amended to point out special feature flag
 'deprecated' is ignored at this stage.
* PATCH 4: Documentation updated.  Commit message tweaked.

Markus Armbruster (5):
  qapi: Enable enum member introspection to show more than name
  qapi: Add feature flags to enum members
  qapi: Move compat policy from QObject to generic visitor
  qapi: Implement deprecated-input={reject,crash} for enum values
  block: Deprecate transaction type drive-backup

 docs/devel/qapi-code-gen.rst                  | 29 ++++++++++++++-----
 qapi/compat.json                              |  3 ++
 qapi/introspect.json                          | 24 +++++++++++++--
 qapi/transaction.json                         |  6 +++-
 include/qapi/qobject-input-visitor.h          |  4 ---
 include/qapi/qobject-output-visitor.h         |  4 ---
 include/qapi/util.h                           |  6 +++-
 include/qapi/visitor-impl.h                   |  3 ++
 include/qapi/visitor.h                        |  9 ++++++
 qapi/qapi-visit-core.c                        | 27 +++++++++++++++--
 qapi/qmp-dispatch.c                           |  4 +--
 qapi/qobject-input-visitor.c                  | 14 +--------
 qapi/qobject-output-visitor.c                 | 14 +--------
 scripts/qapi/expr.py                          |  3 +-
 scripts/qapi/introspect.py                    | 19 +++++++++---
 scripts/qapi/schema.py                        | 22 ++++++++++++--
 scripts/qapi/types.py                         | 17 ++++++++++-
 tests/qapi-schema/doc-good.json               |  5 +++-
 tests/qapi-schema/doc-good.out                |  3 ++
 tests/qapi-schema/doc-good.txt                |  3 ++
 .../qapi-schema/enum-dict-member-unknown.err  |  2 +-
 tests/qapi-schema/qapi-schema-test.json       |  3 +-
 tests/qapi-schema/qapi-schema-test.out        |  1 +
 tests/qapi-schema/test-qapi.py                |  1 +
 24 files changed, 164 insertions(+), 62 deletions(-)

-- 
2.31.1