Debian Bug report logs - #995092
guile-3.0: reproducible builds: parallelism triggers differences

Package: src:guile-3.0; Maintainer for src:guile-3.0 is Rob Browning <rlb@defaultvalue.org>;

Reported by: Vagrant Cascadian <vagrant@reproducible-builds.org>

Date: Sun, 26 Sep 2021 02:27:02 UTC

Severity: normal

Tags: patch

Reply or subscribe to this bug.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, reproducible-bugs@lists.alioth.debian.org, Rob Browning <rlb@defaultvalue.org>:
Bug#995092; Package src:guile-3.0. (Sun, 26 Sep 2021 02:27:04 GMT) (full text, mbox, link).


Acknowledgement sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
New Bug report received and forwarded. Copy sent to reproducible-bugs@lists.alioth.debian.org, Rob Browning <rlb@defaultvalue.org>. (Sun, 26 Sep 2021 02:27:04 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: submit@bugs.debian.org
Subject: guile-3.0: reproducible builds: parallelism triggers differences
Date: Sat, 25 Sep 2021 19:22:13 -0700
[Message part 1 (text/plain, inline)]
Source: guile-3.0
Severity: normal
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: randomness toolchain
X-Debbugs-Cc: reproducible-bugs@lists.alioth.debian.org

The order of references to various .scm files used when building guile
(or using guile to build various .go files) may appear in arbitrary
order, or sometimes even missing (in the example below):

  https://tests.reproducible-builds.org/debian/rb-pkg/bookworm/amd64/diffoscope-results/guile-3.0.html

  /usr/lib/x86_64-linux-gnu/guile/3.0/ccache/ice-9/deprecated.go

  26 ice-9/deprecated.scm vs. 26 ice-9/deprecated.scm
  27 ice-9/boot-9.scm         27 ice-9/boot-9.scm
 	                          28 ice-9/psyntax.scm


The attached patch fixes this by disabling parallelism in debian/rules.

With this patch applied, guile-3.0 should become reproducible on
tests.reproducible-builds.org once it migrates to bookworm (in the
unstable and experimental suites build paths will still trigger issues).

Though, the underlying issue is also triggered when using guile to build
other packages... so it would be good to fix in guile upstream as well,
as this is part of a toolchain used to build other packages...


Thanks for maintaining guile-3.0!


live well,
  vagrant
[0001-debian-rules-Disable-parallelism-to-avoid-embedding-.patch (text/x-diff, inline)]
From e87d944f8f0330f89a2a9d2c8028b9383f78031b Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagrant@reproducible-builds.org>
Date: Sun, 26 Sep 2021 02:01:07 +0000
Subject: [PATCH] debian/rules: Disable parallelism to avoid embedding
 references to .scm files in arbitrary order.

---
 debian/rules | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/debian/rules b/debian/rules
index 2024c94..dfe8068 100755
--- a/debian/rules
+++ b/debian/rules
@@ -27,10 +27,7 @@ export HOME := $(CURDIR)/debian/no-trespassing
 # Keep this in sync with guile-doc.install
 expected_info := guile.info $(foreach n,1 2 3 4 5 6 7 8 9 10 11,guile.info-$(n))
 
-joblimit := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
-ifeq (,$(joblimit))
-  joblimit := 1
-endif
+joblimit := 1
 
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE := 1
@@ -101,7 +98,7 @@ define checkdir
 endef
 
 %:
-	dh $@ --parallel --with autoreconf
+	dh $@ --no-parallel --with autoreconf
 
 .PHONY: check-vars
 check-vars:
-- 
2.30.2

[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Rob Browning <rlb@defaultvalue.org>:
Bug#995092; Package src:guile-3.0. (Thu, 02 Dec 2021 17:51:03 GMT) (full text, mbox, link).


Acknowledgement sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
Extra info received and forwarded to list. Copy sent to Rob Browning <rlb@defaultvalue.org>. (Thu, 02 Dec 2021 17:51:03 GMT) (full text, mbox, link).


Message #10 received at 995092@bugs.debian.org (full text, mbox, reply):

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: 995092@bugs.debian.org
Subject: Re: Bug#995092: guile-3.0: reproducible builds: parallelism triggers differences
Date: Thu, 02 Dec 2021 09:46:10 -0800
[Message part 1 (text/plain, inline)]
On 2021-09-25, Vagrant Cascadian wrote:
> The order of references to various .scm files used when building guile
> (or using guile to build various .go files) may appear in arbitrary
> order, or sometimes even missing (in the example below):
>
>   https://tests.reproducible-builds.org/debian/rb-pkg/bookworm/amd64/diffoscope-results/guile-3.0.html
>
>   /usr/lib/x86_64-linux-gnu/guile/3.0/ccache/ice-9/deprecated.go
>
>   26 ice-9/deprecated.scm vs. 26 ice-9/deprecated.scm
>   27 ice-9/boot-9.scm         27 ice-9/boot-9.scm
>  	                          28 ice-9/psyntax.scm
>
>
> The attached patch fixes this by disabling parallelism in debian/rules.
>
> With this patch applied, guile-3.0 should become reproducible on
> tests.reproducible-builds.org once it migrates to bookworm (in the
> unstable and experimental suites build paths will still trigger issues).

This is also an issue for NixOS, GNU Guix and OpenSUSE:

https://github.com/NixOS/nixpkgs/pull/78778
https://issues.guix.gnu.org/issue/20272
https://build.opensuse.org/request/show/732638

So while disabling parallelism in the build takes somewhat of a
performance hit, it would still be nice to have to get reproducible
builds!


> Though, the underlying issue is also triggered when using guile to build
> other packages... so it would be good to fix in guile upstream as well,
> as this is part of a toolchain used to build other packages...

And this part is still an upstream issue... the workaround for now is to
disable parallelism in any package building with guile.


live well,
  vagrant
[signature.asc (application/pgp-signature, inline)]

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed May 17 10:03:03 2023; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.