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