]> git.pld-linux.org Git - projects/pld-builder.new.git/blob - PLD_Builder/wrap.py
5ff1d524b4550e8deb6863317b112edc3681e604
[projects/pld-builder.new.git] / PLD_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 if sys.version_info[0] == 2:
7     import StringIO
8 else:
9     from io import StringIO
10 import os
11 import time
12
13 # this module, as it deals with internal error handling shouldn't
14 # import anything beside status
15 import status
16
17 try:
18     import mailer
19     def sendmail(trace):
20         m = mailer.Message()
21         m.set_headers(to = status.admin, cc = "%s, %s" % (status.email, status.builder_list), subject = "fatal python exception")
22         m.write("%s\n" % trace)
23         m.write("during: %s\n" % status.get())
24         m.send()
25 except:
26     def sendmail(trace):
27         # don't use mailer.py; it safer this way
28         f = os.popen("/usr/sbin/sendmail -i -t", "w")
29         f.write("""Subject: builder failure
30 To: %s
31 Cc: %s, %s
32 Date: %s
33 X-PLD-Builder: fatal error report
34
35 %s
36
37 during: %s
38 """ % (status.admin, status.email, status.builder_list,
39              time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()),
40              trace, status))
41         f.close()
42
43 def wrap(main):
44     try:
45         main()
46     except:
47         exctype, value = sys.exc_info()[:2]
48         if exctype == SystemExit:
49             sys.exit(value)
50         s = StringIO.StringIO()
51         traceback.print_exc(file = s, limit = 20)
52
53         log.alert("fatal python exception")
54         log.alert(s.getvalue())
55         log.alert("during: %s" % status.get())
56
57         sendmail(s.getvalue())
58
59         sys.exit(1)
This page took 0.104073 seconds and 2 git commands to generate.