diff options
author | Mariano Lopez <mariano.lopez@linux.intel.com> | 2015-06-26 05:56:00 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-08 13:07:17 +0100 |
commit | a77d2cc81cdfeab4040888716772bf5fb6f215c2 (patch) | |
tree | 72942e1ceb1b9e4d33a27d1e682111c504ebf033 /meta | |
parent | 43969db1c7ab4219a1f9bb0f48cd5f5375376829 (diff) | |
download | ast2050-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.bbclass | 11 |
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" |