AFS_component_version_number.c: Respect SOURCE_DATE_EPOCH if set 71/12471/4
authorAnders Kaseorg <andersk@mit.edu>
Tue, 6 Dec 2016 15:48:31 +0000 (10:48 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Mon, 16 Jan 2017 08:27:57 +0000 (03:27 -0500)
To improve build reproducibility, if the SOURCE_DATE_EPOCH environment
variable is set, use it to deterministically replace the embedded build
date, and do not include the username or hostname in this case.

https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal

Change-Id: I9ba951f1836385ffd14aad95f071bf8c672a01bb
Reviewed-on: https://gerrit.openafs.org/12471
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/config/Makefile.version-NOCML.in

index 325baa4..c65cfe9 100644 (file)
@@ -11,7 +11,11 @@ AFS_component_version_number.o: AFS_component_version_number.c
 
 AFS_component_version_number.c: @TOP_OBJDIR@/src/config/Makefile.version
        ( VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir@ "@VERSION@"` && \
-       echo 'char cml_version_number[]="@(#)OpenAFS '$$VERSION `date +"%Y-%m-%d"` $$USER@`hostname`'";' >AFS_component_version_number.c.NEW && \
+       if [ "$$SOURCE_DATE_EPOCH" ]; then \
+            echo 'char cml_version_number[]="@(#)OpenAFS '$$VERSION `date -u -d "@$$SOURCE_DATE_EPOCH" +"%Y-%m-%d" 2>/dev/null || date -u -r "$$SOURCE_DATE_EPOCH" +"%Y-%m-%d"`'";'; \
+       else \
+            echo 'char cml_version_number[]="@(#)OpenAFS '$$VERSION `date +"%Y-%m-%d"` $$USER@`hostname`'";'; \
+       fi >AFS_component_version_number.c.NEW && \
        echo 'char* AFSVersion = "${PACKAGE} '$$VERSION'";' >>AFS_component_version_number.c.NEW && \
        if cmp AFS_component_version_number.c.NEW AFS_component_version_number.c > /dev/null 2>&1 ; then : ; else \
        mv AFS_component_version_number.c.NEW AFS_component_version_number.c ; fi )