diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates/builddashboard.html')
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/builddashboard.html | 182 |
1 files changed, 143 insertions, 39 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html index acf4d0a361..4e600283a5 100644 --- a/bitbake/lib/toaster/toastergui/templates/builddashboard.html +++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html @@ -36,9 +36,21 @@ {% endif %} <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a></strong></span> {% endif %} - <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a></span> + <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a> + {% if MANAGED and build.project %} + <a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%else%}btn-danger{%endif%} pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a> + {% endif %} + </span> {%endif%} </div> + {% if build.toaster_exceptions.count > 0 %} + <div class="row"> + <small class="pull-right"> + <i class="icon-question-sign get-help get-help-blue" title="" data-original-title="Toaster exceptions do not affect your build: only the operation of Toaster"></i> + <a class="show-exceptions" href="#exceptions">Toaster threw {{build.toaster_exceptions.count}} exception{{build.toaster_exceptions.count|pluralize}}</a> + </small> + </div> + {% endif %} </div> </div> @@ -46,7 +58,7 @@ <div class="accordion span10 pull-right" id="errors"> <div class="accordion-group"> <div class="accordion-heading"> - <a class="accordion-toggle error toggle-errors"> + <a class="accordion-toggle error toggle-errors"> <h2 id="error-toggle"> <i class="icon-minus-sign"></i> {{build.errors_no}} error{{build.errors_no|pluralize}} @@ -60,7 +72,8 @@ <div class="alert alert-error"> <pre>{{error.message}}</pre> </div> - {% endif %}{% endfor %} + {% endif %} + {% endfor %} </div> </div> </div> @@ -70,23 +83,23 @@ {%if build.outcome == build.SUCCEEDED%} <!-- built images --> +{% if hasImages %} <div class="row-fluid span10 pull-right"> - {% if hasImages %} - <h2>Images</h2> - {% for target in targets %} + <h2>Images</h2> + {% for target in targets %} {% if target.target.is_image %} - <div class="well dashboard-section"> - <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a> + <div class="well dashboard-section"> + <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a> </h3> - <dl class="dl-horizontal"> - <dt>Packages included</dt> - <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd> - <dt>Total package size</dt> - <dd>{{target.pkgsz|filtered_filesizeformat}}</dd> + <dl class="dl-horizontal"> + <dt>Packages included</dt> + <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd> + <dt>Total package size</dt> + <dd>{{target.pkgsz|filtered_filesizeformat}}</dd> {% if target.targetHasNoImages %} - </dl> - <div class="row-fluid"> - <div class="alert alert-info span7"> + </dl> + <div class="row-fluid"> + <div class="alert alert-info span7"> <p> <b>This build did not create any image files</b> </p> @@ -99,38 +112,81 @@ license manifest information</a> in Toaster. </p> </div> - </div> + </div> {% else %} - <dt> - <i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i> - <a href="{% url 'targetpkg' build.pk target.target.pk %}">License manifest</a> - </dt> - <dd><code>{{target.target.license_manifest_path}}</code></dd> - <dt> - <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i> - Image files - </dt> - <dd> - <ul> + <dt> + <i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i> + + {% if MANAGED and build.project %} + License manifest + {% else %} + <a href="{% url 'targetpkg' build.pk target.target.pk %}">License manifest</a> + {% endif %} + </dt> + {% if MANAGED and build.project %} + <dd> + <a href="{% url 'targetpkg' build.pk target.target.pk %}">View in Toaster</a> | + <a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd> + {% else %} + <dd><code>{{target.target.license_manifest_path}}</code></dd> + {% endif %} + <dt> + <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i> + Image files + </dt> + <dd> + <ul> {% for i in target.imageFiles %} - <li>{{i.path}} - ({{i.size|filtered_filesizeformat}})</li> + {% if build.project %} + <li><a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">{{i.path}}</a> + {% else %} + <li>{{i.path}} + {% endif %} + ({{i.size|filtered_filesizeformat}})</li> {% endfor %} - </ul> - </dd> - </dl> + </ul> + </dd> + </dl> {% endif %} - </div> + </div> {% endif %} - {% endfor %} - - {% endif %} + {% endfor %} </div> +{% endif %} {%else%} <!-- error dump --> {%endif%} +<!-- other artifacts --> +{% if build.buildartifact_set.all.count > 0 %} +<div class="row-fluid span10 pull-right"> +<h2>Other artifacts</h2> + + <div class="well dashboard-section"> + <dl class="dl-horizontal"> + <dt> + <i class="icon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></i> + Other artifacts</dt> + <dd><div> + {% for ba in build.buildartifact_set.all|dictsort:"file_name" %} + {% if MANAGED and build.project %} + <a href="{%url 'build_artifact' build.id 'buildartifact' ba.id %}"> + {% endif %} + {{ba.get_local_file_name}} + {% if MANAGED and build.project %} + </a> + {% endif %} + + ({{ba.file_size|filtered_filesizeformat}}) <br/> + {% endfor %} + </div> + </dd> + + </div> + +</div> +{% endif %} <!-- build summary --> <div class="row-fluid span10 pull-right"> <h2>Build summary</h2> @@ -145,6 +201,27 @@ <div class="well span4 dashboard-section"> <h4><a href="{%url 'tasks' build.pk%}">Tasks</a></h4> <dl> + {% query build.task_build outcome=4 order__gt=0 as exectask%} + {% if exectask.count > 0 %} + <dt>Failed tasks</dt> + <dd> + {% if exectask.count == 1 %} + <a class="error" href="{% url "task" build.id exectask.0.id %}"> + {{exectask.0.recipe.name}} + <span class="task-name">{{exectask.0.task_name}}</span> + + {% if MANAGED and build.project %} + <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}"> + <i class="icon-download-alt" title="" data-original-title="Download task log file"></i> + </a> + {% endif %} + + </a> + {% elif exectask.count > 1%} + <a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a> + {% endif %} + </dd> + {% endif %} <dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd> <dt> Tasks executed @@ -154,12 +231,12 @@ <dt> Tasks not executed <i class="icon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i> - </dt> + </dt> <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd> <dt> Reuse <i class="icon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></i> - </dt> + </dt> <dd> {% query build.task_build order__gt=0 as texec %} {% if noexectask.count|multiply:100|divide:texec.count < 0 %} @@ -206,6 +283,33 @@ </div> {% endif %} + +{% if build.toaster_exceptions.count > 0 %} +<div class="accordion span10 pull-right" id="exceptions"> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle exception toggle-exceptions"> + <h2 id="exception-toggle"> + <i class="icon-warning-sign"></i> + {{build.toaster_exceptions.count}} Toaster exception{{build.toaster_exceptions.count|pluralize}} + </h2> + </a> + </div> + <div class="accordion-body collapse" id="collapse-exceptions"> + <div class="accordion-inner"> + <div class="span10"> + {% for exception in build.toaster_exceptions %} + <div class="alert alert-exception"> + <pre>{{exception.message}}</pre> + </div> + {% endfor %} + </div> + </div> + </div> + </div> +</div> +{% endif %} + <script type="text/javascript"> $(document).ready(function() { //show warnings section when requested from the previous page |