On Wed, 2026-08-05 at 23:23 -0700, Francisco Pedraza wrote: > oe-build-perf-report aggregates the buildstats of every test run sharing > an openembedded-core commit. Since buildperf began tracking > openembedded-core rather than poky, metadata changes in meta-yocto no > longer alter the commit hash, so two runs at the same revision can > legitimately contain different recipe versions. When that happens > BSRecipe.aggregate() raises and report generation aborts entirely: > > Refusing to aggregate buildstats, recipe version differs: > linux-yocto-6.16.11+git-r0 vs. linux-yocto-6.18.1+git-r0 > > Two problems follow. The failure discards the entire run rather than the > recipe that differs, so data for every other recipe is lost with it. And > because BuildStats.aggregate() mutates as it iterates, recipes processed > before the mismatch have already been converted to BSTaskAggregate when > the exception is raised, leaving the object partially merged; which > recipes survive depends on the ordering returned by os.listdir() in > from_dir(). > > Check every recipe before modifying any of them, and add a strict > argument to BuildStats.aggregate(). With strict=True, the default, a > ValueError is still raised, but now before anything has been mutated, so > buildstats-diff keeps refusing to combine buildstats that a user has > explicitly asked it to combine. The message it raises now names all > offending recipes rather than only the first. oe-build-perf-report > passes strict=False, which skips the recipes that cannot be aggregated, > logs which ones and why, and aggregates the rest. > > Skipping only the mismatched recipes preserves the most data, at the > cost of recipes having differing sample counts within a revision. > BSTaskAggregate already handles that, as it averages over its own task > list. > > Tested with: > > oe-selftest -r oescripts.OEBuildStatsAggregateTests > > covering the strict and non-strict paths in both recipe orderings, the > differing-task-set condition, and that identical runs still aggregate. > > Fixes [YOCTO #16119] > > Signed-off-by: Francisco Pedraza <[email protected]>
Hi, This misunderstands the issue. We should not be aggregating the buildstats between builds with different metadata or bitbake versions. Previously we could differentiate metadata/bitbake versions by looking at the poky commit hash, now we can't as the poky combo repo is gone. We put in place a temporary fix to differentiate using the OE-core commit hash, but that misses changes in bitbake and meta-yocto. I have to ask, was this submission AI generated? Have you read the contributor guide [1]? [1]: https://docs.yoctoproject.org/contributor-guide/submit-changes.html#acceptance-of-ai-generated-code Best regards, -- Paul Barker
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#243525): https://lists.openembedded.org/g/openembedded-core/message/243525 Mute This Topic: https://lists.openembedded.org/mt/120623047/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
