qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v12 0/4] qapi: Allow modularization of QAPI sche


From: Benoît Canet
Subject: Re: [Qemu-devel] [PATCH v12 0/4] qapi: Allow modularization of QAPI schema files
Date: Tue, 6 May 2014 15:07:40 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

The Friday 02 May 2014 à 15:52:19 (+0200), Lluís Vilanova wrote :

Hello,

I am trying to use this series to modularise the block API.

Here are my finding.

I tried to make a qmp/block.json including VM state related API.
block.json include a qmp/block-core.json containing only true block stuff.

When generating and compiling block-core.json to link it with qemu-nbd
I saw that some of the block stuff needed ErrorClass so I went the route
of creating a qmp/common.json containing ErrorClass.

common.json being included in block-core.json and in qapi-schema.json it
quickly lead some code being generated in double and the compilation to choke.

What do you think would be the best solution to fix this ?
(Fix the generator ? Make include ignore second inclusion of the same file ?)

Best regards

Benoît

> Adds an include primitive to the syntax of QAPI schema files, allowing these 
> to
> be modularized into multiple per-topic files in the future.
> 
> Signed-off-by: Lluís Vilanova <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> Reviewed-by: Markus Armbruster <address@hidden>
> ---
> 
> Changes in v12:
> 
> * Fix "Reviewed-by" lines.
> 
> Changes in v11:
> 
> * Rename "tests/include-after-err*" to "tests/include-before-err*" (Markus
>   Armbruster).
> * Do not use too many line breaks in "test/Makefile" (Eric Blake).
> 
> Changes in v10:
> 
> * Various argument/variable name changes (Markus Armbruster).
> * Fix path replacement command in error files when executing tests (Markus
>   Armbruster).
> * Catch IOError and translate it to QAPIExprError (Markus Armbruster).
> 
> Changes in v9:
> 
> * Do not catch unknown exceptions in "tests/qapi-schema/test-qapi.py".
> * Show primitive syntax in commit message.
> * Do not pre-initialize 'input_file' in "scripts/qapi-commands.py".
> * Use a one-liner for test error message checking.
> 
> Changes in v8:
> 
> * Do not show absolute paths in error messages.
> 
> Changes in v7:
> 
> * Add tests for relative path inclusion.
> * Print inclusion path on all errors.
> * Add test to ensure errors after an include have the correct context.
> * Squash "qapi.py" changes and tests into a single patch.
> * Add test for 'include' directive format.
> * s/file path/file name/.
> * s/included/include/.
> * Move "-i" to the end of the command.
> * Fix GNUism when using sed.
> 
> Changes in v6:
> 
> * Split changes for long-line breaking in makefiles.
> * Put documentation on a separate section; reference recursiveness.
> * Check (and test) for non-string include arguments (tanks to Benoît Canet).
> 
> Changes in v5:
> 
> * Rebase on b3706fa.
> * Remove 'error_base' argument in 'parse_schema'; fix test checks instead.
> * Implement include directive using JSON syntax.
> 
> Changes in v4:
> 
> * Rebase on 3e890c7.
> * Minor cosmetic changes.
> * Fix recording of included files in case of a cycle error.
> * Add a more complex include cycle test.
> 
> 
> Changes in v3:
> 
> * Fix documentation examples regarding how the input file is passed to the
>   scripts.
> * Add documentation for the 'include' directive.
> * Detect inclusion loops.
> * Fix "tests/qapi-schema/test-qapi.py" and "tests/Makefile" to use an explicit
>   input file when running tests.
> * Fix QAPI tests to cope with an explicit input file.
> * Add tests for the "include" directive.
> 
> 
> Changes in v2:
> 
> * Change the scripts to use an explicit input file instead of standard input.
> * Fix "tests/Makefile" to use the new argument.
> * Get the input directory for the "include" directive from the input file
>   dirname.
> 
> 
> Lluís Vilanova (4):
>       qapi: [trivial] Break long command lines
>       qapi: [trivial] Do not catch unknown exceptions in "test-qapi.py"
>       qapi: Use an explicit input file
>       qapi: Add a primitive to include other files from a QAPI schema file
> 
> 
>  Makefile                                           |   24 +++++--
>  docs/qapi-code-gen.txt                             |   15 ++++
>  scripts/qapi-commands.py                           |    9 ++-
>  scripts/qapi-types.py                              |    9 ++-
>  scripts/qapi-visit.py                              |    9 ++-
>  scripts/qapi.py                                    |   70 
> ++++++++++++++++----
>  tests/Makefile                                     |   26 ++++++-
>  tests/qapi-schema/duplicate-key.err                |    2 -
>  .../qapi-schema/flat-union-invalid-branch-key.err  |    2 -
>  .../flat-union-invalid-discriminator.err           |    2 -
>  tests/qapi-schema/flat-union-no-base.err           |    2 -
>  .../flat-union-string-discriminator.err            |    2 -
>  tests/qapi-schema/funny-char.err                   |    2 -
>  tests/qapi-schema/include-before-err.err           |    1 
>  tests/qapi-schema/include-before-err.exit          |    1 
>  tests/qapi-schema/include-before-err.json          |    2 +
>  tests/qapi-schema/include-before-err.out           |    0 
>  tests/qapi-schema/include-cycle-b.json             |    1 
>  tests/qapi-schema/include-cycle-c.json             |    1 
>  tests/qapi-schema/include-cycle.err                |    3 +
>  tests/qapi-schema/include-cycle.exit               |    1 
>  tests/qapi-schema/include-cycle.json               |    1 
>  tests/qapi-schema/include-cycle.out                |    0 
>  tests/qapi-schema/include-format-err.err           |    1 
>  tests/qapi-schema/include-format-err.exit          |    1 
>  tests/qapi-schema/include-format-err.json          |    2 +
>  tests/qapi-schema/include-format-err.out           |    0 
>  tests/qapi-schema/include-nested-err.err           |    2 +
>  tests/qapi-schema/include-nested-err.exit          |    1 
>  tests/qapi-schema/include-nested-err.json          |    1 
>  tests/qapi-schema/include-nested-err.out           |    0 
>  tests/qapi-schema/include-no-file.err              |    1 
>  tests/qapi-schema/include-no-file.exit             |    1 
>  tests/qapi-schema/include-no-file.json             |    1 
>  tests/qapi-schema/include-no-file.out              |    0 
>  tests/qapi-schema/include-non-file.err             |    1 
>  tests/qapi-schema/include-non-file.exit            |    1 
>  tests/qapi-schema/include-non-file.json            |    1 
>  tests/qapi-schema/include-non-file.out             |    0 
>  tests/qapi-schema/include-relpath-sub.json         |    2 +
>  tests/qapi-schema/include-relpath.err              |    0 
>  tests/qapi-schema/include-relpath.exit             |    1 
>  tests/qapi-schema/include-relpath.json             |    1 
>  tests/qapi-schema/include-relpath.out              |    3 +
>  tests/qapi-schema/include-self-cycle.err           |    1 
>  tests/qapi-schema/include-self-cycle.exit          |    1 
>  tests/qapi-schema/include-self-cycle.json          |    1 
>  tests/qapi-schema/include-self-cycle.out           |    0 
>  tests/qapi-schema/include-simple-sub.json          |    2 +
>  tests/qapi-schema/include-simple.err               |    0 
>  tests/qapi-schema/include-simple.exit              |    1 
>  tests/qapi-schema/include-simple.json              |    1 
>  tests/qapi-schema/include-simple.out               |    3 +
>  tests/qapi-schema/include/relpath.json             |    1 
>  tests/qapi-schema/missing-colon.err                |    2 -
>  tests/qapi-schema/missing-comma-list.err           |    2 -
>  tests/qapi-schema/missing-comma-object.err         |    2 -
>  tests/qapi-schema/non-objects.err                  |    2 -
>  tests/qapi-schema/quoted-structural-chars.err      |    2 -
>  tests/qapi-schema/test-qapi.py                     |    6 +-
>  tests/qapi-schema/trailing-comma-list.err          |    2 -
>  tests/qapi-schema/trailing-comma-object.err        |    2 -
>  tests/qapi-schema/unclosed-list.err                |    2 -
>  tests/qapi-schema/unclosed-object.err              |    2 -
>  tests/qapi-schema/unclosed-string.err              |    2 -
>  tests/qapi-schema/union-invalid-base.err           |    2 -
>  66 files changed, 187 insertions(+), 58 deletions(-)
>  create mode 100644 tests/qapi-schema/include-before-err.err
>  create mode 100644 tests/qapi-schema/include-before-err.exit
>  create mode 100644 tests/qapi-schema/include-before-err.json
>  create mode 100644 tests/qapi-schema/include-before-err.out
>  create mode 100644 tests/qapi-schema/include-cycle-b.json
>  create mode 100644 tests/qapi-schema/include-cycle-c.json
>  create mode 100644 tests/qapi-schema/include-cycle.err
>  create mode 100644 tests/qapi-schema/include-cycle.exit
>  create mode 100644 tests/qapi-schema/include-cycle.json
>  create mode 100644 tests/qapi-schema/include-cycle.out
>  create mode 100644 tests/qapi-schema/include-format-err.err
>  create mode 100644 tests/qapi-schema/include-format-err.exit
>  create mode 100644 tests/qapi-schema/include-format-err.json
>  create mode 100644 tests/qapi-schema/include-format-err.out
>  create mode 100644 tests/qapi-schema/include-nested-err.err
>  create mode 100644 tests/qapi-schema/include-nested-err.exit
>  create mode 100644 tests/qapi-schema/include-nested-err.json
>  create mode 100644 tests/qapi-schema/include-nested-err.out
>  create mode 100644 tests/qapi-schema/include-no-file.err
>  create mode 100644 tests/qapi-schema/include-no-file.exit
>  create mode 100644 tests/qapi-schema/include-no-file.json
>  create mode 100644 tests/qapi-schema/include-no-file.out
>  create mode 100644 tests/qapi-schema/include-non-file.err
>  create mode 100644 tests/qapi-schema/include-non-file.exit
>  create mode 100644 tests/qapi-schema/include-non-file.json
>  create mode 100644 tests/qapi-schema/include-non-file.out
>  create mode 100644 tests/qapi-schema/include-relpath-sub.json
>  create mode 100644 tests/qapi-schema/include-relpath.err
>  create mode 100644 tests/qapi-schema/include-relpath.exit
>  create mode 100644 tests/qapi-schema/include-relpath.json
>  create mode 100644 tests/qapi-schema/include-relpath.out
>  create mode 100644 tests/qapi-schema/include-self-cycle.err
>  create mode 100644 tests/qapi-schema/include-self-cycle.exit
>  create mode 100644 tests/qapi-schema/include-self-cycle.json
>  create mode 100644 tests/qapi-schema/include-self-cycle.out
>  create mode 100644 tests/qapi-schema/include-simple-sub.json
>  create mode 100644 tests/qapi-schema/include-simple.err
>  create mode 100644 tests/qapi-schema/include-simple.exit
>  create mode 100644 tests/qapi-schema/include-simple.json
>  create mode 100644 tests/qapi-schema/include-simple.out
>  create mode 100644 tests/qapi-schema/include/relpath.json
> 
> 
> To: address@hidden
> Cc: Luiz Capitulino <address@hidden>
> Cc: Markus Armbruster <address@hidden>
> Cc: Eric Blake <address@hidden>
> Cc: Benoît Canet <address@hidden>



reply via email to

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