From 853882e3805e31de0e732b5467cd6d8a76bb2a86 Mon Sep 17 00:00:00 2001 From: Jason Stubbs Date: Fri, 23 Dec 2005 02:46:03 +0000 Subject: Generalize portage_util.dump_traceback() and make use of it if importing a cache module fails. svn path=/main/trunk/; revision=2439 --- pym/portage_util.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'pym/portage_util.py') diff --git a/pym/portage_util.py b/pym/portage_util.py index 9c521ab8a..090ce6735 100644 --- a/pym/portage_util.py +++ b/pym/portage_util.py @@ -456,11 +456,19 @@ def unique_array(array): return mya -def dump_traceback(msg): +def dump_traceback(msg, noiselevel=1): import sys, traceback - writemsg("\n====================================\n", noiselevel=1) - writemsg("Warning: %s\n" % msg, noiselevel=1) - for line in traceback.format_list(traceback.extract_stack()[:-1]): - writemsg(line, noiselevel=1) - writemsg("Please file a bug for %s\n" % sys.argv[0], noiselevel=1) - writemsg("====================================\n\n", noiselevel=1) + info = sys.exc_info() + if not info[2]: + stack = traceback.extract_stack()[:-1] + error = None + else: + stack = traceback.extract_tb(info[2]) + error = str(info[1]) + writemsg("\n====================================\n", noiselevel=noiselevel) + writemsg("%s\n\n" % msg, noiselevel=noiselevel) + for line in traceback.format_list(stack): + writemsg(line, noiselevel=noiselevel) + if error: + writemsg(error+"\n", noiselevel=noiselevel) + writemsg("====================================\n\n", noiselevel=noiselevel) -- cgit v1.2.3-1-g7c22