bitbake: monitordisk: fire event DISKFULL when terminate build

Part of [Yocto #2168]

Add a event DiskFull to descript the termination by disk monitor.

Update check() to fire the event DiskFull when terminates the build.
This could help UIs to deal this scenario and show more information to
end user.

(Bitbake rev: 0a0fca3d94a1db6458ae21501a66461a334410ed)

Signed-off-by: Kang Kai <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Kang Kai 2012-07-27 16:38:02 +08:00 committed by Richard Purdie
parent 0125438b85
commit b2a959a0ce
2 changed files with 13 additions and 0 deletions

View File

@ -312,6 +312,14 @@ class BuildCompleted(BuildBase, OperationCompleted):
OperationCompleted.__init__(self, total, "Building Failed") OperationCompleted.__init__(self, total, "Building Failed")
BuildBase.__init__(self, n, p, failures) BuildBase.__init__(self, n, p, failures)
class DiskFull(Event):
"""Disk full case build aborted"""
def __init__(self, dev, type, freespace, mountpoint):
Event.__init__(self)
self._dev = dev
self._type = type
self._free = freespace
self._mountpoint = mountpoint
class NoProvider(Event): class NoProvider(Event):
"""No Provider for an Event""" """No Provider for an Event"""

View File

@ -176,6 +176,7 @@ class diskMonitor:
def __init__(self, configuration): def __init__(self, configuration):
self.enableMonitor = False self.enableMonitor = False
self.configuration = configuration
BBDirs = configuration.getVar("BB_DISKMON_DIRS", True) or None BBDirs = configuration.getVar("BB_DISKMON_DIRS", True) or None
if BBDirs: if BBDirs:
@ -219,10 +220,12 @@ class diskMonitor:
logger.error("No new tasks can be excuted since the disk space monitor action is \"STOPTASKS\"!") logger.error("No new tasks can be excuted since the disk space monitor action is \"STOPTASKS\"!")
self.checked[dev] = True self.checked[dev] = True
rq.finish_runqueue(False) rq.finish_runqueue(False)
bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, self.devDict[dev][1]), self.configuration)
elif self.devDict[dev][0] == "ABORT" and not self.checked[dev]: elif self.devDict[dev][0] == "ABORT" and not self.checked[dev]:
logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!") logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!")
self.checked[dev] = True self.checked[dev] = True
rq.finish_runqueue(True) rq.finish_runqueue(True)
bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, self.devDict[dev][1]), self.configuration)
# The free inodes, float point number # The free inodes, float point number
freeInode = st.f_favail freeInode = st.f_favail
@ -237,8 +240,10 @@ class diskMonitor:
logger.error("No new tasks can be excuted since the disk space monitor action is \"STOPTASKS\"!") logger.error("No new tasks can be excuted since the disk space monitor action is \"STOPTASKS\"!")
self.checked[dev] = True self.checked[dev] = True
rq.finish_runqueue(False) rq.finish_runqueue(False)
bb.event.fire(bb.event.DiskFull(dev, 'inode', freeSpace, self.devDict[dev][1]), self.configuration)
elif self.devDict[dev][0] == "ABORT" and not self.checked[dev]: elif self.devDict[dev][0] == "ABORT" and not self.checked[dev]:
logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!") logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!")
self.checked[dev] = True self.checked[dev] = True
rq.finish_runqueue(True) rq.finish_runqueue(True)
bb.event.fire(bb.event.DiskFull(dev, 'inode', freeSpace, self.devDict[dev][1]), self.configuration)
return return