/usr/src/sys/conf/newvers.sh, SYSDIR set to wrong directory.

Kimmo Paasiala kpaasial at gmail.com
Wed Dec 12 16:14:36 UTC 2012


Hello,

My 9-STABLE buildworld broke in a very inexplicable way,  I was
getting an error on /usr/src/include/osreldate.h that I couldn't
figure out until I started looking at the sys/conf/newvers.sh and what
it does. It turned out that the thing that broke my buildworld was
having .git directory at the root directory of the system because I
recently started using GIT to track the configuration files.

I added some debug echos to the newvers.sh and I found out it's
setting SYSDIR to /bin/.. which in turn causes the newvers.sh to set
the gitdir to /.git and that seems to break the logic in newvers.sh.

Isn't SYSDIR supposed to be set to the sys -subdirectory of the source
tree (/usr/src/sys default)?

I'm guessing the reason the SYSDIR gets set to /bin/.. is the line in
newvers.sh:

SYSDIR=$(dirname $0)/..

$0 is actually /bin/sh and not the path to newver.sh because the
newvers.sh is sourced by the Makefile in /usr/src/include instead of
executing it:

osreldate.h: ${.CURDIR}/../sys/conf/newvers.sh ${.CURDIR}/../sys/sys/param.h \
    ${.CURDIR}/Makefile
        @${ECHO} creating osreldate.h from newvers.sh
        @MAKE=${MAKE}; \
        PARAMFILE=${.CURDIR}/../sys/sys/param.h; \
        . ${.CURDIR}/../sys/conf/newvers.sh; \

Now the question is how to fix this?

-Kimmo


More information about the freebsd-stable mailing list