mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 13:29:49 +00:00
bitbake: toaster: added file types to the Outputs column in the build
The file types are displayed in the Outputs column in the build page. The file types are derived from the target image filenames. [YOCTO #5947] (Bitbake rev: 842abf6759894690d5bc770f4ea2ac15b127e5e2) Signed-off-by: Farrell Wymore <farrell.wymore@windriver.com> Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
877dcd709e
commit
bae133add9
@@ -122,7 +122,11 @@
|
|||||||
<td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td>
|
<td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td>
|
||||||
<td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td>
|
<td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td>
|
||||||
<td class="log">{{build.cooker_log_path}}</td>
|
<td class="log">{{build.cooker_log_path}}</td>
|
||||||
<td class="output">{% if build.outcome == 0 %}{% for t in build.target_set.all %}{% if t.is_image %}<a href="{%url "builddashboard" build.id%}#images">TODO: compute image output fstypes</a>{% endif %}{% endfor %}{% endif %}</td>
|
<td class="output">
|
||||||
|
{% if build.outcome == build.SUCCEEDED %}
|
||||||
|
<a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -240,3 +240,12 @@ def format_vpackage_namehelp(name):
|
|||||||
r += ' title="' + name + ' only has dependency information available.">'
|
r += ' title="' + name + ' only has dependency information available.">'
|
||||||
r += '</i>'
|
r += '</i>'
|
||||||
return mark_safe(r)
|
return mark_safe(r)
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def get_dict_value(dictionary, key):
|
||||||
|
""" return the value of a dictionary key
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return dictionary[key]
|
||||||
|
except KeyError:
|
||||||
|
return ''
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
import operator
|
import operator,re
|
||||||
|
|
||||||
from django.db.models import Q, Sum
|
from django.db.models import Q, Sum
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable
|
from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable
|
||||||
from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency
|
from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency
|
||||||
from orm.models import Target_Installed_Package, Target_Image_File
|
from orm.models import Target_Installed_Package, Target_File, Target_Image_File
|
||||||
from django.views.decorators.cache import cache_control
|
from django.views.decorators.cache import cache_control
|
||||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||||
from django.http import HttpResponseBadRequest
|
from django.http import HttpResponseBadRequest
|
||||||
@@ -231,6 +231,25 @@ def builds(request):
|
|||||||
else:
|
else:
|
||||||
b.eta = 0
|
b.eta = 0
|
||||||
|
|
||||||
|
# set up list of fstypes for each build
|
||||||
|
fstypes_map = {};
|
||||||
|
for build in build_info:
|
||||||
|
targets = Target.objects.filter( build_id = build.id )
|
||||||
|
comma = "";
|
||||||
|
extensions = "";
|
||||||
|
for t in targets:
|
||||||
|
if ( not t.is_image ):
|
||||||
|
continue
|
||||||
|
tif = Target_Image_File.objects.filter( target_id = t.id )
|
||||||
|
for i in tif:
|
||||||
|
s=re.sub('.*tar.bz2', 'tar.bz2', i.file_name)
|
||||||
|
if s == i.file_name:
|
||||||
|
s=re.sub('.*\.', '', i.file_name)
|
||||||
|
if None == re.search(s,extensions):
|
||||||
|
extensions += comma + s
|
||||||
|
comma = ", "
|
||||||
|
fstypes_map[build.id]=extensions
|
||||||
|
|
||||||
# send the data to the template
|
# send the data to the template
|
||||||
context = {
|
context = {
|
||||||
# specific info for
|
# specific info for
|
||||||
@@ -238,6 +257,7 @@ def builds(request):
|
|||||||
# TODO: common objects for all table views, adapt as needed
|
# TODO: common objects for all table views, adapt as needed
|
||||||
'objects' : build_info,
|
'objects' : build_info,
|
||||||
'objectname' : "builds",
|
'objectname' : "builds",
|
||||||
|
'fstypes' : fstypes_map,
|
||||||
'search_term' : search_term,
|
'search_term' : search_term,
|
||||||
'total_count' : queryset_with_search.count(),
|
'total_count' : queryset_with_search.count(),
|
||||||
# Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns
|
# Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns
|
||||||
|
|||||||
Reference in New Issue
Block a user