Hi Markus On Tue, May 11, 2021 at 8:53 PM Stefan Hajnoczi wrote: > On Thu, Apr 29, 2021 at 05:40:23PM +0400, marcandre.lureau@redhat.com > wrote: > > From: Marc-André Lureau > > > > Hi, > > > > This series makes the 'if' conditions less liberal, by formalizing a > simple > > expression tree based on bare boolean logic of configure option > identifiers. > > > > (this allows to express conditions in Rust in my QAPI-Rust PoC series) > > > > This is based on John Snow QAPI pt4: > > https://patchew.org/QEMU/20210421192233.3542904-1-jsnow@redhat.com/ > > > > Based-on: <20210421192233.3542904-2-jsnow@redhat.com> > > > The patch series applies cleanly on top of master now. I checked no regression between each commit, including python style checks. If you are overloaded, can I make a pull request for it? thanks > thanks > > > > v3: > > - rebasing on queued pt4 (after waiting for it to land) > > - improve documentation generation, to be more human-friendly > > - drop typing annotations from schema.py (not yet queued) > > - commit message tweaks > > > > v2: > > - fix the normalization step to handle recursive expr > > - replace IfCond by QAPISchemaIf (JohnS) > > - commit message and documentation tweaks > > - mypy/flake8/isort > > > > Marc-André Lureau (9): > > qapi: replace List[str] by QAPISchemaIfCond > > qapi: move gen_if/gen_endif to QAPISchemaIfCond > > qapi: start building an 'if' predicate tree > > qapi: introduce IfPredicateList and IfAny > > qapi: add IfNot > > qapi: normalize 'if' condition to IfPredicate tree > > qapi: convert 'if' C-expressions to the new syntax tree > > qapi: make 'if' condition strings simple identifiers > > docs: update the documentation about schema configuration > > > > docs/devel/qapi-code-gen.txt | 33 +++--- > > docs/sphinx/qapidoc.py | 6 +- > > qapi/block-core.json | 16 +-- > > qapi/block-export.json | 6 +- > > qapi/char.json | 8 +- > > qapi/machine-target.json | 28 +++-- > > qapi/migration.json | 10 +- > > qapi/misc-target.json | 37 +++--- > > qapi/qom.json | 10 +- > > qapi/sockets.json | 4 +- > > qapi/ui.json | 48 ++++---- > > qga/qapi-schema.json | 8 +- > > tests/unit/test-qmp-cmds.c | 1 + > > scripts/qapi/commands.py | 4 +- > > scripts/qapi/common.py | 106 +++++++++++++++--- > > scripts/qapi/events.py | 5 +- > > scripts/qapi/expr.py | 62 +++++++--- > > scripts/qapi/gen.py | 16 ++- > > scripts/qapi/introspect.py | 33 +++--- > > scripts/qapi/schema.py | 99 ++++++++++++---- > > scripts/qapi/types.py | 43 ++++--- > > scripts/qapi/visit.py | 25 ++--- > > .../alternate-branch-if-invalid.err | 2 +- > > tests/qapi-schema/bad-if-empty.err | 2 +- > > tests/qapi-schema/bad-if-list.err | 2 +- > > tests/qapi-schema/bad-if.err | 3 +- > > tests/qapi-schema/bad-if.json | 2 +- > > tests/qapi-schema/doc-good.json | 6 +- > > tests/qapi-schema/doc-good.out | 12 +- > > tests/qapi-schema/doc-good.txt | 6 +- > > tests/qapi-schema/enum-if-invalid.err | 3 +- > > tests/qapi-schema/features-if-invalid.err | 2 +- > > tests/qapi-schema/features-missing-name.json | 2 +- > > tests/qapi-schema/qapi-schema-test.json | 58 +++++----- > > tests/qapi-schema/qapi-schema-test.out | 67 ++++++----- > > .../qapi-schema/struct-member-if-invalid.err | 2 +- > > tests/qapi-schema/union-branch-if-invalid.err | 2 +- > > 37 files changed, 482 insertions(+), 297 deletions(-) > > > > -- > > 2.29.0 > > > > > > > > Please double-check that the build and tests pass after each commit (for > bisectability). > > I'm not familiar with the details of the QAPI code generator but in > overall this looks like a nice step: > > Reviewed-by: Stefan Hajnoczi > -- Marc-André Lureau