summaryrefslogtreecommitdiffstats
path: root/meta/classes/report-error.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/report-error.bbclass')
-rw-r--r--meta/classes/report-error.bbclass63
1 files changed, 49 insertions, 14 deletions
diff --git a/meta/classes/report-error.bbclass b/meta/classes/report-error.bbclass
index 9cb6b0bd31..2b880c8b0c 100644
--- a/meta/classes/report-error.bbclass
+++ b/meta/classes/report-error.bbclass
@@ -4,9 +4,8 @@
4# Copyright (C) 2013 Intel Corporation 4# Copyright (C) 2013 Intel Corporation
5# Author: Andreea Brandusa Proca <andreea.b.proca@intel.com> 5# Author: Andreea Brandusa Proca <andreea.b.proca@intel.com>
6# 6#
7# Licensed under the MIT license, see COPYING.MIT for details 7# SPDX-License-Identifier: MIT
8 8#
9inherit base
10 9
11ERR_REPORT_DIR ?= "${LOG_DIR}/error-report" 10ERR_REPORT_DIR ?= "${LOG_DIR}/error-report"
12 11
@@ -40,6 +39,19 @@ def get_conf_data(e, filename):
40 jsonstring=jsonstring + line 39 jsonstring=jsonstring + line
41 return jsonstring 40 return jsonstring
42 41
42def get_common_data(e):
43 data = {}
44 data['machine'] = e.data.getVar("MACHINE")
45 data['build_sys'] = e.data.getVar("BUILD_SYS")
46 data['distro'] = e.data.getVar("DISTRO")
47 data['target_sys'] = e.data.getVar("TARGET_SYS")
48 data['branch_commit'] = str(oe.buildcfg.detect_branch(e.data)) + ": " + str(oe.buildcfg.detect_revision(e.data))
49 data['bitbake_version'] = e.data.getVar("BB_VERSION")
50 data['layer_version'] = get_layers_branch_rev(e.data)
51 data['local_conf'] = get_conf_data(e, 'local.conf')
52 data['auto_conf'] = get_conf_data(e, 'auto.conf')
53 return data
54
43python errorreport_handler () { 55python errorreport_handler () {
44 import json 56 import json
45 import codecs 57 import codecs
@@ -57,19 +69,10 @@ python errorreport_handler () {
57 if isinstance(e, bb.event.BuildStarted): 69 if isinstance(e, bb.event.BuildStarted):
58 bb.utils.mkdirhier(logpath) 70 bb.utils.mkdirhier(logpath)
59 data = {} 71 data = {}
60 machine = e.data.getVar("MACHINE") 72 data = get_common_data(e)
61 data['machine'] = machine
62 data['build_sys'] = e.data.getVar("BUILD_SYS")
63 data['nativelsb'] = nativelsb() 73 data['nativelsb'] = nativelsb()
64 data['distro'] = e.data.getVar("DISTRO")
65 data['target_sys'] = e.data.getVar("TARGET_SYS")
66 data['failures'] = [] 74 data['failures'] = []
67 data['component'] = " ".join(e.getPkgs()) 75 data['component'] = " ".join(e.getPkgs())
68 data['branch_commit'] = str(base_detect_branch(e.data)) + ": " + str(base_detect_revision(e.data))
69 data['bitbake_version'] = e.data.getVar("BB_VERSION")
70 data['layer_version'] = get_layers_branch_rev(e.data)
71 data['local_conf'] = get_conf_data(e, 'local.conf')
72 data['auto_conf'] = get_conf_data(e, 'auto.conf')
73 lock = bb.utils.lockfile(datafile + '.lock') 76 lock = bb.utils.lockfile(datafile + '.lock')
74 errorreport_savedata(e, data, "error-report.txt") 77 errorreport_savedata(e, data, "error-report.txt")
75 bb.utils.unlockfile(lock) 78 bb.utils.unlockfile(lock)
@@ -78,6 +81,7 @@ python errorreport_handler () {
78 task = e.task 81 task = e.task
79 taskdata={} 82 taskdata={}
80 log = e.data.getVar('BB_LOGFILE') 83 log = e.data.getVar('BB_LOGFILE')
84 taskdata['recipe'] = e.data.expand("${PN}")
81 taskdata['package'] = e.data.expand("${PF}") 85 taskdata['package'] = e.data.expand("${PF}")
82 taskdata['task'] = task 86 taskdata['task'] = task
83 if log: 87 if log:
@@ -108,6 +112,37 @@ python errorreport_handler () {
108 errorreport_savedata(e, jsondata, "error-report.txt") 112 errorreport_savedata(e, jsondata, "error-report.txt")
109 bb.utils.unlockfile(lock) 113 bb.utils.unlockfile(lock)
110 114
115 elif isinstance(e, bb.event.NoProvider):
116 bb.utils.mkdirhier(logpath)
117 data = {}
118 data = get_common_data(e)
119 data['nativelsb'] = nativelsb()
120 data['failures'] = []
121 data['component'] = str(e._item)
122 taskdata={}
123 taskdata['log'] = str(e)
124 taskdata['package'] = str(e._item)
125 taskdata['task'] = "Nothing provides " + "'" + str(e._item) + "'"
126 data['failures'].append(taskdata)
127 lock = bb.utils.lockfile(datafile + '.lock')
128 errorreport_savedata(e, data, "error-report.txt")
129 bb.utils.unlockfile(lock)
130
131 elif isinstance(e, bb.event.ParseError):
132 bb.utils.mkdirhier(logpath)
133 data = {}
134 data = get_common_data(e)
135 data['nativelsb'] = nativelsb()
136 data['failures'] = []
137 data['component'] = "parse"
138 taskdata={}
139 taskdata['log'] = str(e._msg)
140 taskdata['task'] = str(e._msg)
141 data['failures'].append(taskdata)
142 lock = bb.utils.lockfile(datafile + '.lock')
143 errorreport_savedata(e, data, "error-report.txt")
144 bb.utils.unlockfile(lock)
145
111 elif isinstance(e, bb.event.BuildCompleted): 146 elif isinstance(e, bb.event.BuildCompleted):
112 lock = bb.utils.lockfile(datafile + '.lock') 147 lock = bb.utils.lockfile(datafile + '.lock')
113 jsondata = json.loads(errorreport_getdata(e)) 148 jsondata = json.loads(errorreport_getdata(e))
@@ -121,4 +156,4 @@ python errorreport_handler () {
121} 156}
122 157
123addhandler errorreport_handler 158addhandler errorreport_handler
124errorreport_handler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskFailed" 159errorreport_handler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskFailed bb.event.NoProvider bb.event.ParseError"