diff options
| author | Chris Laplante <chris.laplante@agilent.com> | 2024-12-04 12:30:11 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-12-06 23:33:54 +0000 |
| commit | 9cabda06ab20ade43e7f9ac9b27c3ff92821e202 (patch) | |
| tree | f7850868c6ae08ab70642de1869cecf6c7b51bed /bitbake/lib/bb | |
| parent | 2a34c96b8bfd89fdc3f89b1f072fe1b8b33da7a4 (diff) | |
| download | poky-9cabda06ab20ade43e7f9ac9b27c3ff92821e202.tar.gz | |
bitbake: cooker: use enum for cooker state to improve readability
enum was introduced in Python 3.4
(Bitbake rev: 35b71a94f8757fcca830f972a42edab1dd000c16)
Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
| -rw-r--r-- | bitbake/lib/bb/command.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 58 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/xmlrpcserver.py | 4 |
3 files changed, 32 insertions, 34 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index a634276608..7944faf981 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py | |||
| @@ -109,7 +109,7 @@ class Command: | |||
| 109 | 109 | ||
| 110 | def runAsyncCommand(self, _, process_server, halt): | 110 | def runAsyncCommand(self, _, process_server, halt): |
| 111 | try: | 111 | try: |
| 112 | if self.cooker.state in (bb.cooker.state.error, bb.cooker.state.shutdown, bb.cooker.state.forceshutdown): | 112 | if self.cooker.state in (bb.cooker.State.ERROR, bb.cooker.State.SHUTDOWN, bb.cooker.State.FORCE_SHUTDOWN): |
| 113 | # updateCache will trigger a shutdown of the parser | 113 | # updateCache will trigger a shutdown of the parser |
| 114 | # and then raise BBHandledException triggering an exit | 114 | # and then raise BBHandledException triggering an exit |
| 115 | self.cooker.updateCache() | 115 | self.cooker.updateCache() |
| @@ -119,7 +119,7 @@ class Command: | |||
| 119 | (command, options) = cmd | 119 | (command, options) = cmd |
| 120 | commandmethod = getattr(CommandsAsync, command) | 120 | commandmethod = getattr(CommandsAsync, command) |
| 121 | needcache = getattr( commandmethod, "needcache" ) | 121 | needcache = getattr( commandmethod, "needcache" ) |
| 122 | if needcache and self.cooker.state != bb.cooker.state.running: | 122 | if needcache and self.cooker.state != bb.cooker.State.RUNNING: |
| 123 | self.cooker.updateCache() | 123 | self.cooker.updateCache() |
| 124 | return True | 124 | return True |
| 125 | else: | 125 | else: |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index ca37cfea95..ceaaac11ee 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | # | 8 | # |
| 9 | # SPDX-License-Identifier: GPL-2.0-only | 9 | # SPDX-License-Identifier: GPL-2.0-only |
| 10 | # | 10 | # |
| 11 | 11 | import enum | |
| 12 | import sys, os, glob, os.path, re, time | 12 | import sys, os, glob, os.path, re, time |
| 13 | import itertools | 13 | import itertools |
| 14 | import logging | 14 | import logging |
| @@ -48,16 +48,15 @@ class CollectionError(bb.BBHandledException): | |||
| 48 | Exception raised when layer configuration is incorrect | 48 | Exception raised when layer configuration is incorrect |
| 49 | """ | 49 | """ |
| 50 | 50 | ||
| 51 | class state: | ||
| 52 | initial, parsing, running, shutdown, forceshutdown, stopped, error = list(range(7)) | ||
| 53 | 51 | ||
| 54 | @classmethod | 52 | class State(enum.Enum): |
| 55 | def get_name(cls, code): | 53 | INITIAL = 0, |
| 56 | for name in dir(cls): | 54 | PARSING = 1, |
| 57 | value = getattr(cls, name) | 55 | RUNNING = 2, |
| 58 | if type(value) == type(cls.initial) and value == code: | 56 | SHUTDOWN = 3, |
| 59 | return name | 57 | FORCE_SHUTDOWN = 4, |
| 60 | raise ValueError("Invalid status code: %s" % code) | 58 | STOPPED = 5, |
| 59 | ERROR = 6 | ||
| 61 | 60 | ||
| 62 | 61 | ||
| 63 | class SkippedPackage: | 62 | class SkippedPackage: |
| @@ -180,7 +179,7 @@ class BBCooker: | |||
| 180 | pass | 179 | pass |
| 181 | 180 | ||
| 182 | self.command = bb.command.Command(self, self.process_server) | 181 | self.command = bb.command.Command(self, self.process_server) |
| 183 | self.state = state.initial | 182 | self.state = State.INITIAL |
| 184 | 183 | ||
| 185 | self.parser = None | 184 | self.parser = None |
| 186 | 185 | ||
| @@ -226,23 +225,22 @@ class BBCooker: | |||
| 226 | bb.warn("Cooker received SIGTERM, shutting down...") | 225 | bb.warn("Cooker received SIGTERM, shutting down...") |
| 227 | elif signum == signal.SIGHUP: | 226 | elif signum == signal.SIGHUP: |
| 228 | bb.warn("Cooker received SIGHUP, shutting down...") | 227 | bb.warn("Cooker received SIGHUP, shutting down...") |
| 229 | self.state = state.forceshutdown | 228 | self.state = State.FORCE_SHUTDOWN |
| 230 | bb.event._should_exit.set() | 229 | bb.event._should_exit.set() |
| 231 | 230 | ||
| 232 | def setFeatures(self, features): | 231 | def setFeatures(self, features): |
| 233 | # we only accept a new feature set if we're in state initial, so we can reset without problems | 232 | # we only accept a new feature set if we're in state initial, so we can reset without problems |
| 234 | if not self.state in [state.initial, state.shutdown, state.forceshutdown, state.stopped, state.error]: | 233 | if not self.state in [State.INITIAL, State.SHUTDOWN, State.FORCE_SHUTDOWN, State.STOPPED, State.ERROR]: |
| 235 | raise Exception("Illegal state for feature set change") | 234 | raise Exception("Illegal state for feature set change") |
| 236 | original_featureset = list(self.featureset) | 235 | original_featureset = list(self.featureset) |
| 237 | for feature in features: | 236 | for feature in features: |
| 238 | self.featureset.setFeature(feature) | 237 | self.featureset.setFeature(feature) |
| 239 | bb.debug(1, "Features set %s (was %s)" % (original_featureset, list(self.featureset))) | 238 | bb.debug(1, "Features set %s (was %s)" % (original_featureset, list(self.featureset))) |
| 240 | if (original_featureset != list(self.featureset)) and self.state != state.error and hasattr(self, "data"): | 239 | if (original_featureset != list(self.featureset)) and self.state != State.ERROR and hasattr(self, "data"): |
| 241 | self.reset() | 240 | self.reset() |
| 242 | 241 | ||
| 243 | def initConfigurationData(self): | 242 | def initConfigurationData(self): |
| 244 | 243 | self.state = State.INITIAL | |
| 245 | self.state = state.initial | ||
| 246 | self.caches_array = [] | 244 | self.caches_array = [] |
| 247 | 245 | ||
| 248 | sys.path = self.orig_syspath.copy() | 246 | sys.path = self.orig_syspath.copy() |
| @@ -1398,11 +1396,11 @@ class BBCooker: | |||
| 1398 | 1396 | ||
| 1399 | msg = None | 1397 | msg = None |
| 1400 | interrupted = 0 | 1398 | interrupted = 0 |
| 1401 | if halt or self.state == state.forceshutdown: | 1399 | if halt or self.state == State.FORCE_SHUTDOWN: |
| 1402 | rq.finish_runqueue(True) | 1400 | rq.finish_runqueue(True) |
| 1403 | msg = "Forced shutdown" | 1401 | msg = "Forced shutdown" |
| 1404 | interrupted = 2 | 1402 | interrupted = 2 |
| 1405 | elif self.state == state.shutdown: | 1403 | elif self.state == State.SHUTDOWN: |
| 1406 | rq.finish_runqueue(False) | 1404 | rq.finish_runqueue(False) |
| 1407 | msg = "Stopped build" | 1405 | msg = "Stopped build" |
| 1408 | interrupted = 1 | 1406 | interrupted = 1 |
| @@ -1472,12 +1470,12 @@ class BBCooker: | |||
| 1472 | def buildTargetsIdle(server, rq, halt): | 1470 | def buildTargetsIdle(server, rq, halt): |
| 1473 | msg = None | 1471 | msg = None |
| 1474 | interrupted = 0 | 1472 | interrupted = 0 |
| 1475 | if halt or self.state == state.forceshutdown: | 1473 | if halt or self.state == State.FORCE_SHUTDOWN: |
| 1476 | bb.event._should_exit.set() | 1474 | bb.event._should_exit.set() |
| 1477 | rq.finish_runqueue(True) | 1475 | rq.finish_runqueue(True) |
| 1478 | msg = "Forced shutdown" | 1476 | msg = "Forced shutdown" |
| 1479 | interrupted = 2 | 1477 | interrupted = 2 |
| 1480 | elif self.state == state.shutdown: | 1478 | elif self.state == State.SHUTDOWN: |
| 1481 | rq.finish_runqueue(False) | 1479 | rq.finish_runqueue(False) |
| 1482 | msg = "Stopped build" | 1480 | msg = "Stopped build" |
| 1483 | interrupted = 1 | 1481 | interrupted = 1 |
| @@ -1572,7 +1570,7 @@ class BBCooker: | |||
| 1572 | 1570 | ||
| 1573 | 1571 | ||
| 1574 | def updateCacheSync(self): | 1572 | def updateCacheSync(self): |
| 1575 | if self.state == state.running: | 1573 | if self.state == State.RUNNING: |
| 1576 | return | 1574 | return |
| 1577 | 1575 | ||
| 1578 | if not self.baseconfig_valid: | 1576 | if not self.baseconfig_valid: |
| @@ -1582,19 +1580,19 @@ class BBCooker: | |||
| 1582 | 1580 | ||
| 1583 | # This is called for all async commands when self.state != running | 1581 | # This is called for all async commands when self.state != running |
| 1584 | def updateCache(self): | 1582 | def updateCache(self): |
| 1585 | if self.state == state.running: | 1583 | if self.state == State.RUNNING: |
| 1586 | return | 1584 | return |
| 1587 | 1585 | ||
| 1588 | if self.state in (state.shutdown, state.forceshutdown, state.error): | 1586 | if self.state in (State.SHUTDOWN, State.FORCE_SHUTDOWN, State.ERROR): |
| 1589 | if hasattr(self.parser, 'shutdown'): | 1587 | if hasattr(self.parser, 'shutdown'): |
| 1590 | self.parser.shutdown(clean=False) | 1588 | self.parser.shutdown(clean=False) |
| 1591 | self.parser.final_cleanup() | 1589 | self.parser.final_cleanup() |
| 1592 | raise bb.BBHandledException() | 1590 | raise bb.BBHandledException() |
| 1593 | 1591 | ||
| 1594 | if self.state != state.parsing: | 1592 | if self.state != State.PARSING: |
| 1595 | self.updateCacheSync() | 1593 | self.updateCacheSync() |
| 1596 | 1594 | ||
| 1597 | if self.state != state.parsing and not self.parsecache_valid: | 1595 | if self.state != State.PARSING and not self.parsecache_valid: |
| 1598 | bb.server.process.serverlog("Parsing started") | 1596 | bb.server.process.serverlog("Parsing started") |
| 1599 | self.parsewatched = {} | 1597 | self.parsewatched = {} |
| 1600 | 1598 | ||
| @@ -1628,7 +1626,7 @@ class BBCooker: | |||
| 1628 | self.parser = CookerParser(self, mcfilelist, total_masked) | 1626 | self.parser = CookerParser(self, mcfilelist, total_masked) |
| 1629 | self._parsecache_set(True) | 1627 | self._parsecache_set(True) |
| 1630 | 1628 | ||
| 1631 | self.state = state.parsing | 1629 | self.state = State.PARSING |
| 1632 | 1630 | ||
| 1633 | if not self.parser.parse_next(): | 1631 | if not self.parser.parse_next(): |
| 1634 | collectlog.debug("parsing complete") | 1632 | collectlog.debug("parsing complete") |
| @@ -1638,7 +1636,7 @@ class BBCooker: | |||
| 1638 | self.handlePrefProviders() | 1636 | self.handlePrefProviders() |
| 1639 | for mc in self.multiconfigs: | 1637 | for mc in self.multiconfigs: |
| 1640 | self.recipecaches[mc].bbfile_priority = self.collections[mc].collection_priorities(self.recipecaches[mc].pkg_fn, self.parser.mcfilelist[mc], self.data) | 1638 | self.recipecaches[mc].bbfile_priority = self.collections[mc].collection_priorities(self.recipecaches[mc].pkg_fn, self.parser.mcfilelist[mc], self.data) |
| 1641 | self.state = state.running | 1639 | self.state = State.RUNNING |
| 1642 | 1640 | ||
| 1643 | # Send an event listing all stamps reachable after parsing | 1641 | # Send an event listing all stamps reachable after parsing |
| 1644 | # which the metadata may use to clean up stale data | 1642 | # which the metadata may use to clean up stale data |
| @@ -1711,10 +1709,10 @@ class BBCooker: | |||
| 1711 | 1709 | ||
| 1712 | def shutdown(self, force=False): | 1710 | def shutdown(self, force=False): |
| 1713 | if force: | 1711 | if force: |
| 1714 | self.state = state.forceshutdown | 1712 | self.state = State.FORCE_SHUTDOWN |
| 1715 | bb.event._should_exit.set() | 1713 | bb.event._should_exit.set() |
| 1716 | else: | 1714 | else: |
| 1717 | self.state = state.shutdown | 1715 | self.state = State.SHUTDOWN |
| 1718 | 1716 | ||
| 1719 | if self.parser: | 1717 | if self.parser: |
| 1720 | self.parser.shutdown(clean=False) | 1718 | self.parser.shutdown(clean=False) |
| @@ -1724,7 +1722,7 @@ class BBCooker: | |||
| 1724 | if hasattr(self.parser, 'shutdown'): | 1722 | if hasattr(self.parser, 'shutdown'): |
| 1725 | self.parser.shutdown(clean=False) | 1723 | self.parser.shutdown(clean=False) |
| 1726 | self.parser.final_cleanup() | 1724 | self.parser.final_cleanup() |
| 1727 | self.state = state.initial | 1725 | self.state = State.INITIAL |
| 1728 | bb.event._should_exit.clear() | 1726 | bb.event._should_exit.clear() |
| 1729 | 1727 | ||
| 1730 | def reset(self): | 1728 | def reset(self): |
diff --git a/bitbake/lib/bb/server/xmlrpcserver.py b/bitbake/lib/bb/server/xmlrpcserver.py index fd4245a51a..ebc271aca4 100644 --- a/bitbake/lib/bb/server/xmlrpcserver.py +++ b/bitbake/lib/bb/server/xmlrpcserver.py | |||
| @@ -103,8 +103,8 @@ class BitBakeXMLRPCServerCommands: | |||
| 103 | s, t = bb.server.xmlrpcclient._create_server(host, port) | 103 | s, t = bb.server.xmlrpcclient._create_server(host, port) |
| 104 | 104 | ||
| 105 | # we don't allow connections if the cooker is running | 105 | # we don't allow connections if the cooker is running |
| 106 | if (self.server.cooker.state in [bb.cooker.state.parsing, bb.cooker.state.running]): | 106 | if self.server.cooker.state in [bb.cooker.State.PARSING, bb.cooker.State.RUNNING]: |
| 107 | return None, "Cooker is busy: %s" % bb.cooker.state.get_name(self.server.cooker.state) | 107 | return None, f"Cooker is busy: {self.server.cooker.state.name}" |
| 108 | 108 | ||
| 109 | self.event_handle = bb.event.register_UIHhandler(s, True) | 109 | self.event_handle = bb.event.register_UIHhandler(s, True) |
| 110 | return self.event_handle, 'OK' | 110 | return self.event_handle, 'OK' |
