[Toaster] [PATCH] toaster: Special case the openembedded-core layer to avoid duplicates

Barros Pena, Belen belen.barros.pena at intel.com
Fri Sep 11 06:04:55 PDT 2015



On 10/09/2015 18:47, "toaster-bounces at yoctoproject.org on behalf of
Michael Wood" <toaster-bounces at yoctoproject.org on behalf of
michael.g.wood at intel.com> wrote:

>If the openembedded-core layer is specified in the toasterconf we need
>to treat it differently because we may also get this layer either from
>the layerindex source or I can also be provided locally.

I have been able to build with this for all releases (local, dizzy, fido
and master). The only issue I've found is with the openembedded-core layer
entries generated after each build. If you try to view their layer details
page, you get an error (pasted below), although the cause seems to be a
piece of information we don't need and can be removed.

Cheers

Belén

Environment:


Request Method: GET
Request URL: http://192.168.2.55:8000/toastergui/project/3/layer/370

Django Version: 1.6
Python Version: 2.7.6
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.admin',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'bldcollector',
 'toastermain',
 'south',
 'bldcontrol',
 'orm',
 'toastergui')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Template error:
In template 
/home/yocto/master/bitbake/lib/toaster/toastergui/templates/layerdetails.ht
ml, error at line 268
   Undefined variable or unknown value for: "layerversion.up_branch.name"
   258 :                 <textarea class="span12" rows="6">{% if
layerversion.layer.description %}{{layerversion.layer.description}}{%
endif %}</textarea>


   259 :                 <button class="btn change-btn"
data-layer-prop="description" type="button" >Save</button>


   260 :                 <a href="#" class="btn btn-link cancel">Cancel</a>


   261 :               </form>


   262 :               <i class="icon-pencil"></i>


   263 :               <span class="icon-trash delete-current-value"
data-toggle="tooltip" title="Delete"></span>


   264 :             </dd>


   265 :             {% if layerversion.layer.up_id %}


   266 :             <dt>Layer index</dt>


   267 :             <dd>


   268 :               <a
href="http://layers.openembedded.org/layerindex/branch/
{{layerversion.up_branch.name}} /layer/{{layerversion.layer.name}}">layer
index link</a>


   269 : 


   270 :           </dd>


   271 :           {% endif %}


   272 : 


   273 :         </dl>


   274 :       </div>


   275 : 


   276 :       {% endblock %}


   277 : 

Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py"
in get_response
  114.                     response = wrapped_callback(request,
*callback_args, **callback_kwargs)
File "/home/yocto/master/bitbake/lib/toaster/toastergui/views.py" in
returned_wrapper
  167.                 return render(request, template, context)
File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py"
in render
  53.     return HttpResponse(loader.render_to_string(*args, **kwargs),
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in
render_to_string
  169.         return t.render(context_instance)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
render
  140.             return self._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
_render
  134.         return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in
render_node
  78.             return node.render(context)
File 
"/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in
render
  123.         return compiled_parent._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
_render
  134.         return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in
render_node
  78.             return node.render(context)
File 
"/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in
render
  62.             result = block.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in
render_node
  78.             return node.render(context)
File 
"/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in
render
  305.                 return nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in
render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in
render
  88.             output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in
resolve
  595.                             return
settings.TEMPLATE_STRING_IF_INVALID % self.var
File "/home/yocto/master/bitbake/lib/toaster/toastermain/settings.py" in
__mod__
  399.             "Undefined variable or unknown value for: \"%s\"" %
other)

Exception Type: TemplateSyntaxError at /toastergui/project/3/layer/370
Exception Value: Undefined variable or unknown value for:
"layerversion.up_branch.name"




>
>Signed-off-by: Michael Wood <michael.g.wood at intel.com>
>---
> bitbake/lib/toaster/orm/models.py | 21 +++++++++++++++++++++
> meta-yocto/conf/toasterconf.json  |  2 +-
> 2 files changed, 22 insertions(+), 1 deletion(-)
>
>diff --git a/bitbake/lib/toaster/orm/models.py
>b/bitbake/lib/toaster/orm/models.py
>index e4d2e87..bdb1124 100644
>--- a/bitbake/lib/toaster/orm/models.py
>+++ b/bitbake/lib/toaster/orm/models.py
>@@ -828,6 +828,7 @@ class LayerIndexLayerSource(LayerSource):
>         import urllib2, urlparse, json
>         import os
>         proxy_settings = os.environ.get("http_proxy", None)
>+        oe_core_layer = 'openembedded-core'
> 
>         def _get_json_response(apiurl = self.apiurl):
>             _parsedurl = urlparse.urlparse(apiurl)
>@@ -872,6 +873,25 @@ class LayerIndexLayerSource(LayerSource):
>         if not connection.features.autocommits_when_autocommit_is_off:
>             transaction.set_autocommit(False)
>         for li in layers_info:
>+            # Special case for the openembedded-core layer
>+            if li['name'] == oe_core_layer:
>+                try:
>+                    # If we have an existing openembedded-core for
>example
>+                    # from the toasterconf.json augment the info using
>the
>+                    # layerindex rather than duplicate it
>+                    oe_core_l =  Layer.objects.get(name=oe_core_layer)
>+                    # Take ownership of the layer as now coming from the
>+                    # layerindex
>+                    oe_core_l.layer_source = self
>+                    oe_core_l.up_id = li['id']
>+                    oe_core_l.summary = li['summary']
>+                    oe_core_l.description = li['description']
>+                    oe_core_l.save()
>+                    continue
>+
>+                except DoesNotExist:
>+                    pass
>+
>             l, created = Layer.objects.get_or_create(layer_source =
>self, name = li['name'])
>             l.up_id = li['id']
>             l.up_date = li['updated']
>@@ -882,6 +902,7 @@ class LayerIndexLayerSource(LayerSource):
>             l.summary = li['summary']
>             l.description = li['description']
>             l.save()
>+
>         if not connection.features.autocommits_when_autocommit_is_off:
>             transaction.set_autocommit(True)
> 
>diff --git a/meta-yocto/conf/toasterconf.json
>b/meta-yocto/conf/toasterconf.json
>index c455276..9e45ff0 100644
>--- a/meta-yocto/conf/toasterconf.json
>+++ b/meta-yocto/conf/toasterconf.json
>@@ -12,7 +12,7 @@
>             "name": "Local Yocto Project",
>             "sourcetype": "local",
>             "apiurl": "../../",
>-            "branches": ["HEAD", "master", "fido", "dizzy"],
>+            "branches": ["HEAD" ],
>             "layers": [
>                 {
>                     "name": "openembedded-core",
>-- 
>2.1.4
>
>-- 
>_______________________________________________
>toaster mailing list
>toaster at yoctoproject.org
>https://lists.yoctoproject.org/listinfo/toaster



More information about the toaster mailing list