summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2015-12-03 12:17:09 +0000
committeremaste <emaste@FreeBSD.org>2015-12-03 12:17:09 +0000
commit442aaceec584716da33165adf00f0f258e23a75b (patch)
tree1dc7f5aab51972f5b5712de1fa2df09689fabd67
parent0d02209e5449aa81eaa25ddf72e3ae6c03be0f75 (diff)
downloadFreeBSD-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.sh10
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')
OpenPOWER on IntegriCloud