buildhistory_analysis: update to use explode_dep_versions2()

Handle where multiple version specifications are present for the same
dependency.

(From OE-Core rev: 1600c916ae410c57a783a5aa35abe07a3f673311)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2012-10-03 13:37:15 +01:00 committed by Richard Purdie
parent ef5dcad3e3
commit 3b664d0cfc
1 changed files with 19 additions and 4 deletions

View File

@ -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: