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.
-- Ian 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: > > Project/.git > Project/src/ -- FreeBSD source tree. > > 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. > > 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. > > Tim > > > > On Sep 21, 2013, at 3:36 PM, Ian Lepore <i...@freebsd.org> wrote: > > > Author: ian > > Date: Sat Sep 21 22:36:07 2013 > > New Revision: 255775 > > URL: http://svnweb.freebsd.org/changeset/base/255775 > > > > Log: > > Create a separate script to generate osreldate.h rather than sourcing > > newvers.sh into a temporary subshell with inline make rules. > > > > 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. > > > > PR: 160646 174422 > > Submitted by: Garrett Cooper <yaneurab...@gmail.com> > > Approved by: re (gjb) > > MFC after: 2 weeks > > > > Added: > > head/include/mk-osreldate.sh (contents, props changed) > > Modified: > > head/include/Makefile > > > > Modified: head/include/Makefile > > ============================================================================== > > --- 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?= copies > > > > INCS+= osreldate.h > > > > -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; \ > > - 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= ${.CURDIR}/../sys/conf/newvers.sh > > +PARAM_H= ${.CURDIR}/../sys/sys/param.h > > +MK_OSRELDATE_SH= ${.CURDIR}/mk-osreldate.sh > > + > > +osreldate.h vers.c: ${NEWVERS_SH} ${PARAM_H} ${MK_OSRELDATE_SH} > > + env ECHO="${ECHO}" \ > > + MAKE="${MAKE}" \ > > + NEWVERS_SH=${NEWVERS_SH} \ > > + PARAM_H=${PARAM_H} \ > > + ${MK_OSRELDATE_SH} > > > > .for i in ${LHDRS} > > INCSLINKS+= sys/$i ${INCLUDEDIR}/$i > > > > Added: head/include/mk-osreldate.sh > > ============================================================================== > > --- /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=$(pwd) > > +ECHO=${ECHO:=echo} > > + > > +tmpfile=$(mktemp osreldate.XXXXXXXX) > > +trap "rm -f $tmpfile" EXIT > > + > > +${ECHO} creating osreldate.h from newvers.sh > > + > > +export PARAMFILE="${PARAM_H:=$CURDIR/../sys/sys/param.h}" > > +. "${NEWVERS_SH:=$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 >
Index: include/Makefile =================================================================== --- include/Makefile (revision 255808) +++ include/Makefile (working copy) @@ -104,8 +104,9 @@ SHARED?= copies INCS+= osreldate.h -NEWVERS_SH= ${.CURDIR}/../sys/conf/newvers.sh -PARAM_H= ${.CURDIR}/../sys/sys/param.h +SYSDIR= ${.CURDIR}/../sys +NEWVERS_SH= ${SYSDIR}/conf/newvers.sh +PARAM_H= ${SYSDIR}/sys/param.h MK_OSRELDATE_SH= ${.CURDIR}/mk-osreldate.sh 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="${MAKE}" \ NEWVERS_SH=${NEWVERS_SH} \ PARAM_H=${PARAM_H} \ + SYSDIR=${SYSDIR} \ sh ${MK_OSRELDATE_SH} .for i in ${LHDRS} Index: sys/conf/newvers.sh =================================================================== --- sys/conf/newvers.sh (revision 255808) +++ sys/conf/newvers.sh (working copy) @@ -38,8 +38,11 @@ if [ "X${BRANCH_OVERRIDE}" != "X" ]; then fi RELEASE="${REVISION}-${BRANCH}" VERSION="${TYPE} ${RELEASE}" -SYSDIR=$(dirname $0)/.. +if [ "X${SYSDIR}" = "X" ]; then + SYSDIR=$(dirname $0)/.. +fi + if [ "X${PARAMFILE}" != "X" ]; then RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \ ${PARAMFILE})
_______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"