summaryrefslogtreecommitdiffstats
path: root/scripts/buildstats-diff
diff options
context:
space:
mode:
authorJoshua Watt <jpewhacker@gmail.com>2019-07-15 10:47:33 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-07-17 09:36:35 +0100
commit067d475dbba8fd0b471a26cedc1e05309fe4e67c (patch)
treeac7da9dcb64e3283cc09e54b151f64f931ed23db /scripts/buildstats-diff
parent97ca346de83a01f03405f394d25d85e3dc074887 (diff)
downloadopenembedded-core-contrib-067d475dbba8fd0b471a26cedc1e05309fe4e67c.tar.gz
scripts/buildstats-diff: Add option to filter tasks
Adds a command line option to filter out the buildstats-diff report by one more more tasks. e.g.: buildstats-diff --only-task do_compile A B will only show the differences for do_compile tasks. The --only-task option can be specified multiple times to filter out multiple tasks at once. (From OE-Core rev: a8c7960d24c48107fd3703e49c38f890e84e2226) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/buildstats-diff')
-rwxr-xr-xscripts/buildstats-diff14
1 files changed, 8 insertions, 6 deletions
diff --git a/scripts/buildstats-diff b/scripts/buildstats-diff
index c179c935286..2f6498ab674 100755
--- a/scripts/buildstats-diff
+++ b/scripts/buildstats-diff
@@ -114,7 +114,7 @@ def print_ver_diff(bs1, bs2):
print(fmt_str.format(name, field1, field2, maxlen=maxlen))
-def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absdiff',)):
+def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absdiff',), only_tasks=[]):
"""Diff task execution times"""
def val_to_str(val, human_readable=False):
"""Convert raw value to printable string"""
@@ -151,8 +151,9 @@ def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absd
"""Get cumulative sum of all tasks"""
total = 0.0
for recipe_data in buildstats.values():
- for bs_task in recipe_data.tasks.values():
- total += getattr(bs_task, val_type)
+ for name, bs_task in recipe_data.tasks.items():
+ if not only_tasks or name in only_tasks:
+ total += getattr(bs_task, val_type)
return total
if min_val:
@@ -163,7 +164,7 @@ def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absd
val_to_str(min_absdiff, True), val_to_str(min_absdiff)))
# Prepare the data
- tasks_diff = diff_buildstats(bs1, bs2, val_type, min_val, min_absdiff)
+ tasks_diff = diff_buildstats(bs1, bs2, val_type, min_val, min_absdiff, only_tasks)
# Sort our list
for field in reversed(sort_by):
@@ -248,6 +249,8 @@ Script for comparing buildstats of two separate builds."""
parser.add_argument('--multi', action='store_true',
help="Read all buildstats from the given paths and "
"average over them")
+ parser.add_argument('--only-task', dest='only_tasks', metavar='TASK', action='append', default=[],
+ help="Only include TASK in report. May be specified multiple times")
parser.add_argument('buildstats1', metavar='BUILDSTATS1', help="'Left' buildstat")
parser.add_argument('buildstats2', metavar='BUILDSTATS2', help="'Right' buildstat")
@@ -266,7 +269,6 @@ Script for comparing buildstats of two separate builds."""
return args
-
def main(argv=None):
"""Script entry point"""
args = parse_args(argv)
@@ -290,7 +292,7 @@ def main(argv=None):
print_ver_diff(bs1, bs2)
else:
print_task_diff(bs1, bs2, args.diff_attr, args.min_val,
- args.min_absdiff, sort_by)
+ args.min_absdiff, sort_by, args.only_tasks)
except ScriptError as err:
log.error(str(err))
return 1