diff options
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/bb/event.py | 9 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/process.py | 4 |
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 | ||
| 73 | def enable_threadlock(): | 74 | def 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 | ||
| 82 | def enable_heartbeat(): | ||
| 83 | global _heartbeat_enabled | ||
| 84 | _heartbeat_enabled = True | ||
| 85 | |||
| 86 | def disable_heartbeat(): | ||
| 87 | global _heartbeat_enabled | ||
| 88 | _heartbeat_enabled = False | ||
| 89 | |||
| 81 | def execute_handler(name, handler, event, d): | 90 | def 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 |
