blob: c4e377c4b8b6bd22756e3756425184d8767b4651 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
'''
Created on Jan 6, 2013
__author__ = "Elizabeth 'pidge' Flanagan"
__copyright__ = "Copyright 2012-2013, Intel Corp."
__credits__ = ["Elizabeth Flanagan"]
__license__ = "GPL"
__version__ = "2.0"
__maintainer__ = "Elizabeth Flanagan"
__email__ = "pidge@toganlabs.com"
'''
import os
from buildbot.steps.shell import ShellCommand
from lib.ABTools import get_error_report_worker_dir
class SendErrorReport(ShellCommand):
haltOnFailure = False
flunkOnFailure = True
name = "SendErrorReport"
def __init__(self, factory, argdict=None, **kwargs):
self.factory = factory
for k, v in argdict.iteritems():
setattr(self, k, v)
# Timeout needs to be passed to LoggingBuildStep as a kwarg
self.timeout = 100000
kwargs['timeout']=self.timeout
ShellCommand.__init__(self, **kwargs)
def start(self):
self.buildername=self.getProperty("buildername")
self.buildnumber=self.getProperty("buildnumber")
self.errordir = get_error_report_worker_dir(self.buildername)
self.layerversion_core = int(self.getProperty("layerversion_core", "0"))
self.command=""
if self.layerversion_core < 4:
self.command = "echo 'Skipping Step.'"
else:
if str(os.environ.get('ERROR_REPORT_COLLECT')) == "True":
self.command += "rm -rf ~/.oe-send-error;"
self.command += "echo ${ERROR_REPORT_SUBMITTER_ID};"
self.command += " if [ -z ${ERROR_REPORT_SUBMITTER_ID}+x ]; then host=`hostname`; echo \"yocto-autobuilder-autogenerated-$host\" > ~/.oe-send-error; else echo \"$ERROR_REPORT_SUBMITTER_ID\" > ~/.oe-send-error; fi ; "
self.command += ". ./oe-init-build-env; if [ -d " + self.errordir + " ]; then for x in `ls " + self.errordir + " | grep error_report_`;"
if self.layerversion_core == 4:
if os.environ.get('ERROR_REPORT_SERVER') is not None:
self.er_server = str(os.environ.get('ERROR_REPORT_SERVER'))
else:
self.er_server = ""
self.command += "do send-error-report " + self.errordir +"/$x"+ self.er_server + "; done; fi"
elif self.layerversion_core >= 5:
master = self.build.builder.botmaster.parent
self.er_link = " -l " + master.status.getURLForBuild(self.buildername, self.buildnumber)
if os.environ.get('ERROR_REPORT_SERVER') is not None:
self.er_server = " -s " + str(os.environ.get('ERROR_REPORT_SERVER'))
else:
self.er_server = ""
if os.environ.get('ERROR_REPORT_EMAIL') is not None:
self.er_email = " -e " + str(os.environ.get('ERROR_REPORT_EMAIL'))
else:
self.er_email = ""
if os.environ.get('ERROR_REPORT_NAME') is not None:
self.er_name = " -n " + str(os.environ.get('ERROR_REPORT_NAME'))
else:
self.er_name = ""
self.command += "do send-error-report -y "
self.command += self.er_server + self.er_email
self.command += self.er_name + self.er_link
self.command += " " + self.errordir +"/$x; done; fi"
else:
self.command = "echo 'Layer doesn't support error reporting - Step is noop'"
else:
self.command = "echo 'environment var ERROR_REPORT_COLLECT not set - Step is noop'"
self.description = ["Sending error reports"]
ShellCommand.start(self)
|