GNU bug report logs - #70410
Fwd: [PATCH] gotools: Workaround non-reproduceability of automake

Previous Next

Package: automake;

Reported by: Eric Gallager <egall <at> gwmail.gwu.edu>

Date: Tue, 16 Apr 2024 00:05:02 UTC

Severity: normal

Tags: patch

Done: Karl Berry <karl <at> freefriends.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eric Gallager <egall <at> gwmail.gwu.edu>
Subject: bug#70410: closed (Re: bug#70410: Fwd: [PATCH] gotools:
 Workaround non-reproduceability of automake)
Date: Thu, 18 Apr 2024 21:06:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#70410: Fwd: [PATCH] gotools: Workaround non-reproduceability of automake

which was filed against the automake package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 70410 <at> debbugs.gnu.org.

-- 
70410: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70410
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Karl Berry <karl <at> freefriends.org>
To: nbowler <at> draconx.ca
Cc: egall <at> gwmail.gwu.edu, 70410 <at> debbugs.gnu.org
Subject: Re: bug#70410: Fwd: [PATCH] gotools: Workaround non-reproduceability
 of automake
Date: Thu, 18 Apr 2024 15:04:52 -0600
Per https://gcc.gnu.org/pipermail/gcc-patches/2024-April/649576.html
this was fixed in https://bugs.gnu.org/46744. As I understand it.
Closing.

[Message part 3 (message/rfc822, inline)]
From: Eric Gallager <egall <at> gwmail.gwu.edu>
To: bug-automake <at> gnu.org
Subject: Fwd: [PATCH] gotools: Workaround non-reproduceability of automake
Date: Mon, 15 Apr 2024 20:03:36 -0400
GCC developers have recently found a source of non-determinism in
automake; this is bad for reproducible builds:

---------- Forwarded message ---------
From: Jakub Jelinek <jakub <at> redhat.com>
Date: Mon, Apr 15, 2024 at 8:43 AM
Subject: [PATCH] gotools: Workaround non-reproduceability of automake
To: Ian Lance Taylor <iant <at> golang.org>, Mark Wielaard <mjw <at> redhat.com>
Cc: <gcc-patches <at> gcc.gnu.org>


Hi!

The regen bot recently flagged a difference in gotools/Makefile.in.
Trying it locally, it seems pretty random
for i in `seq 20`; do
PATH=~/automake-1.15.1/bin:~/autoconf-2.69/bin:$PATH automake; echo -n
`git diff Makefile.in | wc -l`" "; done; echo; for i in `seq 20`; do
PATH=~/automake-1.15.1/bin:~/autoconf-2.69/bin:$PATH setarch x86_64 -R
automake; echo -n `git diff Makefile.in | wc -l`" "; done; echo;
14 14 14 0 0 0 14 0 14 0 14 14 14 14 0 14 14 0 0 0
14 0 14 0 0 14 14 14 0 14 14 0 0 14 14 14 0 0 0 14
The 14 line git diff is
diff --git a/gotools/Makefile.in b/gotools/Makefile.in
index 36c2ec2abd3..f40883c39be 100644
--- a/gotools/Makefile.in
+++ b/gotools/Makefile.in
@@ -704,8 +704,8 @@ distclean-generic:
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-@NATIVE_FALSE <at> install-exec-local:
 @NATIVE_FALSE <at> uninstall-local:
+@NATIVE_FALSE <at> install-exec-local:
 clean: clean-am

 clean-am: clean-binPROGRAMS clean-generic clean-noinstPROGRAMS \
so whether it is
@NATIVE_FALSE <at> install-exec-local:
@NATIVE_FALSE <at> uninstall-local:
or
@NATIVE_FALSE <at> uninstall-local:
@NATIVE_FALSE <at> install-exec-local:
depends on some hash table traversal or what.

I'm not familiar with automake/m4 enough to debug that, so I'm
instead offering a workaround, with this patch the order is deterministic.

2024-04-15  Jakub Jelinek  <jakub <at> redhat.com>

        * Makefile.am (install-exec-local, uninstall-local): Add goals
        on the else branch of if NATIVE to ensure reproducibility.
        * Makefile.in: Regenerate.

--- gotools/Makefile.am.jj      2023-11-04 09:02:35.802995614 +0100
+++ gotools/Makefile.am 2024-04-15 14:30:03.647171636 +0200
@@ -366,5 +366,7 @@ else
 # only do this if such a compiler is available.  We also need to get
 # the right values for GOARCH and GOOS in the default build context in
 # the go/build package.  Figure this out later.
+install-exec-local:
+uninstall-local:

 endif
--- gotools/Makefile.in.jj      2023-11-03 17:08:46.000439645 +0100
+++ gotools/Makefile.in 2024-04-15 14:31:32.270040117 +0200
@@ -704,8 +704,6 @@ distclean-generic:
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-@NATIVE_FALSE <at> install-exec-local:
-@NATIVE_FALSE <at> uninstall-local:
 clean: clean-am

 clean-am: clean-binPROGRAMS clean-generic clean-noinstPROGRAMS \
@@ -1035,6 +1033,8 @@ mostlyclean-local:
 # only do this if such a compiler is available.  We also need to get
 # the right values for GOARCH and GOOS in the default build context in
 # the go/build package.  Figure this out later.
+@NATIVE_FALSE <at> install-exec-local:
+@NATIVE_FALSE <at> uninstall-local:

 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

        Jakub



This bug report was last modified 1 year and 89 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.