bitbake: toasterui: Compatibility patch for daisy and dizzy
This patch brings in changes that allow a toasterUI coming in from 'master' branch to record data from a 'daisy' or 'dizzy' bitbake server. This is needed to allow Toaster to record builds running on older branch releases. (Bitbake rev: 8d75e28e0688a6520311afce36543175f36910b3) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
dc1be9c438
commit
af51fb0674
|
@ -695,10 +695,19 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
################################
|
################################
|
||||||
## external available methods to store information
|
## external available methods to store information
|
||||||
|
@staticmethod
|
||||||
|
def _get_data_from_event(event):
|
||||||
|
evdata = None
|
||||||
|
if '_localdata' in vars(event):
|
||||||
|
evdata = event._localdata
|
||||||
|
elif 'data' in vars(event):
|
||||||
|
evdata = event.data
|
||||||
|
else:
|
||||||
|
raise Exception("Event with neither _localdata or data properties")
|
||||||
|
return evdata
|
||||||
|
|
||||||
def store_layer_info(self, event):
|
def store_layer_info(self, event):
|
||||||
assert '_localdata' in vars(event)
|
layerinfos = BuildInfoHelper._get_data_from_event(event)
|
||||||
layerinfos = event._localdata
|
|
||||||
self.internal_state['lvs'] = {}
|
self.internal_state['lvs'] = {}
|
||||||
for layer in layerinfos:
|
for layer in layerinfos:
|
||||||
self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version']
|
self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version']
|
||||||
|
@ -732,15 +741,16 @@ class BuildInfoHelper(object):
|
||||||
return self.brbe
|
return self.brbe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def update_target_image_file(self, event):
|
def update_target_image_file(self, event):
|
||||||
image_fstypes = self.server.runCommand(["getVariable", "IMAGE_FSTYPES"])[0]
|
image_fstypes = self.server.runCommand(["getVariable", "IMAGE_FSTYPES"])[0]
|
||||||
|
evdata = BuildInfoHelper._get_data_from_event(event)
|
||||||
|
|
||||||
for t in self.internal_state['targets']:
|
for t in self.internal_state['targets']:
|
||||||
if t.is_image == True:
|
if t.is_image == True:
|
||||||
output_files = list(event._localdata.viewkeys())
|
output_files = list(evdata.viewkeys())
|
||||||
for output in output_files:
|
for output in output_files:
|
||||||
if t.target in output and output.split('.rootfs.')[1] in image_fstypes:
|
if t.target in output and output.split('.rootfs.')[1] in image_fstypes:
|
||||||
self.orm_wrapper.save_target_image_file_information(t, output, event._localdata[output])
|
self.orm_wrapper.save_target_image_file_information(t, output, evdata[output])
|
||||||
|
|
||||||
def update_build_information(self, event, errors, warnings, taskfailures):
|
def update_build_information(self, event, errors, warnings, taskfailures):
|
||||||
if 'build' in self.internal_state:
|
if 'build' in self.internal_state:
|
||||||
|
@ -748,8 +758,8 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
|
|
||||||
def store_license_manifest_path(self, event):
|
def store_license_manifest_path(self, event):
|
||||||
deploy_dir = event._localdata['deploy_dir']
|
deploy_dir = BuildInfoHelper._get_data_from_event(event)['deploy_dir']
|
||||||
image_name = event._localdata['image_name']
|
image_name = BuildInfoHelper._get_data_from_event(event)['image_name']
|
||||||
path = deploy_dir + "/licenses/" + image_name + "/"
|
path = deploy_dir + "/licenses/" + image_name + "/"
|
||||||
for target in self.internal_state['targets']:
|
for target in self.internal_state['targets']:
|
||||||
if target.target in image_name:
|
if target.target in image_name:
|
||||||
|
@ -797,7 +807,7 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
|
|
||||||
def store_tasks_stats(self, event):
|
def store_tasks_stats(self, event):
|
||||||
for (taskfile, taskname, taskstats, recipename) in event._localdata:
|
for (taskfile, taskname, taskstats, recipename) in BuildInfoHelper._get_data_from_event(event):
|
||||||
localfilepath = taskfile.split(":")[-1]
|
localfilepath = taskfile.split(":")[-1]
|
||||||
assert localfilepath.startswith("/")
|
assert localfilepath.startswith("/")
|
||||||
|
|
||||||
|
@ -812,7 +822,8 @@ class BuildInfoHelper(object):
|
||||||
task_information['task_name'] = taskname
|
task_information['task_name'] = taskname
|
||||||
task_information['cpu_usage'] = taskstats['cpu_usage']
|
task_information['cpu_usage'] = taskstats['cpu_usage']
|
||||||
task_information['disk_io'] = taskstats['disk_io']
|
task_information['disk_io'] = taskstats['disk_io']
|
||||||
task_information['elapsed_time'] = taskstats['elapsed_time']
|
if 'elapsed_time' in taskstats:
|
||||||
|
task_information['elapsed_time'] = taskstats['elapsed_time']
|
||||||
task_obj = self.orm_wrapper.get_update_task_object(task_information, True) # must exist
|
task_obj = self.orm_wrapper.get_update_task_object(task_information, True) # must exist
|
||||||
|
|
||||||
def update_and_store_task(self, event):
|
def update_and_store_task(self, event):
|
||||||
|
@ -870,7 +881,7 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
|
|
||||||
def store_missed_state_tasks(self, event):
|
def store_missed_state_tasks(self, event):
|
||||||
for (fn, taskname, taskhash, sstatefile) in event._localdata['missed']:
|
for (fn, taskname, taskhash, sstatefile) in BuildInfoHelper._get_data_from_event(event)['missed']:
|
||||||
|
|
||||||
identifier = fn + taskname + "_setscene"
|
identifier = fn + taskname + "_setscene"
|
||||||
recipe_information = self._get_recipe_information_from_taskfile(fn)
|
recipe_information = self._get_recipe_information_from_taskfile(fn)
|
||||||
|
@ -888,7 +899,7 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
self.orm_wrapper.get_update_task_object(task_information)
|
self.orm_wrapper.get_update_task_object(task_information)
|
||||||
|
|
||||||
for (fn, taskname, taskhash, sstatefile) in event._localdata['found']:
|
for (fn, taskname, taskhash, sstatefile) in BuildInfoHelper._get_data_from_event(event)['found']:
|
||||||
|
|
||||||
identifier = fn + taskname + "_setscene"
|
identifier = fn + taskname + "_setscene"
|
||||||
recipe_information = self._get_recipe_information_from_taskfile(fn)
|
recipe_information = self._get_recipe_information_from_taskfile(fn)
|
||||||
|
@ -904,15 +915,14 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
|
|
||||||
def store_target_package_data(self, event):
|
def store_target_package_data(self, event):
|
||||||
assert '_localdata' in vars(event)
|
|
||||||
# for all image targets
|
# for all image targets
|
||||||
for target in self.internal_state['targets']:
|
for target in self.internal_state['targets']:
|
||||||
if target.is_image:
|
if target.is_image:
|
||||||
try:
|
try:
|
||||||
pkgdata = event._localdata['pkgdata']
|
pkgdata = BuildInfoHelper._get_data_from_event(event)['pkgdata']
|
||||||
imgdata = event._localdata['imgdata'][target.target]
|
imgdata = BuildInfoHelper._get_data_from_event(event)['imgdata'][target.target]
|
||||||
self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes'])
|
self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes'])
|
||||||
filedata = event._localdata['filedata'][target.target]
|
filedata = BuildInfoHelper._get_data_from_event(event)['filedata'][target.target]
|
||||||
self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
|
self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# we must have not got the data for this image, nothing to save
|
# we must have not got the data for this image, nothing to save
|
||||||
|
@ -1026,8 +1036,7 @@ class BuildInfoHelper(object):
|
||||||
|
|
||||||
|
|
||||||
def store_build_package_information(self, event):
|
def store_build_package_information(self, event):
|
||||||
assert '_localdata' in vars(event)
|
package_info = BuildInfoHelper._get_data_from_event(event)
|
||||||
package_info = event._localdata
|
|
||||||
self.orm_wrapper.save_build_package_information(self.internal_state['build'],
|
self.orm_wrapper.save_build_package_information(self.internal_state['build'],
|
||||||
package_info,
|
package_info,
|
||||||
self.internal_state['recipes'],
|
self.internal_state['recipes'],
|
||||||
|
|
|
@ -296,10 +296,9 @@ def main(server, eventHandler, params ):
|
||||||
pass
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# print errors to log
|
# print errors to log
|
||||||
logger.error(e)
|
|
||||||
import traceback
|
import traceback
|
||||||
exception_data = traceback.format_exc()
|
exception_data = traceback.format_exc()
|
||||||
print(exception_data)
|
logger.error("%s\n%s" % (e, exception_data))
|
||||||
|
|
||||||
# save them to database, if possible; if it fails, we already logged to console.
|
# save them to database, if possible; if it fails, we already logged to console.
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue