Hi,

I have tested this patch and it works for me.

Thanks,
Sujith H

On Fri, Oct 7, 2016 at 10:17 PM, Michael Wood <michael.g.w...@intel.com>
wrote:

> WIP fix unidentified layer and try to stop the buildinfohelper and
> localhostbecontroller from getting confused between non layers and the
> toaster-custom-images layer
> ---
>  bitbake/lib/bb/ui/buildinfohelper.py               | 11 ++----
>  .../toaster/bldcontrol/localhostbecontroller.py    | 44
> +++++++++++++++-------
>  bitbake/lib/toaster/orm/models.py                  |  3 +-
>  bitbake/lib/toaster/toastergui/api.py              |  4 +-
>  4 files changed, 39 insertions(+), 23 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/
> buildinfohelper.py
> index 5b69660..82e38ae 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
>  from orm.models import Package, Package_File, Target_Installed_Package,
> Target_File
>  from orm.models import Task_Dependency, Package_Dependency
>  from orm.models import Recipe_Dependency, Provides
> -from orm.models import Project, CustomImagePackage, CustomImageRecipe
> +from orm.models import Project, CustomImagePackage
>  from orm.models import signal_runbuilds
>
>  from bldcontrol.models import BuildEnvironment, BuildRequest
> @@ -361,11 +361,6 @@ class ORMWrapper(object):
>
>      def get_update_layer_version_object(self, build_obj, layer_obj,
> layer_version_information):
>          if isinstance(layer_obj, Layer_Version):
> -            # Special case the toaster-custom-images layer which is
> created
> -            # on the fly so don't update the values which may cause the
> layer
> -            # to be duplicated on a future get_or_create
> -            if layer_obj.layer.name == CustomImageRecipe.LAYER_NAME:
> -                return layer_obj
>              # We already found our layer version for this build so just
>              # update it with the new build information
>              logger.debug("We found our layer from toaster")
> @@ -629,6 +624,8 @@ class ORMWrapper(object):
>                      recipe = self._cached_get(
>                          Recipe,
>                          name=built_recipe.name,
> +                        layer_version__layer__name=
> +                        built_recipe.layer_version.layer.name,
>                          layer_version__build=None,
>                          layer_version__release=
>                          built_recipe.layer_version.release,
> @@ -637,7 +634,7 @@ class ORMWrapper(object):
>                      )
>                  except (Recipe.DoesNotExist,
>                          Recipe.MultipleObjectsReturned) as e:
> -                    logger.info("We did not find one recipe for the"
> +                    logger.info("We did not find one recipe for the "
>                                  "configuration data package %s %s" % (p,
> e))
>                      continue
>
> diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> index a64e89b..50c0b5d 100644
> --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> @@ -198,8 +198,6 @@ class LocalhostBEController(
> BuildEnvironmentController):
>                  if name != "bitbake":
>                      layerlist.append(localdirpath.rstrip("/"))
>
> -        logger.debug("localhostbecontroller: current layer list %s " %
> pformat(layerlist))
> -
>          # 5. create custom layer and add custom recipes to it
>          layerpath = os.path.join(self.be.builddir,
>                                   CustomImageRecipe.LAYER_NAME)
> @@ -222,19 +220,35 @@ class LocalhostBEController(
> BuildEnvironmentController):
>                  with open(config, "w") as conf:
>                      conf.write('BBPATH .= ":${LAYERDIR}"\nBBFILES +=
> "${LAYERDIR}/recipes/*.bb"\n')
>
> +            BRLayer.objects.get_or_create(req=target.req,
> +                                          name=layer.name,
> +                                          dirpath=layerpath,
> +                                          giturl="file://%s" % layerpath)
> +
>              # Update the Layer_Version dirpath that has our base_recipe in
>              # to be able to read the base recipe to then  generate the
>              # custom recipe.
> +            logger.info(customrecipe.base_recipe.layer_version)
> +
>              br_layer_base_recipe = layers.get(
>                  layer_version=customrecipe.base_recipe.layer_version)
>
> -            br_layer_base_dirpath = \
> -                    os.path.join(self.be.sourcedir,
> -                                 self.getGitCloneDirectory(
> -                                     br_layer_base_recipe.giturl,
> -                                     br_layer_base_recipe.commit),
> -                                 customrecipe.base_recipe.
> layer_version.dirpath
> -                                )
> +            # If the layer is one that we've cloned we know where it lives
> +            if br_layer_base_recipe.giturl and
> br_layer_base_recipe.commit:
> +                layer_path = self.getGitCloneDirectory(
> +                    br_layer_base_recipe.giturl,
> +                    br_layer_base_recipe.commit)
> +            # Otherwise it's a local layer
> +            elif br_layer_base_recipe.local_source_dir:
> +                layer_path = br_layer_base_recipe.local_source_dir
> +            else:
> +                logger.error("Unable to workout the dir path for the
> custom"
> +                             " image recipe")
> +
> +            br_layer_base_dirpath = os.path.join(
> +                self.be.sourcedir,
> +                layer_path,
> +                customrecipe.base_recipe.layer_version.dirpath)
>
>              customrecipe.base_recipe.layer_version.dirpath = \
>                           br_layer_base_dirpath
> @@ -249,21 +263,25 @@ class LocalhostBEController(
> BuildEnvironmentController):
>
>              # Update the layer and recipe objects
>              customrecipe.layer_version.dirpath = layerpath
> +            customrecipe.layer_version.layer.local_source_dir = layerpath
> +            customrecipe.layer_version.layer.save()
>              customrecipe.layer_version.save()
>
>              customrecipe.file_path = recipe_path
>              customrecipe.save()
>
>              # create *Layer* objects needed for build machinery to work
> -            BRLayer.objects.get_or_create(req=target.req,
> -                                          name=layer.name,
> -                                          dirpath=layerpath,
> -                                          giturl="file://%s" % layerpath)
> +
> +
> +            nongitlayerlist.append(layerpath)
> +
>          if os.path.isdir(layerpath):
>              layerlist.append(layerpath)
>
>          self.islayerset = True
>          layerlist.extend(nongitlayerlist)
> +
> +        logger.debug("localhostbecontroller: current layer list %s " %
> pformat(layerlist))
>          return layerlist
>
>      def readServerLogFile(self):
> diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/
> models.py
> index a7de57c..2c1edc9 100644
> --- a/bitbake/lib/toaster/orm/models.py
> +++ b/bitbake/lib/toaster/orm/models.py
> @@ -1631,7 +1631,8 @@ class CustomImageRecipe(Recipe):
>          if base_recipe_path:
>              base_recipe = open(base_recipe_path, 'r').read()
>          else:
> -            raise IOError("Based on recipe file not found")
> +            raise IOError("Based on recipe file not found: %s" %
> +                          base_recipe_path)
>
>          # Add a special case for when the recipe we have based a custom
> image
>          # recipe on requires another recipe.
> diff --git a/bitbake/lib/toaster/toastergui/api.py b/bitbake/lib/toaster/
> toastergui/api.py
> index ae1f150..e4c3b84 100644
> --- a/bitbake/lib/toaster/toastergui/api.py
> +++ b/bitbake/lib/toaster/toastergui/api.py
> @@ -293,8 +293,7 @@ class XhrCustomRecipe(View):
>              # create layer 'Custom layer' and verion if needed
>              layer = Layer.objects.get_or_create(
>                  name=CustomImageRecipe.LAYER_NAME,
> -                summary="Layer for custom recipes",
> -                vcs_url="file:///toaster_created_layer")[0]
> +                summary="Layer for custom recipes")[0]
>
>              # Check if we have a layer version already
>              # We don't use get_or_create here because the dirpath will
> change
> @@ -306,6 +305,7 @@ class XhrCustomRecipe(View):
>                  lver, created = Layer_Version.objects.get_or_create(
>                      project=params['project'],
>                      layer=layer,
> +                    layer_source=LayerSource.TYPE_LOCAL,
>                      dirpath="toaster_created_layer")
>
>              # Add a dependency on our layer to the base recipe's layer
> --
> 2.7.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>



-- 
സുജിത് ഹരിദാസന്
Bangalore
<Project>Contributor to KDE project
<Project>Contributor to Yocto project
http://fci.wikia.com/wiki/Anti-DRM-Campaign
<Blog> http://sujithh.info
C-x C-c
-- 
_______________________________________________
toaster mailing list
toaster@yoctoproject.org
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to