]> xenbits.xensource.com Git - people/royger/freebsd.git/commitdiff
newvers.sh: add option to eliminate kernel build metadata
authoremaste <emaste@FreeBSD.org>
Thu, 15 Dec 2016 12:57:03 +0000 (12:57 +0000)
committeremaste <emaste@FreeBSD.org>
Thu, 15 Dec 2016 12:57:03 +0000 (12:57 +0000)
Build metadata (username, hostname, etc.) prevents the FreeBSD kernel
from building reproducibly. Add an option to disable inclusion of that
metadata but retain the release information and SVN/git VCS details.
See https://reproducible-builds.org/ for additional background.

Reviewed by: bapt
Obtained from: NetBSD
MFC after: 1 month
Sponsored by: Reproducible Builds World Summit 2, Berlin
Differential Revision: https://reviews.freebsd.org/D4347

sys/conf/newvers.sh

index 72e9ae60610abf2c75a8488992c5ab2df516ad8b..9e018f769f0e825764fd6b120bc147b6d57e774d 100644 (file)
 #      @(#)newvers.sh  8.1 (Berkeley) 4/20/94
 # $FreeBSD$
 
+# Command line options:
+#
+#     -r               Reproducible build.  Do not embed directory names, user
+#                      names, time stamps or other dynamic information into
+#                      the outuput file.  This is intended to allow two builds
+#                      done at different times and even by different people on
+#                      different hosts to produce identical output.
+
 TYPE="FreeBSD"
 REVISION="12.0"
 BRANCH="CURRENT"
@@ -250,10 +258,28 @@ if [ -n "$hg_cmd" ] ; then
        fi
 fi
 
+include_metadata=true
+while getopts r opt; do
+       case "$opt" in
+       r)
+               include_metadata=
+               ;;
+       esac
+done
+shift $((OPTIND - 1))
+
+if [ -z "${include_metadata}" ]; then
+       VERINFO="${VERSION} ${svn}${git}${hg}${p4version}"
+       VERSTR="${VERINFO}\\n"
+else
+       VERINFO="${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
+       VERSTR="${VERINFO}\\n    ${u}@${h}:${d}\\n"
+fi
+
 cat << EOF > vers.c
 $COPYRIGHT
-#define SCCSSTR "@(#)${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
-#define VERSTR "${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}\\n    ${u}@${h}:${d}\\n"
+#define SCCSSTR "@(#)${VERINFO}"
+#define VERSTR "${VERSTR}"
 #define RELSTR "${RELEASE}"
 
 char sccs[sizeof(SCCSSTR) > 128 ? sizeof(SCCSSTR) : 128] = SCCSSTR;