diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2025-08-21 14:05:19 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2025-08-21 15:56:23 +0000 |
| commit | 3238878379d3bd4bb9796ccb41c090139bbde94f (patch) | |
| tree | 24e4e127f219e4f29b1735d1c6b0cc8e2d60ca9c | |
| parent | eebadc7d8590ff8d38fdbcfd90651c931e713648 (diff) | |
newvers: Add a builddir parameter
When reproducible builds are configured, we should use /usr/obj as the
canonical objdir. Add a parameter to newvers.sh to ensure that build
metadata is reproducible.
Reviewed by: emaste
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D50954
| -rw-r--r-- | sys/conf/kern.post.mk | 2 | ||||
| -rw-r--r-- | sys/conf/newvers.sh | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk index 1accd3fa8df4..bb3c7af82a4d 100644 --- a/sys/conf/kern.post.mk +++ b/sys/conf/kern.post.mk @@ -467,7 +467,7 @@ config.o env.o hints.o vers.o vnode_if.o: NEWVERS_ENV+= MAKE="${MAKE}" .if ${MK_REPRODUCIBLE_BUILD} != "no" -NEWVERS_ARGS+= -R +NEWVERS_ARGS+= -R -d ${PREFIX_OBJDIR} .endif vers.c: .NOMETA_CMP $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP:Nvers.*} ${NEWVERS_ENV} sh $S/conf/newvers.sh ${NEWVERS_ARGS} ${KERN_IDENT} diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 66926805052c..8b60da95741e 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -110,14 +110,18 @@ COPYRIGHT="$COPYRIGHT # We expand include_metadata later since we may set it to the # future value of modified. +builddir=$(pwd) include_metadata=yes modified=no -while getopts crRvV: opt; do +while getopts cd:rRvV: opt; do case "$opt" in c) echo "$COPYRIGHT" exit 0 ;; + d) + builddir=$OPTARG + ;; r) include_metadata=no ;; @@ -187,7 +191,7 @@ fi touch version v=$(cat version) u=${USER:-root} -d=$(pwd) +d=$builddir h=${HOSTNAME:-$(hostname)} if [ -n "$SOURCE_DATE_EPOCH" ]; then if ! t=$(date -ur $SOURCE_DATE_EPOCH 2>/dev/null); then |
