summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2015-06-26 05:56:00 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-08 13:07:17 +0100
commita77d2cc81cdfeab4040888716772bf5fb6f215c2 (patch)
tree72942e1ceb1b9e4d33a27d1e682111c504ebf033 /meta
parent43969db1c7ab4219a1f9bb0f48cd5f5375376829 (diff)
downloadast2050-yocto-poky-a77d2cc81cdfeab4040888716772bf5fb6f215c2.zip
ast2050-yocto-poky-a77d2cc81cdfeab4040888716772bf5fb6f215c2.tar.gz
report-error.bbclass: Added file syncronization.
errorreport_handler would fail if several errors are triggered at the same time because of two proccess writting to the same file. This patch add the required syncronization to handle concurrent process. [YP #7899] (From OE-Core rev: c7bff5e7fdd2cbf6f22bfe9a74ceb6e19ef3b5d8) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/report-error.bbclass11
1 files changed, 10 insertions, 1 deletions
diff --git a/meta/classes/report-error.bbclass b/meta/classes/report-error.bbclass
index 9edf2ce..78b6ce6 100644
--- a/meta/classes/report-error.bbclass
+++ b/meta/classes/report-error.bbclass
@@ -18,7 +18,6 @@ def errorreport_getdata(e):
def errorreport_savedata(e, newdata, file):
import json
logpath = e.data.getVar('ERR_REPORT_DIR', True)
- bb.utils.mkdirhier(logpath)
datafile = os.path.join(logpath, file)
with open(datafile, "w") as f:
json.dump(newdata, f, indent=4, sort_keys=True)
@@ -27,7 +26,11 @@ def errorreport_savedata(e, newdata, file):
python errorreport_handler () {
import json
+ logpath = e.data.getVar('ERR_REPORT_DIR', True)
+ datafile = os.path.join(logpath, "error-report.txt")
+
if isinstance(e, bb.event.BuildStarted):
+ bb.utils.mkdirhier(logpath)
data = {}
machine = e.data.getVar("MACHINE")
data['machine'] = machine
@@ -38,7 +41,9 @@ python errorreport_handler () {
data['failures'] = []
data['component'] = e.getPkgs()[0]
data['branch_commit'] = base_detect_branch(e.data) + ": " + base_detect_revision(e.data)
+ lock = bb.utils.lockfile(datafile + '.lock')
errorreport_savedata(e, data, "error-report.txt")
+ bb.utils.unlockfile(lock)
elif isinstance(e, bb.build.TaskFailed):
task = e.task
@@ -56,12 +61,16 @@ python errorreport_handler () {
else:
taskdata['log'] = "No Log"
+ lock = bb.utils.lockfile(datafile + '.lock')
jsondata = json.loads(errorreport_getdata(e))
jsondata['failures'].append(taskdata)
errorreport_savedata(e, jsondata, "error-report.txt")
+ bb.utils.unlockfile(lock)
elif isinstance(e, bb.event.BuildCompleted):
+ lock = bb.utils.lockfile(datafile + '.lock')
jsondata = json.loads(errorreport_getdata(e))
+ bb.utils.unlockfile(lock)
failures = jsondata['failures']
if(len(failures) > 0):
filename = "error_report_" + e.data.getVar("BUILDNAME")+".txt"
OpenPOWER on IntegriCloud