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 _______________________________________________ email@example.com mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"