diff options
| -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 | ||
