[Toaster] [PATCH] toaster: buildinfohelper Detect command line builds

Smith, Elliot elliot.smith at intel.com
Wed Oct 14 00:17:09 PDT 2015


On 13 October 2015 at 23:11, Michael Wood <michael.g.wood at intel.com> wrote:

> When we're building using toaster as just a listener to bitbake
> (analysis mode) we need to handle the case where the toaster configuration
> data
> isn't present so we don't need to try and update the existing information.
>

As this is in bitbake/lib/bb/ui, do we need a different subject line for
the commit, instead of "toaster"?

Elliot


>
> Signed-off-by: Michael Wood <michael.g.wood at intel.com>
> ---
>  bitbake/lib/bb/ui/buildinfohelper.py | 34
> ++++++++++++++++++++++------------
>  1 file changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/buildinfohelper.py
> b/bitbake/lib/bb/ui/buildinfohelper.py
> index 67c239e..701efa2 100644
> --- a/bitbake/lib/bb/ui/buildinfohelper.py
> +++ b/bitbake/lib/bb/ui/buildinfohelper.py
> @@ -297,9 +297,13 @@ class ORMWrapper(object):
>                  break
>
>
> -
> -        if created and must_exist:
> -            raise NotExisting("Recipe object created when expected to
> exist", recipe_information)
> +        # If we're in analysis mode then we are wholly responsible for
> the data
> +        # and therefore we return the 'real' recipe rather than the build
> +        # history copy of the recipe.
> +        if  recipe_information['layer_version'].build is not None and \
> +            recipe_information['layer_version'].build.project == \
> +                Project.objects.get_default_project():
> +            return recipe
>
>          return built_recipe
>
> @@ -332,14 +336,20 @@ class ORMWrapper(object):
>          assert 'priority' in layer_version_information
>          assert 'local_path' in layer_version_information
>
> +        # If we're doing a command line build then associate this new
> layer with the
> +        # project to avoid it 'contaminating' toaster data
> +        project = None
> +        if build_obj.project == Project.objects.get_default_project():
> +            project = build_obj.project
> +
>          layer_version_object, _ = Layer_Version.objects.get_or_create(
> -                                    build = build_obj,
> -                                    layer = layer_obj,
> -                                    branch =
> layer_version_information['branch'],
> -                                    commit =
> layer_version_information['commit'],
> -                                    priority =
> layer_version_information['priority'],
> -                                    local_path =
> layer_version_information['local_path'],
> -                                    )
> +                                  build = build_obj,
> +                                  layer = layer_obj,
> +                                  branch =
> layer_version_information['branch'],
> +                                  commit =
> layer_version_information['commit'],
> +                                  priority =
> layer_version_information['priority'],
> +                                  local_path =
> layer_version_information['local_path'],
> +                                  project=project)
>
>          self.layer_version_objects.append(layer_version_object)
>
> @@ -844,7 +854,7 @@ class BuildInfoHelper(object):
>          logger.warn("Could not match layer version for recipe path %s :
> %s", path, self.orm_wrapper.layer_version_objects)
>
>          #mockup the new layer
> -        unknown_layer, _ =
> Layer.objects.get_or_create(name="__FIXME__unidentified_layer",
> layer_index_url="")
> +        unknown_layer, _ = Layer.objects.get_or_create(name="Unidentified
> layer", layer_index_url="")
>          unknown_layer_version_obj, _ =
> Layer_Version.objects.get_or_create(layer = unknown_layer, build =
> self.internal_state['build'])
>
>          # append it so we don't run into this error again and again
> @@ -1072,7 +1082,7 @@ class BuildInfoHelper(object):
>              task_information['disk_io'] = taskstats['disk_io']
>              if 'elapsed_time' in taskstats:
>                  task_information['elapsed_time'] =
> taskstats['elapsed_time']
> -            self.orm_wrapper.get_update_task_object(task_information,
> True)  # must exist
> +            self.orm_wrapper.get_update_task_object(task_information)
>
>      def update_and_store_task(self, event):
>          assert 'taskfile' in vars(event)
> --
> 2.1.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>



-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20151014/2b86a91d/attachment-0001.html>


More information about the toaster mailing list