mirror of
https://git.yoctoproject.org/poky
synced 2026-09-14 21:49:33 +02:00
bitbake: toaster: implement package summary page
Implement the updated design for the package summay page, with pop-up boxes for the layer commit ids, column filtering, and column sorting support. [YOCTO #4318] (Bitbake rev: c39b99792547b642570ea5152070e7396e812390) Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
77eeb4200e
commit
deb3859820
@@ -143,9 +143,8 @@ class Task_Dependency(models.Model):
|
|||||||
task = models.ForeignKey(Task, related_name='task_dependencies_task')
|
task = models.ForeignKey(Task, related_name='task_dependencies_task')
|
||||||
depends_on = models.ForeignKey(Task, related_name='task_dependencies_depends')
|
depends_on = models.ForeignKey(Task, related_name='task_dependencies_depends')
|
||||||
|
|
||||||
|
|
||||||
class Package(models.Model):
|
class Package(models.Model):
|
||||||
search_allowed_fields = ['name', 'installed_name', 'section', 'summary']
|
search_allowed_fields = ['name', 'version', 'revision', 'recipe__name', 'recipe__version', 'recipe__license', 'recipe__layer_version__layer__name', 'recipe__layer_version__branch', 'recipe__layer_version__commit', 'recipe__layer_version__layer__local_path']
|
||||||
build = models.ForeignKey('Build')
|
build = models.ForeignKey('Build')
|
||||||
recipe = models.ForeignKey('Recipe', null=True)
|
recipe = models.ForeignKey('Recipe', null=True)
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
|
|||||||
@@ -1,50 +1,73 @@
|
|||||||
{% extends "basebuildpage.html" %}
|
{% extends "basebuildpage.html" %}
|
||||||
|
|
||||||
|
{% load projecttags %}
|
||||||
|
|
||||||
{% block localbreadcrumb %}
|
{% block localbreadcrumb %}
|
||||||
<li>Packages</li>
|
<li>Packages</li>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block buildinfomain %}
|
{% block buildinfomain %}
|
||||||
|
<div class="span10">
|
||||||
|
<div class="page-header" style="margin-top:40px;">
|
||||||
|
<h1>
|
||||||
|
{% if request.GET.filter or request.GET.search and objects.count > 0 %}
|
||||||
|
{{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
|
||||||
|
{%elif objects.paginator.count == 0%}
|
||||||
|
No Packages
|
||||||
|
{%else%}
|
||||||
|
Packages
|
||||||
|
{%endif%}
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% include "basetable_top.html" %}
|
{% include "basetable_top.html" %}
|
||||||
|
|
||||||
{% if not objects %}
|
{% for package in objects %}
|
||||||
<p>No packages were recorded for this target!</p>
|
|
||||||
{% else %}
|
|
||||||
|
|
||||||
<tr>
|
<tr class="data">
|
||||||
<th>Name</th>
|
|
||||||
<th>Version</th>
|
|
||||||
<th>Recipe</th>
|
|
||||||
<th>Summary</th>
|
|
||||||
<th>Section</th>
|
|
||||||
<th>Description</th>
|
|
||||||
<th>Size on host disk (Bytes)</th>
|
|
||||||
<th>License</th>
|
|
||||||
<th>Dependencies List (all)</th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
{% for package in objects %}
|
<!-- Package -->
|
||||||
|
<td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
|
||||||
|
<!-- Package Version -->
|
||||||
|
<td>{%if package.version%}<a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}-{{package.revision}}</a>{%endif%}</td>
|
||||||
|
<!-- Package Size -->
|
||||||
|
<td class="size">{{package.size|filtered_filesizeformat}}</td>
|
||||||
|
<!-- License -->
|
||||||
|
<td class="license">{{package.license}}</td>
|
||||||
|
|
||||||
<tr class="data">
|
{%if package.recipe%}
|
||||||
<td><a name="#{{package.name}}" href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}} ({{package.filelist_bpackage.count}} files)</a></td>
|
<!-- Recipe -->
|
||||||
<td>{{package.version}}-{{package.revision}}</td>
|
<td class="recipe__name"><a href="{% url "recipe" build.pk package.recipe.pk %}">{{package.recipe.name}}</a></td>
|
||||||
<td>{%if package.recipe%}<a href="{% url "layer_versions_recipes" package.recipe.layer_version_id %}#{{package.recipe.name}}">{{package.recipe.name}}</a>{{package.package_name}}</a>{%endif%}</td>
|
<!-- Recipe Version -->
|
||||||
|
<td class="recipe__version"><a href="{% url "recipe" build.pk package.recipe.pk %}">{{package.recipe.version}}</a></td>
|
||||||
|
|
||||||
<td>{{package.summary}}</td>
|
<!-- Layer -->
|
||||||
<td>{{package.section}}</td>
|
<td class="recipe__layer_version__layer__name">{{package.recipe.layer_version.layer.name}}</td>
|
||||||
<td>{{package.description}}</td>
|
<!-- Layer branch -->
|
||||||
<td>{{package.size}}</td>
|
<td class="recipe__layer_version__branch">{{package.recipe.layer_version.branch}}</td>
|
||||||
<td>{{package.license}}</td>
|
<!-- Layer commit -->
|
||||||
<td>
|
<td class="recipe__layer_version__layer__commit">
|
||||||
<div style="height: 3em; overflow:auto">
|
<a class="btn"
|
||||||
{% for bpd in package.package_dependencies_source.all %}
|
data-content="<ul class='unstyled'>
|
||||||
{{bpd.dep_type}}: {{bpd.depends_on.name}} <br/>
|
<li>{{package.recipe.layer_version.commit}}</li>
|
||||||
{% endfor %}
|
</ul>">
|
||||||
</div>
|
{{package.recipe.layer_version.commit|truncatechars:13}}
|
||||||
|
</a>
|
||||||
</td>
|
</td>
|
||||||
{% endfor %}
|
<!-- Layer directory -->
|
||||||
|
<td class="recipe__layer_version__layer__local_path">{{package.recipe.layer_version.layer.local_path}}</td>
|
||||||
|
{%else%}
|
||||||
|
<td class="recipe__name"></td>
|
||||||
|
<td class="recipe__version"></td>
|
||||||
|
<td class="recipe__layer_version__layer__name"></td>
|
||||||
|
<td class="recipe__layer_version__branch"></td>
|
||||||
|
<td class="recipe__layer_version__layer__commit"></td>
|
||||||
|
<td class="recipe__layer_version__layer__local_path"></td>
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
{% endif %}
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
{% include "basetable_bottom.html" %}
|
{% include "basetable_bottom.html" %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -720,7 +720,7 @@ def diskio(request, build_id):
|
|||||||
|
|
||||||
def bpackage(request, build_id):
|
def bpackage(request, build_id):
|
||||||
template = 'bpackage.html'
|
template = 'bpackage.html'
|
||||||
mandatory_parameters = { 'count': 100, 'page' : 1};
|
mandatory_parameters = { 'count': 100, 'page' : 1, 'orderby':'name:+'};
|
||||||
retval = _verify_parameters( request.GET, mandatory_parameters )
|
retval = _verify_parameters( request.GET, mandatory_parameters )
|
||||||
if retval:
|
if retval:
|
||||||
return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id)
|
return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id)
|
||||||
@@ -730,7 +730,76 @@ def bpackage(request, build_id):
|
|||||||
|
|
||||||
packages = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1))
|
packages = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1))
|
||||||
|
|
||||||
context = {'build': Build.objects.filter(pk=build_id)[0], 'objects' : packages}
|
context = {
|
||||||
|
'objectname': 'packages',
|
||||||
|
'build': Build.objects.filter(pk=build_id)[0],
|
||||||
|
'objects' : packages,
|
||||||
|
'tablecols':[
|
||||||
|
{
|
||||||
|
'name':'Package',
|
||||||
|
'qhelp':'Packaged output resulting from building a recipe',
|
||||||
|
'orderfield': _get_toggle_order(request, "name"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "name"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Package version',
|
||||||
|
'qhelp':'The package version and revision',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Size',
|
||||||
|
'qhelp':'The size of the package',
|
||||||
|
'orderfield': _get_toggle_order(request, "size"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "size"),
|
||||||
|
'clclass': 'size', 'hidden': 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'License',
|
||||||
|
'qhelp':'The license under which the package is distributed. Separate license names using | (pipe) means there is a choice between licenses. Separate license names using & (ampersand) means multiple licenses exist that cover different parts of the source',
|
||||||
|
'orderfield': _get_toggle_order(request, "license"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "license"),
|
||||||
|
'clclass': 'license', 'hidden': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Recipe',
|
||||||
|
'qhelp':'The name of the recipe building the package',
|
||||||
|
'orderfield': _get_toggle_order(request, "recipe__name"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "recipe__name"),
|
||||||
|
'clclass': 'recipe__name', 'hidden': 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Recipe version',
|
||||||
|
'qhelp':'Version and revision of the recipe building the package',
|
||||||
|
'clclass': 'recipe__version', 'hidden': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Layer',
|
||||||
|
'qhelp':'The name of the layer providing the recipe that builds the package',
|
||||||
|
'orderfield': _get_toggle_order(request, "recipe__layer_version__layer__name"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "recipe__layer_version__layer__name"),
|
||||||
|
'clclass': 'recipe__layer_version__layer__name', 'hidden': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Layer branch',
|
||||||
|
'qhelp':'The Git branch of the layer providing the recipe that builds the package',
|
||||||
|
'orderfield': _get_toggle_order(request, "recipe__layer_version__branch"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "recipe__layer_version__branch"),
|
||||||
|
'clclass': 'recipe__layer_version__branch', 'hidden': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Layer commit',
|
||||||
|
'qhelp':'The Git commit of the layer providing the recipe that builds the package',
|
||||||
|
'clclass': 'recipe__layer_version__layer__commit', 'hidden': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name':'Layer directory',
|
||||||
|
'qhelp':'Location in disk of the layer providing the recipe that builds the package',
|
||||||
|
'orderfield': _get_toggle_order(request, "recipe__layer_version__layer__local_path"),
|
||||||
|
'ordericon':_get_toggle_order_icon(request, "recipe__layer_version__layer__local_path"),
|
||||||
|
'clclass': 'recipe__layer_version__layer__local_path', 'hidden': 1,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
return render(request, template, context)
|
return render(request, template, context)
|
||||||
|
|
||||||
def bfile(request, build_id, package_id):
|
def bfile(request, build_id, package_id):
|
||||||
|
|||||||
Reference in New Issue
Block a user