diff options
author | emaste <emaste@FreeBSD.org> | 2015-12-03 12:17:09 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2015-12-03 12:17:09 +0000 |
commit | 442aaceec584716da33165adf00f0f258e23a75b (patch) | |
tree | 1dc7f5aab51972f5b5712de1fa2df09689fabd67 | |
parent | 0d02209e5449aa81eaa25ddf72e3ae6c03be0f75 (diff) | |
download | FreeBSD-src-442aaceec584716da33165adf00f0f258e23a75b.zip FreeBSD-src-442aaceec584716da33165adf00f0f258e23a75b.tar.gz |
newvers: Honour SOURCE_DATE_EPOCH as a build reproducibility measure
One reason the kernel does not build reproducibly is that it includes
a timestamp in the version string. SOURCE_DATE_EPOCH provides a standard
method to address this: it should be set to the last modification time
of the source, and build processes use the specified timestamp instead
of the "current" date and time.
This change uses SOURCE_DATE_EPOCH if it is set; how it gets set needs
to be addressed elsewhere.
Reviewed by: bapt
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
-rw-r--r-- | sys/conf/newvers.sh | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 2239ac6..fc812c5 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -97,7 +97,15 @@ then fi touch version -v=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} t=`date` +v=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} +if [ -n "$SOURCE_DATE_EPOCH" ]; then + if ! t=`date -r $SOURCE_DATE_EPOCH 2>/dev/null`; then + echo "Invalid SOURCE_DATE_EPOCH" >&2 + exit 1 + fi +else + t=`date` +fi i=`${MAKE:-make} -V KERN_IDENT` compiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep -w 'version') |