qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 0/9] qapi: untie 'if' conditions from C preprocessor


From: Stefan Hajnoczi
Subject: Re: [PATCH v3 0/9] qapi: untie 'if' conditions from C preprocessor
Date: Tue, 11 May 2021 17:52:25 +0100

On Thu, Apr 29, 2021 at 05:40:23PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> 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>
> 
> 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 <stefanha@redhat.com>

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]