diff options
Diffstat (limited to 'meta/classes')
-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 c5aaaa8a11..11eee9bdc5 100644 --- a/meta/classes/report-error.bbclass +++ b/meta/classes/report-error.bbclass | |||
@@ -18,7 +18,6 @@ def errorreport_getdata(e): | |||
18 | def errorreport_savedata(e, newdata, file): | 18 | def errorreport_savedata(e, newdata, file): |
19 | import json | 19 | import json |
20 | logpath = e.data.getVar('ERR_REPORT_DIR', True) | 20 | logpath = e.data.getVar('ERR_REPORT_DIR', True) |
21 | bb.utils.mkdirhier(logpath) | ||
22 | datafile = os.path.join(logpath, file) | 21 | datafile = os.path.join(logpath, file) |
23 | with open(datafile, "w") as f: | 22 | with open(datafile, "w") as f: |
24 | json.dump(newdata, f, indent=4, sort_keys=True) | 23 | json.dump(newdata, f, indent=4, sort_keys=True) |
@@ -27,7 +26,11 @@ def errorreport_savedata(e, newdata, file): | |||
27 | python errorreport_handler () { | 26 | python errorreport_handler () { |
28 | import json | 27 | import json |
29 | 28 | ||
29 | logpath = e.data.getVar('ERR_REPORT_DIR', True) | ||
30 | datafile = os.path.join(logpath, "error-report.txt") | ||
31 | |||
30 | if isinstance(e, bb.event.BuildStarted): | 32 | if isinstance(e, bb.event.BuildStarted): |
33 | bb.utils.mkdirhier(logpath) | ||
31 | data = {} | 34 | data = {} |
32 | machine = e.data.getVar("MACHINE", False) | 35 | machine = e.data.getVar("MACHINE", False) |
33 | data['machine'] = machine | 36 | data['machine'] = machine |
@@ -38,7 +41,9 @@ python errorreport_handler () { | |||
38 | data['failures'] = [] | 41 | data['failures'] = [] |
39 | data['component'] = e.getPkgs()[0] | 42 | data['component'] = e.getPkgs()[0] |
40 | data['branch_commit'] = base_detect_branch(e.data) + ": " + base_detect_revision(e.data) | 43 | data['branch_commit'] = base_detect_branch(e.data) + ": " + base_detect_revision(e.data) |
44 | lock = bb.utils.lockfile(datafile + '.lock') | ||
41 | errorreport_savedata(e, data, "error-report.txt") | 45 | errorreport_savedata(e, data, "error-report.txt") |
46 | bb.utils.unlockfile(lock) | ||
42 | 47 | ||
43 | elif isinstance(e, bb.build.TaskFailed): | 48 | elif isinstance(e, bb.build.TaskFailed): |
44 | task = e.task | 49 | task = e.task |
@@ -56,12 +61,16 @@ python errorreport_handler () { | |||
56 | 61 | ||
57 | else: | 62 | else: |
58 | taskdata['log'] = "No Log" | 63 | taskdata['log'] = "No Log" |
64 | lock = bb.utils.lockfile(datafile + '.lock') | ||
59 | jsondata = json.loads(errorreport_getdata(e)) | 65 | jsondata = json.loads(errorreport_getdata(e)) |
60 | jsondata['failures'].append(taskdata) | 66 | jsondata['failures'].append(taskdata) |
61 | errorreport_savedata(e, jsondata, "error-report.txt") | 67 | errorreport_savedata(e, jsondata, "error-report.txt") |
68 | bb.utils.unlockfile(lock) | ||
62 | 69 | ||
63 | elif isinstance(e, bb.event.BuildCompleted): | 70 | elif isinstance(e, bb.event.BuildCompleted): |
71 | lock = bb.utils.lockfile(datafile + '.lock') | ||
64 | jsondata = json.loads(errorreport_getdata(e)) | 72 | jsondata = json.loads(errorreport_getdata(e)) |
73 | bb.utils.unlockfile(lock) | ||
65 | failures = jsondata['failures'] | 74 | failures = jsondata['failures'] |
66 | if(len(failures) > 0): | 75 | if(len(failures) > 0): |
67 | filename = "error_report_" + e.data.getVar("BUILDNAME", False)+".txt" | 76 | filename = "error_report_" + e.data.getVar("BUILDNAME", False)+".txt" |