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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to