summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py7
-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
4 files changed, 31 insertions, 20 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index 3ddcb2ac6d..e96e93440e 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -42,7 +42,7 @@ from orm.models import Variable, VariableHistory
42from orm.models import Package, Package_File, Target_Installed_Package, Target_File 42from orm.models import Package, Package_File, Target_Installed_Package, Target_File
43from orm.models import Task_Dependency, Package_Dependency 43from orm.models import Task_Dependency, Package_Dependency
44from orm.models import Recipe_Dependency, Provides 44from orm.models import Recipe_Dependency, Provides
45from orm.models import Project, CustomImagePackage, CustomImageRecipe 45from orm.models import Project, CustomImagePackage
46from orm.models import signal_runbuilds 46from orm.models import signal_runbuilds
47 47
48from bldcontrol.models import BuildEnvironment, BuildRequest 48from bldcontrol.models import BuildEnvironment, BuildRequest
@@ -361,11 +361,6 @@ class ORMWrapper(object):
361 361
362 def get_update_layer_version_object(self, build_obj, layer_obj, layer_version_information): 362 def get_update_layer_version_object(self, build_obj, layer_obj, layer_version_information):
363 if isinstance(layer_obj, Layer_Version): 363 if isinstance(layer_obj, Layer_Version):
364 # Special case the toaster-custom-images layer which is created
365 # on the fly so don't update the values which may cause the layer
366 # to be duplicated on a future get_or_create
367 if layer_obj.layer.name == CustomImageRecipe.LAYER_NAME:
368 return layer_obj
369 # We already found our layer version for this build so just 364 # We already found our layer version for this build so just
370 # update it with the new build information 365 # update it with the new build information
371 logger.debug("We found our layer from toaster") 366 logger.debug("We found our layer from toaster")
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"