summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Larson <chris_larson@mentor.com>2010-04-09 19:22:52 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2010-07-02 15:41:32 +0100
commit943ece8610fce9e6e5fda1b524ee479f013e8c5b (patch)
treed39ea721e450f19f029eebb750b91b6cf43ea0e8
parent9f2d7d816cfe36d9e3cb895f0bd4e8d81ae3bde0 (diff)
downloadopenembedded-core-943ece8610fce9e6e5fda1b524ee479f013e8c5b.tar.gz
openembedded-core-943ece8610fce9e6e5fda1b524ee479f013e8c5b.tar.bz2
openembedded-core-943ece8610fce9e6e5fda1b524ee479f013e8c5b.tar.xz
openembedded-core-943ece8610fce9e6e5fda1b524ee479f013e8c5b.zip
Implement bb.msg.domain as a named tuple, drop the Enum class
Also fixes some bb.msg references from within bb.msg. (Bitbake rev: db95af590f742c8186e84046ad9704fae1733720) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
-rw-r--r--bitbake/lib/bb/msg.py40
-rw-r--r--bitbake/lib/bb/utils.py40
2 files changed, 21 insertions, 59 deletions
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
index 9cb1d4c14..cf7931401 100644
--- a/bitbake/lib/bb/msg.py
+++ b/bitbake/lib/bb/msg.py
@@ -23,13 +23,17 @@ Message handling infrastructure for bitbake
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys, bb
+import collections
from bb import event
-debug_level = {}
-
+debug_level = collections.defaultdict(lambda: 0)
verbose = False
-domain = bb.utils.Enum(
+def _NamedTuple(name, fields):
+ Tuple = collections.namedtuple(name, " ".join(fields))
+ return Tuple(*range(len(fields)))
+
+domain = _NamedTuple("Domain",(
'Build',
'Cache',
'Collection',
@@ -41,7 +45,7 @@ domain = bb.utils.Enum(
'Provider',
'RunQueue',
'TaskData',
- 'Util')
+ 'Util'))
class MsgBase(bb.event.Event):
@@ -74,23 +78,21 @@ class MsgPlain(MsgBase):
#
def set_debug_level(level):
- bb.msg.debug_level = {}
- for domain in bb.msg.domain:
- bb.msg.debug_level[domain] = level
- bb.msg.debug_level['default'] = level
+ for d in domain:
+ debug_level[d] = level
+ debug_level['default'] = level
def set_verbose(level):
- bb.msg.verbose = level
-
-def set_debug_domains(domains):
- for domain in domains:
- found = False
- for ddomain in bb.msg.domain:
- if domain == str(ddomain):
- bb.msg.debug_level[ddomain] = bb.msg.debug_level[ddomain] + 1
- found = True
- if not found:
- bb.msg.warn(None, "Logging domain %s is not valid, ignoring" % domain)
+ verbose = level
+
+def set_debug_domains(domain_strings):
+ for domainstr in domain_strings:
+ for d in domain:
+ if domain._fields[d] == domainstr:
+ debug_level[d] += 1
+ break
+ else:
+ warn(None, "Logging domain %s is not valid, ignoring" % domain)
#
# Message handling functions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 83304e4a0..eee97276a 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -371,46 +371,6 @@ def simple_exec(code, context):
def better_eval(source, locals):
return eval(source, _context, locals)
-def Enum(*names):
- """
- A simple class to give Enum support
- """
-
- assert names, "Empty enums are not supported"
-
- class EnumClass(object):
- __slots__ = names
- def __iter__(self): return iter(constants)
- def __len__(self): return len(constants)
- def __getitem__(self, i): return constants[i]
- def __repr__(self): return 'Enum' + str(names)
- def __str__(self): return 'enum ' + str(constants)
-
- class EnumValue(object):
- __slots__ = ('__value')
- def __init__(self, value): self.__value = value
- Value = property(lambda self: self.__value)
- EnumType = property(lambda self: EnumType)
- def __hash__(self): return hash(self.__value)
- def __cmp__(self, other):
- # C fans might want to remove the following assertion
- # to make all enums comparable by ordinal value {;))
- assert self.EnumType is other.EnumType, "Only values from the same enum are comparable"
- return cmp(self.__value, other.__value)
- def __invert__(self): return constants[maximum - self.__value]
- def __nonzero__(self): return bool(self.__value)
- def __repr__(self): return str(names[self.__value])
-
- maximum = len(names) - 1
- constants = [None] * len(names)
- for i, each in enumerate(names):
- val = EnumValue(i)
- setattr(EnumClass, each, val)
- constants[i] = val
- constants = tuple(constants)
- EnumType = EnumClass()
- return EnumType
-
def lockfile(name):
"""
Use the file fn as a lock file, return when the lock has been acquired.