From: Markus Armbruster <armbru@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kwolf@redhat.com, imammedo@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH 03/25] qemu-option: warn for short-form boolean options
Date: Wed, 20 Jan 2021 09:42:12 +0100 [thread overview]
Message-ID: <878s8ovw2j.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <99a014a0-5d9c-07d6-250a-c56e6337cf69@redhat.com> (Paolo Bonzini's message of "Tue, 19 Jan 2021 18:04:35 +0100")
Paolo Bonzini <pbonzini@redhat.com> writes:
> On 19/01/21 16:56, Markus Armbruster wrote:
>>> + if (!is_help && warn_on_flag) {
>>> + warn_report("short-form boolean option '%s%s' deprecated", prefix, *name);
>>> + error_printf("Please use %s=%s instead\n", *name, *value);
>>> + }
>>
>> If @warn_on_flag, we warn except for "help" and "?". The exception
>> applies regardless of @help_wanted. Shouldn't we except*only*
>> recognized help requests?
>
> Suggesting "help=yes" would be worse.
Would it?
get_opt_name_value() parses one parameter from params into *name and
*value. if help_wanted && is_help, it additionally sets *help_wanted to
true. is_help is true when the parameter is "help" or "?".
How could a parameter "help" be handled?
get_opt_name_value() will set
*name = g_strdup("help");
*value = g_strdup("on");
If help_wanted, additionally:
*help_wanted = true;
Callers that pass non-null help_wanted can do whatever they want with
that. The actual callers do honor the help request. The deprecation
warning obviously needs to be suppressed for them.
Callers that pass null help_wanted will treat this just like any other
parameter. Use of the boolean sugar is just as deprecated for this
parameter as it is for all the others. Suppressing the deprecation
warning feels wrong.
The alternative is to *outlaw* parameters "help" and "?" in QemuOpts.
I'd be cool with that.
>>> - opts = opts_parse(list, params, permit_abbrev, false,
>>> + opts = opts_parse(list, params, permit_abbrev, false, true,
>>> opts_accepts_any(list) ? NULL : &help_wanted,
>>> &err);
>>> if (!opts) {
>>
>> This function now warns, except for "help" and "?". The exception
>> applies even when we treat "help" and "?" as sugar for "help=on" and
>> "?=on" because opts_accepts_any().
>>
>> It is the only spot that enables the warning.
>>
>> Does all user input flow through qemu_opts_parse_noisily()?
>>
>
> I was going to say yes, but -vnc (and worse, the QMP version of "change
> vnc") is parsed by qemu_opts_parse() via ui/vnc.c (besides being used by
> lots of tests). -vnc has several boolean options, and though Libvirt
> only uses "sasl" it does so in the short form.
>
> My solution would be to deprecate the QMP "change vnc" command, and
> postpone switching -vnc to qemu_opts_parse_noisily to 6.2.
QMP command 'change' was deprecated long ago, in 2.5.0 (commit
24fb41330, in 2015). This predated appendix "Deprecated features"
(which has since become docs/system/deprecated.rst), and remained
missing there until I corrected it in commit 6d570ca10 (v4.2.0).
> The main reason to warn for short-form boolean options, is to block them
> for command line options that are switched to keyval[1]. Adding a
> warning does not necessarily imply removing in two releases.
Understand.
> Paolo
>
> [1] This series already does that for -M, -accel and -object. This
> means that applying this series would change the command line
> incompatibly without a two-release deprecation. It's up for discussion
> whether to do so, or delay the application of those patches to 6.2. It
> would be a pity to hold the dependent changes for effectively a year,
> but it's not a big deal.
Concur.
next prev parent reply other threads:[~2021-01-20 8:43 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-18 16:30 [PATCH 00/25] qemu-option, keyval, vl: switch -object/-M/-accel to keyval parsing Paolo Bonzini
2021-01-18 16:30 ` [PATCH 01/25] qemu-option: clean up id vs. list->merge_lists Paolo Bonzini
2021-01-19 12:33 ` Kevin Wolf
2021-01-19 13:58 ` Markus Armbruster
2021-01-19 14:20 ` Paolo Bonzini
2021-01-20 8:03 ` Markus Armbruster
2021-01-20 12:37 ` Paolo Bonzini
2021-01-20 12:50 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 02/25] qemu-option: move help handling to get_opt_name_value Paolo Bonzini
2021-01-19 15:10 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 03/25] qemu-option: warn for short-form boolean options Paolo Bonzini
2021-01-19 15:56 ` Markus Armbruster
2021-01-19 17:04 ` Paolo Bonzini
2021-01-20 8:42 ` Markus Armbruster [this message]
2021-01-20 12:40 ` Paolo Bonzini
2021-01-20 12:59 ` Markus Armbruster
2021-01-20 14:05 ` Paolo Bonzini
2021-01-18 16:30 ` [PATCH 04/25] keyval: accept escaped commas in implied option Paolo Bonzini
2021-01-21 12:58 ` Markus Armbruster
2021-01-22 8:39 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 05/25] keyval: simplify keyval_parse_one Paolo Bonzini
2021-01-22 13:48 ` Markus Armbruster
2021-01-22 15:00 ` Paolo Bonzini
2021-01-22 15:44 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 06/25] tests: convert check-qom-proplist to keyval Paolo Bonzini
2021-01-22 14:14 ` Markus Armbruster
2021-01-22 14:38 ` Paolo Bonzini
2021-01-22 14:48 ` Paolo Bonzini
2021-01-18 16:30 ` [PATCH 07/25] keyval: introduce keyval_parse_into Paolo Bonzini
2021-01-22 14:22 ` Markus Armbruster
2021-01-22 14:30 ` Paolo Bonzini
2021-01-18 16:30 ` [PATCH 08/25] hmp: replace "O" parser with keyval Paolo Bonzini
2021-01-25 9:00 ` Markus Armbruster
2021-02-26 11:25 ` Paolo Bonzini
2021-03-01 10:14 ` Markus Armbruster
2021-03-01 10:23 ` Paolo Bonzini
2021-03-01 13:35 ` Markus Armbruster
2021-03-01 10:43 ` Markus Armbruster
2021-03-01 11:54 ` Paolo Bonzini
2021-01-18 16:30 ` [PATCH 09/25] qom: use qemu_printf to print help for user-creatable objects Paolo Bonzini
2021-01-25 12:47 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 10/25] hmp: special case help options for object_add Paolo Bonzini
2021-01-25 12:48 ` Markus Armbruster
2021-01-25 12:49 ` Paolo Bonzini
2021-01-25 14:02 ` Markus Armbruster
2021-01-18 16:30 ` [PATCH 11/25] remove -writeconfig Paolo Bonzini
2021-01-25 12:53 ` Markus Armbruster
2021-01-25 14:01 ` Paolo Bonzini
2021-01-25 14:12 ` Daniel P. Berrangé
2021-01-18 16:31 ` [PATCH 12/25] qemu-config: add error propagation to qemu_config_parse Paolo Bonzini
2021-01-25 13:54 ` Markus Armbruster
2021-01-18 16:31 ` [PATCH 13/25] qemu-option: support accept-any QemuOptsList in qemu_opts_absorb_qdict Paolo Bonzini
2021-01-18 16:31 ` [PATCH 14/25] qemu-config: parse configuration files to a QDict Paolo Bonzini
2021-01-18 16:31 ` [PATCH 15/25] vl: plumb keyval-based options into -set and -readconfig Paolo Bonzini
2021-01-25 11:48 ` Markus Armbruster
2021-01-25 13:59 ` Paolo Bonzini
2021-01-18 16:31 ` [PATCH 16/25] qom: do not modify QDict argument in user_creatable_add_dict Paolo Bonzini
2021-01-18 16:31 ` [PATCH 17/25] qemu-io: use keyval for -object parsing Paolo Bonzini
2021-01-18 16:31 ` [PATCH 18/25] qemu-nbd: " Paolo Bonzini
2021-01-18 16:31 ` [PATCH 19/25] qemu-img: " Paolo Bonzini
2021-01-18 16:31 ` [PATCH 20/25] qemu: " Paolo Bonzini
2021-01-18 16:31 ` [PATCH 21/25] storage-daemon: do not register the "object" group with QemuOpts Paolo Bonzini
2021-01-18 16:31 ` [PATCH 22/25] qom: export more functions for use with non-UserCreatable objects Paolo Bonzini
2021-01-18 16:31 ` [PATCH 23/25] vl: switch -M parsing to keyval Paolo Bonzini
2021-01-18 16:31 ` [PATCH 24/25] qemu-option: remove now-dead code Paolo Bonzini
2021-01-18 16:31 ` [PATCH 25/25] vl: switch -accel parsing to keyval Paolo Bonzini
2021-01-18 17:18 ` [PATCH 00/25] qemu-option, keyval, vl: switch -object/-M/-accel to keyval parsing no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878s8ovw2j.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=imammedo@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.