Markus Armbruster <arm...@redhat.com> writes:

> This policy suppresses deprecated bits in output, and thus permits
> "testing the future".  Implement it for QMP command results.  Example:
> when QEMU is run with -compat deprecated-output=hide, then
>
>     {"execute": "query-cpus-fast"}
>
> yields
>
>     {"return": [{"thread-id": 9805, "props": {"core-id": 0, "thread-id": 0, 
> "socket-id": 0}, "qom-path": "/machine/unattached/device[0]", "cpu-index": 0, 
> "target": "x86_64"}]}
>
> instead of
>
>     {"return": [{"arch": "x86", "thread-id": 22436, "props": {"core-id": 0, 
> "thread-id": 0, "socket-id": 0}, "qom-path": "/machine/unattached/device[0]", 
> "cpu-index": 0, "target": "x86_64"}]}
>
> Note the suppression of deprecated member "arch".
>
> Signed-off-by: Markus Armbruster <arm...@redhat.com>
> Reviewed-by: Eric Blake <ebl...@redhat.com>
> ---
[...]
> diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c
> index ba6f6ac8a7..5c4aa0f64d 100644
> --- a/qapi/qobject-output-visitor.c
> +++ b/qapi/qobject-output-visitor.c
[...]
> @@ -264,3 +275,11 @@ Visitor *qobject_output_visitor_new(QObject **result)
>  
>      return &v->visitor;
>  }
> +
> +Visitor *qobject_output_visitor_new_qmp(QObject **result)
> +{
> +    QObjectOutputVisitor *v = to_qov(qobject_output_visitor_new(result));
> +
> +    v->deprecated_policy = compat_policy.deprecated_output;
> +    return &v->visitor;
> +}

Linking fail when we link qapi/qobject-output-visitor.o (which uses
@compat_policy), but not qapi/qmp-dispatch.o (which defines it).

Fails for me when I configure --disable-system --disable-tools.

Minimally invasive fix: move the function to qmp-dispatch.c.

Same for qobject_input_visitor_new_qmp() in PATCH 09.

[...]


Reply via email to