Patchwork [1/2] buildhistory_analysis: update to use explode_dep_versions2()

login
register
mail settings
Submitter Paul Eggleton
Date Oct. 3, 2012, 12:37 p.m.
Message ID <f6110021596825f3877f3e0f973a188599e5ea19.1349267792.git.paul.eggleton@linux.intel.com>
Download mbox | patch
Permalink /patch/37695/
State Accepted
Commit 1600c916ae410c57a783a5aa35abe07a3f673311
Headers show

Comments

Paul Eggleton - Oct. 3, 2012, 12:37 p.m.
Handle where multiple version specifications are present for the same
dependency.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 meta/lib/oe/buildhistory_analysis.py |   23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

Patch

diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index a5a607e..ad57f00 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -262,8 +262,8 @@  def compare_lists(alines, blines):
 
 
 def compare_pkg_lists(astr, bstr):
-    depvera = bb.utils.explode_dep_versions(astr)
-    depverb = bb.utils.explode_dep_versions(bstr)
+    depvera = bb.utils.explode_dep_versions2(astr)
+    depverb = bb.utils.explode_dep_versions2(bstr)
 
     # Strip out changes where the version has increased
     remove = []
@@ -271,8 +271,23 @@  def compare_pkg_lists(astr, bstr):
         if k in depverb:
             dva = depvera[k]
             dvb = depverb[k]
-            if dva and dvb and dva != dvb:
-                if bb.utils.vercmp(bb.utils.split_version(dva), bb.utils.split_version(dvb)) < 0:
+            if dva and dvb and len(dva) == len(dvb):
+                # Since length is the same, sort so that prefixes (e.g. >=) will line up
+                dva.sort()
+                dvb.sort()
+                removeit = True
+                for dvai, dvbi in zip(dva, dvb):
+                    if dvai != dvbi:
+                        aiprefix = dvai.split(' ')[0]
+                        biprefix = dvbi.split(' ')[0]
+                        if aiprefix == biprefix and aiprefix in ['>=', '=']:
+                            if bb.utils.vercmp(bb.utils.split_version(dvai), bb.utils.split_version(dvbi)) > 0:
+                                removeit = False
+                                break
+                        else:
+                            removeit = False
+                            break
+                if removeit:
                     remove.append(k)
 
     for k in remove: