summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/models.py
diff options
context:
space:
mode:
authorElliot Smith <elliot.smith@intel.com>2016-07-12 15:54:50 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-19 08:56:51 +0100
commit587275eefd744032f00ebdce35134b2ab2bb7572 (patch)
treef8f178cdeacf3122df1ab7abd4550fbf8b4374c0 /bitbake/lib/toaster/orm/models.py
parent150e5588a01b1334ae3158c9b13e28bec428af37 (diff)
downloadpoky-587275eefd744032f00ebdce35134b2ab2bb7572.tar.gz
bitbake: toaster: use has_images() methods to display images correctly
In the build dashboard, we had issues with showing images correctly, as we were using the is_image property of targets to determine whether a target would have image files. This property can be set to True if a target refers to an image recipe (e.g. "core-image-minimal"), even if the task used in the build didn't produce any image files. By adding has_images() methods to the Target and Build objects, which count associated Target_Image_File objects, we can correctly determine whether a target has image files associated with it, and if any of the targets for a build has image files. This means that we can screen out the left-hand "Images" menu options for builds which contained image-related targets (e.g. "core-image-minimal") but which didn't produce any images (e.g. "rootfs" task). [YOCTO #9500] [YOCTO #9784] (Bitbake rev: f6bba0ff254d5ed3163151d4b938f3a43c9acb0a) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: bavery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r--bitbake/lib/toaster/orm/models.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 61f6a2072e..0443a4589d 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -436,17 +436,32 @@ class Build(models.Model):
436 eta += ((eta - self.started_on)*(100-completeper))/completeper 436 eta += ((eta - self.started_on)*(100-completeper))/completeper
437 return eta 437 return eta
438 438
439 def has_images(self):
440 """
441 Returns True if at least one of the targets for this build has an
442 image file associated with it, False otherwise
443 """
444 targets = Target.objects.filter(build_id=self.id)
445 has_images = False
446 for target in targets:
447 if target.has_images():
448 has_images = True
449 break
450 return has_images
451
439 def get_image_file_extensions(self): 452 def get_image_file_extensions(self):
440 """ 453 """
441 Get list of file name extensions for images produced by this build; 454 Get string of file name extensions for images produced by this build;
442 note that this is the actual list of extensions stored on Target objects 455 note that this is the actual list of extensions stored on Target objects
443 for this build, and not the value of IMAGE_FSTYPES. 456 for this build, and not the value of IMAGE_FSTYPES.
457
458 Returns comma-separated string, e.g. "vmdk, ext4"
444 """ 459 """
445 extensions = [] 460 extensions = []
446 461
447 targets = Target.objects.filter(build_id = self.id) 462 targets = Target.objects.filter(build_id = self.id)
448 for target in targets: 463 for target in targets:
449 if (not target.is_image): 464 if not target.is_image:
450 continue 465 continue
451 466
452 target_image_files = Target_Image_File.objects.filter( 467 target_image_files = Target_Image_File.objects.filter(
@@ -739,6 +754,12 @@ class Target(models.Model):
739 sdk_file.target = self 754 sdk_file.target = self
740 sdk_file.save() 755 sdk_file.save()
741 756
757 def has_images(self):
758 """
759 Returns True if this target has one or more image files attached to it.
760 """
761 return self.target_image_file_set.all().count() > 0
762
742# kernel artifacts for a target: bzImage and modules* 763# kernel artifacts for a target: bzImage and modules*
743class TargetKernelFile(models.Model): 764class TargetKernelFile(models.Model):
744 target = models.ForeignKey(Target) 765 target = models.ForeignKey(Target)
@@ -775,6 +796,9 @@ class Target_Image_File(models.Model):
775 796
776 @property 797 @property
777 def suffix(self): 798 def suffix(self):
799 """
800 Suffix for image file, minus leading "."
801 """
778 for suffix in Target_Image_File.SUFFIXES: 802 for suffix in Target_Image_File.SUFFIXES:
779 if self.file_name.endswith(suffix): 803 if self.file_name.endswith(suffix):
780 return suffix 804 return suffix