summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Lerner <dave.lerner@windriver.com>2014-03-24 16:37:17 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-28 13:44:52 +0000
commit14a84434a1c76f5d0bef7a75f2c7529a9ff166cf (patch)
tree1f00f4bb710398382d20aeaf56e701b328eb8765
parentc07a294e30e09926a07081ebc275c1766304ce38 (diff)
downloadpoky-14a84434a1c76f5d0bef7a75f2c7529a9ff166cf.tar.gz
bitbake: toaster: show installed package name
[YOCTO #5922] Implement changes that show the installed package name after the official 'recipe-named' package name. If the alias exists and is different than the package name, then the alias is shown as a 'muted' string after the package name in the form 'as some-alias-name'. This formatting appears in the included package pages in the elements: * local breadcrumbs at the top of package included pages, * <h1> title headings along with a help bubble that is not hovering, and * package lists where the help bubble appears when the mouse hovers over the row. The changes in detail in this patch per file are: views.py - added function that tests whether the package object's installed_name should be shown, - added function that appends package name with version and revision to encapsulate package name formatting in one place and referred to as package.fullpackagespec, - changed package_built* and package_included* functions to use both of the above new formatting functions, passing the formatted values to templates, and - adhered to django coding styles by renaming module local 'get_package*' functions with "_" prefix. package_detail_base.html - added display of package aliases for included package page, - refactored to use package.fullpackagespec, formatted by view function, - added javascript function to format package alias with help, and - removed trailing whitespace. package_included_detail.html - used javascript function above to format package alias, and - refactored to use package.fullpackagespec. package_included_dependencies.html - used javascript function above to format package alias, - refactored to use package.fullpackagespec, - forced empty data cells following hover-help to draw borders by appending space, and - removed trailing whitespace. package_included_reverse_dependencies.html - use javascript function above to format package alias, - refactor to use views fullpackagespe, and - force empty data cells following hover-help to draw borders by appending space. package_built_detail.html - refactored to use package.fullpackagespec, and - removed trailing whitespace. package_built_dependencies.html - refactored to use package.fullpackagespec, and - removed trailing whitespace. projecttags.py - removed unused filter to handle installed name - removed extra spaces around "title = " in format_vpackage_namehelp (Bitbake rev: c604e14df8cdb1f47535f093d7044955d4c2057d) Signed-off-by: Dave Lerner <dave.lerner@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html10
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_detail.html8
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_detail_base.html36
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html31
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_detail.html14
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html17
-rw-r--r--bitbake/lib/toaster/toastergui/templatetags/projecttags.py10
-rw-r--r--bitbake/lib/toaster/toastergui/views.py60
8 files changed, 121 insertions, 65 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
index 4932f74c88..a2011d6fb6 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
@@ -2,7 +2,6 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block tabcontent %} 4{% block tabcontent %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 <ul class="nav nav-pills"> 5 <ul class="nav nav-pills">
7 <li class=""> 6 <li class="">
8 <a href="{% url 'package_built_detail' build.id package.id %}"> 7 <a href="{% url 'package_built_detail' build.id package.id %}">
@@ -21,11 +20,11 @@
21 <div class="tab-pane active" id="dependencies"> 20 <div class="tab-pane active" id="dependencies">
22 {% ifequal runtime_deps|length 0 %} 21 {% ifequal runtime_deps|length 0 %}
23 <div class="alert alert-info"> 22 <div class="alert alert-info">
24 <strong>{{fullPackageSpec}}</strong> has no runtime dependencies. 23 <strong>{{package.fullpackagespec}}</strong> has no runtime dependencies.
25 </div> 24 </div>
26 {% else %} 25 {% else %}
27 <div class="alert alert-info"> 26 <div class="alert alert-info">
28 <strong>{{fullPackageSpec}}</strong> is <strong>not included</strong> in any image. These are its projected runtime dependencies if you were to include it in future builds. 27 <strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. These are its projected runtime dependencies if you were to include it in future builds.
29 </div> 28 </div>
30 <table class="table table-bordered table-hover"> 29 <table class="table table-bordered table-hover">
31 <thead> 30 <thead>
@@ -56,7 +55,7 @@
56 </tr> 55 </tr>
57 {% endifequal %} 56 {% endifequal %}
58 {% endfor %} 57 {% endfor %}
59 </tbody> 58 </tbody>
60 </table> 59 </table>
61 {% endifequal %} 60 {% endifequal %}
62 {% ifnotequal other_deps|length 0 %} 61 {% ifnotequal other_deps|length 0 %}
@@ -72,7 +71,7 @@
72 Relationship type 71 Relationship type
73 </th> 72 </th>
74 </tr> 73 </tr>
75 </thead> 74 </thead>
76 <tbody> 75 <tbody>
77 {% for other_dep in other_deps %} 76 {% for other_dep in other_deps %}
78 {% ifequal other_dep.version '' %} 77 {% ifequal other_dep.version '' %}
@@ -106,5 +105,4 @@
106 {% endifnotequal %} 105 {% endifnotequal %}
107 </div> <!-- tab-pane --> 106 </div> <!-- tab-pane -->
108 </div> <!-- tab-content --> 107 </div> <!-- tab-content -->
109 {% endwith %}
110{% endblock tabcontent %} 108{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
index d8f0b75381..6ccd4056cb 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
@@ -2,7 +2,7 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block tabcontent %} 4{% block tabcontent %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %} 5 {% with packageFileCount=package.buildfilelist_package.count %}
6 <!-- Generated Files --> 6 <!-- Generated Files -->
7 {% if package.buildtargetlist_package.count == 0 %} 7 {% if package.buildtargetlist_package.count == 0 %}
8 {# Not included case #} 8 {# Not included case #}
@@ -21,7 +21,7 @@
21 <!-- Package file list or if empty, alert pane --> 21 <!-- Package file list or if empty, alert pane -->
22 {% if packageFileCount > 0 %} 22 {% if packageFileCount > 0 %}
23 <div class="alert alert-info"> 23 <div class="alert alert-info">
24 {{fullPackageSpec}} is <strong>not included</strong> in any image. These are the files that would be added to an image root file system if you were to include it in future builds. 24 {{package.fullpackagespec}} is <strong>not included</strong> in any image. These are the files that would be added to an image root file system if you were to include it in future builds.
25 </div> 25 </div>
26 <table class="table table-bordered table-hover"> 26 <table class="table table-bordered table-hover">
27 <thead> 27 <thead>
@@ -29,7 +29,7 @@
29 <th>File</th> 29 <th>File</th>
30 <th>Size</th> 30 <th>Size</th>
31 </tr> 31 </tr>
32 </thead> 32 </thead>
33 <tbody> 33 <tbody>
34 {% for file in package.buildfilelist_package.all|dictsort:"path" %} 34 {% for file in package.buildfilelist_package.all|dictsort:"path" %}
35 <tr> 35 <tr>
@@ -42,7 +42,7 @@
42 42
43 {% else %} 43 {% else %}
44 <div class="alert alert-info"> 44 <div class="alert alert-info">
45 <strong>{{fullPackageSpec}}</strong> does not generate any files. 45 <strong>{{package.fullpackagespec}}</strong> does not generate any files.
46 </div> 46 </div>
47 {% endif %} 47 {% endif %}
48 48
diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
index 6925aecb4d..5ec9dd79f4 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
@@ -1,24 +1,45 @@
1{% extends "basebuilddetailpage.html" %} 1{% extends "basebuilddetailpage.html" %}
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block extraheadcontent %}
5 <!-- functions to format package 'installed_package' alias -->
6 <script>
7 function fmtAliasHelp(package_name, alias, hover) {
8 var r = null;
9 if (alias != null && alias != '') {
10 r = '<span class="muted"> as ' + alias + '&nbsp';
11 r += '<i class="icon-question-sign get-help';
12 if (hover) {
13 r+= ' hover-help';
14 }
15 else {
16 r+= ' heading-help';
17 }
18 r += '"';
19 title = package_name + ' was renamed at packaging time and was installed on your system as ' + alias;
20 r += ' title="' + title + '">';
21 r += '</i>';
22 r += '</span>';
23 document.write(r);
24 }
25 }
26 </script>
27{% endblock extraheadcontent %}
4{% block localbreadcrumb %} 28{% block localbreadcrumb %}
5{% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 {% if target %} 29 {% if target %}
7 <li><a href="{% url "target" build.id target.id %}">{{target.target}}</a></li> 30 <li><a href="{% url "target" build.id target.id %}">{{target.target}}</a></li>
31 <li>{{package.fullpackagespec}} {% if package.alias %} as {{package.alias}}{% endif %}</li>
8 {% else %} 32 {% else %}
9 <li><a href="{% url "packages" build.id %}"> Packages </a></li> 33 <li><a href="{% url "packages" build.id %}"> Packages </a></li>
34 <li>{{package.fullpackagespec}}</li>
10 {% endif %} 35 {% endif %}
11 <li>{{fullPackageSpec}}</li>
12{% endwith %}
13{% endblock localbreadcrumb %} 36{% endblock localbreadcrumb %}
14 37
15{% block pagedetailinfomain %} 38{% block pagedetailinfomain %}
16{% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
17
18 <div class="row span11"> 39 <div class="row span11">
19 <div class="page-header"> 40 <div class="page-header">
20 {% block title %} 41 {% block title %}
21 <h1>{{fullPackageSpec}}</h1> 42 <h1>{{package.fullpackagespec}}</h1>
22 {% endblock title %} 43 {% endblock title %}
23 </div> <!-- page-header --> 44 </div> <!-- page-header -->
24 </div> <!-- row span11 page-header --> 45 </div> <!-- row span11 page-header -->
@@ -93,7 +114,7 @@
93 {{package.recipe.layer_version.layer.name}} 114 {{package.recipe.layer_version.layer.name}}
94 {% if package.recipe.layer_version.layer.name|format_none_and_zero != "" %} 115 {% if package.recipe.layer_version.layer.name|format_none_and_zero != "" %}
95 {% comment %} 116 {% comment %}
96 # Removed per team meeting of 1/29/2014 until 117 # Removed per team meeting of 1/29/2014 until
97 # decision on index search algorithm 118 # decision on index search algorithm
98 <a href="http://layers.openembedded.org" target="_blank"> 119 <a href="http://layers.openembedded.org" target="_blank">
99 <i class="icon-share get-info"></i> 120 <i class="icon-share get-info"></i>
@@ -121,5 +142,4 @@
121 </dl> 142 </dl>
122 </div> <!-- row4 well --> 143 </div> <!-- row4 well -->
123 {% endblock twocolumns %} 144 {% endblock twocolumns %}
124{% endwith %}
125{% endblock pagedetailinfomain %} 145{% endblock pagedetailinfomain %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
index c76774ac9c..e06e073688 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
@@ -2,13 +2,15 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block title %} 4{% block title %}
5 {% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %} 5 <h1>
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1> 6 {{package.fullpackagespec}}
7 {% endwith %} 7 <script> fmtAliasHelp("{{package.name}}", "{{package.alias}}", false) </script>
8 <small>({{target.target}})</small>
9 </h1>
8{% endblock title %} 10{% endblock title %}
9 11
10{% block tabcontent %} 12{% block tabcontent %}
11 {% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %} 13 {% with packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="dependencies" %} 14 {% include "package_included_tabs.html" with active_tab="dependencies" %}
13 <div class="tab-content"> 15 <div class="tab-content">
14 <div class="tab-pane active" id="dependencies"> 16 <div class="tab-pane active" id="dependencies">
@@ -29,22 +31,22 @@
29 <a href="{% url 'package_included_detail' build.id target.id runtime_dep.depends_on_id %}"> 31 <a href="{% url 'package_included_detail' build.id target.id runtime_dep.depends_on_id %}">
30 {{runtime_dep.name}} 32 {{runtime_dep.name}}
31 </a> 33 </a>
34 <script>fmtAliasHelp("{{runtime_dep.name}}", "{{runtime_dep.alias}}", true)</script>
32 </td> 35 </td>
33 {% else %} 36 {% else %}
34 <td> 37 <td>
35 {{runtime_dep.name|format_vpackage_namehelp}} 38 {{runtime_dep.name|format_vpackage_namehelp}}
36 </td> 39 </td>
37 {% endif %} 40 {% endif %}
38 41 <td>{{runtime_dep.version}}&nbsp;</td>
39 <td>{{runtime_dep.version}}</td> 42 <td>{{runtime_dep.size|filtered_filesizeformat}}&nbsp;</td>
40 <td>{{runtime_dep.size|filtered_filesizeformat}}</td>
41 </tr> 43 </tr>
42 {% endfor %} 44 {% endfor %}
43 </tbody> 45 </tbody>
44 </table> 46 </table>
45 {% else %} 47 {% else %}
46 <div class="alert alert-info"> 48 <div class="alert alert-info">
47 <strong>{{fullPackageSpec}}</strong> has no runtime dependencies. 49 <strong>{{package.fullpackagespec}}</strong> has no runtime dependencies.
48 </div> 50 </div>
49 {% endifnotequal %} 51 {% endifnotequal %}
50 52
@@ -61,7 +63,7 @@
61 Relationship type 63 Relationship type
62 </th> 64 </th>
63 </tr> 65 </tr>
64 </thead> 66 </thead>
65 <tbody> 67 <tbody>
66 {% for other_dep in other_deps %} 68 {% for other_dep in other_deps %}
67 {% if other_dep.installed %} 69 {% if other_dep.installed %}
@@ -70,6 +72,9 @@
70 <td> 72 <td>
71 <a href="{% url 'package_included_detail' build.id target.id other_dep.depends_on_id %}"> 73 <a href="{% url 'package_included_detail' build.id target.id other_dep.depends_on_id %}">
72 {{other_dep.name}} 74 {{other_dep.name}}
75 <script>
76 fmtAliasHelp("{{other_dep.name}}","{{other_dep.alias}}", true)
77 </script>
73 </a> 78 </a>
74 </td> 79 </td>
75 {% else %} 80 {% else %}
@@ -77,8 +82,8 @@
77 {{other_dep.name|format_vpackage_namehelp}} 82 {{other_dep.name|format_vpackage_namehelp}}
78 </td> 83 </td>
79 {% endif %} 84 {% endif %}
80 <td>{{other_dep.version}}</td> 85 <td>{{other_dep.version}}&nbsp;</td>
81 <td>{{other_dep.size|filtered_filesizeformat}}</td> 86 <td>{{other_dep.size|filtered_filesizeformat}}&nbsp;</td>
82 <td> 87 <td>
83 {{other_dep.dep_type_display}} 88 {{other_dep.dep_type_display}}
84 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i> 89 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
@@ -96,7 +101,7 @@
96 </tr> 101 </tr>
97 {% endif %} 102 {% endif %}
98 {% endfor %} 103 {% endfor %}
99 </tbody> 104 </tbody>
100 </table> 105 </table>
101 {% endifnotequal %} 106 {% endifnotequal %}
102 </div> <!-- end tab-pane --> 107 </div> <!-- end tab-pane -->
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_detail.html b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html
index ce4f1cb33c..e89ebdf58c 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_included_detail.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html
@@ -2,13 +2,17 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block title %} 4{% block title %}
5{% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %} 5 <h1>
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1> 6 {{package.fullpackagespec}}
7{% endwith %} 7 <script>
8 fmtAliasHelp("{{package.name}}", "{{package.alias}}", false)
9 </script>
10 <small>({{target.target}})</small>
11 </h1>
8{% endblock title %} 12{% endblock title %}
9 13
10{% block tabcontent %} 14{% block tabcontent %}
11{% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %} 15{% with packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="detail" %} 16 {% include "package_included_tabs.html" with active_tab="detail" %}
13 <div class="tab-content"> 17 <div class="tab-content">
14 <div class="tab-pane active" id="files"> 18 <div class="tab-pane active" id="files">
@@ -36,7 +40,7 @@
36 40
37 {% else %} 41 {% else %}
38 <div class="alert alert-info"> 42 <div class="alert alert-info">
39 <strong>{{fullPackageSpec}}</strong> does not generate any files. 43 <strong>{{package.fullpackagespec}}</strong> does not generate any files.
40 </div> 44 </div>
41 {% endif %} 45 {% endif %}
42 </div> <!-- end tab-pane --> 46 </div> <!-- end tab-pane -->
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html
index 8653ae0fe2..1efcb1a610 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html
@@ -2,20 +2,22 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block title %} 4{% block title %}
5 {% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %} 5 <h1>
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1> 6 {{package.fullpackagespec}}
7 {% endwith %} 7 <script> fmtAliasHelp("{{package.name}}", "{{package.alias}}", false) </script>
8 <small>({{target.target}})</small>
9 </h1>
8{% endblock title %} 10{% endblock title %}
9 11
10{% block tabcontent %} 12{% block tabcontent %}
11 {% with fullPackageSpec=package.name|add:"_"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %} 13 {% with packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="reverse" %} 14 {% include "package_included_tabs.html" with active_tab="reverse" %}
13 <div class="tab-content"> 15 <div class="tab-content">
14 <div class="tab-pane active" id="brought-in-by"> 16 <div class="tab-pane active" id="brought-in-by">
15 17
16 {% ifequal reverse_deps|length 0 %} 18 {% ifequal reverse_deps|length 0 %}
17 <div class="alert alert-info"> 19 <div class="alert alert-info">
18 <strong>{{fullPackageSpec}}</strong> has no reverse runtime dependencies. 20 <strong>{{package.fullpackagespec}}</strong> has no reverse runtime dependencies.
19 </div> 21 </div>
20 {% else %} 22 {% else %}
21 <table class="table table-bordered table-hover"> 23 <table class="table table-bordered table-hover">
@@ -34,6 +36,7 @@
34 <a href="{% url 'package_included_detail' build.id target.id reverse_dep.dependent_id %}"> 36 <a href="{% url 'package_included_detail' build.id target.id reverse_dep.dependent_id %}">
35 {{reverse_dep.name}} 37 {{reverse_dep.name}}
36 </a> 38 </a>
39 <script>fmtAliasHelp("{{reverse_dep.name}}", "{{reverse_dep.alias}}", true)</script>
37 </td> 40 </td>
38 {% else %} 41 {% else %}
39 <td> 42 <td>
@@ -41,8 +44,8 @@
41 </td> 44 </td>
42 {% endif %} 45 {% endif %}
43 46
44 <td>{{reverse_dep.version}}</td> 47 <td>{{reverse_dep.version}}&nbsp;</td>
45 <td>{{reverse_dep.size|filtered_filesizeformat}}</td> 48 <td>{{reverse_dep.size|filtered_filesizeformat}}&nbsp;</td>
46 </tr> 49 </tr>
47 {% endfor %} 50 {% endfor %}
48 </tbody> 51 </tbody>
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
index 34c3c21d20..76166ca945 100644
--- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
+++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
@@ -208,14 +208,6 @@ def filtered_installedsize(size, installed_size):
208 return size if (installed_size == 0) or (installed_size == "") or (installed_size == None) else installed_size 208 return size if (installed_size == 0) or (installed_size == "") or (installed_size == None) else installed_size
209 209
210@register.filter 210@register.filter
211def filtered_installedname(name, installed_name):
212 """If package.installed_name not null and not empty
213 return <div class=muted> as {{package.installed_name}}
214 otherwise ""
215 """
216 return name if (name == installed_name) or (not installed_name) or (installed_name == "") else name + " as " + installed_name
217
218@register.filter
219def filtered_packageversion(version, revision): 211def filtered_packageversion(version, revision):
220 """ Emit "version-revision" if version and revision are not null 212 """ Emit "version-revision" if version and revision are not null
221 else "version" if version is not null 213 else "version" if version is not null
@@ -245,6 +237,6 @@ def format_vpackage_rowclass(size):
245def format_vpackage_namehelp(name): 237def format_vpackage_namehelp(name):
246 r = name + '&nbsp;' 238 r = name + '&nbsp;'
247 r += '<i class="icon-question-sign get-help hover-help"' 239 r += '<i class="icon-question-sign get-help hover-help"'
248 r += ' title = "' + name + ' only has dependency information available.">' 240 r += ' title="' + name + ' only has dependency information available.">'
249 r += '</i>' 241 r += '</i>'
250 return mark_safe(r) 242 return mark_safe(r)
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 8f6e201ec2..0f92caf56b 100644
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -1280,7 +1280,7 @@ the RRECOMENDS or TRECOMENDS value.
1280The lists are built in the sort order specified for the package runtime 1280The lists are built in the sort order specified for the package runtime
1281dependency views. 1281dependency views.
1282""" 1282"""
1283def get_package_dependencies(package_id, target_id = INVALID_KEY): 1283def _get_package_dependencies(package_id, target_id = INVALID_KEY):
1284 runtime_deps = [] 1284 runtime_deps = []
1285 other_deps = [] 1285 other_deps = []
1286 other_depends_types = OTHER_DEPENDS_BASE 1286 other_depends_types = OTHER_DEPENDS_BASE
@@ -1318,6 +1318,10 @@ def get_package_dependencies(package_id, target_id = INVALID_KEY):
1318 'depends_on_id' : dep_package.id, 1318 'depends_on_id' : dep_package.id,
1319 'installed' : installed, 1319 'installed' : installed,
1320 } 1320 }
1321
1322 if target_id != INVALID_KEY:
1323 dep['alias'] = _get_package_alias(dep_package)
1324
1321 if idep.dep_type == rdepends_type : 1325 if idep.dep_type == rdepends_type :
1322 runtime_deps.append(dep) 1326 runtime_deps.append(dep)
1323 elif idep.dep_type in other_depends_types : 1327 elif idep.dep_type in other_depends_types :
@@ -1331,28 +1335,50 @@ def get_package_dependencies(package_id, target_id = INVALID_KEY):
1331 return retvalues 1335 return retvalues
1332 1336
1333# Return the count of packages dependent on package for this target_id image 1337# Return the count of packages dependent on package for this target_id image
1334def get_package_reverse_dep_count(package, target_id): 1338def _get_package_reverse_dep_count(package, target_id):
1335 return package.package_dependencies_target.filter(target_id__exact=target_id, dep_type__exact = Package_Dependency.TYPE_TRDEPENDS).count() 1339 return package.package_dependencies_target.filter(target_id__exact=target_id, dep_type__exact = Package_Dependency.TYPE_TRDEPENDS).count()
1336 1340
1337# Return the count of the packages that this package_id is dependent on. 1341# Return the count of the packages that this package_id is dependent on.
1338# Use one of the two RDEPENDS types, either TRDEPENDS if the package was 1342# Use one of the two RDEPENDS types, either TRDEPENDS if the package was
1339# installed, or else RDEPENDS if only built. 1343# installed, or else RDEPENDS if only built.
1340def get_package_dependency_count(package, target_id, is_installed): 1344def _get_package_dependency_count(package, target_id, is_installed):
1341 if is_installed : 1345 if is_installed :
1342 return package.package_dependencies_source.filter(target_id__exact = target_id, 1346 return package.package_dependencies_source.filter(target_id__exact = target_id,
1343 dep_type__exact = Package_Dependency.TYPE_TRDEPENDS).count() 1347 dep_type__exact = Package_Dependency.TYPE_TRDEPENDS).count()
1344 else : 1348 else :
1345 return package.package_dependencies_source.filter(dep_type__exact = Package_Dependency.TYPE_RDEPENDS).count() 1349 return package.package_dependencies_source.filter(dep_type__exact = Package_Dependency.TYPE_RDEPENDS).count()
1346 1350
1351def _get_package_alias(package):
1352 alias = package.installed_name
1353 if alias != None and alias != '' and alias != package.name:
1354 return alias
1355 else:
1356 return ''
1357
1358def _get_fullpackagespec(package):
1359 r = package.name
1360 version_good = package.version != None and package.version != ''
1361 revision_good = package.revision != None and package.revision != ''
1362 if version_good or revision_good:
1363 r += '_'
1364 if version_good:
1365 r += package.version
1366 if revision_good:
1367 r += '-'
1368 if revision_good:
1369 r += package.revision
1370 return r
1371
1347def package_built_detail(request, build_id, package_id): 1372def package_built_detail(request, build_id, package_id):
1348 template = "package_built_detail.html" 1373 template = "package_built_detail.html"
1349 if Build.objects.filter(pk=build_id).count() == 0 : 1374 if Build.objects.filter(pk=build_id).count() == 0 :
1350 return redirect(builds) 1375 return redirect(builds)
1351 package = Package.objects.filter(pk=package_id)[0] 1376 package = Package.objects.filter(pk=package_id)[0]
1377 package.fullpackagespec = _get_fullpackagespec(package)
1352 context = { 1378 context = {
1353 'build' : Build.objects.filter(pk=build_id)[0], 1379 'build' : Build.objects.filter(pk=build_id)[0],
1354 'package' : package, 1380 'package' : package,
1355 'dependency_count' : get_package_dependency_count(package, -1, False), 1381 'dependency_count' : _get_package_dependency_count(package, -1, False),
1356 } 1382 }
1357 return render(request, template, context) 1383 return render(request, template, context)
1358 1384
@@ -1362,13 +1388,14 @@ def package_built_dependencies(request, build_id, package_id):
1362 return redirect(builds) 1388 return redirect(builds)
1363 1389
1364 package = Package.objects.filter(pk=package_id)[0] 1390 package = Package.objects.filter(pk=package_id)[0]
1365 dependencies = get_package_dependencies(package_id) 1391 package.fullpackagespec = _get_fullpackagespec(package)
1392 dependencies = _get_package_dependencies(package_id)
1366 context = { 1393 context = {
1367 'build' : Build.objects.filter(pk=build_id)[0], 1394 'build' : Build.objects.filter(pk=build_id)[0],
1368 'package' : package, 1395 'package' : package,
1369 'runtime_deps' : dependencies['runtime_deps'], 1396 'runtime_deps' : dependencies['runtime_deps'],
1370 'other_deps' : dependencies['other_deps'], 1397 'other_deps' : dependencies['other_deps'],
1371 'dependency_count' : get_package_dependency_count(package, -1, False) 1398 'dependency_count' : _get_package_dependency_count(package, -1, False)
1372 } 1399 }
1373 return render(request, template, context) 1400 return render(request, template, context)
1374 1401
@@ -1379,13 +1406,15 @@ def package_included_detail(request, build_id, target_id, package_id):
1379 return redirect(builds) 1406 return redirect(builds)
1380 1407
1381 package = Package.objects.filter(pk=package_id)[0] 1408 package = Package.objects.filter(pk=package_id)[0]
1409 package.fullpackagespec = _get_fullpackagespec(package)
1410 package.alias = _get_package_alias(package)
1382 target = Target.objects.filter(pk=target_id)[0] 1411 target = Target.objects.filter(pk=target_id)[0]
1383 context = { 1412 context = {
1384 'build' : Build.objects.filter(pk=build_id)[0], 1413 'build' : Build.objects.filter(pk=build_id)[0],
1385 'target' : target, 1414 'target' : target,
1386 'package' : package, 1415 'package' : package,
1387 'reverse_count' : get_package_reverse_dep_count(package, target_id), 1416 'reverse_count' : _get_package_reverse_dep_count(package, target_id),
1388 'dependency_count' : get_package_dependency_count(package, target_id, True) 1417 'dependency_count' : _get_package_dependency_count(package, target_id, True)
1389 } 1418 }
1390 return render(request, template, context) 1419 return render(request, template, context)
1391 1420
@@ -1395,17 +1424,19 @@ def package_included_dependencies(request, build_id, target_id, package_id):
1395 return redirect(builds) 1424 return redirect(builds)
1396 1425
1397 package = Package.objects.filter(pk=package_id)[0] 1426 package = Package.objects.filter(pk=package_id)[0]
1427 package.fullpackagespec = _get_fullpackagespec(package)
1428 package.alias = _get_package_alias(package)
1398 target = Target.objects.filter(pk=target_id)[0] 1429 target = Target.objects.filter(pk=target_id)[0]
1399 1430
1400 dependencies = get_package_dependencies(package_id, target_id) 1431 dependencies = _get_package_dependencies(package_id, target_id)
1401 context = { 1432 context = {
1402 'build' : Build.objects.filter(pk=build_id)[0], 1433 'build' : Build.objects.filter(pk=build_id)[0],
1403 'package' : package, 1434 'package' : package,
1404 'target' : target, 1435 'target' : target,
1405 'runtime_deps' : dependencies['runtime_deps'], 1436 'runtime_deps' : dependencies['runtime_deps'],
1406 'other_deps' : dependencies['other_deps'], 1437 'other_deps' : dependencies['other_deps'],
1407 'reverse_count' : get_package_reverse_dep_count(package, target_id), 1438 'reverse_count' : _get_package_reverse_dep_count(package, target_id),
1408 'dependency_count' : get_package_dependency_count(package, target_id, True) 1439 'dependency_count' : _get_package_dependency_count(package, target_id, True)
1409 } 1440 }
1410 return render(request, template, context) 1441 return render(request, template, context)
1411 1442
@@ -1415,6 +1446,8 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_
1415 return redirect(builds) 1446 return redirect(builds)
1416 1447
1417 package = Package.objects.filter(pk=package_id)[0] 1448 package = Package.objects.filter(pk=package_id)[0]
1449 package.fullpackagespec = _get_fullpackagespec(package)
1450 package.alias = _get_package_alias(package)
1418 target = Target.objects.filter(pk=target_id)[0] 1451 target = Target.objects.filter(pk=target_id)[0]
1419 1452
1420 reverse_deps = [] 1453 reverse_deps = []
@@ -1426,6 +1459,7 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_
1426 version += '-' + dep_package.revision 1459 version += '-' + dep_package.revision
1427 dep = { 1460 dep = {
1428 'name' : dep_package.name, 1461 'name' : dep_package.name,
1462 'alias' : _get_package_alias(dep_package),
1429 'dependent_id' : dep_package.id, 1463 'dependent_id' : dep_package.id,
1430 'version' : version, 1464 'version' : version,
1431 'size' : dep_package.size 1465 'size' : dep_package.size
@@ -1438,8 +1472,8 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_
1438 'package' : package, 1472 'package' : package,
1439 'target' : target, 1473 'target' : target,
1440 'reverse_deps' : reverse_deps, 1474 'reverse_deps' : reverse_deps,
1441 'reverse_count' : get_package_reverse_dep_count(package, target_id), 1475 'reverse_count' : _get_package_reverse_dep_count(package, target_id),
1442 'dependency_count' : get_package_dependency_count(package, target_id, True) 1476 'dependency_count' : _get_package_dependency_count(package, target_id, True)
1443 } 1477 }
1444 return render(request, template, context) 1478 return render(request, template, context)
1445 1479