diff options
| author | Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> | 2025-10-22 15:43:15 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-11-07 13:15:35 +0000 |
| commit | 5d13e7a15598b3a7bcc7bd299eea6854b77924ac (patch) | |
| tree | 17dcc50991bd708247acf830f4a25dc48cfd58ef | |
| parent | 5c27e317f820fd62f854033555036cccd27a8061 (diff) | |
| download | poky-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-x | scripts/oe-build-perf-report | 13 |
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 | ||
| 144 | def get_data_item(data, key): | 151 | def get_data_item(data, key): |
