From 254fe38b229dd37f9128fa39d4e8a29d40433388 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 11 Apr 2023 22:33:44 +0200 Subject: dist.mk, version.mk: Create reproducible tarballs Anyone can create a tarball from a release tag, and it should be identical to the release tarball, so that the PGP signature made at the release matches. This is useful for distributors. Suggested-by: Marcos Fouces Signed-off-by: Alejandro Colomar --- lib/dist.mk | 11 +++++++++-- lib/version.mk | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/dist.mk b/lib/dist.mk index ccbaeb881..de1042bc1 100644 --- a/lib/dist.mk +++ b/lib/dist.mk @@ -18,6 +18,13 @@ include $(srcdir)/lib/verbose.mk _DISTDIR := $(builddir)/dist +DEFAULT_TARFLAGS := --sort=name +DEFAULT_TARFLAGS += --owner=root:0 +DEFAULT_TARFLAGS += --group=root:0 +DEFAULT_TARFLAGS += --mtime='$(DISTDATE)' +EXTRA_TARFLAGS := +TARFLAGS := $(DEFAULT_TARFLAGS) $(EXTRA_TARFLAGS) + DISTFILES := $(shell $(GIT) ls-files $(HIDE_ERR) | $(SED) 's,^,$(srcdir)/,') _DISTFILES := $(patsubst $(srcdir)/%,$(_DISTDIR)/%,$(DISTFILES)) _DISTPAGES := $(filter $(_DISTDIR)/man%,$(_DISTFILES)) @@ -41,10 +48,10 @@ $(_DISTOTHERS): $(_DISTDIR)/%: $(srcdir)/% | $$(@D)/ $(DISTFILE): $(_DISTFILES) | $$(@D)/ $(info TAR $@) - $(TAR) cf $@ -T /dev/null + $(TAR) $(TARFLAGS) -cf $@ -T /dev/null $(GIT) ls-files \ | $(SED) 's,^,$(_DISTDIR)/,' \ - | $(XARGS) $(TAR) rf $@ -C $(srcdir) \ + | $(XARGS) $(TAR) $(TARFLAGS) -rf $@ -C $(srcdir) \ --transform 's,^$(_DISTDIR),$(DISTNAME),' $(DISTFILE).bz2: %.bz2: % | $$(@D)/ diff --git a/lib/version.mk b/lib/version.mk index 1a8fa53c2..1d17b6c99 100644 --- a/lib/version.mk +++ b/lib/version.mk @@ -14,6 +14,7 @@ include $(srcdir)/lib/verbose.mk DISTNAME := $(shell $(GIT) describe $(HIDE_ERR)) DISTVERSION := $(patsubst man-pages-%,%,$(DISTNAME)) +DISTDATE := $(shell $(GIT) log -1 --format='%aD') endif # MAKEFILE_VERSION_INCLUDED -- cgit v1.2.3