[bitbake-devel] [PATCH] toaster: buildinfohelper Detect command line builds
Smith, Elliot
elliot.smith at intel.com
Wed Oct 14 09:15:33 UTC 2015
On 14 October 2015 at 10:09, Elliot Smith <elliot.smith at intel.com> wrote:
> From: Michael Wood <michael.g.wood at intel.com>
>
> 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.
>
I submitted this upstream as was (I decided toaster is probably OK as a
subject), and have added it to toaster-next.
Elliot
>
> Signed-off-by: Michael Wood <michael.g.wood at intel.com>
> Signed-off-by: Elliot Smith <elliot.smith 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 2d76403..a8c884d 100644
> --- a/bitbake/lib/bb/ui/buildinfohelper.py
> +++ b/bitbake/lib/bb/ui/buildinfohelper.py
> @@ -298,9 +298,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
>
> @@ -333,14 +337,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)
>
> @@ -845,7 +855,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
> @@ -1067,7 +1077,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)
> --
> 1.9.3
>
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
>
--
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20151014/d3d3e0cc/attachment-0002.html>
More information about the bitbake-devel
mailing list