RE: [CFT] Installer Enhancement -- dpv

From: <dteske_at_FreeBSD.org>
Date: Tue, 2 Sep 2014 16:11:44 -0700
I have posted this on reviews.f.o:

https://reviews.freebsd.org/D714
-- 
Cheers,
Devin

> -----Original Message-----
> From: devin_at_shxd.cx [mailto:devin_at_shxd.cx] On Behalf Of
> dteske_at_FreeBSD.org
> Sent: Tuesday, September 2, 2014 12:11 PM
> To: 'freebsd-current'
> Cc: dteske_at_FreeBSD.org; 'Julian Elischer'; 'Nathan Whitehorn'
> Subject: [CFT] Installer Enhancement -- dpv
> 
> Hi all,
> 
> I've completed a significant enhancement to bsdinstall's distextract.
> 
> Current code:
> http://svnweb.freebsd.org/base/head/usr.sbin/bsdinstall/distextract/
> 
> Proposed Patch:
> http://druidbsd.sf.net/download/dpv-1.1-freebsd-head-patch-20140830.txt
> 
> NB: Proposed commit message further below (after length "Story" section).
> 
> Proposal is to commit this in 2 weeks and MFC to stable/10 *after* the
> 10.1-RELEASE (likely January MFC).
> 
> Patched FreeBSD-9.3-STABLE-i386-20140820-r270206-disc1.iso:
> http://locheil.shxd.cx/FreeBSD-9.3-i386+dpv-1.1.iso
> 
> I'd like to ask for community help in testing the improved distextract
> (especially over serial).
> 
> NOTE: The only thing that I've changed in this patch and the above
> patched image was the distextract code. So the unpacking of the OS
> to the target installation media will look different than it does
> currently, but other than that no changes.
> 
> Story:
> 
> I really liked the direction that bsdinstall took in utilizing dialog(3)'s
> dialog_mixedgauge() widget -- allowing us to, unlike sysinstall, show
> overall progress for multiple items. However, I wanted to bring back
> some things from sysinstall which were nice -- such as the status info
> displayed along the bottom of the terminal (showing data through-
> put).
> 
> The problem I had was that dialog_mixedgauge() is not very flexible.
> That being said, there are quite a few places where dialog_mixedgauge()
> is used:
> 
> + bsdinstall distextract
> + bsdinstall distfetch
> 
> And I would really like to use it in bsdconfig for package installation.
> However, due to known short-comings I have not yet utilized that
> widget in bsdconfig.
> 
> Knowing that I would potentially have to duplicate the work I perform
> on distextract two or three times over, I chose to develop a replacement
> for dialog_mixedgauge() in the form of separate library (in its own
> directory).
> 
> The result is the "dpv" library -- styled after "pv" from ports (in the
> sysutils category but does more): http://freshports.org/sysutils/pv
> 
> It also comes with a "dpv" utility. A mixture of bsdconfig, bsdinstall,
> and other utilities should consume both the library and utility:
> 
> + bsdinstall distextract will use dpv(3) in place of dialog_mixedgauge()
> NB: See above-mentioned patch "dpv-1.1-freebsd-head-patch-*.txt"
> + bsdinstall distfetch will use the same
> + bsdconfig packages will use dpv(1) in place of dialog(1) --infobox
> + A new tool "dpkg" will use dpv(3) to visualize pkg(1) EVENT_PIPE data
> + bsdconfig packages will use new "dpkg" tool to visualize pkg mgmt
> versus simply using dialog --infobox as it currently does
> 
> How the dpv(3) library function works is by not using dialog_mixedgauge()
> (which was found to be very inflexible) but rather using dialog(3)'s more
> flexible dialog_gauge() widget. The secret behind getting a better widget
> is that dialog_gauge() allows you to dynamically update the prompt text
> after it has been called to life. The dpv(3) library renders prompt text
> similar to what you get with dialog_mixedgauge() but requires less work,
> is more flexible, and works around the shortcomings of the latter.
> 
> For even more backstory, see my blog:
> http://devinteske.com/freebsd-installer-enhancements/
> 
> Proposed commit message:
> 
> In bsdinstall's distextract, replace mixed_gauge() of dialog(3) with
> new dpv(3) wrapper to dialog(3) dialog_gauge(). The dpv(3) library
provides
> a more flexible and refined interface similar to dialog_mixedgauge()
> however
> is implemented atop the more generalized dialog_gauge() for portability.
> This commit also introduces dpv(1) as a full test program for dpv(3).
> Noticeable improvements in bsdinstall's distextract will be a status line
> showing data rate information (with support for localeconv(3) to format
> numbers according to $LANG or $LC_ALL conversion information), i18n
> support,
> improved auto-sizing of gauge widget, a ``wheel barrow'' to keep the user
> informed that things are moving (even if status/progress has not changed),
> improved color support (mini-progress bars use the same color, if enabled,
> as the main gauge bar), and several other improvements (some not visible).
> dpv stands for "dialog progress view".
> 
> Discussed on:	-current
> Reviewed by:	<your name(s) here>
> Tested by:	jelischer, <your name(s) here>
> Relnotes:	yes
> MFC after:	4 months
> X-MFC-to:	stable/10, stable/9
> --This line, and those below, will be ignored--
> M    usr.sbin/bsdinstall/distextract/Makefile
> M    usr.sbin/bsdinstall/distextract/distextract.c
> M    share/mk/bsd.libnames.mk
> M    lib/Makefile
> A    lib/libdpv
> AM   lib/libdpv/Makefile
> AM   lib/libdpv/dialog_util.c
> AM   lib/libdpv/dialog_util.h
> AM   lib/libdpv/dialogrc.c
> AM   lib/libdpv/dialogrc.h
> AM   lib/libdpv/dprompt.c
> AM   lib/libdpv/dprompt.h
> AM   lib/libdpv/dpv.3
> AM   lib/libdpv/dpv.c
> AM   lib/libdpv/dpv.h
> AM   lib/libdpv/dpv_private.h
> AM   lib/libdpv/status.c
> AM   lib/libdpv/status.h
> AM   lib/libdpv/util.c
> AM   lib/libdpv/util.h
> A    lib/libfigpar
> AM   lib/libfigpar/Makefile
> AM   lib/libfigpar/figpar.3
> AM   lib/libfigpar/figpar.c
> AM   lib/libfigpar/figpar.h
> AM   lib/libfigpar/string_m.c
> AM   lib/libfigpar/string_m.h
> M    usr.bin/Makefile
> A    usr.bin/dpv
> AM   usr.bin/dpv/Makefile
> AM   usr.bin/dpv/dpv.1
> AM   usr.bin/dpv/dpv.c
> AM   usr.bin/dpv/dpv_util.h
> 
> --
> Cheers,
> Devin
Received on Tue Sep 02 2014 - 21:11:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:51 UTC