[bitbake-devel] [PATCH] When sorting packages, also sort by version at the lowest level

Cody P Schafer dev at codyps.com
Thu Jun 18 19:06:50 UTC 2015


This makes sure we chose the highest versioned package when there is an
option to choose among multiple packages (for example, if
PREFERRED_VERSION contains a wildcard like PREFERRED_VERSION_foo =
"4.%")

Signed-off-by: Cody P Schafer <dev at codyps.com>
---
 lib/bb/providers.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index 637e1fa..40b7fd1 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -26,6 +26,7 @@ import logging
 from bb import data, utils
 from collections import defaultdict
 import bb
+from functools import cmp_to_key
 
 logger = logging.getLogger("BitBake.Provider")
 
@@ -77,6 +78,8 @@ def sortPriorities(pn, dataCache, pkg_pn = None):
     """
     Reorder pkg_pn by file priority and default preference
     """
+    def version_cmp(f1, f2):
+        utils.vercmp(dataCache.pkg_pepvpr[f1], dataCache.pkg_pepvpr[f2])
 
     if not pkg_pn:
         pkg_pn = dataCache.pkg_pn
@@ -95,7 +98,7 @@ def sortPriorities(pn, dataCache, pkg_pn = None):
     for pri in sorted(priorities):
         tmp_pref = []
         for pref in sorted(priorities[pri]):
-            tmp_pref.extend(priorities[pri][pref])
+            tmp_pref.extend(sorted(priorities[pri][pref], key=cmp_to_key(version_cmp)))
         tmp_pn = [tmp_pref] + tmp_pn
 
     return tmp_pn
-- 
2.4.3




More information about the bitbake-devel mailing list