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
This commit is contained in:
Ed Maste 2025-02-27 08:17:11 -05:00
parent f2644d64b4
commit 8a3537aaf7

View file

@ -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