On 2/2/23 11:39, Richard W.M. Jones wrote:
On Thu, Feb 02, 2023 at 11:29:26AM +0100, Laszlo Ersek wrote:
> Introduce a new GTK_ENTRY field in the Output options box. Similarly to
> "p2v.output.misc" on the kernel cmdline, the contents of this GTK_ENTRY
> are a comma-separated list of OPTION=VALUE options, where each option is
> passed to virt-v2v as the argument of a separate "-oo" option.
>
> Refresh the manual accordingly.
>
> For initially populating the text entry (in case the kernel command line
> specified "p2v.output.misc"), call the guestfs_int_join_strings() function
> that we imported previously in this series.
>
> For unpacking the contents in start_conversion_clicked(), call
> guestfs_int_split_string(), just like the generated kernel cmdline parser
> does, in update_config_from_kernel_cmdline() [kernel-config.c].
>
> Cc: Alban Lecorps <alban.lecorps(a)ubisoft.com>
> Bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=1792141
> Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
> ---
>
> Notes:
> v2:
>
> - highlight "no spaces around commas" in the tooltip [Rich]
>
> - repeat the "-oo" notes in the GUI section of the manual [Rich]
>
> gui.c | 49 +++++++++++++++++++-
> virt-p2v.pod | 11 +++++
> 2 files changed, 58 insertions(+), 2 deletions(-)
>
> diff --git a/gui.c b/gui.c
> index f86cab649785..ce9b2455e666 100644
> --- a/gui.c
> +++ b/gui.c
> @@ -116,7 +116,7 @@ static GtkWidget *conn_dlg,
> static GtkWidget *conv_dlg,
> *guestname_entry, *vcpu_topo, *vcpus_entry, *memory_entry,
> *vcpus_warning, *memory_warning, *target_warning_label,
> - *o_combo, *oc_entry, *os_entry, *of_entry, *oa_combo,
> + *o_combo, *oc_entry, *os_entry, *of_entry, *oa_combo, *oo_entry,
> *info_label,
> *disks_list, *removable_list, *interfaces_list;
> static int vcpus_entry_when_last_sensitive;
> @@ -674,6 +674,7 @@ static void populate_removable_store (GtkListStore
*removable_store,
> static void populate_removable (GtkTreeView *removable_list_p,
> const char * const *removable);
> static void populate_interfaces (GtkTreeView *interfaces_list_p);
> +static void populate_misc_opts (GtkEntry *entry, char * const *misc);
> static void toggled (GtkCellRendererToggle *cell,
> gchar *path_str,
> gpointer data);
> @@ -733,7 +734,7 @@ create_conversion_dialog (struct config *config,
> GtkWidget *target_frame, *target_vbox, *target_tbl;
> GtkWidget *guestname_label, *vcpus_label, *memory_label;
> GtkWidget *output_frame, *output_vbox, *output_tbl;
> - GtkWidget *o_label, *oa_label, *oc_label, *of_label, *os_label;
> + GtkWidget *o_label, *oa_label, *oc_label, *of_label, *os_label, *oo_label;
> GtkWidget *info_frame;
> GtkWidget *disks_frame, *disks_sw;
> GtkWidget *removable_frame, *removable_sw;
> @@ -929,6 +930,25 @@ create_conversion_dialog (struct config *config,
> table_attach (output_tbl, oa_combo,
> 1, 2, row, GTK_FILL, GTK_FILL, 1, 1);
>
> + row++;
> + oo_label = gtk_label_new_with_mnemonic (_("M_isc. options (-oo):"));
> + table_attach (output_tbl, oo_label,
> + 0, 1, row, GTK_FILL, GTK_FILL, 1, 1);
> + set_alignment (oo_label, 1., 0.5);
> + oo_entry = gtk_entry_new ();
> + gtk_label_set_mnemonic_widget (GTK_LABEL (oo_label), oo_entry);
> + gtk_widget_set_tooltip_markup (oo_entry,
> + _("A comma-separated list of "
> + "<b>OPTION=VALUE</b>
output-specific "
> + "options. Each option is passed to "
> + "virt-v2v as the argument of a separate
"
> + "<b>-oo</b> option. Do not
place a space "
> + "character at either side of either comma
"
> + "separator."));
> + populate_misc_opts (GTK_ENTRY (oo_entry), config->output.misc);
> + table_attach (output_tbl, oo_entry,
> + 1, 2, row, GTK_FILL, GTK_FILL, 1, 1);
> +
> gtk_box_pack_start (GTK_BOX (output_vbox), output_tbl, TRUE, TRUE, 0);
> gtk_container_add (GTK_CONTAINER (output_frame), output_vbox);
>
> @@ -1356,6 +1376,25 @@ populate_interfaces (GtkTreeView *interfaces_list_p)
> G_CALLBACK (network_edited_callback), interfaces_store);
> }
>
> +/**
> + * Populate the C<Misc. options> text entry.
> + */
> +static void
> +populate_misc_opts (GtkEntry *entry, char * const *misc)
> +{
> + char *joined;
> +
> + if (misc == NULL)
> + return;
> +
> + joined = guestfs_int_join_strings (",", misc);
> + if (joined == NULL)
> + error (EXIT_FAILURE, errno, "malloc");
> +
> + gtk_entry_set_text (entry, joined);
> + free(joined);
> +}
> +
> static void
> toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
> {
> @@ -2197,6 +2236,12 @@ start_conversion_clicked (GtkWidget *w, gpointer data)
> else
> config->output.storage = NULL;
>
> + str = gtk_entry_get_text (GTK_ENTRY (oo_entry));
> + guestfs_int_free_string_list (config->output.misc);
> + config->output.misc = guestfs_int_split_string (',', str);
> + if (config->output.misc == NULL)
> + error (EXIT_FAILURE, errno, "strdup");
> +
> /* Display the UI for conversion. */
> show_running_dialog ();
>
> diff --git a/virt-p2v.pod b/virt-p2v.pod
> index ecdae46eaaf6..6008c25d6159 100644
> --- a/virt-p2v.pod
> +++ b/virt-p2v.pod
> @@ -175,10 +175,21 @@ first-time virt-p2v user.
> │
> │ Output allocation (-oa): [sparse ▼]
> │
> + │ Misc. options (-oo): [___________________]
> + │
>
> All output options and paths are relative to the conversion server
> (I<not> to the physical server).
>
> +Note that the C<Misc. options> text entry behaves differently from the
You can use S<C<Misc. options>> which will add a non-breaking space to
prevent the output from being wrapped (not that it's likely to be
line-wrapped in the current position, but it might be good practice).
> +other text entries -- its format is identical to that of the
> +C<p2v.output.misc> L<kernel command line|/KERNEL COMMAND LINE
> +CONFIGURATION> option. Namely, the text entry contains a
> +comma-separated list of miscellaneous, output-specific options. (Do
> +not put spaces around the commas!) Each element in the list is of the
> +form C<OPTION=VALUE>, and each element is passed to virt-v2v as a
> +standalone I<-oo OPTION=VALUE> option.
> +
> Finally in the left hand column is an information box giving the
> version of virt-p2v (on the physical server) and virt-v2v (on the
> conversion server). You should supply this information when reporting
Reviewed-by: Richard W.M. Jones <rjones(a)redhat.com>
Thanks, I've pushed the series with the following (cumulative) diff on top (broken
down into the appropriate patches):
diff --git a/generate-p2v-config.pl b/generate-p2v-config.pl
index 5e1d8519bd91..a79655227a86 100755
--- a/generate-p2v-config.pl
+++ b/generate-p2v-config.pl
@@ -386,8 +386,9 @@ If not specified, the default is F</var/tmp> (on the conversion
server).",
description => "
Set miscellaneous output option(s) related to the selected output mode.
This is the same as the virt-v2v I<-oo> option; each C<OPTION=VALUE>
-element in the list will be turned into a separate I<-oo OPTION=VALUE>
-option on the virt-v2v command line. See L<virt-v2v(1)/OPTIONS>.",
+element in the list will be turned into a separate S<I<-oo
+OPTION=VALUE>> option on the virt-v2v command line. See
+L<virt-v2v(1)/OPTIONS>.",
),
);
diff --git a/virt-p2v.pod b/virt-p2v.pod
index 6008c25d6159..765cee082cc3 100644
--- a/virt-p2v.pod
+++ b/virt-p2v.pod
@@ -181,14 +181,14 @@ first-time virt-p2v user.
All output options and paths are relative to the conversion server
(I<not> to the physical server).
-Note that the C<Misc. options> text entry behaves differently from the
-other text entries -- its format is identical to that of the
+Note that the S<C<Misc. options>> text entry behaves differently from
+the other text entries -- its format is identical to that of the
C<p2v.output.misc> L<kernel command line|/KERNEL COMMAND LINE
CONFIGURATION> option. Namely, the text entry contains a
comma-separated list of miscellaneous, output-specific options. (Do
not put spaces around the commas!) Each element in the list is of the
form C<OPTION=VALUE>, and each element is passed to virt-v2v as a
-standalone I<-oo OPTION=VALUE> option.
+standalone S<I<-oo OPTION=VALUE>> option.
Finally in the left hand column is an information box giving the
version of virt-p2v (on the physical server) and virt-v2v (on the
I've also verified the resultant output in the HTML manual, both the rendered view,
and the HTML source view.
Commit range f4c7ae6ba98f..62e92514e11f.
Laszlo