summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>2025-10-22 15:43:15 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-11-07 13:15:35 +0000
commit5d13e7a15598b3a7bcc7bd299eea6854b77924ac (patch)
tree17dcc50991bd708247acf830f4a25dc48cfd58ef
parent5c27e317f820fd62f854033555036cccd27a8061 (diff)
downloadpoky-5d13e7a15598b3a7bcc7bd299eea6854b77924ac.tar.gz
oe-build-perf-report: filter used measurements for each commit
As the poky repository is no longer used, measurements are indexed using the oe-core commit. But as bitbake, oe-core and meta-yocto are now retrieved from separate gits, while measuring performances for a given branch at some time interval, we can get the same commit for oe-core but different ones for bitbake or meta-yocto. As a consequence, metadata associated with the same index (oe-core commit) might differ. Today this is not supported, as we do expect all metadata for a given version remain the same. For each oe-core commit, filter the measurements, in order to only keep the ones with the metadata matching the last measurement found for the said commit. Fixes [YOCTO #16014] (From OE-Core rev: 90aeba0abdac086495fc39486ab37d41f84477ee) Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/oe-build-perf-report13
1 files changed, 10 insertions, 3 deletions
diff --git a/scripts/oe-build-perf-report b/scripts/oe-build-perf-report
index a36f3c1bca..2d51e84444 100755
--- a/scripts/oe-build-perf-report
+++ b/scripts/oe-build-perf-report
@@ -133,12 +133,19 @@ def read_results(repo, tags, xml=True):
133 if xml: 133 if xml:
134 git_objs = [tag + ':metadata.xml' for tag in tags] + [tag + ':results.xml' for tag in tags] 134 git_objs = [tag + ':metadata.xml' for tag in tags] + [tag + ':results.xml' for tag in tags]
135 data = parse_xml_stream(repo.run_cmd(['show'] + git_objs + ['--'])) 135 data = parse_xml_stream(repo.run_cmd(['show'] + git_objs + ['--']))
136 return ([metadata_xml_to_json(e) for e in data[0:num_revs]], 136 metadata, results = ([metadata_xml_to_json(e) for e in data[0:num_revs]],
137 [results_xml_to_json(e) for e in data[num_revs:]]) 137 [results_xml_to_json(e) for e in data[num_revs:]])
138 else: 138 else:
139 git_objs = [tag + ':metadata.json' for tag in tags] + [tag + ':results.json' for tag in tags] 139 git_objs = [tag + ':metadata.json' for tag in tags] + [tag + ':results.json' for tag in tags]
140 data = parse_json_stream(repo.run_cmd(['show'] + git_objs + ['--'])) 140 data = parse_json_stream(repo.run_cmd(['show'] + git_objs + ['--']))
141 return data[0:num_revs], data[num_revs:] 141 metadata, results = data[0:num_revs], data[num_revs:]
142
143 # Filter on results with version matching the last one
144 valid_bitbake = metadata[-1]['bitbake']['commit']
145 valid_meta_yocto = metadata[-1]['layers']['meta-poky']['commit']
146 return zip(*[(m, r) for m, r in zip(metadata, results)
147 if m['bitbake']['commit'] == valid_bitbake
148 and m['layers']['meta-poky']['commit'] == valid_meta_yocto])
142 149
143 150
144def get_data_item(data, key): 151def get_data_item(data, key):