1{% extends "basebuilddetailpage.html" %}
2
3{% load projecttags %}
4
5{% block title %} {{object.name}}_{{object.version}} - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
6{% block localbreadcrumb %}
7<li><a href="{% url 'recipes' build.pk %}">Recipes</a></li>
8<li>{{object.name}}_{{object.version}} </li>
9{% endblock %}
10
11{% block pagedetailinfomain %}
12
13<!-- Begin container -->
14
15<div class="row">
16  <div class="col-md-12">
17    <div class="page-header build-data">
18        <h1>{{object.name}}_{{object.version}}</h1>
19    </div>
20  </div>
21</div>
22
23<div class="row">
24  <div class="col-md-8 tabbable">
25    <ul class="nav nav-tabs">
26        <li class="{{tab_states.1}}">
27            <a href="#information" data-toggle="tab">
28                <span class="glyphicon glyphicon-question-sign get-help" title="Build-related
29                    information about the recipe"></span>
30                Recipe details
31            </a>
32        </li>
33        <li>
34             <a href="{% url "recipe_packages" build.pk object.id %}">
35                <span class="glyphicon glyphicon-question-sign get-help" title="The packaged
36                    output resulting from building the recipe"></span>
37                Packages ({{package_count}})
38            </a>
39        </li>
40        <li class="{{tab_states.3}}">
41            <a href="#dependencies" data-toggle="tab">
42                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
43                    build-time dependencies (i.e. other recipes)"></span>
44                Build dependencies ({{object.r_dependencies_recipe.all.count}})
45            </a>
46        </li>
47        <li class="{{tab_states.4}}">
48            <a href="#brought-in-by" data-toggle="tab">
49                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
50                    build-time reverse dependencies (i.e. the recipes that
51                depend on this recipe)"></span>
52                Reverse build dependencies ({{object.r_dependencies_depends.all.count}})
53            </a>
54        </li>
55    </ul>
56    <div class="tab-content">
57        <div class="tab-pane {{tab_states.1}}" id="information">
58            <dl class="dl-horizontal">
59                <dt>
60                    <span class="glyphicon glyphicon-question-sign get-help" title="The name of
61                        the layer providing the recipe"></span>
62                    Layer
63                </dt>
64                <dd>{{layer.name}}</dd>
65
66                <dt>
67                    <span class="glyphicon glyphicon-question-sign get-help" title="Path to the
68                        recipe .bb file"></span>
69                    Recipe file
70                </dt>
71                <dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd>
72                <dt>
73                    <span class="glyphicon glyphicon-question-sign get-help"
74                        title="The Git branch of the layer providing the
75                    recipe"></span>
76                    Layer branch
77                </dt>
78                {% if layer_version.layer.local_source_dir %}
79                <dd>
80		  <span class="text-muted">Not applicable</span>
81		  <span class="glyphicon glyphicon-question-sign get-help" title="The source
82                  code of {{layer_version.layer.name}} is not in a git repository
83                  so there is no branch associated with it"></span>
84                </dd>
85                {% else %}
86                <dd>{{layer_version.branch}}</dd>
87		{% endif %}
88                <dt>
89                    <span class="glyphicon glyphicon-question-sign get-help" title="The Git
90                        commit of the layer providing the recipe"></span>
91                    Layer commit
92                </dt>
93                {% if layer_version.layer.local_source_dir %}
94		<dd>
95		  <span class="text-muted">Not applicable</span>
96		  <span class="glyphicon glyphicon-question-sign get-help" title="The source
97                  code of {{layer_version.layer.name}} is not in a git repository
98                  so there is no commit associated with it"></span>
99		</dd>
100                {% else %}
101                <dd class="iscommit">{{layer_version.commit}}</dd>
102		{% endif %}
103                {% if object.provides_set.all %}
104                <dt>
105                    <span class="glyphicon glyphicon-question-sign get-help"
106                     title="A list of aliases by which a particular recipe can be known. The additional aliases are
107                           synonyms for the recipe and can be useful satisfying dependencies of other recipes during
108                           the build"></span>
109                    PROVIDES
110                </dt>
111                 <dd><code>{% for provider in object.provides_set.all %}{{ provider.name }}&nbsp;{% endfor %}</code></dd>
112                {% endif %}
113            </dl>
114
115            <h2 class="details">Tasks</h2>
116            {% if not tasks %}
117            <div class="alert alert-info">
118                <strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build.
119            </div>
120            {% else %}
121            <div class="table-responsive">
122            <table class="table table-bordered table-hover">
123                <thead>
124                  <tr>
125                    <th>
126                        <span class="glyphicon glyphicon-question-sign
127                            get-help" title="The running sequence of each task
128                            in the build"></span>
129                        Order
130                    </th>
131                    <th>
132                        <span class="glyphicon glyphicon-question-sign get-help" title="The name
133                            of the task"></span>
134                        Task
135                    </th>
136                    <th>
137                        <span class="glyphicon glyphicon-question-sign get-help" title="This
138                            value tells you if a task had to run (executed) in
139                        order to generate the task output, or if the output was
140                    provided by another task and therefore the task didn't need
141                to run (not executed)"></span>
142                        Executed
143                    </th>
144                    <th>
145                        <span class="glyphicon glyphicon-question-sign get-help" title="This
146                            column tells you if 'executed' tasks succeeded or
147                            failed. The column also tells you why 'not executed'
148                            tasks did not need to run"></span>
149                        Outcome
150                    </th>
151                    <th>
152                        <span class="glyphicon glyphicon-question-sign get-help" title="This
153                            column tells you if a task tried to restore output
154                            from the <code>sstate-cache</code> directory or
155                            mirrors, and reports the result: Succeeded, Failed or File
156                            not in cache"></span>
157                        Cache attempt
158                    </th>
159                  </tr>
160                </thead>
161                <tbody>
162
163                    {% for task in tasks %}
164
165                    <tr {{ task|task_color }} >
166
167                    <td>{{task.order}}</td>
168                    <td>
169                        <a href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
170                        {% if task.get_description %}<span class="glyphicon
171                            glyphicon-question-sign get-help hover-help"
172                            title="{{task.get_description}}"></span>
173                        {% endif %}
174                    </td>
175
176                    <td>{{task.get_executed_display}}</td>
177
178                    <td>{{task.get_outcome_display}}
179                        {% if task.outcome == task.OUTCOME_FAILED %}
180                            <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
181                                <span class="glyphicon glyphicon-download-alt
182                                    get-help" title="Download task log
183                                file"></span>
184                            </a>
185                        {% endif %}
186                        <i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
187                    </td>
188                    <td>
189                        {% if task.sstate_result != task.SSTATE_NA %}
190                            {{task.get_sstate_result_display}}
191                        {% endif %}
192                    </td>
193
194                    </tr>
195
196                    {% endfor %}
197                </tbody>
198            </table>
199            </div>
200            {% endif %}
201        </div>
202        <div class="tab-pane {{tab_states.3}}" id="dependencies">
203
204            {% if not object.r_dependencies_recipe.all %}
205            <div class="alert alert-info">
206                <strong>{{object.name}}_{{object.version}}</strong> has no build dependencies.
207            </div>
208            {% else %}
209            <table class="table table-bordered table-hover">
210                <thead>
211                    <tr>
212                        <th>
213                            Recipe
214                        </th>
215                        <th>
216                            Version
217                        </th>
218                    </tr>
219                </thead>
220                <tbody>
221
222                    {% for rr in object.r_dependencies_recipe.all|dictsort:"depends_on.name" %}
223                    <tr>
224                        <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a>
225                            {% if rr.via %}
226                            <span class="text-muted">satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
227                                <span class="glyphicon glyphicon-question-sign get-help hover-help"
228                                 title="This dependency is satisfied by the PROVIDES value
229                                 <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></span>
230                            {% endif %}
231                        </td>
232                        <td>{{rr.depends_on.version}}</td>
233                    </tr>
234                    {% endfor %}
235
236                </tbody>
237            </table>
238            {% endif %}
239
240        </div>
241        <div class="tab-pane {{tab_states.4}}" id="brought-in-by">
242
243            {% if not object.r_dependencies_depends.all %}
244            <div class="alert alert-info">
245                <strong>{{object.name}}_{{object.version}}</strong> has no reverse build dependencies.
246            </div>
247            {% else %}
248            <table class="table table-bordered table-hover">
249                <thead>
250                    <tr>
251                        <th>
252                            Recipe
253                        </th>
254                        <th>
255                            Version
256                        </th>
257                    </tr>
258                </thead>
259                <tbody>
260
261                    {% for rr in object.r_dependencies_depends.all|dictsort:"recipe.name" %}
262                    <tr>
263                        <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a>
264                        {% if rr.via %}
265                        <span class="text-muted"> satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
266                            <span class="glyphicon glyphicon-question-sign get-help hover-help"
267                             title="This dependency is satisfied by the PROVIDES value
268                             <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></i>
269                        {% endif %}
270                        </td>
271                        <td>{{rr.recipe.version}}</td>
272                    </tr>
273                    {% endfor %}
274
275                </tbody>
276            </table>
277            {% endif %}
278
279        </div>
280    </div>
281</div>
282
283<div class="col-md-4">
284  <div class="well">
285    <h2>About {{object.name}}</h2>
286    <dl class="item-info">
287        {% if object.summary %}
288            <dt>Summary</dt>
289            <dd>{{object.summary}}</dd>
290        {% endif %}
291        {% if object.description %}
292            <dt>Description</dt>
293            <dd>{{object.description}}</dd>
294        {% endif %}
295        {% if object.homepage %}
296            <dt>Homepage</dt>
297            <dd><a href="{{object.homepage}}">{{object.homepage}}</a></dd>
298        {% endif %}
299        {% if object.bugtracker %}
300            <dt>Bugtracker</dt>
301            <dd><a href="{{object.bugtracker}}">{{object.bugtracker}}</a></dd>
302        {% endif %}
303        {% if object.section %}
304            <dt>
305            Section
306            <span class="glyphicon glyphicon-question-sign get-help" title="The section in which recipes should be categorized"></span>
307            </dt>
308            <dd>{{object.section}}</dd>
309        {% endif %}
310        {% if object.license %}
311            <dt>License</dt>
312            <dd>{{object.license}}</dd>
313        {% endif %}
314    </dl>
315  </div>
316</div>
317
318</div> <!-- end row -->
319
320{% endblock %}
321