From ed1273b00b127cad9bb9867e0fd2be70d60bee1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?=
Date: Sun, 21 Jul 2024 18:25:05 +0100 Subject: [PATCH] build: support reproducible tarball creation We already support reproducible builds since commit v8.24-99-gc1b3d6587, and this adjusts that change to also support reproducible tarballs with subsequent runs of `make dist`. * Makefile.am: Don't create a varying .timestamp file, instead ... * man/local.mk: Rely on the timestamp of the .tarball-version file. Fixes https://bugs.gnu.org/72232 --- Makefile.am | 2 -- man/local.mk | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index bbbdc7829..3fd546599 100644 --- a/Makefile.am +++ b/Makefile.am @@ -82,14 +82,12 @@ BUILT_SOURCES = .version # Have no read-only files in the tarball to allow easy removal. # Have .tarball-version based versions only in tarball builds. -# Have .timestamp based dates only in tarball builds. # The perl substitution is to change some key uses of "rm" to "/bin/rm". # See the rm_subst comment for details. # The touch avoids a subtle, spurious "make distcheck" failure. dist-hook: gen-ChangeLog $(AM_V_GEN)chmod -R +rw $(distdir) $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version - $(AM_V_GEN)date +%s > $(distdir)/.timestamp $(AM_V_at)perl -pi -e '$(rm_subst)' $(distdir)/Makefile.in $(AM_V_at)touch $(distdir)/doc/constants.texi \ $(distdir)/doc/coreutils.info diff --git a/man/local.mk b/man/local.mk index 24f88745a..1acd73fe7 100644 --- a/man/local.mk +++ b/man/local.mk @@ -194,7 +194,8 @@ endif && $(MKDIR_P) $$t \ && (cd $$t && $(LN_S) '$(abs_top_builddir)/src/'$$prog$(EXEEXT) \ $$argv$(EXEEXT)) \ - && : $${SOURCE_DATE_EPOCH=`cat $(srcdir)/.timestamp 2>/dev/null || :`} \ + && : $${SOURCE_DATE_EPOCH=`date -r $(srcdir)/.tarball-version +%s \ + 2>/dev/null || :`} \ && : $${TZ=UTC0} && export TZ \ && export SOURCE_DATE_EPOCH && $(run_help2man) \ --source='$(PACKAGE_STRING)' \ -- 2.45.2