Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Sep 2013 19:35:07 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r255775 - head/include
Message-ID:  <6B2E36C3-C398-4B25-8DFC-93516B6E33CE@kientzle.com>
In-Reply-To: <1379947117.1197.137.camel@revolution.hippie.lan>
References:  <201309212236.r8LMa7mB019988@svn.freebsd.org> <46908E9F-A9B3-4ADF-A5A4-C77F5A479E65@kientzle.com> <1379947117.1197.137.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
Ian,

Sorry for being a little slow to respond.

It took me a while, but I have verified that a recent checkout, in my =
environment:

 * Does build with this patch.
 * Does not build without it.

Please commit.

Thanks,

Tim


On Sep 23, 2013, at 7:38 AM, Ian Lepore <ian@freebsd.org> wrote:

> Yeah, I think the moral of this neverending story is that relying on =
$0
> for pathnames is a Bad Idea.  Apparently in addition to the patch from
> PR 160646, we still need something like the patch I proposed in PR
> 174422.  I'll attach an updated version of that.  I've got a test =
build
> running now, I'll see about getting it commited if it fixes the =
problem
> you're seeing.
>=20
> -- Ian
>=20
> On Mon, 2013-09-23 at 06:49 -0700, Tim Kientzle wrote:
>> This breaks the build in the peculiar case where you have
>> a git checkout of some other project, then a FreeBSD SVN
>> checkout inside of that:
>>=20
>>  Project/.git
>>  Project/src/  -- FreeBSD source tree.
>>=20
>> For some reason newvers.sh is now looking one level too far
>> up, so it's seeing the dir containing the source tree instead of the
>> root of the source tree.
>>=20
>> This may be related to the use of '.' to run newvers.sh
>> combined with newvers.sh using $(basename $0) to determine
>> the script dir, but I haven't dug through in detail yet.
>>=20
>> Tim
>>=20
>>=20
>>=20
>> On Sep 21, 2013, at 3:36 PM, Ian Lepore <ian@freebsd.org> wrote:
>>=20
>>> Author: ian
>>> Date: Sat Sep 21 22:36:07 2013
>>> New Revision: 255775
>>> URL: http://svnweb.freebsd.org/changeset/base/255775
>>>=20
>>> Log:
>>> Create a separate script to generate osreldate.h rather than =
sourcing
>>> newvers.sh into a temporary subshell with inline make rules.
>>>=20
>>> Using a separate script fixes a variety of problems, including =
establishing
>>> the correct dependencies in the makefiles.  It also eliminates a =
problem
>>> with the way newvers.sh uses `realpath $0`, because $0 expands =
differently
>>> within a script sourced into a rule in a makefile depending on the =
version
>>> of make and of /bin/sh being used.  The latter can cause build =
breakage in a
>>> cross-build environment, and can also make it difficult to compile =
10.0 on
>>> older pre-10.0 systems.
>>>=20
>>> PR:		160646 174422
>>> Submitted by:	Garrett Cooper <yaneurabeya@gmail.com>
>>> Approved by:	re (gjb)
>>> MFC after:	2 weeks
>>>=20
>>> Added:
>>> head/include/mk-osreldate.sh   (contents, props changed)
>>> Modified:
>>> head/include/Makefile
>>>=20
>>> Modified: head/include/Makefile
>>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>>> --- head/include/Makefile	Sat Sep 21 22:24:10 2013	=
(r255774)
>>> +++ head/include/Makefile	Sat Sep 21 22:36:07 2013	=
(r255775)
>>> @@ -104,19 +104,16 @@ SHARED?=3D	copies
>>>=20
>>> INCS+=3D	osreldate.h
>>>=20
>>> -osreldate.h: ${.CURDIR}/../sys/conf/newvers.sh =
${.CURDIR}/../sys/sys/param.h \
>>> -    ${.CURDIR}/Makefile
>>> -	@${ECHO} creating osreldate.h from newvers.sh
>>> -	@MAKE=3D${MAKE}; \
>>> -	PARAMFILE=3D${.CURDIR}/../sys/sys/param.h; \
>>> -	. ${.CURDIR}/../sys/conf/newvers.sh; \
>>> -	echo "$$COPYRIGHT" > osreldate.h; \
>>> -	echo "#ifdef _KERNEL" >> osreldate.h; \
>>> -	echo "#error \"<osreldate.h> cannot be used in the kernel, use =
<sys/param.h>\"" >> osreldate.h; \
>>> -	echo "#else" >> osreldate.h; \
>>> -	echo "#undef __FreeBSD_version" >> osreldate.h; \
>>> -	echo "#define __FreeBSD_version $$RELDATE" >> osreldate.h; \
>>> -	echo "#endif" >> osreldate.h
>>> +NEWVERS_SH=3D		${.CURDIR}/../sys/conf/newvers.sh
>>> +PARAM_H=3D		${.CURDIR}/../sys/sys/param.h
>>> +MK_OSRELDATE_SH=3D	${.CURDIR}/mk-osreldate.sh
>>> +
>>> +osreldate.h vers.c: ${NEWVERS_SH} ${PARAM_H} ${MK_OSRELDATE_SH}
>>> +	env ECHO=3D"${ECHO}" \
>>> +	    MAKE=3D"${MAKE}" \
>>> +	    NEWVERS_SH=3D${NEWVERS_SH} \
>>> +	    PARAM_H=3D${PARAM_H} \
>>> +	    ${MK_OSRELDATE_SH}
>>>=20
>>> .for i in ${LHDRS}
>>> INCSLINKS+=3D	sys/$i ${INCLUDEDIR}/$i
>>>=20
>>> Added: head/include/mk-osreldate.sh
>>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>>> --- /dev/null	00:00:00 1970	(empty, because file is newly =
added)
>>> +++ head/include/mk-osreldate.sh	Sat Sep 21 22:36:07 2013	=
(r255775)
>>> @@ -0,0 +1,49 @@
>>> +#!/bin/sh -
>>> +# Copyright (c) 2013 Garrett Cooper
>>> +# All rights reserved.
>>> +#
>>> +# Redistribution and use in source and binary forms, with or =
without
>>> +# modification, are permitted provided that the following =
conditions
>>> +# are met:
>>> +# 1. Redistributions of source code must retain the above copyright
>>> +#    notice, this list of conditions and the following disclaimer.
>>> +# 2. Redistributions in binary form must reproduce the above =
copyright
>>> +#    notice, this list of conditions and the following disclaimer =
in the
>>> +#    documentation and/or other materials provided with the =
distribution.
>>> +#
>>> +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS =
IS'' AND
>>> +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, =
THE
>>> +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A =
PARTICULAR PURPOSE
>>> +# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE =
LIABLE
>>> +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR =
CONSEQUENTIAL
>>> +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE =
GOODS
>>> +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS =
INTERRUPTION)
>>> +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN =
CONTRACT, STRICT
>>> +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN =
ANY WAY
>>> +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE =
POSSIBILITY OF
>>> +# SUCH DAMAGE.
>>> +#
>>> +# $FreeBSD$
>>> +
>>> +set -e
>>> +
>>> +CURDIR=3D$(pwd)
>>> +ECHO=3D${ECHO:=3Decho}
>>> +
>>> +tmpfile=3D$(mktemp osreldate.XXXXXXXX)
>>> +trap "rm -f $tmpfile" EXIT
>>> +
>>> +${ECHO} creating osreldate.h from newvers.sh
>>> +
>>> +export PARAMFILE=3D"${PARAM_H:=3D$CURDIR/../sys/sys/param.h}"
>>> +. "${NEWVERS_SH:=3D$CURDIR/../sys/conf/newvers.sh}"
>>> +cat > $tmpfile <<EOF
>>> +$COPYRIGHT
>>> +#ifdef _KERNEL
>>> +#error "<osreldate.h> cannot be used in the kernel, use =
<sys/param.h>"
>>> +#else
>>> +#undef __FreeBSD_version
>>> +#define __FreeBSD_version $RELDATE
>>> +#endif
>>> +EOF
>>> +mv $tmpfile osreldate.h
>>=20
>=20
> Index: include/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- include/Makefile	(revision 255808)
> +++ include/Makefile	(working copy)
> @@ -104,8 +104,9 @@ SHARED?=3D	copies
>=20
> INCS+=3D	osreldate.h
>=20
> -NEWVERS_SH=3D		${.CURDIR}/../sys/conf/newvers.sh
> -PARAM_H=3D		${.CURDIR}/../sys/sys/param.h
> +SYSDIR=3D			${.CURDIR}/../sys
> +NEWVERS_SH=3D		${SYSDIR}/conf/newvers.sh
> +PARAM_H=3D		${SYSDIR}/sys/param.h
> MK_OSRELDATE_SH=3D	${.CURDIR}/mk-osreldate.sh
>=20
> osreldate.h vers.c: ${NEWVERS_SH} ${PARAM_H} ${MK_OSRELDATE_SH}
> @@ -113,6 +114,7 @@ osreldate.h vers.c: ${NEWVERS_SH} ${PARAM_H} ${MK_
> 	    MAKE=3D"${MAKE}" \
> 	    NEWVERS_SH=3D${NEWVERS_SH} \
> 	    PARAM_H=3D${PARAM_H} \
> +	    SYSDIR=3D${SYSDIR} \
> 	    sh ${MK_OSRELDATE_SH}
>=20
> .for i in ${LHDRS}
> Index: sys/conf/newvers.sh
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- sys/conf/newvers.sh	(revision 255808)
> +++ sys/conf/newvers.sh	(working copy)
> @@ -38,8 +38,11 @@ if [ "X${BRANCH_OVERRIDE}" !=3D "X" ]; then
> fi
> RELEASE=3D"${REVISION}-${BRANCH}"
> VERSION=3D"${TYPE} ${RELEASE}"
> -SYSDIR=3D$(dirname $0)/..
>=20
> +if [ "X${SYSDIR}" =3D "X" ]; then
> +    SYSDIR=3D$(dirname $0)/..
> +fi
> +
> if [ "X${PARAMFILE}" !=3D "X" ]; then
> 	RELDATE=3D$(awk '/__FreeBSD_version.*propagated to newvers/ =
{print $3}' \
> 		${PARAMFILE})




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6B2E36C3-C398-4B25-8DFC-93516B6E33CE>