From bb3a974325f5967c38da61ff61b5f7c732fcfa59 Mon Sep 17 00:00:00 2001 From: Chris Lamb Date: Fri, 31 May 2019 19:54:04 +0200 Subject: [PATCH] Don't embed compile-time timestamps into generated files. Currently the build is not reproducible because make(1) runs date(1) to provide the month and the year for the man page. Fix this by honouring SOURCE_DATE_EPOCH as described in https://reproducible-builds.org/specs/source-date-epoch/ Signed-off-by: Andre Noll --- Makefile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 408e3a5..3c7bde2 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,15 @@ INSTALL := install GZIP := gzip -f9 ZCAT := zcat -DATE := $(shell date '+%B %Y') +DATE_FMT := +%B %Y +# To get a reproducible build, we use $(SOURCE_DATE_EPOCH) instead of the +# current time if this variable is set. +ifdef SOURCE_DATE_EPOCH + DATE := $(shell LC_ALL=C date -u -d '@$(SOURCE_DATE_EPOCH)' \ + '$(DATE_FMT)' 2>/dev/null || LC_ALL=C date -u '$(DATE_FMT)') +else + DATE := $(shell date '+$(DATE_FMT)') +endif GIT_VERSION := $(shell ./version-gen.sh) PLAIN_VERSION := $(firstword $(subst -, , $(GIT_VERSION))) MAJOR_VERSION := $(firstword $(subst ., , $(PLAIN_VERSION))) -- 2.30.2