Patchworkβ [oe] Bitbake filterProviders does not respect sorted priorities

login
register
about
Submitter Chris Conroy
Date 2009-09-21 20:07:40
Message ID <1253563660.4551.12.camel@conroy-linux>
Download mbox | patch
Permalink /patch/1074/
State Rejected, archived
Headers show

Comments

Chris Conroy - 2009-09-21 20:07:40
Cross-posting to the OE list since I haven't heard anything from the
bitbake list after posting this last week. The providers code ignores
package priorities and as a result unexpected packages can get chosen
when using overlays with different priority settings.

Original message posted to bitbake mailing list:

I am using bitbake 1.8.13 within OE, and I ran into a problem today
where the wrong package was being selected.

Digging into the problem, I found that the code that sorts packages does
not respect the priority order.

By iterating over sortpkg_pn.keys() instead of pkg_pn.keys(), it
produces the expected order based on the priorities I have set. Patch
below:

         preferred_versions[pn] = findLatestProvider(pn, cfgData,
dataCache, sortpkg_pn[pn][0])
Denys Dmytriyenko - 2009-09-21 22:43:58
On Mon, Sep 21, 2009 at 04:07:40PM -0400, Chris Conroy wrote:
> Cross-posting to the OE list since I haven't heard anything from the
> bitbake list after posting this last week. The providers code ignores
> package priorities and as a result unexpected packages can get chosen
> when using overlays with different priority settings.

Nice. I usually enforce specific preferred providers when there are 
uncertainties, but it would be great to have it work properly even when
I forget to do that... :)

> Original message posted to bitbake mailing list:
> 
> I am using bitbake 1.8.13 within OE, and I ran into a problem today
> where the wrong package was being selected.
> 
> Digging into the problem, I found that the code that sorts packages does
> not respect the priority order.
> 
> By iterating over sortpkg_pn.keys() instead of pkg_pn.keys(), it
> produces the expected order based on the priorities I have set. Patch
> below:
> 
> diff --git a/lib/bb/providers.py b/lib/bb/providers.py
> index 8970fb3..6c1cf78 100644
> --- a/lib/bb/providers.py
> +++ b/lib/bb/providers.py
> @@ -191,7 +191,7 @@ def _filterProviders(providers, item, cfgData,
> dataCache):
>              eligible.append(preferred_versions[pn][1])
> 
>      # Now add latest verisons
> -    for pn in pkg_pn.keys():
> +    for pn in sortpkg_pn.keys():
>          if pn in preferred_versions and preferred_versions[pn][1]:
>              continue
>          preferred_versions[pn] = findLatestProvider(pn, cfgData,
> dataCache, sortpkg_pn[pn][0])
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Holger Freyther - 2009-09-22 06:45:32
On Monday 21 September 2009 22:07:40 Chris Conroy wrote:
> Cross-posting to the OE list since I haven't heard anything from the
> bitbake list after posting this last week. The providers code ignores
> package priorities and as a result unexpected packages can get chosen
> when using overlays with different priority settings.
> 
> Original message posted to bitbake mailing list:
> 
> I am using bitbake 1.8.13 within OE, and I ran into a problem today
> where the wrong package was being selected.
> 
> Digging into the problem, I found that the code that sorts packages does
> not respect the priority order.
> 
> By iterating over sortpkg_pn.keys() instead of pkg_pn.keys(), it
> produces the expected order based on the priorities I have set. Patch
> below:

Thanks again, I had hoped Richard would be able to comment. One of the biggest 
problems with bitbake is that the only regression testing possible is trying 
to build things, your description looks sound.

It would be great if someone could test and I'm happy to apply it then.


holger
Florian Boor - 2009-09-22 10:27:46
Hi,

Chris Conroy schrieb:
> Cross-posting to the OE list since I haven't heard anything from the
> bitbake list after posting this last week. The providers code ignores
> package priorities and as a result unexpected packages can get chosen
> when using overlays with different priority settings.

I agree... would be good to see this fixed.

Anyone from the bitbake developers who can comment on the patch? It looks quite
trivial :-)

Greetings

Florian

Patch

diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index 8970fb3..6c1cf78 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -191,7 +191,7 @@  def _filterProviders(providers, item, cfgData,
dataCache):
             eligible.append(preferred_versions[pn][1])

     # Now add latest verisons
-    for pn in pkg_pn.keys():
+    for pn in sortpkg_pn.keys():
         if pn in preferred_versions and preferred_versions[pn][1]:
             continue