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: Karl Berry <karl <at> freefriends.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#70410: closed (Fwd: [PATCH] gotools: Workaround
 non-reproduceability of automake)
Date: Thu, 18 Apr 2024 21:06:03 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 18 Apr 2024 15:04:52 -0600
with message-id <202404182104.43IL4qs4006994 <at> freefriends.org>
and subject line Re: bug#70410: Fwd: [PATCH] gotools: Workaround non-reproduceability of automake
has caused the debbugs.gnu.org bug report #70410,
regarding Fwd: [PATCH] gotools: Workaround non-reproduceability of automake
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> 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: 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


[Message part 3 (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.


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.