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