summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorJuro Bystricky <juro.bystricky@intel.com>2017-04-10 08:51:04 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-04-19 10:20:24 +0100
commit00d49a05a6bf659cce6cdc025a1fade35ce8f1d2 (patch)
treea4f5059576d223d83c02ca1393b171cbfb8761ec /bitbake
parent3b3aab0e8d2937505a15d273f3620a5c5c09165c (diff)
downloadpoky-00d49a05a6bf659cce6cdc025a1fade35ce8f1d2.tar.gz
bitbake: command.py: multiconfig support for findBestProvider
In a multiconfig environment, a tinfoil call such as tinfoil.parse_recipe("multiconfig:arduino-101-sss:gcc") can fail with an error such as: File "/data/master/poky/bitbake/lib/bb/tinfoil.py", line 373, in get_recipe_file raise bb.providers.NoProvider('Unable to find any recipe file matching "%s"' % pn) bb.providers.NoProvider: Unable to find any recipe file matching "multiconfig:arduino-101-sss:gcc" The culprit is findBestProvider, which does not handle multiconfig. This patch fixes the error and in the case mentioned above the tinfoil call returns: "multiconfig:arduino-101-sss:/data/master/poky/meta/recipes-devtools/gcc/gcc_6.3.bb" [YOCTO#11210] (Bitbake rev: e9c03fbfd7b057b28645affa263cb4aebfa24b04) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/command.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 78a86ac4dc..390d4f1de3 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -141,6 +141,12 @@ class Command:
141 self.currentAsyncCommand = None 141 self.currentAsyncCommand = None
142 self.cooker.finishcommand() 142 self.cooker.finishcommand()
143 143
144def split_mc_pn(pn):
145 if pn.startswith("multiconfig:"):
146 _, mc, pn = pn.split(":", 2)
147 return (mc, pn)
148 return ('', pn)
149
144class CommandsSync: 150class CommandsSync:
145 """ 151 """
146 A class of synchronous commands 152 A class of synchronous commands
@@ -425,8 +431,8 @@ class CommandsSync:
425 findProviders.readonly = True 431 findProviders.readonly = True
426 432
427 def findBestProvider(self, command, params): 433 def findBestProvider(self, command, params):
428 pn = params[0] 434 (mc, pn) = split_mc_pn(params[0])
429 return command.cooker.findBestProvider(pn) 435 return command.cooker.findBestProvider(pn, mc)
430 findBestProvider.readonly = True 436 findBestProvider.readonly = True
431 437
432 def allProviders(self, command, params): 438 def allProviders(self, command, params):