Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Aug 2019 13:17:19 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        freebsd-arch@freebsd.org
Subject:   Re: svn commit: r350550 - head/share/mk
Message-ID:  <53987F8A-25FC-44D0-ACE0-680ECBFFEF48@yahoo.com>

next in thread | raw e-mail | index | archive | help
Something has seemed incomplete in the descriptions
that I've seen in the posts (based on a vague memory
and observed behavior in my context). So I looked:

# grep -r -U3 REPRO_FLAG /usr/src/sys/ /usr/src/stand/ | less
/usr/src/sys/conf/kern.post.mk- ${NORMAL_CTFCONVERT}
/usr/src/sys/conf/kern.post.mk-
/usr/src/sys/conf/kern.post.mk-.if ${MK_REPRODUCIBLE_BUILD} !=3D "no"
/usr/src/sys/conf/kern.post.mk:REPRO_FLAG=3D"-R"
/usr/src/sys/conf/kern.post.mk-.endif
/usr/src/sys/conf/kern.post.mk-vers.c: $S/conf/newvers.sh $S/sys/param.h =
${SYSTEM_DEP}
/usr/src/sys/conf/kern.post.mk: MAKE=3D"${MAKE}" sh $S/conf/newvers.sh =
${REPRO_FLAG} ${KERN_IDENT}
/usr/src/sys/conf/kern.post.mk-
/usr/src/sys/conf/kern.post.mk-vnode_if.c: $S/tools/vnode_if.awk =
$S/kern/vnode_if.src
/usr/src/sys/conf/kern.post.mk- ${AWK} -f $S/tools/vnode_if.awk =
$S/kern/vnode_if.src -c
--
/usr/src/stand/loader.mk-CLEANFILES+=3D   vers.c
/usr/src/stand/loader.mk-VERSION_FILE?=3D ${.CURDIR}/version
/usr/src/stand/loader.mk-.if ${MK_REPRODUCIBLE_BUILD} !=3D no
/usr/src/stand/loader.mk:REPRO_FLAG=3D    -r
/usr/src/stand/loader.mk-.endif
/usr/src/stand/loader.mk-vers.c: ${LDRSRC}/newvers.sh ${VERSION_FILE}
/usr/src/stand/loader.mk:       sh ${LDRSRC}/newvers.sh ${REPRO_FLAG} =
${VERSION_FILE} \
/usr/src/stand/loader.mk-           ${NEWVERSWHAT}
/usr/src/stand/loader.mk-
/usr/src/stand/loader.mk-.if ${MK_LOADER_VERBOSE} !=3D "no"

Then the question is the -r vs. -R distinction (for
just /usr/src/sys/conf/newvers.sh as it turns out,
/usr/src/stand/loader.mk only supports -r use):

. . .
#       -r      Reproducible build.  Do not embed directory names, user =
names,
#               time stamps or other dynamic information into the output =
file.
#               This is intended to allow two builds done at different =
times
#               and even by different people on different hosts to =
produce
#               identical output.
#
#       -R      Reproducible build if the tree represents an unmodified
#               checkout from a version control system.  Metadata is =
included
#               if the tree is modified.
. . .
include_metadata=3Dyes
modified=3Dno
while getopts crRvV: opt; do
        case "$opt" in
        c)
                echo "$COPYRIGHT"
                exit 0
                ;;
        r)
                include_metadata=3Dno
                ;;
        R)
                include_metadata=3Dif-modified
                ;;
. . .

As stands -r is never used for sys/conf/newvers.sh
unless one changes /usr/src/sys/conf/kern.post.mk
or some such.

So if I use WITH_REPRODUCEABLE_BUILD I still see
the varying metadata (but I do not have an
independent svn with my own checkins, just
differences with FreeBSD svnlite update -r??????
materials).

May be what some folks are asking for is some
means of control over -R vs. -r being supplied
to sys/conf/newvers.sh , without having to edit
sys/conf/kern.post.mk ?


=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53987F8A-25FC-44D0-ACE0-680ECBFFEF48>