one quick comment:
the poky-contrib branch you pushed up was :

username/toaster/sdk_artifacts_10850

but should have been

dreyna/toaster/sdk_artifacts_10850

:)

-b

an intel employee

On Fri, Apr 7, 2017 at 8:34 PM, David Reyna <[email protected]>
wrote:

> From: David Reyna <[email protected]>
>
> Use the TaskArtifacts event to scan the SDK and ESDK manifests
> to cleanly collect the artifact files.
> The previous method was broken when the SDK file deployment moved
> from the do_populate_sdk[_ext] tasks to their sstate tasks.
>
> [YOCTO #10850]
>
> Signed-off-by: David Reyna <[email protected]>
> ---
>  bitbake/lib/bb/ui/buildinfohelper.py | 30 ++++++++++++++++++++++++++++++
>  bitbake/lib/bb/ui/toasterui.py       |  4 +---
>  meta/classes/toaster.bbclass         | 21 ++++++++++++++++-----
>  3 files changed, 47 insertions(+), 8 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/
> buildinfohelper.py
> index 92d1a1c..077c668 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: \n%s", 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: \n%s", 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 1729902..71f04fa 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:
> diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass
> index 4de380b..296e476 100644
> --- a/meta/classes/toaster.bbclass
> +++ b/meta/classes/toaster.bbclass
> @@ -328,8 +328,18 @@ python toaster_artifacts() {
>      if e.taskname in ["do_deploy", "do_image_complete",
> "do_populate_sdk", "do_populate_sdk_ext"]:
>          d2 = d.createCopy()
>          d2.setVar('FILE', e.taskfile)
> -        d2.setVar('SSTATE_MANMACH', d2.expand("${MACHINE}"))
> +        # Use 'stamp-extra-info' if present, else use workaround
> +        # to determine 'SSTATE_MANMACH'
> +        extrainf = d2.getVarFlag(e.taskname, 'stamp-extra-info')
> +        if extrainf:
> +            d2.setVar('SSTATE_MANMACH', extrainf)
> +        else:
> +            if "do_populate_sdk" == e.taskname:
> +                d2.setVar('SSTATE_MANMACH', d2.expand("${MACHINE}${
> SDKMACHINE}"))
> +            else:
> +                d2.setVar('SSTATE_MANMACH', d2.expand("${MACHINE}"))
>          manifest = oe.sstatesig.sstate_get_manifest_filename(e.taskname[3:],
> d2)[0]
> +
>          if os.access(manifest, os.R_OK):
>              with open(manifest) as fmanifest:
>                  artifacts = [fname.strip() for fname in fmanifest]
> @@ -356,8 +366,9 @@ do_packagedata_setscene[vardepsexclude] +=
> "toaster_package_dumpdata "
>  do_package[postfuncs] += "toaster_package_dumpdata "
>  do_package[vardepsexclude] += "toaster_package_dumpdata "
>
> -do_populate_sdk[postfuncs] += "toaster_artifact_dumpdata "
> -do_populate_sdk[vardepsexclude] += "toaster_artifact_dumpdata "
> +#do_populate_sdk[postfuncs] += "toaster_artifact_dumpdata "
> +#do_populate_sdk[vardepsexclude] += "toaster_artifact_dumpdata "
> +
> +#do_populate_sdk_ext[postfuncs] += "toaster_artifact_dumpdata "
> +#do_populate_sdk_ext[vardepsexclude] += "toaster_artifact_dumpdata "
>
> -do_populate_sdk_ext[postfuncs] += "toaster_artifact_dumpdata "
> -do_populate_sdk_ext[vardepsexclude] += "toaster_artifact_dumpdata "
> --
> 1.9.1
>
> --
> _______________________________________________
> toaster mailing list
> [email protected]
> https://lists.yoctoproject.org/listinfo/toaster
>
-- 
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to