diff options
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 0c0cdf1fe7..00be2f8448 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py | |||
@@ -30,8 +30,32 @@ from bb import ui | |||
30 | from bb.ui import uihelper | 30 | from bb.ui import uihelper |
31 | 31 | ||
32 | logger = logging.getLogger("BitBake") | 32 | logger = logging.getLogger("BitBake") |
33 | widgets = ['Parsing recipes: ', progressbar.Percentage(), ' ', | 33 | widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', |
34 | progressbar.Bar(), ' ', progressbar.ETA()] | 34 | progressbar.ETA()] |
35 | |||
36 | class BBProgress(progressbar.ProgressBar): | ||
37 | def __init__(self, msg, maxval): | ||
38 | self.msg = msg | ||
39 | progressbar.ProgressBar.__init__(self, maxval, [self.msg + ": "] + widgets) | ||
40 | |||
41 | class NonInteractiveProgress(object): | ||
42 | fobj = sys.stdout | ||
43 | |||
44 | def __init__(self, msg, maxval): | ||
45 | self.msg = msg | ||
46 | self.maxval = maxval | ||
47 | |||
48 | def start(self): | ||
49 | self.fobj.write("%s..." % self.msg) | ||
50 | self.fobj.flush() | ||
51 | return self | ||
52 | |||
53 | def update(self, value): | ||
54 | pass | ||
55 | |||
56 | def finish(self): | ||
57 | self.fobj.write("done.\n") | ||
58 | self.fobj.flush() | ||
35 | 59 | ||
36 | class BBLogFormatter(logging.Formatter): | 60 | class BBLogFormatter(logging.Formatter): |
37 | """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is""" | 61 | """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is""" |
@@ -77,7 +101,7 @@ def init(server, eventHandler): | |||
77 | print("XMLRPC Fault getting commandline:\n %s" % x) | 101 | print("XMLRPC Fault getting commandline:\n %s" % x) |
78 | return 1 | 102 | return 1 |
79 | 103 | ||
80 | pbar = None | 104 | parseprogress = None |
81 | interactive = os.isatty(sys.stdout.fileno()) | 105 | interactive = os.isatty(sys.stdout.fileno()) |
82 | shutdown = 0 | 106 | shutdown = 0 |
83 | return_value = 0 | 107 | return_value = 0 |
@@ -135,23 +159,17 @@ def init(server, eventHandler): | |||
135 | continue | 159 | continue |
136 | if isinstance(event, bb.event.ParseStarted): | 160 | if isinstance(event, bb.event.ParseStarted): |
137 | if interactive: | 161 | if interactive: |
138 | pbar = progressbar.ProgressBar(widgets=widgets, | 162 | progress = BBProgress |
139 | maxval=event.total).start() | ||
140 | else: | 163 | else: |
141 | sys.stdout.write("Parsing recipes...") | 164 | progress = NonInteractiveProgress |
142 | sys.stdout.flush() | 165 | parseprogress = progress("Parsing recipes", event.total).start() |
143 | continue | 166 | continue |
144 | if isinstance(event, bb.event.ParseProgress): | 167 | if isinstance(event, bb.event.ParseProgress): |
145 | if interactive: | 168 | parseprogress.update(event.current) |
146 | pbar.update(event.current) | ||
147 | continue | 169 | continue |
148 | if isinstance(event, bb.event.ParseCompleted): | 170 | if isinstance(event, bb.event.ParseCompleted): |
149 | if interactive: | 171 | parseprogress.finish() |
150 | pbar.update(pbar.maxval) | 172 | print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors." |
151 | else: | ||
152 | sys.stdout.write("done.\n") | ||
153 | sys.stdout.flush() | ||
154 | print(("\nParsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors." | ||
155 | % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors))) | 173 | % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors))) |
156 | continue | 174 | continue |
157 | 175 | ||