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