summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cooker.py4
-rw-r--r--bitbake/lib/bb/event.py9
-rw-r--r--bitbake/lib/bb/server/process.py4
3 files changed, 15 insertions, 2 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 4e49b0e90b..c712744382 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1467,6 +1467,7 @@ class BBCooker:
1467 buildname = self.databuilder.mcdata[mc].getVar("BUILDNAME") 1467 buildname = self.databuilder.mcdata[mc].getVar("BUILDNAME")
1468 if fireevents: 1468 if fireevents:
1469 bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.databuilder.mcdata[mc]) 1469 bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.databuilder.mcdata[mc])
1470 bb.event.enable_heartbeat()
1470 1471
1471 # Execute the runqueue 1472 # Execute the runqueue
1472 runlist = [[mc, item, task, fn]] 1473 runlist = [[mc, item, task, fn]]
@@ -1500,6 +1501,7 @@ class BBCooker:
1500 if not retval: 1501 if not retval:
1501 if fireevents: 1502 if fireevents:
1502 bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc]) 1503 bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc])
1504 bb.event.disable_heartbeat()
1503 self.command.finishAsyncCommand(msg) 1505 self.command.finishAsyncCommand(msg)
1504 # We trashed self.recipecaches above 1506 # We trashed self.recipecaches above
1505 self.parsecache_valid = False 1507 self.parsecache_valid = False
@@ -1545,6 +1547,7 @@ class BBCooker:
1545 for mc in self.multiconfigs: 1547 for mc in self.multiconfigs:
1546 bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, targets, failures, interrupted), self.databuilder.mcdata[mc]) 1548 bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, targets, failures, interrupted), self.databuilder.mcdata[mc])
1547 finally: 1549 finally:
1550 bb.event.disable_heartbeat()
1548 self.command.finishAsyncCommand(msg) 1551 self.command.finishAsyncCommand(msg)
1549 return False 1552 return False
1550 if retval is True: 1553 if retval is True:
@@ -1578,6 +1581,7 @@ class BBCooker:
1578 1581
1579 for mc in self.multiconfigs: 1582 for mc in self.multiconfigs:
1580 bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.databuilder.mcdata[mc]) 1583 bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.databuilder.mcdata[mc])
1584 bb.event.enable_heartbeat()
1581 1585
1582 rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist) 1586 rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
1583 if 'universe' in targets: 1587 if 'universe' in targets:
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 303b7a943f..db90724444 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -69,6 +69,7 @@ _eventfilter = None
69_uiready = False 69_uiready = False
70_thread_lock = threading.Lock() 70_thread_lock = threading.Lock()
71_thread_lock_enabled = False 71_thread_lock_enabled = False
72_heartbeat_enabled = False
72 73
73def enable_threadlock(): 74def enable_threadlock():
74 global _thread_lock_enabled 75 global _thread_lock_enabled
@@ -78,6 +79,14 @@ def disable_threadlock():
78 global _thread_lock_enabled 79 global _thread_lock_enabled
79 _thread_lock_enabled = False 80 _thread_lock_enabled = False
80 81
82def enable_heartbeat():
83 global _heartbeat_enabled
84 _heartbeat_enabled = True
85
86def disable_heartbeat():
87 global _heartbeat_enabled
88 _heartbeat_enabled = False
89
81def execute_handler(name, handler, event, d): 90def execute_handler(name, handler, event, d):
82 event.data = d 91 event.data = d
83 try: 92 try:
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 586d46af88..91eb6e0ad9 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -382,7 +382,7 @@ class ProcessServer():
382 382
383 # Create new heartbeat event? 383 # Create new heartbeat event?
384 now = time.time() 384 now = time.time()
385 if now >= self.next_heartbeat: 385 if bb.event._heartbeat_enabled and now >= self.next_heartbeat:
386 # We might have missed heartbeats. Just trigger once in 386 # We might have missed heartbeats. Just trigger once in
387 # that case and continue after the usual delay. 387 # that case and continue after the usual delay.
388 self.next_heartbeat += self.heartbeat_seconds 388 self.next_heartbeat += self.heartbeat_seconds
@@ -396,7 +396,7 @@ class ProcessServer():
396 if not isinstance(exc, bb.BBHandledException): 396 if not isinstance(exc, bb.BBHandledException):
397 logger.exception('Running heartbeat function') 397 logger.exception('Running heartbeat function')
398 self.quit = True 398 self.quit = True
399 if nextsleep and now + nextsleep > self.next_heartbeat: 399 if nextsleep and bb.event._heartbeat_enabled and now + nextsleep > self.next_heartbeat:
400 # Shorten timeout so that we we wake up in time for 400 # Shorten timeout so that we we wake up in time for
401 # the heartbeat. 401 # the heartbeat.
402 nextsleep = self.next_heartbeat - now 402 nextsleep = self.next_heartbeat - now