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.leco...@ubisoft.com> >> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1792141 >> Signed-off-by: Laszlo Ersek <ler...@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 <rjo...@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 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs