diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 1803de60e5..c77df2243e 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -143,9 +143,8 @@ class Task_Dependency(models.Model):
task = models.ForeignKey(Task, related_name='task_dependencies_task')
depends_on = models.ForeignKey(Task, related_name='task_dependencies_depends')
-
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')
recipe = models.ForeignKey('Recipe', null=True)
name = models.CharField(max_length=100)
diff --git a/bitbake/lib/toaster/toastergui/templates/bpackage.html b/bitbake/lib/toaster/toastergui/templates/bpackage.html
index b78ae4644f..cc8ec90395 100644
--- a/bitbake/lib/toaster/toastergui/templates/bpackage.html
+++ b/bitbake/lib/toaster/toastergui/templates/bpackage.html
@@ -1,50 +1,73 @@
{% extends "basebuildpage.html" %}
+{% load projecttags %}
+
{% block localbreadcrumb %}
Packages
{% endblock %}
{% block buildinfomain %}
+
+
+
{% include "basetable_top.html" %}
- {% if not objects %}
-
No packages were recorded for this target!
- {% else %}
+ {% for package in objects %}
-
- | Name |
- Version |
- Recipe |
- Summary |
- Section |
- Description |
- Size on host disk (Bytes) |
- License |
- Dependencies List (all) |
-
+
- {% for package in objects %}
+
+ | {{package.name}} |
+
+ {%if package.version%}{{package.version}}-{{package.revision}}{%endif%} |
+
+ {{package.size|filtered_filesizeformat}} |
+
+ {{package.license}} |
-
- | {{package.name}} ({{package.filelist_bpackage.count}} files) |
- {{package.version}}-{{package.revision}} |
- {%if package.recipe%}{{package.recipe.name}}{{package.package_name}}{%endif%} |
+ {%if package.recipe%}
+
+ {{package.recipe.name}} |
+
+ {{package.recipe.version}} |
- {{package.summary}} |
- {{package.section}} |
- {{package.description}} |
- {{package.size}} |
- {{package.license}} |
-
-
- {% for bpd in package.package_dependencies_source.all %}
- {{bpd.dep_type}}: {{bpd.depends_on.name}}
- {% endfor %}
-
+
+ | {{package.recipe.layer_version.layer.name}} |
+
+ {{package.recipe.layer_version.branch}} |
+
+
+
+ {{package.recipe.layer_version.commit|truncatechars:13}}
+
|
- {% endfor %}
+
+ {{package.recipe.layer_version.layer.local_path}} |
+ {%else%}
+ |
+ |
+ |
+ |
+ |
+ |
+ {%endif%}
- {% endif %}
+
+ {% endfor %}
{% include "basetable_bottom.html" %}
+
{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 1105829d96..2b06e2136b 100644
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -720,7 +720,7 @@ def diskio(request, build_id):
def bpackage(request, build_id):
template = 'bpackage.html'
- mandatory_parameters = { 'count': 100, 'page' : 1};
+ mandatory_parameters = { 'count': 100, 'page' : 1, 'orderby':'name:+'};
retval = _verify_parameters( request.GET, mandatory_parameters )
if retval:
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))
- 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)
def bfile(request, build_id, package_id):