GNU bug report logs -
#70410
Fwd: [PATCH] gotools: Workaround non-reproduceability of automake
Previous Next
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
[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)]
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)]
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.