Re: bsdinstall TUI utility
- In reply to: Devin Teske : "Re: bsdinstall TUI utility"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 28 May 2022 23:34:11 UTC
On Sat, May 28, 2022 at 04:02:51PM -0700, Devin Teske wrote:
>
>
> > On May 28, 2022, at 2:59 PM, Alfonso S. Siciliano <alfix86@gmail.com> wrote:
> >
> > Hello,
> >
> >
> > So far I replaced and adapted `dialog` with `bsddialog` in
> > bsdinstall/scripts.
> > <https://wiki.freebsd.org/RoadmapFromDialogToBSDDialog>
> >
> >
> > Currently, I am addressing the last 4 scripts: auto, bootconfig, keymap,
> > and wlanconfig. These scripts use also the $DIALOG variable and some
> > "if" to handle Xdialog(1).
> > For example 'auto' uses $DIALOG, $USE_XDIALOG, and `dialog`.
> >
>
> Can we simply add USE_GNU_DIALOG and switch USE_DIALOG to mean bsddialog?
fwiw, dialog is LGPL.
It is not a GNU project.
Given the history of this feature, adding USE_BSDDIALOG would be less
disruptive.
> > * $DIALOG: I seem bsdinstall(8) uses only dialog(1) as TUI utility.
>
> bsdinstall(8) uses only dialog(1) in the context of $DIALOG
by the way, the manpage doesn't list dialog in its "SEE ALSO".
(the existing oblique mention is a start)
> ASIDE: It also uses dialog(3) and dpv(3)/dpv(1)
>
>
> > * I seem bsdconfig(8) does not "call" these 4 scripts, so, probably,
> > Xdialog(1) is not used in this context (that is `bsdconfig -X`).
> >
>
> Correct, bsdconfig does use bsdinstall
>
>
> > Is there any objection to delete $DIALOG/LGPL-dialog/Xdialog to
> > provide only the support for bsddialog(1) in bsdinstall(8)?
> >
>
> I object.
:-)
> I and another developer are adding support for zenity
>
> https://github.com/FrauBSD/pkgcenter/tree/bsdconfig/zenity/depend/bsdconfig <https://github.com/FrauBSD/pkgcenter/tree/bsdconfig/zenity/depend/bsdconfig>
>
> There is also work to resolve the namespace issues in bsdinstall
>
> https://github.com/FrauBSD/pkgcenter/tree/bsdinstall/namespace/depend/bsdconfig <https://github.com/FrauBSD/pkgcenter/tree/bsdinstall/namespace/depend/bsdconfig>
>
> I am in favor of keeping $DIALOG/LGPL-dialog/Xdialog support where it exists
> until those efforts can be completed.
>
> ASIDE: bsdinstall doesn’t use Xdialog
iirc, Xdialog is defunct, except perhaps in ports.
> > I would prefer this solution because I can avoid: to handle some
> > dialog/Xdialog/bsddialog command line difference and to hook some
> > bsdconfig function built on dialog(1) incompatible with bsddialog(1)
> > (for example autosizing, implemented in bsddialog(3) already).
> >
>
> The differences in command line should be handled through conditionals, but can be the default and opt to handle LGPL-dialog through a USE_GNU_DIALOG flag
>
> bsddialog may support auto-sizing, but so does dialog and Xdialog.
>
> However, ...
>
> The sizing code in bsdconfig (used indirectly by bsdinstall) was written
> because the auto-sizing that does exist and is available in both dialog and
> Xdialog (as well as Zenity) does not provide a cohesive experience when
> trying to write a program that is in-reality a series of bespoke dialogs.
Zenity's a graphical client, and isn't subject to the same limitations
that TUI clients encounter.
> The sizing code makes sure that regardless of which utility you are using
> that the experience is uniform in what is presented to the user.
>
> Attempting to rely solely on the auto-sizing available from these separate
> utilities (including bsddialog) would change the UI/UX.
>
> The problem was solved by:
>
> 1. Making the stored text used for dialogs dictate how it will look
> 2. Painstakingly determining where each utility failed given the text
> 3. Determining how to make the utility display the text properly
>
> For example, stored text will contain newlines instead of attempting to rely
> on line wrapping on a box of given size.
>
> I would have to evaluate bsddialog’s auto-sizing to determine if it is
> trust-worthy given not only all the stored texts, but all the translations as
> well (as bsdconfig is i18n compatible). It is actually less work to just
> allow bsdconfig to likely treat bsddialog as it is dialog and let it perform
^if
> the size calculations for you.
>
> If bsddialog is top be a drop-in replacement, I’m more than a little
> surprised that it cannot accept the sizes calculated for dialog being passed
> to it.
>
>
> >
> > Please note these considerations are only for bsdinstall, bsdconfig is
> > unchanged.
> >
>
> What of dpv? bsdinstall uses dpv(3) to unpack the dists which in-turn relies
> on dlg_gauge_reallocate(3) from LGPL-dialog?
> —
> Devin
--
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net
ftp://ftp.invisible-island.net