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:
parent
f187553b6d
commit
b06f7cbb94
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue