diff options
| -rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index a3401ceda9..e428e4c649 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py | |||
| @@ -117,15 +117,14 @@ class ORMWrapper(object): | |||
| 117 | 117 | ||
| 118 | if brbe is not None: | 118 | if brbe is not None: |
| 119 | from bldcontrol.models import BuildEnvironment, BuildRequest | 119 | from bldcontrol.models import BuildEnvironment, BuildRequest |
| 120 | try: | 120 | br, be = brbe.split(":") |
| 121 | br, be = brbe.split(":") | 121 | |
| 122 | buildrequest = BuildRequest.objects.get(pk = br) | 122 | buildrequest = BuildRequest.objects.get(pk = br) |
| 123 | buildrequest.build = build | 123 | buildrequest.build = build |
| 124 | buildrequest.save() | 124 | buildrequest.save() |
| 125 | build.project_id = buildrequest.project_id | 125 | |
| 126 | build.save() | 126 | build.project_id = buildrequest.project_id |
| 127 | except BuildRequest.DoesNotExist: | 127 | build.save() |
| 128 | pass | ||
| 129 | return build | 128 | return build |
| 130 | 129 | ||
| 131 | def create_target_objects(self, target_info): | 130 | def create_target_objects(self, target_info): |
| @@ -250,17 +249,30 @@ class ORMWrapper(object): | |||
| 250 | 249 | ||
| 251 | return layer_version_object | 250 | return layer_version_object |
| 252 | 251 | ||
| 253 | def get_update_layer_object(self, layer_information): | 252 | def get_update_layer_object(self, layer_information, brbe): |
| 254 | assert 'name' in layer_information | 253 | assert 'name' in layer_information |
| 255 | assert 'local_path' in layer_information | 254 | assert 'local_path' in layer_information |
| 256 | assert 'layer_index_url' in layer_information | 255 | assert 'layer_index_url' in layer_information |
| 257 | 256 | ||
| 258 | layer_object, created = Layer.objects.get_or_create( | 257 | if brbe is None: |
| 258 | layer_object, created = Layer.objects.get_or_create( | ||
| 259 | name=layer_information['name'], | 259 | name=layer_information['name'], |
| 260 | local_path=layer_information['local_path'], | 260 | local_path=layer_information['local_path'], |
| 261 | layer_index_url=layer_information['layer_index_url']) | 261 | layer_index_url=layer_information['layer_index_url']) |
| 262 | return layer_object | ||
| 263 | else: | ||
| 264 | # we are under managed mode; we must match the layer used in the Project Layer | ||
| 265 | from bldcontrol.models import BuildEnvironment, BuildRequest | ||
| 266 | br, be = brbe.split(":") | ||
| 267 | |||
| 268 | buildrequest = BuildRequest.objects.get(pk = br) | ||
| 269 | |||
| 270 | # we might have a race condition here, as the project layers may change between the build trigger and the actual build execution | ||
| 271 | # but we can only match on the layer name, so the worst thing can happen is a mis-identification of the layer, not a total failure | ||
| 272 | layer_object = buildrequest.project.projectlayer_set.get(layercommit__layer__name=layer_information['name']).layercommit.layer | ||
| 273 | |||
| 274 | return layer_object | ||
| 262 | 275 | ||
| 263 | return layer_object | ||
| 264 | 276 | ||
| 265 | def save_target_file_information(self, build_obj, target_obj, filedata): | 277 | def save_target_file_information(self, build_obj, target_obj, filedata): |
| 266 | assert isinstance(build_obj, Build) | 278 | assert isinstance(build_obj, Build) |
| @@ -689,7 +701,7 @@ class BuildInfoHelper(object): | |||
| 689 | layerinfos = event._localdata | 701 | layerinfos = event._localdata |
| 690 | self.internal_state['lvs'] = {} | 702 | self.internal_state['lvs'] = {} |
| 691 | for layer in layerinfos: | 703 | for layer in layerinfos: |
| 692 | self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer])] = layerinfos[layer]['version'] | 704 | self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version'] |
| 693 | 705 | ||
| 694 | 706 | ||
| 695 | def store_started_build(self, event): | 707 | def store_started_build(self, event): |
