pahole: reproducibility: use --reproducible_build instead of -j1

New version brought in the --reproducible_build option, which is more
efficient than forcing a single thread, and produces the same output
(tested on linux kernel's vmlinux BTF extraction)
This commit is contained in:
Dominique Martinet 2024-06-12 21:52:15 +09:00
parent 8a826cb8f8
commit d354c891fb
2 changed files with 13 additions and 15 deletions

View File

@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
musl-obstack
];
# https://github.com/acmel/dwarves/pull/51
patches = [ ./threading-reproducibility.patch ];
# Put libraries in "lib" subdirectory, not top level of $out

View File

@ -1,18 +1,15 @@
diff --git a/pahole.c b/pahole.c
index 6fc4ed6..a4e306f 100644
index 954498d2ad4f..2b010658330c 100644
--- a/pahole.c
+++ b/pahole.c
@@ -1687,8 +1687,11 @@ static error_t pahole__options_parser(int key, char *arg,
class_name = arg; break;
case 'j':
#if _ELFUTILS_PREREQ(0, 178)
- conf_load.nr_jobs = arg ? atoi(arg) :
- sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
+ // Force single thread if reproducibility is desirable.
+ if (!getenv("SOURCE_DATE_EPOCH")) {
+ conf_load.nr_jobs = arg ? atoi(arg) :
+ sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
+ }
#else
fputs("pahole: Multithreading requires elfutils >= 0.178. Continuing with a single thread...\n", stderr);
#endif
@@ -3705,6 +3705,10 @@ int main(int argc, char *argv[])
goto out;
}
+ /* This being set means whoever called us tries to do a reproducible build */
+ if (getenv("SOURCE_DATE_EPOCH"))
+ conf_load.reproducible_build = true;
+
if (languages.str && parse_languages())
return rc;