]> TLD Linux GIT Repositories - tld-builder.git/blob - TLD_Builder/wrap.py
- more python3 fixes, dropped python2 support
[tld-builder.git] / TLD_Builder / wrap.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import sys
4 import log
5 import traceback
6 import sys
7 from io import StringIO
8 import os
9 import time
10
11 # this module, as it deals with internal error handling shouldn't
12 # import anything beside status
13 import status
14
15 try:
16     import mailer
17     def sendmail(trace):
18         m = mailer.Message()
19         m.set_headers(to = status.admin, cc = "%s, %s" % (status.email, status.builder_list), subject = "fatal python exception")
20         m.write("%s\n" % trace)
21         m.write("during: %s\n" % status.get())
22         m.send()
23 except:
24     def sendmail(trace):
25         # don't use mailer.py; it safer this way
26         f = os.popen("/usr/sbin/sendmail -i -t", "w")
27         f.write("""Subject: builder failure
28 To: %s
29 Cc: %s, %s
30 Date: %s
31 X-TLD-Builder: fatal error report
32
33 %s
34
35 during: %s
36 """ % (status.admin, status.email, status.builder_list,
37              time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()),
38              trace, status))
39         f.close()
40
41 def wrap(main):
42     try:
43         main()
44     except:
45         exctype, value = sys.exc_info()[:2]
46         if exctype == SystemExit:
47             sys.exit(value)
48         s = StringIO()
49         traceback.print_exc(file = s, limit = 20)
50
51         log.alert("fatal python exception")
52         log.alert(s.getvalue())
53         log.alert("during: %s" % status.get())
54
55         sendmail(s.getvalue())
56
57         sys.exit(1)