* [PATCH 0/5] buildhistory_analysis fixes
@ 2012-03-20 16:06 Paul Eggleton
2012-03-20 16:06 ` [PATCH 1/5] buildhistory_analysis: use bb.utils.explode_dep_versions Paul Eggleton
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
Some fixes for the buildhistory_analysis module to reduce the output
and make it more readable when using the buildhistory-diff tool.
The following changes since commit 5d404fdb36b0535ce758d98408b02134cdbce4ee:
xserver-kdrive: compile xserver without dtrace support (2012-03-20 15:21:18 +0000)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/buildhistory-fixes5
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/buildhistory-fixes5
Paul Eggleton (5):
buildhistory_analysis: use bb.utils.explode_dep_versions
buildhistory_analysis: hide version number increases in dependencies
buildhistory_analysis: skip FILELIST changes for dbg packages
buildhistory_analysis: report if all items removed from a list
buildhistory_analysis: avoid printing PE/PV/PR more than once
meta/lib/oe/buildhistory_analysis.py | 75 +++++++++++++++++++++++++++++----
scripts/buildhistory-diff | 21 ++++++++-
2 files changed, 84 insertions(+), 12 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] buildhistory_analysis: use bb.utils.explode_dep_versions
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
@ 2012-03-20 16:06 ` Paul Eggleton
2012-03-20 16:06 ` [PATCH 2/5] buildhistory_analysis: hide version number increases in dependencies Paul Eggleton
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
Previously this had its own implementation of splitting a list of
packages with optional version e.g. "libncurses-dev (>= 5.9)"; switch to
using the already existing bitbake function which does this as it is
much better tested.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/buildhistory_analysis.py | 11 +++++++++--
scripts/buildhistory-diff | 21 ++++++++++++++++++---
2 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index d09911c..c0fa339 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -13,6 +13,7 @@ import os.path
import difflib
import git
import re
+import bb.utils
# How to display fields
@@ -55,8 +56,13 @@ class ChangeRecord:
prefix = ''
def pkglist_split(pkgs):
- pkgit = re.finditer(r'[a-zA-Z0-9.+-]+( \([><=]+ [^ )]+\))?', pkgs, 0)
- pkglist = [p.group(0) for p in pkgit]
+ depver = bb.utils.explode_dep_versions(pkgs)
+ pkglist = []
+ for k,v in depver.iteritems():
+ if v:
+ pkglist.append("%s (%s)" % (k,v))
+ else:
+ pkglist.append(k)
return pkglist
if self.fieldname in list_fields or self.fieldname in list_order_fields:
@@ -68,6 +74,7 @@ class ChangeRecord:
bitems = self.newvalue.split()
removed = list(set(aitems) - set(bitems))
added = list(set(bitems) - set(aitems))
+
if removed or added:
out = '%s:%s%s' % (self.fieldname, ' removed "%s"' % ' '.join(removed) if removed else '', ' added "%s"' % ' '.join(added) if added else '')
else:
diff --git a/scripts/buildhistory-diff b/scripts/buildhistory-diff
index 6b344eb..9936a4b 100755
--- a/scripts/buildhistory-diff
+++ b/scripts/buildhistory-diff
@@ -6,7 +6,7 @@
# Author: Paul Eggleton <paul.eggleton@linux.intel.com>
import sys
-import os.path
+import os
# Ensure PythonGit is installed (buildhistory_analysis needs it)
try:
@@ -24,8 +24,23 @@ def main():
sys.exit(1)
# Set path to OE lib dir so we can import the buildhistory_analysis module
- newpath = os.path.abspath(os.path.dirname(os.path.abspath(sys.argv[0])) + '/../meta/lib')
- sys.path = sys.path + [newpath]
+ basepath = os.path.abspath(os.path.dirname(os.path.abspath(sys.argv[0])) + '/..')
+ newpath = basepath + '/meta/lib'
+ # Set path to bitbake lib dir so the buildhistory_analysis module can load bb.utils
+ if os.path.exists(basepath + '/bitbake/lib/bb'):
+ bitbakepath = basepath + '/bitbake'
+ else:
+ # look for bitbake/bin dir in PATH
+ bitbakepath = None
+ for pth in os.environ['PATH'].split(':'):
+ if os.path.exists(os.path.join(pth, '../lib/bb')):
+ bitbakepath = os.path.abspath(os.path.join(pth, '..'))
+ break
+ if not bitbakepath:
+ print("Unable to find bitbake by searching parent directory of this script or PATH")
+ sys.exit(1)
+
+ sys.path.extend([newpath, bitbakepath + '/lib'])
import oe.buildhistory_analysis
if len(sys.argv) > 3:
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] buildhistory_analysis: hide version number increases in dependencies
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
2012-03-20 16:06 ` [PATCH 1/5] buildhistory_analysis: use bb.utils.explode_dep_versions Paul Eggleton
@ 2012-03-20 16:06 ` Paul Eggleton
2012-03-20 16:06 ` [PATCH 3/5] buildhistory_analysis: skip FILELIST changes for dbg packages Paul Eggleton
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
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.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/buildhistory_analysis.py | 51 +++++++++++++++++++++++++++++++--
1 files changed, 47 insertions(+), 4 deletions(-)
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index c0fa339..a828f28 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -55,8 +55,7 @@ class ChangeRecord:
else:
prefix = ''
- def pkglist_split(pkgs):
- depver = bb.utils.explode_dep_versions(pkgs)
+ def pkglist_combine(depver):
pkglist = []
for k,v in depver.iteritems():
if v:
@@ -67,8 +66,9 @@ class ChangeRecord:
if self.fieldname in list_fields or self.fieldname in list_order_fields:
if self.fieldname in ['RDEPENDS', 'RRECOMMENDS']:
- aitems = pkglist_split(self.oldvalue)
- bitems = pkglist_split(self.newvalue)
+ (depvera, depverb) = compare_pkg_lists(self.oldvalue, self.newvalue)
+ aitems = pkglist_combine(depvera)
+ bitems = pkglist_combine(depverb)
else:
aitems = self.oldvalue.split()
bitems = self.newvalue.split()
@@ -239,6 +239,45 @@ def compare_lists(alines, blines):
return filechanges
+def split_version(s):
+ """Split a version string into its constituent parts (PE, PV, PR)
+ FIXME: this is a duplicate of a new function in bitbake/lib/bb/utils -
+ we should switch to that once we can bump the minimum bitbake version
+ """
+ s = s.strip(" <>=")
+ e = 0
+ if s.count(':'):
+ e = int(s.split(":")[0])
+ s = s.split(":")[1]
+ r = ""
+ if s.count('-'):
+ r = s.rsplit("-", 1)[1]
+ s = s.rsplit("-", 1)[0]
+ v = s
+ return (e, v, r)
+
+
+def compare_pkg_lists(astr, bstr):
+ depvera = bb.utils.explode_dep_versions(astr)
+ depverb = bb.utils.explode_dep_versions(bstr)
+
+ # Strip out changes where the version has increased
+ remove = []
+ for k in depvera:
+ if k in depverb:
+ dva = depvera[k]
+ dvb = depverb[k]
+ if dva != dvb:
+ if bb.utils.vercmp(split_version(dva), split_version(dvb)) < 0:
+ remove.append(k)
+
+ for k in remove:
+ depvera.pop(k)
+ depverb.pop(k)
+
+ return (depvera, depverb)
+
+
def compare_dict_blobs(path, ablob, bblob, report_all):
adict = blob_to_dict(ablob)
bdict = blob_to_dict(bblob)
@@ -259,6 +298,10 @@ def compare_dict_blobs(path, ablob, bblob, report_all):
if percentchg < monitor_numeric_threshold:
continue
elif (not report_all) and key in list_fields:
+ if key in ['RDEPENDS', 'RRECOMMENDS']:
+ (depvera, depverb) = compare_pkg_lists(astr, bstr)
+ if depvera == depverb:
+ continue
alist = astr.split()
alist.sort()
blist = bstr.split()
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] buildhistory_analysis: skip FILELIST changes for dbg packages
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
2012-03-20 16:06 ` [PATCH 1/5] buildhistory_analysis: use bb.utils.explode_dep_versions Paul Eggleton
2012-03-20 16:06 ` [PATCH 2/5] buildhistory_analysis: hide version number increases in dependencies Paul Eggleton
@ 2012-03-20 16:06 ` Paul Eggleton
2012-03-20 16:06 ` [PATCH 4/5] buildhistory_analysis: report if all items removed from a list Paul Eggleton
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
Don't report when files are added or removed from dbg packages unless
it results in the package being empty.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/buildhistory_analysis.py | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index a828f28..2942f72 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -298,6 +298,8 @@ def compare_dict_blobs(path, ablob, bblob, report_all):
if percentchg < monitor_numeric_threshold:
continue
elif (not report_all) and key in list_fields:
+ if key == "FILELIST" and path.endswith("-dbg") and bstr.strip() != '':
+ continue
if key in ['RDEPENDS', 'RRECOMMENDS']:
(depvera, depverb) = compare_pkg_lists(astr, bstr)
if depvera == depverb:
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] buildhistory_analysis: report if all items removed from a list
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
` (2 preceding siblings ...)
2012-03-20 16:06 ` [PATCH 3/5] buildhistory_analysis: skip FILELIST changes for dbg packages Paul Eggleton
@ 2012-03-20 16:06 ` Paul Eggleton
2012-03-20 16:06 ` [PATCH 5/5] buildhistory_analysis: avoid printing PE/PV/PR more than once Paul Eggleton
2012-03-21 14:17 ` [PATCH 0/5] buildhistory_analysis fixes Richard Purdie
5 siblings, 0 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
If all items have been removed from a list then state that explicitly.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/buildhistory_analysis.py | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index 2942f72..4f55d9a 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -76,7 +76,10 @@ class ChangeRecord:
added = list(set(bitems) - set(aitems))
if removed or added:
- out = '%s:%s%s' % (self.fieldname, ' removed "%s"' % ' '.join(removed) if removed else '', ' added "%s"' % ' '.join(added) if added else '')
+ if removed and not bitems:
+ out = '%s: removed all items "%s"' % (self.fieldname, ' '.join(removed))
+ else:
+ out = '%s:%s%s' % (self.fieldname, ' removed "%s"' % ' '.join(removed) if removed else '', ' added "%s"' % ' '.join(added) if added else '')
else:
out = '%s changed order' % self.fieldname
elif self.fieldname in numeric_fields:
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] buildhistory_analysis: avoid printing PE/PV/PR more than once
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
` (3 preceding siblings ...)
2012-03-20 16:06 ` [PATCH 4/5] buildhistory_analysis: report if all items removed from a list Paul Eggleton
@ 2012-03-20 16:06 ` Paul Eggleton
2012-03-21 14:17 ` [PATCH 0/5] buildhistory_analysis fixes Richard Purdie
5 siblings, 0 replies; 7+ messages in thread
From: Paul Eggleton @ 2012-03-20 16:06 UTC (permalink / raw)
To: openembedded-core
Don't print PE/PV/PR changes as related field changes of related field
changes (i.e. only print them once at the top level).
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/buildhistory_analysis.py | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index 4f55d9a..313416c 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -49,8 +49,8 @@ class ChangeRecord:
def __str__(self):
return self._str_internal(True)
- def _str_internal(self, pathprefix):
- if pathprefix:
+ def _str_internal(self, outer):
+ if outer:
prefix = '%s: ' % self.path
else:
prefix = ''
@@ -91,7 +91,7 @@ class ChangeRecord:
percentchg = 100
out = '%s changed from %s to %s (%s%d%%)' % (self.fieldname, self.oldvalue or "''", self.newvalue or "''", '+' if percentchg > 0 else '', percentchg)
elif self.fieldname in img_monitor_files:
- if pathprefix:
+ if outer:
prefix = 'Changes to %s ' % self.path
out = '(%s):\n ' % self.fieldname
if self.filechanges:
@@ -107,6 +107,8 @@ class ChangeRecord:
if self.related:
for chg in self.related:
+ if not outer and chg.fieldname in ['PE', 'PV', 'PR']:
+ continue
for line in chg._str_internal(False).splitlines():
out += '\n * %s' % line
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] buildhistory_analysis fixes
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
` (4 preceding siblings ...)
2012-03-20 16:06 ` [PATCH 5/5] buildhistory_analysis: avoid printing PE/PV/PR more than once Paul Eggleton
@ 2012-03-21 14:17 ` Richard Purdie
5 siblings, 0 replies; 7+ messages in thread
From: Richard Purdie @ 2012-03-21 14:17 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Tue, 2012-03-20 at 16:06 +0000, Paul Eggleton wrote:
> Some fixes for the buildhistory_analysis module to reduce the output
> and make it more readable when using the buildhistory-diff tool.
>
> The following changes since commit 5d404fdb36b0535ce758d98408b02134cdbce4ee:
>
> xserver-kdrive: compile xserver without dtrace support (2012-03-20 15:21:18 +0000)
>
> are available in the git repository at:
> git://git.openembedded.org/openembedded-core-contrib paule/buildhistory-fixes5
> http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/buildhistory-fixes5
>
> Paul Eggleton (5):
> buildhistory_analysis: use bb.utils.explode_dep_versions
> buildhistory_analysis: hide version number increases in dependencies
> buildhistory_analysis: skip FILELIST changes for dbg packages
> buildhistory_analysis: report if all items removed from a list
> buildhistory_analysis: avoid printing PE/PV/PR more than once
Merged to master, thanks.
Richard
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-03-21 14:26 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-20 16:06 [PATCH 0/5] buildhistory_analysis fixes Paul Eggleton
2012-03-20 16:06 ` [PATCH 1/5] buildhistory_analysis: use bb.utils.explode_dep_versions Paul Eggleton
2012-03-20 16:06 ` [PATCH 2/5] buildhistory_analysis: hide version number increases in dependencies Paul Eggleton
2012-03-20 16:06 ` [PATCH 3/5] buildhistory_analysis: skip FILELIST changes for dbg packages Paul Eggleton
2012-03-20 16:06 ` [PATCH 4/5] buildhistory_analysis: report if all items removed from a list Paul Eggleton
2012-03-20 16:06 ` [PATCH 5/5] buildhistory_analysis: avoid printing PE/PV/PR more than once Paul Eggleton
2012-03-21 14:17 ` [PATCH 0/5] buildhistory_analysis fixes Richard Purdie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox