When BBCLASSEXTEND is set, '-b' builds usually failed with messages
like

| ERROR: Parsing error data_fn virtual:native:<recipe>.bb and fn
<recipe>.bb don't match
|
|   File ".../bb/providers.py", line 47, in sortPriorities
|     priority = dataCache.bbfile_priority[f]
| KeyError: 'virtual:native:<recipe>.bb'

This patch fixes it and allows to specify the alternative class in a
way like

| ./bitbake -b virtual:native:<recipe>.bb

This patch was written to be so minimal as possible; variables should be
probably renamed to reflect their new meaning.

Signed-off-by: Enrico Scholz <[email protected]>
---
 lib/bb/cache.py  |    1 +
 lib/bb/cooker.py |   14 ++++++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 43091da..fb6814a 100644
--- a/lib/bb/cache.py
+++ b/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/lib/bb/cooker.py b/lib/bb/cooker.py
index bf17485..2cfa35d 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -624,13 +624,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)
-- 
1.6.6.1

_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to