summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/templates
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates')
-rw-r--r--bitbake/lib/toaster/toastergui/templates/bpackage.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html112
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_detail.html71
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_detail_base.html125
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html93
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_detail.html46
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html47
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_tabs.html33
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipe.html6
9 files changed, 531 insertions, 4 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/bpackage.html b/bitbake/lib/toaster/toastergui/templates/bpackage.html
index 3329ddae51..b78ae4644f 100644
--- a/bitbake/lib/toaster/toastergui/templates/bpackage.html
+++ b/bitbake/lib/toaster/toastergui/templates/bpackage.html
@@ -26,7 +26,7 @@
26 {% for package in objects %} 26 {% for package in objects %}
27 27
28 <tr class="data"> 28 <tr class="data">
29 <td><a name="#{{package.name}}" href="{% url "package" build.pk package.pk %}">{{package.name}} ({{package.filelist_bpackage.count}} files)</a></td> 29 <td><a name="#{{package.name}}" href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}} ({{package.filelist_bpackage.count}} files)</a></td>
30 <td>{{package.version}}-{{package.revision}}</td> 30 <td>{{package.version}}-{{package.revision}}</td>
31 <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> 31 <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>
32 32
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
new file mode 100644
index 0000000000..c67f60e20b
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
@@ -0,0 +1,112 @@
1{% extends "package_detail_base.html" %}
2{% load projecttags %}
3
4{% block tabcontent %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 <ul class="nav nav-pills">
7 <li class="">
8 <a href="{% url 'package_built_detail' build.id package.id %}">
9 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Shows the files produced by this package."></i>
10 Generated files ({{package.buildfilelist_package.count}})
11 </a>
12 </li>
13 <li class="active">
14 <a href="{% url 'package_built_dependencies' build.id package.id %}">
15 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Shows the runtime packages required by this package."></i>
16 Runtime dependencies ({{dependency_count}})
17 </a>
18 </li>
19 </ul>
20 <div class="tab-content">
21 <div class="tab-pane active" id="dependencies">
22 {% ifequal runtime_deps|length 0 %}
23 <div class="alert alert-info">
24 <strong>{{fullPackageSpec}}</strong> has no runtime dependencies.
25 </div>
26 {% else %}
27 <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.
29 </div>
30 <table class="table table-bordered table-hover">
31 <thead>
32 <tr>
33 <th>Package</th>
34 <th>Version</th>
35 <th>Size</th>
36 </tr>
37 </thead>
38 {% for runtime_dep in runtime_deps %}
39 <tbody>
40 {% ifequal runtime_dep.version '' %}
41 <tr class="muted">
42 <td>{{runtime_dep.name}}</td>
43 <td>{{runtime_dep.version}}</td>
44 <td></td>
45 </div>
46 </tr>
47 {% else %}
48 <tr>
49 <td>
50 <a href="{% url 'package_built_detail' build.id runtime_dep.depends_on_id %}">
51 {{runtime_dep.name}}
52 </a>
53 </td>
54 <td>{{runtime_dep.version}}</td>
55 <td>{{runtime_dep.size|filtered_filesizeformat}}</td>
56 </tr>
57 {% endifequal %}
58 </tbody>
59 {% endfor %}
60 </table>
61 {% endifequal %}
62 {% ifnotequal other_deps|length 0 %}
63 <h3>Other runtime relationships</h3>
64 <table class="table table-bordered table-hover">
65 <thead>
66 <tr>
67 <th>Package</th>
68 <th>Version</th>
69 <th>Size</th>
70
71 <th>
72 <i class="icon-question-sign get-help" title="There are 5 relationship types: recommends, suggests, provides, replaces and conflicts"></i>
73 Relationship type
74 </th>
75 </tr>
76 </thead>
77
78 {% for other_dep in other_deps %}
79 <tbody>
80 {% ifequal other_dep.version '' %}
81 <tr class="muted">
82 <td>{{other_dep.name}}</td>
83 <td>{{other_dep.version}}</td>
84 <td></td>
85 <td>
86 {{other_dep.dep_type_display}}
87 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
88 </td>
89 </tr>
90 {% else %}
91 <tr>
92 <td>
93 <a href="{% url 'package_built_detail' build.id other_dep.depends_on_id %}">
94 {{other_dep.name}}
95 </a>
96 </td>
97 <td>{{other_dep.version}}</td>
98 <td>{{other_dep.size|filtered_filesizeformat}}</td>
99 <td>
100 {{other_dep.dep_type_display}}
101 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
102 </td>
103 </tr>
104 </tbody>
105 {% endifequal %}
106 {% endfor %}
107 </table>
108 {% endifnotequal %}
109 </div> <!-- tab-pane -->
110 </div> <!-- tab-content -->
111 {% endwith %}
112{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
new file mode 100644
index 0000000000..fe856a3cb6
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
@@ -0,0 +1,71 @@
1{% extends "package_detail_base.html" %}
2{% load projecttags %}
3
4{% block tabcontent %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %}
6 <!-- Generated Files -->
7 {% if package.buildtargetlist_package.count == 0 %}
8 {# Not included case #}
9 <ul class="nav nav-pills">
10 <li class="active"> <a href="#">
11 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Shows the files produced by this package."></i>
12 Generated files ({{packageFileCount}})
13 </a></li>
14 <li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}">
15 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Shows the runtime packages required by this package."></i>
16 Runtime dependencies ({{dependency_count}})
17 </a></li>
18 </ul>
19 <div class="tab-content">
20 <div class="tab-pane active" id="files">
21 <!-- Package file list or if empty, alert pane -->
22 {% if packageFileCount > 0 %}
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.
25 </div>
26 <table class="table table-bordered table-hover">
27 <thead>
28 <tr>
29 <th>File</th>
30 <th>Size</th>
31 </tr>
32 </thead>
33 {% for file in package.buildfilelist_package.all|dictsort:"path" %}
34 <tbody>
35 <tr>
36 <td>{{file.path}}</td>
37 <td>{{file.size|filtered_filesizeformat}}</td>
38 </tr>
39 </tbody>
40 {% endfor %}
41 </table>
42
43 {% else %}
44 <div class="alert alert-info">
45 <strong>{{fullPackageSpec}}</strong> does not generate any files.
46 </div>
47 {% endif %}
48
49 </div> <!-- tab-pane active -->
50 </div> <!-- tab-content -->
51 {% else %}
52 {# Included case #}
53 <div class="tab-content">
54 <div class="tab-pane active">
55 <div class="lead well">
56 Package included in:
57 {% for itarget in package.buildtargetlist_package.all|dictsort:"target.target" %}
58 <a href="{% url 'package_included_detail' build.id itarget.target.id package.id %}">
59 {% if forloop.counter0 > 0 %}
60 ,&nbsp;
61 {% endif %}
62 {{itarget.target.target}}
63 </a>
64 {% endfor %}
65 </div>
66 </div> <!-- tab-pane active -->
67 </div> <!-- tab-content -->
68 {% endif %}
69
70 {% endwith %}
71{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
new file mode 100644
index 0000000000..a7aaab6de7
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
@@ -0,0 +1,125 @@
1{% extends "basebuilddetailpage.html" %}
2{% load projecttags %}
3
4{% block localbreadcrumb %}
5{% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 {% if target %}
7 <li><a href="{% url "target" build.id target.id %}">{{target.target}}</a></li>
8 {% else %}
9 <li><a href="{% url "packages" build.id %}"> Packages </a></li>
10 {% endif %}
11 <li>{{fullPackageSpec}}</li>
12{% endwith %}
13{% endblock localbreadcrumb %}
14
15{% block pagedetailinfomain %}
16{% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
17
18 <div class="row span11">
19 <div class="page-header">
20 {% block title %}
21 <h1>{{fullPackageSpec}}</h1>
22 {% endblock title %}
23 </div> <!-- page-header -->
24 </div> <!-- row span11 page-header -->
25
26 {% block twocolumns %}
27 <div class="row span7 tabbable">
28 {% block tabcontent %}
29 {% endblock tabcontent %}
30 </div> <!-- row span7 -->
31
32 <div class="row span4 well">
33 <h2>Package information</h2>
34
35 <!-- info presented as definition list -->
36 <dl>
37 <dt>
38 Size
39 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The size of the package"></i>
40 </dt>
41 <dd>
42 {% comment %}
43 if recipe is absent, filesize is not 0
44 {% endcomment %}
45 {% if package.recipe_id > 0 %}
46 {{package.size|filtered_filesizeformat}}
47 {% if target.file_size %}
48 ({{package.size|multiply:100|divide:target.file_size}}% of included package size)
49 {% endif %}
50
51 {% endif %}
52 </dd>
53
54 <dt>
55 License
56 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The license under which this package is distributed"></i>
57 </dt>
58 <dd>{{package.license}}</dd>
59
60 {% comment %}
61 # Removed per review on 1/18/2014 until license data population
62 # problemse are resolved.
63 <dt>
64 License files
65 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Location in disk of the license files that apply to the package"></i>
66 </dt>
67 <dd></dd>
68 {% endcomment %}
69
70 <dt>
71 Recipe
72 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The name of the recipe building this package"></i>
73 </dt>
74 <dd>
75 {% if package.recipe_id > 0 %}
76 <a href="{% url "recipe" build.id package.recipe_id %}"> {{package.recipe.name}} </a>
77 {% else %}
78 {{package.recipe.name}}
79 {% endif %}
80 </dd>
81
82 <dt>
83 Recipe version
84 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The version of the recipe building this package"></i>
85 </dt>
86 <dd>{{package.recipe.version}}</dd>
87
88 <dt>
89 Layer
90 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The name of the layer providing the recipe that builds this package"></i>
91 </dt>
92 <dd>
93 {{package.recipe.layer_version.layer.name}}
94 {% if package.recipe.layer_version.layer.name|format_none_and_zero != "" %}
95 {% comment %}
96 # Removed per team meeting of 1/29/2014 until
97 # decision on index search algorithm
98 <a href="http://layers.openembedded.org" target="_blank">
99 <i class="icon-share get-info"></i>
100 {% endcomment %}
101 </a>
102 {% endif %}
103 </dd>
104
105 <dt>
106 Layer branch
107 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The Git branch of the layer providing the recipe that builds this package"></i>
108 </dt>
109 <dd>{{package.recipe.layer_version.branch}}</dd>
110 <dt>
111 Layer commit
112 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The Git commit of the layer providing the recipe that builds this package"></i>
113 </dt>
114
115 <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd>
116 <dt>
117 Layer directory
118 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Location in disk of the layer providing the recipe that builds this package"></i>
119 </dt>
120 <dd><code>{{package.recipe.layer_version.layer.local_path}}</code></dd>
121 </dl>
122 </div> <!-- row4 well -->
123 {% endblock twocolumns %}
124{% endwith %}
125{% endblock pagedetailinfomain %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
new file mode 100644
index 0000000000..c8c2dddf29
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
@@ -0,0 +1,93 @@
1{% extends "package_detail_base.html" %}
2{% load projecttags %}
3
4{% block title %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1>
7 {% endwith %}
8{% endblock title %}
9
10{% block tabcontent %}
11 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="dependencies" %}
13 <div class="tab-content">
14 <div class="tab-pane active" id="dependencies">
15 {% ifnotequal runtime_deps|length 0 %}
16 <table class="table table-bordered table-hover">
17 <thead>
18 <tr>
19 <th>Package</th>
20 <th>Version</th>
21 <th>Size</th>
22 </tr>
23 </thead>
24 {% for runtime_dep in runtime_deps %}
25 <tbody>
26 <tr>
27 <td>
28 <a href="{% url 'package_included_detail' build.id target.id runtime_dep.depends_on_id %}">
29 {{runtime_dep.name}}
30 </a>
31 </td>
32 <td>{{runtime_dep.version}}</td>
33 <td>{{runtime_dep.size|filtered_filesizeformat}}</td>
34 </tr>
35 </tbody>
36 {% endfor %}
37 </table>
38 {% else %}
39 <div class="alert alert-info">
40 <strong>{{fullPackageSpec}}</strong> has no runtime dependencies.
41 </div>
42 {% endifnotequal %}
43
44 {% ifnotequal other_deps|length 0 %}
45 <h3>Other runtime relationships</h3>
46 <table class="table table-bordered table-hover">
47 <thead>
48 <tr>
49 <th>Package</th>
50 <th>Version</th>
51 <th>Size</th>
52 <th>
53 <i class="icon-question-sign get-help" title="There are 5 relationship types: recommends, suggests, provides, replaces and conflicts"></i>
54 Relationship type
55 </th>
56 </tr>
57 </thead>
58
59 {% for other_dep in other_deps %}
60 <tbody>
61 {% if other_dep.installed %}
62 <tr>
63 <td>
64 <a href="{% url 'package_included_detail' build.id target.id other_dep.depends_on_id %}">
65 {{other_dep.name}}
66 </a>
67 </td>
68 <td>{{other_dep.version}}</td>
69 <td>{{other_dep.size|filtered_filesizeformat}}</td>
70 <td>
71 {{other_dep.dep_type_display}}
72 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
73 </td>
74 </tr>
75 {% else %}
76 <tr class="muted">
77 <td>{{other_dep.name}}</td>
78 <td>{{other_dep.version}}</td>
79 <td></td>
80 <td>
81 {{other_dep.dep_type_display}}
82 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
83 </td>
84 </tr>
85 {% endif %}
86 </tbody>
87 {% endfor %}
88 </table>
89 {% endifnotequal %}
90 </div> <!-- end tab-pane -->
91 </div> <!-- end tab content -->
92 {% endwith %}
93{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_detail.html b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html
new file mode 100644
index 0000000000..018de3eb42
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html
@@ -0,0 +1,46 @@
1{% extends "package_detail_base.html" %}
2{% load projecttags %}
3
4{% block title %}
5{% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1>
7{% endwith %}
8{% endblock title %}
9
10{% block tabcontent %}
11{% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="detail" %}
13 <div class="tab-content">
14 <div class="tab-pane active" id="files">
15 {% if packageFileCount > 0 %}
16 <table class="table table-bordered table-hover">
17 <thead>
18 <tr>
19 <th>File</th>
20 <th>Size</th>
21 </tr>
22 </thead>
23 {% for file in package.buildfilelist_package.all|dictsort:"path" %}
24 <tbody>
25 <tr>
26 <td>
27 <a href="{% url 'image_information_dir' build.id target.id file.id %}">
28 {{file.path}}
29 </a>
30 </td>
31 <td>{{file.size|filtered_filesizeformat}}</td>
32 </tr>
33 </tbody>
34 {% endfor %}
35 </table>
36
37 {% else %}
38 <div class="alert alert-info">
39 <strong>{{fullPackageSpec}}</strong> does not generate any files.
40 </div>
41 {% endif %}
42 </div> <!-- end tab-pane -->
43 </div> <!-- end tab content -->
44
45{% endwith %}
46{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html
new file mode 100644
index 0000000000..9cfc7fe7c2
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html
@@ -0,0 +1,47 @@
1{% extends "package_detail_base.html" %}
2{% load projecttags %}
3
4{% block title %}
5 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec %}
6 <h1>{{fullPackageSpec}} <small>({{target.target}})</small></h1>
7 {% endwith %}
8{% endblock title %}
9
10{% block tabcontent %}
11 {% with fullPackageSpec=package.name|add:"-"|add:package.version|add:"-"|add:package.revision|filtered_packagespec packageFileCount=package.buildfilelist_package.count %}
12 {% include "package_included_tabs.html" with active_tab="reverse" %}
13 <div class="tab-content">
14 <div class="tab-pane active" id="brought-in-by">
15
16 {% ifequal reverse_deps|length 0 %}
17 <div class="alert alert-info">
18 <strong>{{fullPackageSpec}}</strong> has no reverse runtime dependencies.
19 </div>
20 {% else %}
21 <table class="table table-bordered table-hover">
22 <thead>
23 <tr>
24 <th>Package</th>
25 <th>Package Version</th>
26 <th>Size</th>
27 </tr>
28 </thead>
29 {% for reverse_dep in reverse_deps|dictsort:"name" %}
30 <tbody>
31 <tr>
32 <td>
33 <a href="{% url 'package_included_detail' build.id target.id reverse_dep.dependent_id %}">
34 {{reverse_dep.name}}
35 </a>
36 </td>
37 <td>{{reverse_dep.version}}</td>
38 <td>{{reverse_dep.size|filtered_filesizeformat}}</td>
39 </tr>
40 </tbody>
41 {% endfor %}
42 </table>
43 {% endifequal %}
44 </div> <!-- end tab-pane -->
45 </div> <!-- end tab content -->
46 {% endwith %}
47{% endblock tabcontent %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
new file mode 100644
index 0000000000..5a97ba36b3
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
@@ -0,0 +1,33 @@
1
2 <ul class="nav nav-pills">
3 {% if active_tab == "detail" %}
4 <li class="active">
5 {% else %}
6 <li class="">
7 {% endif %}
8 <a href="{% url 'package_included_detail' build.id target.id package.id %}">
9 <i class="icon-question-sign get-help" title="The files this package adds to the image root file system"></i>
10 Files in root file system ({{packageFileCount}})
11 </a>
12 </li>
13 {% if active_tab == "dependencies" %}
14 <li class="active">
15 {% else %}
16 <li class="">
17 {% endif %}
18 <a href="{% url 'package_included_dependencies' build.id target.id package.id %}">
19 <i class="icon-question-sign get-help" data-toggle="tooltip" title="Package runtime dependencies"></i>
20 Runtime dependencies ({{dependency_count}})
21 </a>
22 </li>
23 {% if active_tab == "reverse" %}
24 <li class="active">
25 {% else %}
26 <li class="">
27 {% endif %}
28 <a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}">
29 <i class="icon-question-sign get-help" data-toggle="tooltip" title="The package runtime reverse dependencies (i.e. which other packages in this image depend on this package). Reverse dependencies reflect only the 'depends' dependency type"></i>
30 Reverse Runtime dependencies ({{reverse_count}})
31 </a>
32 </li>
33 </ul>
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe.html b/bitbake/lib/toaster/toastergui/templates/recipe.html
index 5dea75382f..eba15baad3 100644
--- a/bitbake/lib/toaster/toastergui/templates/recipe.html
+++ b/bitbake/lib/toaster/toastergui/templates/recipe.html
@@ -161,9 +161,9 @@
161 {% for package in packages %} 161 {% for package in packages %}
162 162
163 <tr> 163 <tr>
164 <td><a href="{% url "package" build.pk package.pk %}">{{package.name}}</a></td> 164 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
165 <td><a href="{% url "package" build.pk package.pk %}">{{package.version}}-{{package.revision}}</a></td> 165 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}_{{package.revision}}</a></td>
166 <td><a href="{% url "package" build.pk package.pk %}">{{package.size}}</a></td> 166 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.size}}</a></td>
167 </tr> 167 </tr>
168 168
169 {% endfor %} 169 {% endfor %}