All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] command.py: multiconfig support for findBestProvider
@ 2017-04-08 17:33 Juro Bystricky
  2017-04-10  6:01 ` Patrick Ohly
  0 siblings, 1 reply; 3+ messages in thread
From: Juro Bystricky @ 2017-04-08 17:33 UTC (permalink / raw)
  To: bitbake-devel

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]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
 bitbake/lib/bb/command.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 78a86ac..340842b 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -141,6 +141,13 @@ class Command:
         self.currentAsyncCommand = None
         self.cooker.finishcommand()
 
+def split_mc_pn(pn):
+    if pn.startswith("multiconfig:"):
+        mc = pn.split(":")[1]
+        pn = ":".join(pn.split(":")[2:])
+        return (mc, pn)
+    return ('', pn)
+
 class CommandsSync:
     """
     A class of synchronous commands
@@ -425,8 +432,8 @@ class CommandsSync:
     findProviders.readonly = True
 
     def findBestProvider(self, command, params):
-        pn = params[0]
-        return command.cooker.findBestProvider(pn)
+        (mc, pn) = split_mc_pn(params[0])
+        return command.cooker.findBestProvider(pn, mc)
     findBestProvider.readonly = True
 
     def allProviders(self, command, params):
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] command.py: multiconfig support for findBestProvider
  2017-04-08 17:33 [PATCH v2] command.py: multiconfig support for findBestProvider Juro Bystricky
@ 2017-04-10  6:01 ` Patrick Ohly
  2017-04-10 15:41   ` Bystricky, Juro
  0 siblings, 1 reply; 3+ messages in thread
From: Patrick Ohly @ 2017-04-10  6:01 UTC (permalink / raw)
  To: Juro Bystricky; +Cc: bitbake-devel

On Sat, 2017-04-08 at 10:33 -0700, Juro Bystricky wrote:
> 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]
> 
> Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
> ---
>  bitbake/lib/bb/command.py | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
> index 78a86ac..340842b 100644
> --- a/bitbake/lib/bb/command.py
> +++ b/bitbake/lib/bb/command.py
> @@ -141,6 +141,13 @@ class Command:
>          self.currentAsyncCommand = None
>          self.cooker.finishcommand()
>  
> +def split_mc_pn(pn):
> +    if pn.startswith("multiconfig:"):
> +        mc = pn.split(":")[1]
> +        pn = ":".join(pn.split(":")[2:])

I find this more readable:

if pn.startswith("multiconfig:"):
    _, mc, pn = pn.split(":", 2)

Not sure whether it is worth a v3, though.

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] command.py: multiconfig support for findBestProvider
  2017-04-10  6:01 ` Patrick Ohly
@ 2017-04-10 15:41   ` Bystricky, Juro
  0 siblings, 0 replies; 3+ messages in thread
From: Bystricky, Juro @ 2017-04-10 15:41 UTC (permalink / raw)
  To: Ohly, Patrick; +Cc: bitbake-devel@lists.openembedded.org

I concur, it is more readable and I think it merits v3.
V3 coming momentarily.

Juro

________________________________________
From: Patrick Ohly [patrick.ohly@intel.com]
Sent: Sunday, April 09, 2017 11:01 PM
To: Bystricky, Juro
Cc: bitbake-devel@lists.openembedded.org; richard.purdie@linuxfoundation.org
Subject: Re: [PATCH v2] command.py: multiconfig support for findBestProvider


> +def split_mc_pn(pn):
> +    if pn.startswith("multiconfig:"):
> +        mc = pn.split(":")[1]
> +        pn = ":".join(pn.split(":")[2:])

I find this more readable:

if pn.startswith("multiconfig:"):
    _, mc, pn = pn.split(":", 2)

Not sure whether it is worth a v3, though.

--
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-04-10 15:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-08 17:33 [PATCH v2] command.py: multiconfig support for findBestProvider Juro Bystricky
2017-04-10  6:01 ` Patrick Ohly
2017-04-10 15:41   ` Bystricky, Juro

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.