From d2c27ae5c0d06363d2f0a2a8eb4e8e492df58444 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 3 Feb 2023 12:06:08 +0000 Subject: [PATCH] perf: Fix 6.1 kernel reproducibility issue The pmu-events.c file is generated by a python script making os.scandir() calls. The return value is "order on disk" which can cary between machines. Add in a sed to fix the perf source to sort this data which makes the pmu-events.c file deterministic. We should try and upstream this change but we'll need to sed for varying kernel versions. We should also try and get the perf source being added to the perf-devsrc package so when failures like this occur, diffoscope is much more helpful! Signed-off-by: Richard Purdie --- meta/recipes-kernel/perf/perf.bb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index c1b0bd22d82..1dff39a17e4 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -276,6 +276,10 @@ do_configure:prepend () { sed -i -e "s,$target,$replacement1$replacement2$replacement3,g" \ "${S}/tools/perf/pmu-events/Build" fi + if [ -e "${S}/tools/perf/pmu-events/jevents.py" ]; then + sed -i -e "s#os.scandir(path)#sorted(os.scandir(path), key=lambda e: e.name)#g" \ + "${S}/tools/perf/pmu-events/jevents.py" + fi # end reproducibility substitutions # We need to ensure the --sysroot option in CC is preserved -- 2.47.3