upstreamed and pushed to toaster-next. -b
On Fri, Oct 16, 2015 at 9:36 AM, Ed Bartosh <[email protected]> wrote: > Target objects are created before the build if build is > started from UI in build mode. However, in analysis mode Target > objects don't exist and need to be created using information > from bitbake events. > > Added new API call get_or_create_targets to retrive existing > target objects or create them if they don't exist yet. > > Signed-off-by: Ed Bartosh <[email protected]> > Signed-off-by: Elliot Smith <[email protected]> > --- > bitbake/lib/bb/ui/buildinfohelper.py | 36 > +++++++++++++++++++++--------------- > 1 file changed, 21 insertions(+), 15 deletions(-) > > diff --git a/bitbake/lib/bb/ui/buildinfohelper.py > b/bitbake/lib/bb/ui/buildinfohelper.py > index 286fb6a..2fc1a43 100644 > --- a/bitbake/lib/bb/ui/buildinfohelper.py > +++ b/bitbake/lib/bb/ui/buildinfohelper.py > @@ -162,8 +162,6 @@ class ORMWrapper(object): > build.bitbake_version=build_info['bitbake_version'] > build.save() > > - Target.objects.filter(build = build).delete() > - > else: > build = Build.objects.create( > project = prj, > @@ -184,18 +182,26 @@ class ORMWrapper(object): > > return build > > - def create_target_objects(self, target_info): > - assert 'build' in target_info > - assert 'targets' in target_info > - > - targets = [] > - for tgt_name in target_info['targets']: > - tgt_object = Target.objects.create( build = target_info['build'], > - target = tgt_name, > - is_image = False, > - ) > - targets.append(tgt_object) > - return targets > + @staticmethod > + def get_or_create_targets(target_info): > + result = [] > + for target in target_info['targets']: > + task = '' > + if ':' in target: > + target, task = target.split(':', 1) > + if task.startswith('do_'): > + task = task[3:] > + if task == 'build': > + task = '' > + obj, created = > Target.objects.get_or_create(build=target_info['build'], > + target=target) > + if created: > + obj.is_image = False > + if task: > + obj.task = task > + obj.save() > + result.append(obj) > + return result > > def update_build_object(self, build, errors, warnings, taskfailures): > assert isinstance(build,Build) > @@ -950,7 +956,7 @@ class BuildInfoHelper(object): > target_information['targets'] = event._pkgs > target_information['build'] = build_obj > > - self.internal_state['targets'] = > self.orm_wrapper.create_target_objects(target_information) > + self.internal_state['targets'] = > self.orm_wrapper.get_or_create_targets(target_information) > > # Save build configuration > data = self.server.runCommand(["getAllKeysWithFlags", ["doc", > "func"]])[0] > -- > 2.1.4 > > -- > _______________________________________________ > toaster mailing list > [email protected] > https://lists.yoctoproject.org/listinfo/toaster -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
