]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
perf: Fix 6.1 kernel reproducibility issue
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 3 Feb 2023 12:06:08 +0000 (12:06 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 3 Feb 2023 15:44:39 +0000 (15:44 +0000)
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 <richard.purdie@linuxfoundation.org>
meta/recipes-kernel/perf/perf.bb

index c1b0bd22d820faff7ffb57259ea7e877eca4853b..1dff39a17e4643b5f38846f78166a1027da419a4 100644 (file)
@@ -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