From ca9a956abc6b9b20bc7616c9e9bb2341be2bf5bb Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sun, 21 Mar 2010 23:02:56 +0100 Subject: Made '-b' work with BBCLASSEXTEND When BBCLASSEXTEND is set, '-b' builds usually failed with messages like | ERROR: Parsing error data_fn virtual:native:.bb and fn .bb don't match | | File ".../bb/providers.py", line 47, in sortPriorities | priority = dataCache.bbfile_priority[f] | KeyError: 'virtual:native:.bb' This patch fixes it and allows to specify the alternative class in a way like | ./bitbake -b virtual:native:.bb This patch was written to be so minimal as possible; variables should be probably renamed to reflect their new meaning. (Bitbake rev: f1c7fe9fc12161ceb3fe201cde370b929b208729) Signed-off-by: Enrico Scholz Signed-off-by: Richard Purdie --- bitbake/lib/bb/cache.py | 1 + bitbake/lib/bb/cooker.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index f3ba714d4..30857864d 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py @@ -137,6 +137,7 @@ class Cache: # If we're a virtual class we need to make sure all our depends are appended # to the depends of fn. depends = self.getVar("__depends", virtualfn, True) or [] + self.depends_cache.setdefault(fn, {}) if "__depends" not in self.depends_cache[fn] or not self.depends_cache[fn]["__depends"]: self.depends_cache[fn]["__depends"] = depends for dep in depends: diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 2406dfe95..f49e76d04 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -630,13 +630,19 @@ class BBCooker: if (task == None): task = self.configuration.cmd - fn = self.matchFile(buildfile) + self.bb_cache = bb.cache.init(self) + self.status = bb.cache.CacheData() + + (fn, cls) = self.bb_cache.virtualfn2realfn(buildfile) + buildfile = self.matchFile(fn) + fn = self.bb_cache.realfn2virtual(buildfile, cls) + self.buildSetVars() # Load data into the cache for fn and parse the loaded cache data - self.bb_cache = bb.cache.init(self) - self.status = bb.cache.CacheData() - self.bb_cache.loadData(fn, self.configuration.data, self.status) + the_data = self.bb_cache.loadDataFull(fn, self.configuration.data) + self.bb_cache.setData(fn, buildfile, the_data) + self.bb_cache.handle_data(fn, self.status) # Tweak some variables item = self.bb_cache.getVar('PN', fn, True) -- cgit v1.2.3