summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorDave Lerner <dave.lerner@windriver.com>2016-04-06 14:44:41 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-04-06 23:10:31 +0100
commit18cb7fe426d7ac726cf40002a507a57f6cf3ffed (patch)
tree8c09b9fd846b6bec2cb646e2bd1f412a23985e30 /bitbake
parent7a309d964a86f3474eaab7df6d438ed797f935c0 (diff)
downloadpoky-18cb7fe426d7ac726cf40002a507a57f6cf3ffed.tar.gz
bitbake: toaster: add rev dep column to image detail pages
Add a column to the custom image pages that shows the reverse dependencies in a format matching the dependencies column: - either blank or a button showing the count of reverse dependencies, - when the button is clicked, a popover appears showing the list of reverse dependencies, with each package's size, and the total size of all of the reverse dependencies. The implementation adds a packages table method to retreive the reverse dependency total size, and adds a separate 'popover' html template. Both of these changes follow the pattern for the dependencies column. [YOCTO #9163] (Bitbake rev: 2f978dccaa1ec82c7ad350bdc1cd9500000984eb) Signed-off-by: Dave Lerner <dave.lerner@windriver.com> Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/orm/models.py7
-rw-r--r--bitbake/lib/toaster/toastergui/tables.py6
-rw-r--r--bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html14
3 files changed, 27 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 2a01184a73..68c3072991 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -822,6 +822,13 @@ class Package_DependencyManager(models.Manager):
822 """ 822 """
823 return self.all().aggregate(Sum('depends_on__size')) 823 return self.all().aggregate(Sum('depends_on__size'))
824 824
825 def get_total_revdeps_size(self):
826 """ Returns the total file size of all the packages that depend on
827 this package.
828 """
829 return self.all().aggregate(Sum('package_id__size'))
830
831
825 def all_depends(self): 832 def all_depends(self):
826 """ Returns just the depends packages and not any other dep_type """ 833 """ Returns just the depends packages and not any other dep_type """
827 return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) | 834 return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) |
diff --git a/bitbake/lib/toaster/toastergui/tables.py b/bitbake/lib/toaster/toastergui/tables.py
index 385d65895d..2cc2f4eb7b 100644
--- a/bitbake/lib/toaster/toastergui/tables.py
+++ b/bitbake/lib/toaster/toastergui/tables.py
@@ -725,6 +725,12 @@ class PackagesTable(ToasterTable):
725 static_data_template='\ 725 static_data_template='\
726 {% include "snippets/pkg_dependencies_popover.html" %}') 726 {% include "snippets/pkg_dependencies_popover.html" %}')
727 727
728 self.add_column(title="Reverse dependencies",
729 static_data_name="reverse_dependencies",
730 static_data_template='\
731 {% include "snippets/pkg_revdependencies_popover.html" %}',
732 hidden=True)
733
728 self.add_column(title="Recipe", 734 self.add_column(title="Recipe",
729 field_name="recipe__name", 735 field_name="recipe__name",
730 orderable=True, 736 orderable=True,
diff --git a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
new file mode 100644
index 0000000000..453a9d0137
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
@@ -0,0 +1,14 @@
1{# Popover that displays the reverse dependencies and sizes of a package 'data' used in the Packages table #}
2{% with data.package_dependencies_target.all_depends.count as dep_count %}
3{% load projecttags %}
4{% if dep_count %}
5 <a data-content="<ul class='unstyled'>
6 {% for dep in data.package_dependencies_target.all_depends|dictsort:'package.name' %}
7 <li>{{dep.package.name}} {% if dep.package.size > 0 %}({{dep.package.size|filtered_filesizeformat}}){% endif %}</li>
8 {% endfor %}
9 </ul>" title="" class="btn" data-original-title="
10 <strong>{{data.name}}</strong> reverse dependencies - <strong>{{data.package_dependencies_target.get_total_revdeps_size.package_id__size__sum|filtered_filesizeformat}}</strong>">
11 {{dep_count}}
12</a>
13{% endif %}
14{% endwith %}