diff options
Diffstat (limited to 'bitbake/lib/bb/ui')
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 72 |
1 files changed, 41 insertions, 31 deletions
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 9162c79f6a..177a12609c 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py | |||
@@ -24,12 +24,22 @@ import os | |||
24 | import sys | 24 | import sys |
25 | import itertools | 25 | import itertools |
26 | import xmlrpclib | 26 | import xmlrpclib |
27 | import logging | ||
27 | from bb import ui | 28 | from bb import ui |
28 | from bb.ui import uihelper | 29 | from bb.ui import uihelper |
29 | 30 | ||
30 | 31 | logger = logging.getLogger("BitBake") | |
31 | parsespin = itertools.cycle( r'|/-\\' ) | 32 | parsespin = itertools.cycle( r'|/-\\' ) |
32 | 33 | ||
34 | class BBLogFormatter(logging.Formatter): | ||
35 | """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is""" | ||
36 | |||
37 | def format(self, record): | ||
38 | if record.levelno == logging.INFO + 1: | ||
39 | return record.getMessage() | ||
40 | else: | ||
41 | return logging.Formatter.format(self, record) | ||
42 | |||
33 | def init(server, eventHandler): | 43 | def init(server, eventHandler): |
34 | 44 | ||
35 | # Get values of variables which control our output | 45 | # Get values of variables which control our output |
@@ -38,9 +48,23 @@ def init(server, eventHandler): | |||
38 | 48 | ||
39 | helper = uihelper.BBUIHelper() | 49 | helper = uihelper.BBUIHelper() |
40 | 50 | ||
51 | # Set up logging to stdout in our usual format | ||
52 | logging.addLevelName(logging.INFO, "NOTE") | ||
53 | logging.addLevelName(logging.CRITICAL, "FATAL") | ||
54 | |||
55 | for level in xrange(logging.INFO - 1, logging.DEBUG + 1, -1): | ||
56 | logging.addLevelName(level, logging.getLevelName(logging.INFO)) | ||
57 | |||
58 | for level in xrange(logging.DEBUG - 1, 0, -1): | ||
59 | logging.addLevelName(level, logging.getLevelName(logging.DEBUG)) | ||
60 | |||
61 | console = logging.StreamHandler(sys.stdout) | ||
62 | format = BBLogFormatter("%(levelname)s: %(message)s") | ||
63 | console.setFormatter(format) | ||
64 | logger.addHandler(console) | ||
65 | |||
41 | try: | 66 | try: |
42 | cmdline = server.runCommand(["getCmdLineAction"]) | 67 | cmdline = server.runCommand(["getCmdLineAction"]) |
43 | #print cmdline | ||
44 | if not cmdline: | 68 | if not cmdline: |
45 | return 1 | 69 | return 1 |
46 | ret = server.runCommand(cmdline) | 70 | ret = server.runCommand(cmdline) |
@@ -58,7 +82,6 @@ def init(server, eventHandler): | |||
58 | event = eventHandler.waitEvent(0.25) | 82 | event = eventHandler.waitEvent(0.25) |
59 | if event is None: | 83 | if event is None: |
60 | continue | 84 | continue |
61 | #print event | ||
62 | helper.eventHandler(event) | 85 | helper.eventHandler(event) |
63 | if isinstance(event, bb.runqueue.runQueueExitWait): | 86 | if isinstance(event, bb.runqueue.runQueueExitWait): |
64 | if not shutdown: | 87 | if not shutdown: |
@@ -72,26 +95,13 @@ def init(server, eventHandler): | |||
72 | print("%s: %s (pid %s)" % (tasknum, activetasks[task]["title"], task)) | 95 | print("%s: %s (pid %s)" % (tasknum, activetasks[task]["title"], task)) |
73 | tasknum = tasknum + 1 | 96 | tasknum = tasknum + 1 |
74 | 97 | ||
75 | if isinstance(event, bb.event.MsgPlain): | 98 | if isinstance(event, logging.LogRecord): |
76 | print(event._message) | 99 | if event.levelno is logging.CRITICAL or event.levelno is logging.ERROR: |
77 | continue | 100 | return_value = 1 |
78 | if isinstance(event, bb.event.MsgDebug): | 101 | if isinstance(event, logging.LogRecord): |
79 | print('DEBUG: ' + event._message) | 102 | logger.handle(event) |
80 | continue | ||
81 | if isinstance(event, bb.event.MsgNote): | ||
82 | print('NOTE: ' + event._message) | ||
83 | continue | ||
84 | if isinstance(event, bb.event.MsgWarn): | ||
85 | print('WARNING: ' + event._message) | ||
86 | continue | ||
87 | if isinstance(event, bb.event.MsgError): | ||
88 | return_value = 1 | ||
89 | print('ERROR: ' + event._message) | ||
90 | continue | ||
91 | if isinstance(event, bb.event.MsgFatal): | ||
92 | return_value = 1 | ||
93 | print('FATAL: ' + event._message) | ||
94 | continue | 103 | continue |
104 | |||
95 | if isinstance(event, bb.build.TaskFailed): | 105 | if isinstance(event, bb.build.TaskFailed): |
96 | return_value = 1 | 106 | return_value = 1 |
97 | logfile = event.logfile | 107 | logfile = event.logfile |
@@ -117,7 +127,7 @@ def init(server, eventHandler): | |||
117 | for line in lines: | 127 | for line in lines: |
118 | print(line) | 128 | print(line) |
119 | if isinstance(event, bb.build.TaskBase): | 129 | if isinstance(event, bb.build.TaskBase): |
120 | print("NOTE: %s" % event._message) | 130 | logger.info(event._message) |
121 | continue | 131 | continue |
122 | if isinstance(event, bb.event.ParseProgress): | 132 | if isinstance(event, bb.event.ParseProgress): |
123 | x = event.sofar | 133 | x = event.sofar |
@@ -144,15 +154,15 @@ def init(server, eventHandler): | |||
144 | continue | 154 | continue |
145 | if isinstance(event, bb.command.CookerCommandFailed): | 155 | if isinstance(event, bb.command.CookerCommandFailed): |
146 | return_value = 1 | 156 | return_value = 1 |
147 | print("Command execution failed: %s" % event.error) | 157 | logger.error("Command execution failed: %s" % event.error) |
148 | break | 158 | break |
149 | if isinstance(event, bb.cooker.CookerExit): | 159 | if isinstance(event, bb.cooker.CookerExit): |
150 | break | 160 | break |
151 | if isinstance(event, bb.event.MultipleProviders): | 161 | if isinstance(event, bb.event.MultipleProviders): |
152 | print("NOTE: multiple providers are available for %s%s (%s)" % (event._is_runtime and "runtime " or "", | 162 | logger.info("multiple providers are available for %s%s (%s)", event._is_runtime and "runtime " or "", |
153 | event._item, | 163 | event._item, |
154 | ", ".join(event._candidates))) | 164 | ", ".join(event._candidates)) |
155 | print("NOTE: consider defining a PREFERRED_PROVIDER entry to match %s" % event._item) | 165 | logger.info("consider defining a PREFERRED_PROVIDER entry to match %s", event._item) |
156 | continue | 166 | continue |
157 | if isinstance(event, bb.event.NoProvider): | 167 | if isinstance(event, bb.event.NoProvider): |
158 | if event._runtime: | 168 | if event._runtime: |
@@ -161,9 +171,9 @@ def init(server, eventHandler): | |||
161 | r = "" | 171 | r = "" |
162 | 172 | ||
163 | if event._dependees: | 173 | if event._dependees: |
164 | print("ERROR: Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)" % (r, event._item, ", ".join(event._dependees), r)) | 174 | logger.error("Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)", r, event._item, ", ".join(event._dependees), r) |
165 | else: | 175 | else: |
166 | print("ERROR: Nothing %sPROVIDES '%s'" % (r, event._item)) | 176 | logger.error("Nothing %sPROVIDES '%s'", r, event._item) |
167 | continue | 177 | continue |
168 | 178 | ||
169 | # ignore | 179 | # ignore |
@@ -175,7 +185,7 @@ def init(server, eventHandler): | |||
175 | bb.runqueue.runQueueExitWait)): | 185 | bb.runqueue.runQueueExitWait)): |
176 | continue | 186 | continue |
177 | 187 | ||
178 | print("Unknown Event: %s" % event) | 188 | logger.error("Unknown event: %s", event) |
179 | 189 | ||
180 | except KeyboardInterrupt: | 190 | except KeyboardInterrupt: |
181 | if shutdown == 2: | 191 | if shutdown == 2: |