summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/toaster/toastergui/templates/builddashboard.html29
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py51
2 files changed, 36 insertions, 44 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html
index febf8af747..32212ea8d4 100644
--- a/bitbake/lib/toaster/toastergui/templates/builddashboard.html
+++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html
@@ -69,11 +69,11 @@
69 69
70{%if build.outcome == build.SUCCEEDED%} 70{%if build.outcome == build.SUCCEEDED%}
71<!-- built images --> 71<!-- built images -->
72{% if hasImages %} 72 {% if hasArtifacts %}
73 <h2>Images</h2> 73 <h2>Build artifacts</h2>
74 {% for target in targets %} 74 {% for target in targets %}
75 {% if target.target.is_image %} 75 {% if target.target.is_image %}
76 <div class="well well-transparent dashboard-section"> 76 <div class="well well-transparent dashboard-section" data-artifacts-for-target="{{target.target.pk}}">
77 <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target.target}}</a></h3> 77 <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target.target}}</a></h3>
78 <dl class="dl-horizontal"> 78 <dl class="dl-horizontal">
79 <dt>Packages included</dt> 79 <dt>Packages included</dt>
@@ -81,26 +81,7 @@
81 <dt>Total package size</dt> 81 <dt>Total package size</dt>
82 <dd>{{target.pkgsz|filtered_filesizeformat}}</dd> 82 <dd>{{target.pkgsz|filtered_filesizeformat}}</dd>
83 </dl> 83 </dl>
84 {% if target.targetHasNoImages %} 84 {% if target.targetHasImages %}
85 <div class="row">
86 <div class="col-md-7">
87 <div class="alert alert-info">
88 <p>
89 <strong>This build did not create any image files</strong>
90 </p>
91 <p>
92 This is probably because valid image and license manifest
93 files from a previous build already exist in your
94 <code>build/tmp/deploy</code>
95 directory. You can
96 also <a href="{% url 'target' build.pk target.target.pk %}">view the
97 license manifest information</a> in Toaster.
98 </p>
99 </div>
100 </div>
101 </div>
102 {% endif %}
103 {% if not target.targetHasNoImages %}
104 <dl class="dl-horizontal"> 85 <dl class="dl-horizontal">
105 <dt> 86 <dt>
106 Manifests 87 Manifests
@@ -163,7 +144,7 @@
163 </div> 144 </div>
164 {% endif %} 145 {% endif %}
165 {% endfor %} 146 {% endfor %}
166{% endif %} 147 {% endif %}
167 148
168{%else%} 149{%else%}
169<!-- error dump --> 150<!-- error dump -->
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 02caf54d50..baaa2883bc 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -472,46 +472,57 @@ def builddashboard( request, build_id ):
472 tgts = Target.objects.filter( build_id = build_id ).order_by( 'target' ); 472 tgts = Target.objects.filter( build_id = build_id ).order_by( 'target' );
473 473
474 # set up custom target list with computed package and image data 474 # set up custom target list with computed package and image data
475 targets = [ ] 475 targets = []
476 ntargets = 0 476 ntargets = 0
477 477
478 targetHasNoImages = False 478 # True if at least one target for this build has an SDK artifact
479 # or image file
480 has_artifacts = False
481
479 for t in tgts: 482 for t in tgts:
480 elem = { } 483 elem = {}
481 elem[ 'target' ] = t 484 elem['target'] = t
485
486 target_has_images = False
487 image_files = []
488
482 npkg = 0 489 npkg = 0
483 pkgsz = 0 490 pkgsz = 0
484 package = None 491 package = None
485 for package in Package.objects.filter(id__in = [x.package_id for x in t.target_installed_package_set.all()]): 492 for package in Package.objects.filter(id__in = [x.package_id for x in t.target_installed_package_set.all()]):
486 pkgsz = pkgsz + package.size 493 pkgsz = pkgsz + package.size
487 if ( package.installed_name ): 494 if package.installed_name:
488 npkg = npkg + 1 495 npkg = npkg + 1
489 elem[ 'npkg' ] = npkg 496 elem['npkg'] = npkg
490 elem[ 'pkgsz' ] = pkgsz 497 elem['pkgsz'] = pkgsz
491 ti = Target_Image_File.objects.filter( target_id = t.id ) 498 ti = Target_Image_File.objects.filter(target_id = t.id)
492 imageFiles = [ ]
493 for i in ti: 499 for i in ti:
494 ndx = i.file_name.rfind( '/' ) 500 ndx = i.file_name.rfind('/')
495 if ( ndx < 0 ): 501 if ndx < 0:
496 ndx = 0; 502 ndx = 0;
497 f = i.file_name[ ndx + 1: ] 503 f = i.file_name[ndx + 1:]
498 imageFiles.append({ 504 image_files.append({
499 'id': i.id, 505 'id': i.id,
500 'path': f, 506 'path': f,
501 'size': i.file_size, 507 'size': i.file_size,
502 'suffix': i.suffix 508 'suffix': i.suffix
503 }) 509 })
504 if t.is_image and (len(imageFiles) <= 0 or len(t.license_manifest_path) <= 0): 510 if len(image_files) > 0:
505 targetHasNoImages = True 511 target_has_images = True
506 elem[ 'imageFiles' ] = imageFiles 512 elem['targetHasImages'] = target_has_images
507 elem[ 'targetHasNoImages' ] = targetHasNoImages 513
514 elem['imageFiles'] = image_files
508 elem['target_kernel_artifacts'] = t.targetkernelfile_set.all() 515 elem['target_kernel_artifacts'] = t.targetkernelfile_set.all()
509 516
510 target_sdk_files = t.targetsdkfile_set.all() 517 target_sdk_files = t.targetsdkfile_set.all()
511 elem['target_sdk_artifacts_count'] = target_sdk_files.count() 518 target_sdk_artifacts_count = target_sdk_files.count()
519 elem['target_sdk_artifacts_count'] = target_sdk_artifacts_count
512 elem['target_sdk_artifacts'] = target_sdk_files 520 elem['target_sdk_artifacts'] = target_sdk_files
513 521
514 targets.append( elem ) 522 if target_has_images or target_sdk_artifacts_count > 0:
523 has_artifacts = True
524
525 targets.append(elem)
515 526
516 ## 527 ##
517 # how many packages in this build - ignore anonymous ones 528 # how many packages in this build - ignore anonymous ones
@@ -528,7 +539,7 @@ def builddashboard( request, build_id ):
528 context = { 539 context = {
529 'build' : build, 540 'build' : build,
530 'project' : build.project, 541 'project' : build.project,
531 'hasImages' : build.has_images(), 542 'hasArtifacts' : has_artifacts,
532 'ntargets' : ntargets, 543 'ntargets' : ntargets,
533 'targets' : targets, 544 'targets' : targets,
534 'recipecount' : recipeCount, 545 'recipecount' : recipeCount,