diff options
author | Elliot Smith <elliot.smith@intel.com> | 2015-10-14 15:43:44 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-10-16 14:13:22 +0100 |
commit | 026e9812648e9d43b3fcfce8aab1cd8e843246a2 (patch) | |
tree | 660c538d9978537baed3f47155f742d57f98159c /bitbake | |
parent | 1feeb8e4991dc2f2a2b85b4b544ad36e96dc4a0b (diff) | |
download | openembedded-core-contrib-026e9812648e9d43b3fcfce8aab1cd8e843246a2.tar.gz |
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>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 1cbf480acd..44a453a58c 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py @@ -344,6 +344,9 @@ class Build(models.Model): tgts = Target.objects.filter(build_id = self.id).order_by( 'target' ); return( tgts ); + def get_outcome_text(self): + return Build.BUILD_OUTCOME[int(self.outcome)][1] + @property def toaster_exceptions(self): 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() 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 - 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.get_outcome_display() + else: + return self.get_outcome_text() def __str__(self): return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()])) |