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

Attachment: signature.asc
Description: PGP signature

Reply via email to