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 }} {% 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