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>
This commit is contained in:
parent
3b3aab0e8d
commit
00d49a05a6
|
@ -141,6 +141,12 @@ class Command:
|
||||||
self.currentAsyncCommand = None
|
self.currentAsyncCommand = None
|
||||||
self.cooker.finishcommand()
|
self.cooker.finishcommand()
|
||||||
|
|
||||||
|
def split_mc_pn(pn):
|
||||||
|
if pn.startswith("multiconfig:"):
|
||||||
|
_, mc, pn = pn.split(":", 2)
|
||||||
|
return (mc, pn)
|
||||||
|
return ('', pn)
|
||||||
|
|
||||||
class CommandsSync:
|
class CommandsSync:
|
||||||
"""
|
"""
|
||||||
A class of synchronous commands
|
A class of synchronous commands
|
||||||
|
@ -425,8 +431,8 @@ class CommandsSync:
|
||||||
findProviders.readonly = True
|
findProviders.readonly = True
|
||||||
|
|
||||||
def findBestProvider(self, command, params):
|
def findBestProvider(self, command, params):
|
||||||
pn = params[0]
|
(mc, pn) = split_mc_pn(params[0])
|
||||||
return command.cooker.findBestProvider(pn)
|
return command.cooker.findBestProvider(pn, mc)
|
||||||
findBestProvider.readonly = True
|
findBestProvider.readonly = True
|
||||||
|
|
||||||
def allProviders(self, command, params):
|
def allProviders(self, command, params):
|
||||||
|
|
Loading…
Reference in New Issue