summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-11-24 11:20:00 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-30 15:48:10 +0000
commit30a9f65dcc043c1f51fd3128653ea5ecef8e25a0 (patch)
treedcf3d5ef0a4d62469d234954ea3edaeb9bd1ccf5 /bitbake/lib/toaster
parentfa5ea98d3b4610e94a9bf8eae7801e52984defb6 (diff)
downloadpoky-30a9f65dcc043c1f51fd3128653ea5ecef8e25a0.tar.gz
bitbake: toaster: buildinfohelper toaster-custom-images layer
This fixes the unidentified layers issue by making the toaster-custom-images layer a local layer. By doing this we also fix the git assumptions made for the local layers which stop recipes and other meta data being associated with them. This also removed some of the special casing previously needed when we didn't have the concept of a local (non git) layer. Also rename created flag var to a have a different var for each returned value so that the same value isn't used multiple times. [YOCTO #10220] (Bitbake rev: ba5332d4960d7f4f79aef63136796e2fa67284e3) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster')
-rw-r--r--bitbake/lib/toaster/bldcontrol/localhostbecontroller.py25
-rw-r--r--bitbake/lib/toaster/orm/models.py3
-rw-r--r--bitbake/lib/toaster/toastergui/api.py16
3 files changed, 30 insertions, 14 deletions
diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
index 11335ac393..18870d9612 100644
--- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -228,13 +228,22 @@ class LocalhostBEController(BuildEnvironmentController):
228 br_layer_base_recipe = layers.get( 228 br_layer_base_recipe = layers.get(
229 layer_version=customrecipe.base_recipe.layer_version) 229 layer_version=customrecipe.base_recipe.layer_version)
230 230
231 br_layer_base_dirpath = \ 231 # If the layer is one that we've cloned we know where it lives
232 os.path.join(self.be.sourcedir, 232 if br_layer_base_recipe.giturl and br_layer_base_recipe.commit:
233 self.getGitCloneDirectory( 233 layer_path = self.getGitCloneDirectory(
234 br_layer_base_recipe.giturl, 234 br_layer_base_recipe.giturl,
235 br_layer_base_recipe.commit), 235 br_layer_base_recipe.commit)
236 customrecipe.base_recipe.layer_version.dirpath 236 # Otherwise it's a local layer
237 ) 237 elif br_layer_base_recipe.local_source_dir:
238 layer_path = br_layer_base_recipe.local_source_dir
239 else:
240 logger.error("Unable to workout the dir path for the custom"
241 " image recipe")
242
243 br_layer_base_dirpath = os.path.join(
244 self.be.sourcedir,
245 layer_path,
246 customrecipe.base_recipe.layer_version.dirpath)
238 247
239 customrecipe.base_recipe.layer_version.dirpath = \ 248 customrecipe.base_recipe.layer_version.dirpath = \
240 br_layer_base_dirpath 249 br_layer_base_dirpath
@@ -249,6 +258,8 @@ class LocalhostBEController(BuildEnvironmentController):
249 258
250 # Update the layer and recipe objects 259 # Update the layer and recipe objects
251 customrecipe.layer_version.dirpath = layerpath 260 customrecipe.layer_version.dirpath = layerpath
261 customrecipe.layer_version.layer.local_source_dir = layerpath
262 customrecipe.layer_version.layer.save()
252 customrecipe.layer_version.save() 263 customrecipe.layer_version.save()
253 264
254 customrecipe.file_path = recipe_path 265 customrecipe.file_path = recipe_path
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index b24e9c5492..fd15fbe7be 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -1636,7 +1636,8 @@ class CustomImageRecipe(Recipe):
1636 if base_recipe_path: 1636 if base_recipe_path:
1637 base_recipe = open(base_recipe_path, 'r').read() 1637 base_recipe = open(base_recipe_path, 'r').read()
1638 else: 1638 else:
1639 raise IOError("Based on recipe file not found") 1639 raise IOError("Based on recipe file not found: %s" %
1640 base_recipe_path)
1640 1641
1641 # Add a special case for when the recipe we have based a custom image 1642 # Add a special case for when the recipe we have based a custom image
1642 # recipe on requires another recipe. 1643 # recipe on requires another recipe.
diff --git a/bitbake/lib/toaster/toastergui/api.py b/bitbake/lib/toaster/toastergui/api.py
index ae1f150770..4851047bfa 100644
--- a/bitbake/lib/toaster/toastergui/api.py
+++ b/bitbake/lib/toaster/toastergui/api.py
@@ -291,10 +291,13 @@ class XhrCustomRecipe(View):
291 return error_response("recipe-already-exists") 291 return error_response("recipe-already-exists")
292 292
293 # create layer 'Custom layer' and verion if needed 293 # create layer 'Custom layer' and verion if needed
294 layer = Layer.objects.get_or_create( 294 layer, l_created = Layer.objects.get_or_create(
295 name=CustomImageRecipe.LAYER_NAME, 295 name=CustomImageRecipe.LAYER_NAME,
296 summary="Layer for custom recipes", 296 summary="Layer for custom recipes")
297 vcs_url="file:///toaster_created_layer")[0] 297
298 if l_created:
299 layer.local_source_dir = "toaster_created_layer"
300 layer.save()
298 301
299 # Check if we have a layer version already 302 # Check if we have a layer version already
300 # We don't use get_or_create here because the dirpath will change 303 # We don't use get_or_create here because the dirpath will change
@@ -303,9 +306,10 @@ class XhrCustomRecipe(View):
303 Q(layer=layer) & 306 Q(layer=layer) &
304 Q(build=None)).last() 307 Q(build=None)).last()
305 if lver is None: 308 if lver is None:
306 lver, created = Layer_Version.objects.get_or_create( 309 lver, lv_created = Layer_Version.objects.get_or_create(
307 project=params['project'], 310 project=params['project'],
308 layer=layer, 311 layer=layer,
312 layer_source=LayerSource.TYPE_LOCAL,
309 dirpath="toaster_created_layer") 313 dirpath="toaster_created_layer")
310 314
311 # Add a dependency on our layer to the base recipe's layer 315 # Add a dependency on our layer to the base recipe's layer
@@ -319,7 +323,7 @@ class XhrCustomRecipe(View):
319 optional=False) 323 optional=False)
320 324
321 # Create the actual recipe 325 # Create the actual recipe
322 recipe, created = CustomImageRecipe.objects.get_or_create( 326 recipe, r_created = CustomImageRecipe.objects.get_or_create(
323 name=request.POST["name"], 327 name=request.POST["name"],
324 base_recipe=params["base"], 328 base_recipe=params["base"],
325 project=params["project"], 329 project=params["project"],
@@ -329,7 +333,7 @@ class XhrCustomRecipe(View):
329 # If we created the object then setup these fields. They may get 333 # If we created the object then setup these fields. They may get
330 # overwritten later on and cause the get_or_create to create a 334 # overwritten later on and cause the get_or_create to create a
331 # duplicate if they've changed. 335 # duplicate if they've changed.
332 if created: 336 if r_created:
333 recipe.file_path = request.POST["name"] 337 recipe.file_path = request.POST["name"]
334 recipe.license = "MIT" 338 recipe.license = "MIT"
335 recipe.version = "0.1" 339 recipe.version = "0.1"