aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2025-02-27 13:17:11 +0000
committerEd Maste <emaste@FreeBSD.org>2025-02-28 15:11:52 +0000
commit8a3537aaf7c19f7331fcc160ab42e36fc79e408a (patch)
tree2eaa5ae37b0302648c3b4260955ee040729be00b
parentf2644d64b40f611fd4d4f66069ad8d6cf33f69df (diff)
Makefile.inc1: Make package timestamps reproducible by default
Set package archive timestamps based on most recent source commit timestamp (approach suggested by bapt). I'd like to include git metadata in a file included in src tarballs, so that the build is reproducible (including the hash shown in uname etc.) outside of a git checkout. There are still details to be sorted out to do that, so this is an interim step to improve reproducibility. Reviewed by: bapt Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49165
-rw-r--r--Makefile.inc14
1 files changed, 4 insertions, 0 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index c9a4fee236aa..f51fe7d3b119 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -597,8 +597,12 @@ PKG_VERSION:= ${_PKG_REVISION}${EXTRA_REVISION:C/[[:space:]]//g}
.endif # !defined(PKG_VERSION)
.if !defined(PKG_TIMESTAMP)
+.if !empty(GIT_CMD) && exists(${GIT_CMD}) && exists(${SRCDIR}/.git)
+SOURCE_DATE_EPOCH!= ${GIT_CMD} -C ${SRCDIR} show -s --format=%ct HEAD
+.else
TIMEEPOCHNOW= %s
SOURCE_DATE_EPOCH= ${TIMEEPOCHNOW:gmtime}
+.endif
.else
SOURCE_DATE_EPOCH= ${PKG_TIMESTAMP}
.endif