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, > DevinReceived 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