diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2016-08-17 14:31:25 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2016-08-22 16:43:26 +0000 |
commit | 60f9d69e016b11c468c98ea75ba0a60c44afbbc4 (patch) | |
tree | ecb49581a9e41a37943c22cd9ef3f63451b20ee7 /import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html | |
parent | e18c61205e0234b03697129c20cc69c9b3940efc (diff) | |
download | blackbird-openbmc-60f9d69e016b11c468c98ea75ba0a60c44afbbc4.tar.gz blackbird-openbmc-60f9d69e016b11c468c98ea75ba0a60c44afbbc4.zip |
yocto-poky: Move to import-layers subdir
We are going to import additional layers, so create a subdir to
hold all of the layers that we import with git-subtree.
Change-Id: I6f732153a22be8ca663035c518837e3cc5ec0799
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html')
-rw-r--r-- | import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html new file mode 100644 index 000000000..a0da71ea4 --- /dev/null +++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html @@ -0,0 +1,278 @@ +{% extends "basebuildpage.html" %} +{% load humanize %} +{% load projecttags %} + +{% block title %} {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %} +{% block parentbreadcrumb %} +{% if build.get_sorted_target_list.count > 0 %} + {{build.get_sorted_target_list.0.target}} +{% endif %} + +{%if build.target_set.all.count > 1%}(+{{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}}) +{% endblock %} + +{% block buildinfomain %} +<!-- page title --> +<div class="row-fluid span10"> + <div class="page-header"> + <h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1> + </div> +</div> + +<!-- build result bar --> +<div class="row-fluid span10 pull-right"> + <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}"> + <div class="row-fluid lead"> + <span class="pull-left"><strong> + {%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%} + </strong> on + {{build.completed_on|date:"d/m/y H:i"}} +</span> +{% if build.warnings.count or build.errors.count %} + with +{% endif %} +{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} +{% if build.errors.count %} + <span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a></strong></span> +{% endif %} +{% if build.warnings.count %} +{% if build.errors.count %} + and +{% endif %} + <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a></strong></span> +{% endif %} + <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a> + {% if build.cooker_log_path %} + <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> + </div> +</div> + +{% if build.errors.count %} +<div class="accordion span10 pull-right" id="errors"> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle error toggle-errors"> + <h2 id="error-toggle"> + <i class="icon-minus-sign"></i> + {{build.errors.count}} error{{build.errors.count|pluralize}} + </h2> + </a> + </div> + <div class="accordion-body collapse in" id="collapse-errors"> + <div class="accordion-inner"> + <div class="span10"> + {% for error in build.errors %} + <div class="alert alert-error" data-error="{{ error.id }}"> + <pre>{{error.message}}</pre> + </div> + {% endfor %} + </div> + </div> + </div> + </div> +</div> +{% endif %} + +{%if build.outcome == build.SUCCEEDED%} +<!-- built images --> +{% if hasImages %} +<div class="row-fluid span10 pull-right"> + <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> + </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> + {% if target.targetHasNoImages %} + </dl> + <div class="row-fluid"> + <div class="alert alert-info span7"> + <p> + <b>This build did not create any image files</b> + </p> + <p> + This is probably because valid image and license manifest + files from a previous build already exist in your + <code>.../poky/build/tmp/deploy</code> + directory. You can + also <a href="{% url 'targetpkg' build.pk target.target.pk %}">view the + license manifest information</a> in Toaster. + </p> + </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> + + License manifest + </dt> + <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> + <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> + <a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}"> + {{i.suffix}} + </a> + ({{i.size|filtered_filesizeformat}}) + </li> + {% endfor %} + </ul> + </dd> + </dl> + {% endif %} + </div> + {% 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" %} + <a href="{%url 'build_artifact' build.id 'buildartifact' ba.id %}"> + {{ba.get_basename}} + </a> + + ({{ba.file_size|filtered_filesizeformat}}) <br/> + {% endfor %} + </div> + </dd> + </dl> + </div> + +</div> +{% endif %} +<!-- build summary --> +<div class="row-fluid span10 pull-right"> +<h2>Build summary</h2> + <div class="well span4 dashboard-section" style="margin-left:0px;"> + <h4><a href="{%url 'configuration' build.pk%}">Configuration</a></h4> + <dl> + <dt>Machine</dt><dd>{{build.machine}}</dd> + <dt>Distro</dt><dd>{{build.distro}}</dd> + <dt>Layers</dt>{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<dd>{{i.layer.name}}</dd>{%endfor%} + </dl> + </div> + <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> + </a> + + <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> + + {% 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 + <i class="icon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></i> + </dt> + <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd> + <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> + <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> + <dd> +{% query build.task_build order__gt=0 as texec %} +{% if noexectask.count|multiply:100|divide:texec.count < 0 %} +0 +{% else %} +{{noexectask.count|multiply:100|divide:texec.count}} +{% endif %} +% + </dd> + </dl> + </div> + <div class="well span4 dashboard-section"> + <h4><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h4> + <dl> + <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd> + <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd> + </dl> + </div> +</div> + +{% if build.warnings.count %} +<div class="accordion span10 pull-right" id="warnings"> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle warning toggle-warnings"> + <h2 id="warning-toggle"> + <i class="icon-warning-sign"></i> + {{build.warnings.count}} warning{{build.warnings.count|pluralize}} + </h2> + </a> + </div> + <div class="accordion-body collapse" id="collapse-warnings"> + <div class="accordion-inner"> + <div class="span10"> + {% for warning in logmessages %}{% if warning.level == 1 %} + <div class="alert alert-warning"> + <pre>{{warning.message}}</pre> + </div> + {% endif %}{% endfor %} + </div> + </div> + </div> + </div> +</div> +{% endif %} + +<script type="text/javascript"> + $(document).ready(function() { + //show warnings section when requested from the previous page + if (location.href.search('#warnings') > -1) { + $('#collapse-warnings').addClass('in'); + } + }); +</script> + +{% endblock %} |