summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2012-03-20 16:06:25 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-21 15:33:06 +0000
commit9d8e5ab47a7edf8ef72dcec77b000e43bb1d293f (patch)
tree8d89b8c945aa25552d1cf60aa38aee0038b945c5 /meta/lib/oe
parent0b8a693fb4154a7efa811178ff166a9d3fb8a211 (diff)
downloadpoky-9d8e5ab47a7edf8ef72dcec77b000e43bb1d293f.tar.gz
buildhistory_analysis: hide version number increases in dependencies
If an item in RDEPENDS or RRECOMMENDS only increases in its version number then don't report it as a change, since we don't care about it. This significantly reduces the noise after upgrades. (From OE-Core rev: f72b2a1bda35a99292063c1cc6ff563b397e190d) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe')
-rw-r--r--meta/lib/oe/buildhistory_analysis.py51
1 files changed, 47 insertions, 4 deletions
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index c0fa339e36..a828f28421 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -55,8 +55,7 @@ class ChangeRecord:
55 else: 55 else:
56 prefix = '' 56 prefix = ''
57 57
58 def pkglist_split(pkgs): 58 def pkglist_combine(depver):
59 depver = bb.utils.explode_dep_versions(pkgs)
60 pkglist = [] 59 pkglist = []
61 for k,v in depver.iteritems(): 60 for k,v in depver.iteritems():
62 if v: 61 if v:
@@ -67,8 +66,9 @@ class ChangeRecord:
67 66
68 if self.fieldname in list_fields or self.fieldname in list_order_fields: 67 if self.fieldname in list_fields or self.fieldname in list_order_fields:
69 if self.fieldname in ['RDEPENDS', 'RRECOMMENDS']: 68 if self.fieldname in ['RDEPENDS', 'RRECOMMENDS']:
70 aitems = pkglist_split(self.oldvalue) 69 (depvera, depverb) = compare_pkg_lists(self.oldvalue, self.newvalue)
71 bitems = pkglist_split(self.newvalue) 70 aitems = pkglist_combine(depvera)
71 bitems = pkglist_combine(depverb)
72 else: 72 else:
73 aitems = self.oldvalue.split() 73 aitems = self.oldvalue.split()
74 bitems = self.newvalue.split() 74 bitems = self.newvalue.split()
@@ -239,6 +239,45 @@ def compare_lists(alines, blines):
239 return filechanges 239 return filechanges
240 240
241 241
242def split_version(s):
243 """Split a version string into its constituent parts (PE, PV, PR)
244 FIXME: this is a duplicate of a new function in bitbake/lib/bb/utils -
245 we should switch to that once we can bump the minimum bitbake version
246 """
247 s = s.strip(" <>=")
248 e = 0
249 if s.count(':'):
250 e = int(s.split(":")[0])
251 s = s.split(":")[1]
252 r = ""
253 if s.count('-'):
254 r = s.rsplit("-", 1)[1]
255 s = s.rsplit("-", 1)[0]
256 v = s
257 return (e, v, r)
258
259
260def compare_pkg_lists(astr, bstr):
261 depvera = bb.utils.explode_dep_versions(astr)
262 depverb = bb.utils.explode_dep_versions(bstr)
263
264 # Strip out changes where the version has increased
265 remove = []
266 for k in depvera:
267 if k in depverb:
268 dva = depvera[k]
269 dvb = depverb[k]
270 if dva != dvb:
271 if bb.utils.vercmp(split_version(dva), split_version(dvb)) < 0:
272 remove.append(k)
273
274 for k in remove:
275 depvera.pop(k)
276 depverb.pop(k)
277
278 return (depvera, depverb)
279
280
242def compare_dict_blobs(path, ablob, bblob, report_all): 281def compare_dict_blobs(path, ablob, bblob, report_all):
243 adict = blob_to_dict(ablob) 282 adict = blob_to_dict(ablob)
244 bdict = blob_to_dict(bblob) 283 bdict = blob_to_dict(bblob)
@@ -259,6 +298,10 @@ def compare_dict_blobs(path, ablob, bblob, report_all):
259 if percentchg < monitor_numeric_threshold: 298 if percentchg < monitor_numeric_threshold:
260 continue 299 continue
261 elif (not report_all) and key in list_fields: 300 elif (not report_all) and key in list_fields:
301 if key in ['RDEPENDS', 'RRECOMMENDS']:
302 (depvera, depverb) = compare_pkg_lists(astr, bstr)
303 if depvera == depverb:
304 continue
262 alist = astr.split() 305 alist = astr.split()
263 alist.sort() 306 alist.sort()
264 blist = bstr.split() 307 blist = bstr.split()