X-Git-Url: https://git.tld-linux.org/?p=TLD.git;a=blobdiff_plain;f=pld-builder.new%2FPLD_Builder%2Fwrap.py;fp=pld-builder.new%2FPLD_Builder%2Fwrap.py;h=b9809a3709f438e31684a6aad852e0c6378fcb96;hp=0000000000000000000000000000000000000000;hb=90809c8fec988489786ce00247d9a4150070748b;hpb=ab3934fab858112cd552359b18cb980ea07c310b diff --git a/pld-builder.new/PLD_Builder/wrap.py b/pld-builder.new/PLD_Builder/wrap.py new file mode 100644 index 0000000..b9809a3 --- /dev/null +++ b/pld-builder.new/PLD_Builder/wrap.py @@ -0,0 +1,56 @@ +# vi: encoding=utf-8 ts=8 sts=4 sw=4 et + +import sys +import log +import traceback +import StringIO +import os +import time + +# this module, as it deals with internal error handling shouldn't +# import anything beside status +import status + +try: + import mailer + def sendmail(trace): + m = mailer.Message() + m.set_headers(to = status.admin, cc = "%s, %s" % (status.email, status.builder_list), subject = "fatal python exception") + m.write("%s\n" % trace) + m.write("during: %s\n" % status.get()) + m.send() +except: + def sendmail(trace): + # don't use mailer.py; it safer this way + f = os.popen("/usr/sbin/sendmail -i -t", "w") + f.write("""Subject: builder failure +To: %s +Cc: %s, %s +Date: %s +X-PLD-Builder: fatal error report + +%s + +during: %s +""" % (status.admin, status.email, status.builder_list, + time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()), + trace, status)) + f.close() + +def wrap(main): + try: + main() + except: + exctype, value = sys.exc_info()[:2] + if exctype == SystemExit: + sys.exit(value) + s = StringIO.StringIO() + traceback.print_exc(file = s, limit = 20) + + log.alert("fatal python exception") + log.alert(s.getvalue()) + log.alert("during: %s" % status.get()) + + sendmail(s.getvalue()) + + sys.exit(1)