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

Kimmo Paasiala kpaasial at gmail.com
Wed Dec 12 18:52:54 UTC 2012


On Wed, Dec 12, 2012 at 6:53 PM, Ian Lepore
<freebsd at damnhippie.dyndns.org> wrote:
> On Wed, 2012-12-12 at 18:14 +0200, Kimmo Paasiala wrote:
>> 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
>
> Perhaps it could be handled similar to PARAMFILE, something like this in
> the makefile:
>
>           PARAMFILE=${.CURDIR}/../sys/sys/param.h; \
>           SYSDIR=${.CURDIR}/../sys; \
>          . ${.CURDIR}/../sys/conf/newvers.sh; \
>
> I'm not sure if newvers.sh needs to work in ways that don't involve
> being invoked from that makefile rule, so to be safe it could have
> default handling, something like:
>
>          : ${SYSDIR:=$(dirname $0)/..}
>
> -- Ian
>
>

Thanks, that works. Should I file a PR about this?

-Kimmo


More information about the freebsd-stable mailing list