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 musl-obstack
]; ];
# https://github.com/acmel/dwarves/pull/51
patches = [ ./threading-reproducibility.patch ]; patches = [ ./threading-reproducibility.patch ];
# Put libraries in "lib" subdirectory, not top level of $out # Put libraries in "lib" subdirectory, not top level of $out

View File

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