Bug #261852 - If an unexpected exception is raise from emerge_main() then
authorZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 07:44:10 +0000 (07:44 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 07:44:10 +0000 (07:44 -0000)
show the traceback after the mod_echo output to that the traceback isn't
obscured by mod_echo flooding. (trunk r12814)

svn path=/main/branches/2.1.6/; revision=13046

bin/emerge

index b07ad9e0e4d6587ed10dfb856c4cc76c7d735c96..b95a2f5b2491923e89b703886be946c14566cc9d 100755 (executable)
@@ -44,4 +44,20 @@ if __name__ == "__main__":
        except ParseError, e:
                sys.stderr.write("%s\n" % str(e))
                sys.exit(1)
+       except SystemExit:
+               raise
+       except Exception:
+               # If an unexpected exception occurs then we don't want the mod_echo
+               # output to obscure the traceback, so dump the mod_echo output before
+               # showing the traceback.
+               import traceback
+               tb_str = traceback.format_exc()
+               try:
+                       from portage.elog import mod_echo
+               except ImportError:
+                       pass
+               else:
+                       mod_echo.finalize()
+               sys.stderr.write(tb_str)
+               sys.exit(1)
        sys.exit(retval)