[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