diff options
Diffstat (limited to 'debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch')
-rw-r--r-- | debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch b/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch new file mode 100644 index 000000000..cd4f5c5a3 --- /dev/null +++ b/debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch @@ -0,0 +1,26 @@ +From: Ben Hutchings <ben@decadent.org.uk> +Date: Sun, 25 Aug 2019 13:49:41 +0100 +Subject: tools/perf: pmu-events: Fix reproducibility +Forwarded: https://lore.kernel.org/lkml/20190825131329.naqzd5kwg7mw5d3f@decadent.org.uk/T/#u + +jevents.py enumerates files and outputs the corresponding C structs in +the order they are found. This makes it sensitive to directory +ordering, so that the perf executable is not reproducible. + +To avoid this, sort the entries returned by os.scandir() before +processing them. + +References: https://tests.reproducible-builds.org/debian/dbdtxt/bullseye/i386/linux_4.19.37-6.diffoscope.txt.gz +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> +--- +--- a/tools/perf/pmu-events/jevents.py ++++ b/tools/perf/pmu-events/jevents.py +@@ -663,7 +663,7 @@ def main() -> None: + def ftw(path: str, parents: Sequence[str], + action: Callable[[Sequence[str], os.DirEntry], None]) -> None: + """Replicate the directory/file walking behavior of C's file tree walk.""" +- for item in os.scandir(path): ++ for item in sorted(os.scandir(path), key=(lambda item: item.name)): + action(parents, item) + if item.is_dir(): + ftw(item.path, parents + [item.name], action) |