bitbake: toaster: fix SDK artifact capture

Use the TaskArtifacts event to scan the SDK and ESDK manifests
to cleanly collect the respective artifact files.

The previous method was broken when the SDK file deployment moved
from the do_populate_sdk[_ext] tasks to their sstate tasks. That
method is disabled (but not yet removed) in preparation for the
rest of refactor work for the parent #10283 work.

[YOCTO #10850]

(Bitbake rev: 1360d7b847cc01031edb2f4b289fac9560d72fa7)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
David Reyna 2017-04-09 15:38:51 -07:00 committed by Richard Purdie
parent f187553b6d
commit b06f7cbb94
2 changed files with 31 additions and 3 deletions

View File

@ -1663,6 +1663,36 @@ class BuildInfoHelper(object):
break
return endswith
def scan_task_artifacts(self, event):
"""
The 'TaskArtifacts' event passes the manifest file content for the
tasks 'do_deploy', 'do_image_complete', 'do_populate_sdk', and
'do_populate_sdk_ext'. The first two will be implemented later.
"""
task_vars = BuildInfoHelper._get_data_from_event(event)
task_name = task_vars['task'][task_vars['task'].find(':')+1:]
task_artifacts = task_vars['artifacts']
if task_name in ['do_populate_sdk', 'do_populate_sdk_ext']:
targets = [target for target in self.internal_state['targets'] \
if target.task == task_name[3:]]
if not targets:
logger.warning("scan_task_artifacts: SDK targets not found: %s\n", task_name)
return
for artifact_path in task_artifacts:
if not os.path.isfile(artifact_path):
logger.warning("scan_task_artifacts: artifact file not found: %s\n", artifact_path)
continue
for target in targets:
# don't record the file if it's already been added
# to this target
matching_files = TargetSDKFile.objects.filter(
target=target, file_name=artifact_path)
if matching_files.count() == 0:
artifact_size = os.stat(artifact_path).st_size
self.orm_wrapper.save_target_sdk_file(
target, artifact_path, artifact_size)
def _get_image_files(self, deploy_dir_image, image_name, image_file_extensions):
"""
Find files in deploy_dir_image whose basename starts with the

View File

@ -438,9 +438,7 @@ def main(server, eventHandler, params):
elif event.type == "SetBRBE":
buildinfohelper.brbe = buildinfohelper._get_data_from_event(event)
elif event.type == "TaskArtifacts":
# not implemented yet
# see https://bugzilla.yoctoproject.org/show_bug.cgi?id=10283 for details
pass
buildinfohelper.scan_task_artifacts(event)
elif event.type == "OSErrorException":
logger.error(event)
else: