summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cooker.py24
-rw-r--r--bitbake/lib/bb/event.py4
-rw-r--r--bitbake/lib/bb/ui/knotty.py4
3 files changed, 12 insertions, 20 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index f5a7b0292..e7fdb5a69 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -993,12 +993,10 @@ class CookerParser(object):
self.total = len(filelist)
self.current = 0
- self.started = False
self.bb_cache = None
self.task_queue = None
self.result_queue = None
self.fromcache = None
- self.progress_chunk = self.total / 100
self.num_processes = int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS", True) or
multiprocessing.cpu_count())
@@ -1013,6 +1011,8 @@ class CookerParser(object):
self.task_queue.put((filename, appends))
else:
self.fromcache.append((filename, appends))
+ self.toparse = self.total - len(self.fromcache)
+ self.progress_chunk = self.toparse / 100
def worker(input, output, cfgdata):
signal.signal(signal.SIGINT, signal.SIG_IGN)
@@ -1061,14 +1061,10 @@ class CookerParser(object):
bb.event.fire(event, self.cfgdata)
self.shutdown()
return False
- elif not self.started:
- self.started = True
- bb.event.fire(bb.event.ParseStarted(self.total, self.skipped, self.masked),
- self.cfgdata)
- return True
elif not self.bb_cache:
self.bb_cache = bb.cache.Cache(self.cfgdata)
self.launch_processes()
+ bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
return True
try:
@@ -1076,11 +1072,17 @@ class CookerParser(object):
filename, appends = self.fromcache.pop()
_, result = self.bb_cache.load(filename, appends, self.cfgdata)
parsed = False
+ self.cached += 1
else:
result = self.result_queue.get()
if isinstance(result, Exception):
raise result
+
parsed = True
+ self.parsed += 1
+ if self.parsed % self.progress_chunk == 0:
+ bb.event.fire(bb.event.ParseProgress(self.parsed),
+ self.cfgdata)
except KeyboardInterrupt:
self.shutdown(clean=False)
raise
@@ -1088,10 +1090,6 @@ class CookerParser(object):
self.error += 1
parselog.critical(str(e))
else:
- if parsed:
- self.parsed += 1
- else:
- self.cached += 1
self.virtuals += len(result)
for virtualfn, info in result:
@@ -1100,10 +1098,6 @@ class CookerParser(object):
else:
self.bb_cache.add_info(virtualfn, info, self.cooker.status,
parsed=parsed)
- finally:
- # only fire events on percentage boundaries
- if self.current % self.progress_chunk == 0:
- bb.event.fire(bb.event.ParseProgress(self.current), self.cfgdata)
self.current += 1
return True
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 5b0a183ac..009cbf93b 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -298,11 +298,9 @@ class MultipleProviders(Event):
class ParseStarted(Event):
"""Recipe parsing for the runqueue has begun"""
- def __init__(self, total, skipped, masked):
+ def __init__(self, total):
Event.__init__(self)
self.total = total
- self.skipped = skipped
- self.masked = masked
class ParseCompleted(Event):
"""Recipe parsing for the runqueue has completed"""
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 8e5249bb6..0c0cdf1fe 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -31,7 +31,7 @@ from bb.ui import uihelper
logger = logging.getLogger("BitBake")
widgets = ['Parsing recipes: ', progressbar.Percentage(), ' ',
- progressbar.Bar()]
+ progressbar.Bar(), ' ', progressbar.ETA()]
class BBLogFormatter(logging.Formatter):
"""Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is"""
@@ -147,7 +147,7 @@ def init(server, eventHandler):
continue
if isinstance(event, bb.event.ParseCompleted):
if interactive:
- pbar.update(event.total)
+ pbar.update(pbar.maxval)
else:
sys.stdout.write("done.\n")
sys.stdout.flush()