From owner-svn-src-head@FreeBSD.ORG Mon Sep 23 14:38:41 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id AD8AB916; Mon, 23 Sep 2013 14:38:41 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-02-ewr.mailhop.org (mho-02-ewr.mailhop.org [204.13.248.72]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6D45C2243; Mon, 23 Sep 2013 14:38:41 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-02-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1VO7Hc-0009we-8Z; Mon, 23 Sep 2013 14:38:40 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r8NEcbRf023571; Mon, 23 Sep 2013 08:38:37 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1/CWHv8qsylPo/qO8AUxETc Subject: Re: svn commit: r255775 - head/include From: Ian Lepore To: Tim Kientzle In-Reply-To: <46908E9F-A9B3-4ADF-A5A4-C77F5A479E65@kientzle.com> References: <201309212236.r8LMa7mB019988@svn.freebsd.org> <46908E9F-A9B3-4ADF-A5A4-C77F5A479E65@kientzle.com> Content-Type: multipart/mixed; boundary="=-BcCy0TL32pUsyEGsMP7N" Date: Mon, 23 Sep 2013 08:38:37 -0600 Message-ID: <1379947117.1197.137.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Sep 2013 14:38:41 -0000 --=-BcCy0TL32pUsyEGsMP7N Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 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 > > 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 \" cannot be used in the kernel, use \"" >> 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 < > +$COPYRIGHT > > +#ifdef _KERNEL > > +#error " cannot be used in the kernel, use " > > +#else > > +#undef __FreeBSD_version > > +#define __FreeBSD_version $RELDATE > > +#endif > > +EOF > > +mv $tmpfile osreldate.h > --=-BcCy0TL32pUsyEGsMP7N Content-Disposition: inline; filename="osreldate_sysdir.diff" Content-Type: text/x-patch; name="osreldate_sysdir.diff"; charset="us-ascii" Content-Transfer-Encoding: 7bit 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}) --=-BcCy0TL32pUsyEGsMP7N--