diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-01-29 07:50:33 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-01-29 07:50:34 +0300 |
commit | f058f4906e5eebc8753404c606393eb5a0999cec (patch) | |
tree | 149ba67b2af6bc169282594f388d155f3e748406 /poky/bitbake/lib/bb/cooker.py | |
parent | 3cce45a96f0416b4c3d8f2b698cb830662a29227 (diff) | |
download | openbmc-f058f4906e5eebc8753404c606393eb5a0999cec.tar.xz |
poky: refresh thud: cc73390a75..3541f019a5
Update poky to thud HEAD:
Alejandro Enedino Hernandez Samaniego (1):
bitbake: cooker: fix indirect multiconfig dependencies
Richard Purdie (8):
bitbake: server/process: Increase server startup time delay
bitbake: cooker: Add some timing debug messages to the server startup
bitbake: server/process: Handle short reads
bitbake: lib/bb/server: Avoid UnboundLocalError traceback
bitbake: server/process: Ensure socket has a timeout set
bitbake: process.py: Set socket timeout to 10 seconds
bitbake: process: Handle EWOULDBLOCK in socket connect
bitbake: process: Rewrite multiple connection handling
Change-Id: I175bb3a51cc19f3aef5ffb6e09b04cf0bf882835
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'poky/bitbake/lib/bb/cooker.py')
-rw-r--r-- | poky/bitbake/lib/bb/cooker.py | 70 |
1 files changed, 50 insertions, 20 deletions
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py index 16681ba24..db52964c3 100644 --- a/poky/bitbake/lib/bb/cooker.py +++ b/poky/bitbake/lib/bb/cooker.py @@ -175,18 +175,31 @@ class BBCooker: self.configuration = configuration + bb.debug(1, "BBCooker starting %s" % time.time()) + sys.stdout.flush() + self.configwatcher = pyinotify.WatchManager() + bb.debug(1, "BBCooker pyinotify1 %s" % time.time()) + sys.stdout.flush() + self.configwatcher.bbseen = [] self.configwatcher.bbwatchedfiles = [] self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications) + bb.debug(1, "BBCooker pyinotify2 %s" % time.time()) + sys.stdout.flush() self.watchmask = pyinotify.IN_CLOSE_WRITE | pyinotify.IN_CREATE | pyinotify.IN_DELETE | \ pyinotify.IN_DELETE_SELF | pyinotify.IN_MODIFY | pyinotify.IN_MOVE_SELF | \ pyinotify.IN_MOVED_FROM | pyinotify.IN_MOVED_TO self.watcher = pyinotify.WatchManager() + bb.debug(1, "BBCooker pyinotify3 %s" % time.time()) + sys.stdout.flush() self.watcher.bbseen = [] self.watcher.bbwatchedfiles = [] self.notifier = pyinotify.Notifier(self.watcher, self.notifications) + bb.debug(1, "BBCooker pyinotify complete %s" % time.time()) + sys.stdout.flush() + # If being called by something like tinfoil, we need to clean cached data # which may now be invalid bb.parse.clear_cache() @@ -196,6 +209,9 @@ class BBCooker: self.initConfigurationData() + bb.debug(1, "BBCooker parsed base configuration %s" % time.time()) + sys.stdout.flush() + # we log all events to a file if so directed if self.configuration.writeeventlog: # register the log file writer as UI Handler @@ -233,6 +249,9 @@ class BBCooker: # Let SIGHUP exit as SIGTERM signal.signal(signal.SIGHUP, self.sigterm_exception) + bb.debug(1, "BBCooker startup complete %s" % time.time()) + sys.stdout.flush() + def process_inotify_updates(self): for n in [self.confignotifier, self.notifier]: if n.check_events(timeout=0): @@ -620,27 +639,38 @@ class BBCooker: runlist.append([mc, k, ktask, fn]) bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data) - mcdeps = taskdata[mc].get_mcdepends() + # No need to do check providers if there are no mcdeps or not an mc build - if mcdeps and mc: - # Make sure we can provide the multiconfig dependency - seen = set() - new = True - while new: - new = False - for mc in self.multiconfigs: - for k in mcdeps: - if k in seen: - continue - l = k.split(':') - depmc = l[2] - if depmc not in self.multiconfigs: - bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc)) - else: - logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3]) - taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3]) - seen.add(k) - new = True + if mc: + # Add unresolved first, so we can get multiconfig indirect dependencies on time + for mcavailable in self.multiconfigs: + # The first element is empty + if mcavailable: + taskdata[mcavailable].add_unresolved(localdata[mcavailable], self.recipecaches[mcavailable]) + + + mcdeps = taskdata[mc].get_mcdepends() + + if mcdeps: + # Make sure we can provide the multiconfig dependency + seen = set() + new = True + while new: + new = False + for mc in self.multiconfigs: + for k in mcdeps: + if k in seen: + continue + l = k.split(':') + depmc = l[2] + if depmc not in self.multiconfigs: + bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc)) + else: + logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3]) + taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3]) + seen.add(k) + new = True + for mc in self.multiconfigs: taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc]) |