]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
build: support creating reproducible tarball contents
authorPádraig Brady <P@draigBrady.com>
Sun, 21 Jul 2024 17:25:05 +0000 (18:25 +0100)
committerPádraig Brady <P@draigBrady.com>
Mon, 22 Jul 2024 16:47:24 +0000 (17:47 +0100)
We already support reproducible builds since commit v8.24-99-gc1b3d6587,
and this adjusts that change to also support reproducible
tarball contents 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
man/local.mk

index bbbdc782980fb2bc729599e4f6ca6a460d81f5af..3fd546599594be955f36a6992efd218f3649ee7a 100644 (file)
@@ -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
index 24f88745aa0d4c0f920e7b8c70eda0ba1b8ebad0..1acd73fe79b5bcd82fdc087ec4e1bf6dc7a73571 100644 (file)
@@ -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)'                       \