summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
authorJason Stubbs <jstubbs@gentoo.org>2005-12-23 02:46:03 +0000
committerJason Stubbs <jstubbs@gentoo.org>2005-12-23 02:46:03 +0000
commit853882e3805e31de0e732b5467cd6d8a76bb2a86 (patch)
tree65c8df6bacdcd7e7786928ea74a2497991b75457 /pym/portage_util.py
parent57271bf98ed6d7c318a4e78924e9b4b654a566a4 (diff)
downloadportage-853882e3805e31de0e732b5467cd6d8a76bb2a86.tar.gz
portage-853882e3805e31de0e732b5467cd6d8a76bb2a86.tar.bz2
portage-853882e3805e31de0e732b5467cd6d8a76bb2a86.zip
Generalize portage_util.dump_traceback() and make use of it if importing
a cache module fails. svn path=/main/trunk/; revision=2439
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r--pym/portage_util.py22
1 files changed, 15 insertions, 7 deletions
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)