I set out to do something about the useless verbose output you get when
you do an image-update.  However I quickly realized that there might be
two problems here: we need a user-friendly verbose output, and we might
want to have some less user-friendly debug output.  I'm still formulating
what to do about verbose output.

But I got further with the debug output.  The idea I had is mostly about
enabling us to debug problems encountered by end users.  If it was also
a developer productivity tool that would be a bonus.

So to start, I've moved some of the verbose output into a debug mode,
which one can activate either by setting PKG_DEBUG or with --debug.  I've
also left room in the api to direct the debug output to a file.  In
addition, I've added in some debug output; my hope is that we can get
users to submit debug output when reporting problems, as a way to help us
more rapidly diagnose issues when the traceback is insufficient.

To make a debug call, you do this:

        from pkg.misc import debug
        debug("something")

To initialize debugging, you do this:

        from pkg.misc import debug_init
        debug_init(sys.stderr, "DEBUG")

Thoughts, Opinions?  I tried to be super-lightweight and super-simple, but
would be open to a linker style debug architecture (where you'd set
PKG_DEBUG=a,b,c -- see LD_DEBUG in ld.so.1(1)).

Another potential avenue to explore would be to add in support for python
statement tracing (see e.g.
http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html)

Here's an example of an image-update in which one package (SUNWpool)
is downrev.  It's a case where we do reasonably well: A bunch of
binaries delivered by this package do not change between B86 and B90,
including usr/kernel/drv/pool, pooladm, poolcfg, poolbind, etc.

# PKG_DEBUG=1 pkg image-update
DEBUG# debugging enabled (PKG_DEBUG environment variable)
DEBUG# argv: /usr/bin/pkg image-update
DEBUG# PKG_CLIENT_TIMEOUT=30
DEBUG# PKG_TIMEOUT_MAX=4
DEBUG# http_proxy=
DEBUG# PKG_IMAGE=/tmp/z
DEBUG# Image Root: /tmp/z
DEBUG# -- Package Plans -- 
DEBUG# pkg:/[EMAIL PROTECTED],5.11-0.86:20080426T175946Z -> pkg:/[EMAIL 
PROTECTED],5.11-0.90:20080604T145017Z
DEBUG#   depend                                  . -> pkg:/[EMAIL PROTECTED]
DEBUG#   depend                                  . -> pkg:/[EMAIL PROTECTED]
DEBUG#   set                                  fmri -> fmri
DEBUG#   license               SUNWpoolr.copyright -> SUNWpoolr.copyright
DEBUG#   license                SUNWpool.copyright -> SUNWpool.copyright
DEBUG#   file           usr/lib/amd64/libpool.so.1 -> usr/lib/amd64/libpool.so.1
DEBUG#   file                 usr/lib/libpool.so.1 -> usr/lib/libpool.so.1
DEBUG#   file          usr/lib/amd64/llib-lpool.ln -> 
usr/lib/amd64/llib-lpool.ln
DEBUG#   file                usr/lib/llib-lpool.ln -> usr/lib/llib-lpool.ln
DEBUG#   file     usr/lib/rcm/modules/SUNW_pool_rcm.so -> 
usr/lib/rcm/modules/SUNW_pool_rcm.so
DEBUG#   legacy                           SUNWpool -> SUNWpool
DEBUG#   legacy                          SUNWpoolr -> SUNWpoolr
DEBUG#   depend           pkg:/[EMAIL PROTECTED] -> .
DEBUG#   depend          pkg:/[EMAIL PROTECTED] -> .
DEBUG# -- End Package Plans --
DOWNLOAD                                    PKGS       FILES     XFER (MB)
SUNWpool                                     0/1         0/7     0.00/0.45
PHASE                                        ACTIONS
Removal Phase                                    2/2 
Update Phase                                   10/10
Install Phase                                    2/2

Your comments appreciated,

        -dp

-- 
Daniel Price - Solaris Kernel Engineering - [EMAIL PROTECTED] - blogs.sun.com/dp
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to