1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 12:29:55 +00:00

bitbake: toaster: Check whether buildrequest exists before using it

Builds initiated from the command line don't have a buildrequest
associated with them. The build.buildrequest association is
only added if a build is triggered from toaster.

Some of the code for displaying the status of a build refers
to build.buildrequest without checking whether it has been set,
which causes an error to be thrown.

Add a guard to check whether the buildrequest has been set.

[YOCTO #8277]

(Bitbake rev: af33409612139ab2347baf6b847b23faea19752d)

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Elliot Smith
2015-10-14 15:43:44 +01:00
committed by Richard Purdie
parent 1feeb8e499
commit 026e981264
+18 -2
View File
@@ -344,6 +344,9 @@ class Build(models.Model):
tgts = Target.objects.filter(build_id = self.id).order_by( 'target' ); tgts = Target.objects.filter(build_id = self.id).order_by( 'target' );
return( tgts ); return( tgts );
def get_outcome_text(self):
return Build.BUILD_OUTCOME[int(self.outcome)][1]
@property @property
def toaster_exceptions(self): def toaster_exceptions(self):
return self.logmessage_set.filter(level=LogMessage.EXCEPTION) return self.logmessage_set.filter(level=LogMessage.EXCEPTION)
@@ -361,10 +364,23 @@ class Build(models.Model):
return (self.completed_on - self.started_on).total_seconds() return (self.completed_on - self.started_on).total_seconds()
def get_current_status(self): def get_current_status(self):
"""
get the status string from the build request if the build
has one, or the text for the build outcome if it doesn't
"""
from bldcontrol.models import BuildRequest from bldcontrol.models import BuildRequest
if self.outcome == Build.IN_PROGRESS and self.buildrequest.state != BuildRequest.REQ_INPROGRESS:
build_request = None
if hasattr(self, 'buildrequest'):
build_request = self.buildrequest
if (build_request
and build_request.state != BuildRequest.REQ_INPROGRESS
and self.outcome == Build.IN_PROGRESS):
return self.buildrequest.get_state_display() return self.buildrequest.get_state_display()
return self.get_outcome_display() else:
return self.get_outcome_text()
def __str__(self): def __str__(self):
return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()])) return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()]))