Source: pike8.0 Severity: normal Tags: patch User: reproducible-bui...@lists.alioth.debian.org Usertags: randomness X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org
A non-deterministic value is set in /usr/include/pike8.0/pike/machine.h based on some build time tests from configure: #define FB_CPU_TIME_IS_THREAD_LOCAL PIKE_UNKNOWN vs. #define FB_CPU_TIME_IS_THREAD_LOCAL PIKE_NO I have attached a workaround patch to debian/rules which disables threading, which does not trigger this codepath... Understandably, threading may be highly desired and so this may not be an appropriate way to fix the issue. I am not familiar with the pike8.0 codebase, but maybe someone who is would have a better idea of a proper fix. Ideally, these tests should be done at runtime instead of relying on the build machine's cpu characteristics, timing and possibly system load at the time of the build, or maybe the appropriate lowest-common-denominator value should be forced in the Debian packaging. Unfortunately, this patch alone does not solve all reproducibility issues with pike8.0, but applying this patch should reduce the differences, making it easier to debug remaining issues. Thanks for maintaining pike8.0! live well, vagrant
From 172263254eb9de34f1c5ceface9d8cad9e92cbde Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian <vagr...@reproducible-builds.org> Date: Mon, 3 Apr 2023 15:46:15 -0700 Subject: [PATCH 3/9] debian/rules: Pass --without-threads to configure to avoid embedding cpu timing differences... Otherwise, FB_CPU_TIME_IS_THREAD_LOCAL in /usr/include/pike8.0/pike/machine.h is non-deterministically set to either PIKE_NO or PIKE_UNKNOWN. --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index 8ee2748..bc56cf6 100755 --- a/debian/rules +++ b/debian/rules @@ -90,6 +90,8 @@ ifneq ($(VERSION),$(DEBVERSION)) $(error Version mismatch; buildid.txt: $(VERSION), debian/changelog: $(DEBVERSION)) endif +CFARGSEXTRA += --without-threads + # --with-lib-path is just to stop configure from adding all the # standard library directories with -L as well as -R to LDFLAGS CFARGS=$(CFARGSEXTRA) \ -- 2.39.2
signature.asc
Description: PGP signature