svn commit: r254217 - head/sys/conf

Glen Barber gjb at FreeBSD.org
Tue Aug 13 15:32:26 UTC 2013


On Tue, Aug 13, 2013 at 09:23:09AM -0600, Ian Lepore wrote:
> On Sun, 2013-08-11 at 13:57 +0000, Glen Barber wrote:
> > Author: gjb
> > Date: Sun Aug 11 13:57:14 2013
> > New Revision: 254217
> > URL: http://svnweb.freebsd.org/changeset/base/254217
> > 
> > Log:
> >   Use realpath(1) to determine the location of the newvers.sh script,
> >   since the current working directory might not be what is expected,
> >   causing svn{,lite}version to fail to find ${0} (itself).
> >   
> >   Submitted by:	Dan Mack
> > 
> > Modified:
> >   head/sys/conf/newvers.sh
> > 
> > Modified: head/sys/conf/newvers.sh
> > ==============================================================================
> > --- head/sys/conf/newvers.sh	Sun Aug 11 11:33:48 2013	(r254216)
> > +++ head/sys/conf/newvers.sh	Sun Aug 11 13:57:14 2013	(r254217)
> > @@ -96,7 +96,7 @@ for dir in /usr/bin /usr/local/bin; do
> >  		# Run svnversion from ${dir} on this script; if return code
> >  		# is not zero, the checkout might not be compatible with the
> >  		# svnversion being used.
> > -		${dir}/svnversion $(basename ${0}) >/dev/null 2>&1
> > +		${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1
> >  		if [ $? -eq 0 ]; then
> >  			svnversion=${dir}/svnversion
> >  			break
> > @@ -105,7 +105,7 @@ for dir in /usr/bin /usr/local/bin; do
> >  done
> >  
> >  if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then
> > -	/usr/bin/svnliteversion $(basename ${0}) >/dev/null 2>&1
> > +	/usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1
> >  	if [ $? -eq 0 ]; then
> >  		svnversion=/usr/bin/svnliteversion
> >  	else
> 
> This is still not working for me.  I don't see how it could be working
> properly for anyone.
> 
> The newvers.sh isn't run from the make rules, it's sourced into the
> rules.  In that context, ${0} appears to resolve to simply "sh" or
> "/bin/sh" (depending on host OS version) not the name of the script that
> was sourced.  Here's a minimal example:
> 
>         root at wand:/tmp # cat /tmp/foo
>         #!/bin/sh -
>         echo ${0}
>         
>         root at wand:/tmp # cat /tmp/Makefile 
>         all:
>                 @echo "Sourcing /tmp/foo..."; \
>                 . /tmp/foo
>         
>         root at wand:/tmp # make
>         Sourcing /tmp/foo...
>         /bin/sh
> 
> There are other references to $0 within newvers.sh, and if you add a
> 'set -x' to the beginning of the script you can see that they all
> resolve to /bin/sh, which seems to imply that there's some stuff that's
> working by accident in that script when it's sourced in.
> 

I tested this with a 'buildkernel', not running the script directly.  In
my tests, I did add 'set -x' so I could verify the right thing was being
done, which in my case, it was.

Can you 'set -x' in the script, and provide the output of 'make -s
builkdkernel' ?

Glen

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20130813/a8ee33a5/attachment.sig>


More information about the svn-src-all mailing list