From 0cc0d19f57d2330bde74d1432dba153e57e8cdd6 Mon Sep 17 00:00:00 2001
From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Sat, 18 Sep 2010 18:15:54 -0700
Subject: [PATCH] setup: make show-tool-versions report entire verbose
 exception stack traces when it fails to find a Python package

---
 misc/build_helpers/show-tool-versions.py | 39 ++++++++++++++----------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/misc/build_helpers/show-tool-versions.py b/misc/build_helpers/show-tool-versions.py
index 7c9bd473..96185cdf 100644
--- a/misc/build_helpers/show-tool-versions.py
+++ b/misc/build_helpers/show-tool-versions.py
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 
-import locale, os, subprocess, sys
+import locale, os, subprocess, sys, traceback
 
 def foldlines(s):
     return s.replace("\n", " ").replace("\r", "")
@@ -13,9 +13,10 @@ def print_platform():
         print "platform:", foldlines(out)
         if hasattr(platform, 'linux_distribution'):
             print "linux_distribution:", repr(platform.linux_distribution())
-    except EnvironmentError, le:
-         sys.stderr.write("Got exception using 'platform': %s\n" % (le,))
-         pass
+    except EnvironmentError:
+        sys.stderr.write("Got exception using 'platform'. Exception follows\n")
+        traceback.print_exc(file=sys.stderr)
+        pass
 
 def print_python_ver():
     print
@@ -40,8 +41,9 @@ def print_stdout(cmdlist, label=None):
         if label is None:
             label = cmdlist[0]
         print label + ': ' + foldlines(res)
-    except EnvironmentError, le:
-        sys.stderr.write("Got exception invoking '%s': %s\n" % (cmdlist[0], le,))
+    except EnvironmentError:
+        sys.stderr.write("Got exception invoking '%s'. Exception follows.\n" % (cmdlist[0],))
+        traceback.print_exc(file=sys.stderr)
         pass
 
 def print_stderr(cmdlist, label=None):
@@ -52,8 +54,9 @@ def print_stderr(cmdlist, label=None):
         if label is None:
             label = cmdlist[0]
         print label + ': ' + foldlines(res)
-    except EnvironmentError, le:
-        sys.stderr.write("Got exception invoking '%s': %s\n" % (cmdlist[0], le,))
+    except EnvironmentError:
+        sys.stderr.write("Got exception invoking '%s'. Exception follows\n" % (cmdlist[0],))
+        traceback.print_exc(file=sys.stderr)
         pass
 
 def print_as_ver():
@@ -67,8 +70,9 @@ def print_as_ver():
         print 'as: ' + foldlines(res[0]+' '+res[1])
         if os.path.exists('a.out'):
             os.remove('a.out')
-    except EnvironmentError, le:
-        sys.stderr.write("Got exception invoking '%s': %s\n" % ('as', le,))
+    except EnvironmentError:
+        sys.stderr.write("Got exception invoking '%s'. Exception follows.\n" % ('as',))
+        traceback.print_exc(file=sys.stderr)
         pass
 
 def print_setuptools_ver():
@@ -77,8 +81,9 @@ def print_setuptools_ver():
         import pkg_resources
         out = str(pkg_resources.require("setuptools"))
         print "setuptools:", foldlines(out)
-    except (ImportError, EnvironmentError), le:
-        sys.stderr.write("Got exception using 'pkg_resources' to get the version of setuptools: %s\n" % (le,))
+    except (ImportError, EnvironmentError):
+        sys.stderr.write("Got exception using 'pkg_resources' to get the version of setuptools. Exception follows\n")
+        traceback.print_exc(file=sys.stderr)
         pass
 
 def print_py_pkg_ver(pkgname):
@@ -87,11 +92,13 @@ def print_py_pkg_ver(pkgname):
         import pkg_resources
         out = str(pkg_resources.require(pkgname))
         print pkgname + ': ' + foldlines(out)
-    except (ImportError, EnvironmentError), le:
-        sys.stderr.write("Got exception using 'pkg_resources' to get the version of %s: %s\n" % (pkgname, le,))
+    except (ImportError, EnvironmentError):
+        sys.stderr.write("Got exception using 'pkg_resources' to get the version of %s. Exception follows.\n" % (pkgname,))
+        traceback.print_exc(file=sys.stderr)
         pass
-    except pkg_resources.DistributionNotFound, le:
-        sys.stderr.write("pkg_resources reported no %s package installed: %s\n" % (pkgname, le,))
+    except pkg_resources.DistributionNotFound:
+        sys.stderr.write("pkg_resources reported no %s package installed. Exception follows.\n" % (pkgname,))
+        traceback.print_exc(file=sys.stderr)
         pass
 
 print_platform()
-- 
2.45.2