From b06f7cbb9437eff4a89e8edbfea1501135b73912 Mon Sep 17 00:00:00 2001 From: David Reyna Date: Sun, 9 Apr 2017 15:38:51 -0700 Subject: [PATCH] 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 Signed-off-by: Richard Purdie --- bitbake/lib/bb/ui/buildinfohelper.py | 30 ++++++++++++++++++++++++++++ bitbake/lib/bb/ui/toasterui.py | 4 +--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index 92d1a1c394..46be5a50e4 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py @@ -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 diff --git a/bitbake/lib/bb/ui/toasterui.py b/bitbake/lib/bb/ui/toasterui.py index 17299026ab..71f04fa5ce 100644 --- a/bitbake/lib/bb/ui/toasterui.py +++ b/bitbake/lib/bb/ui/toasterui.py @@ -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: