From nobody@FreeBSD.org  Sat Sep 10 23:45:42 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AEB511065673
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 10 Sep 2011 23:45:42 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 941E18FC0C
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 10 Sep 2011 23:45:42 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p8ANjgH5045401
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 10 Sep 2011 23:45:42 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p8ANjgsY045400;
	Sat, 10 Sep 2011 23:45:42 GMT
	(envelope-from nobody)
Message-Id: <201109102345.p8ANjgsY045400@red.freebsd.org>
Date: Sat, 10 Sep 2011 23:45:42 GMT
From: Garrett Cooper <yaneurabeya@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] rework build of osreldate.h to not depend on include/Makefile
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         160646
>Category:       misc
>Synopsis:       [build] [patch] rework build of osreldate.h to not depend on include/Makefile
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Sep 10 23:50:06 UTC 2011
>Closed-Date:    Mon Nov 11 01:16:04 UTC 2013
>Last-Modified:  Mon Nov 11 01:16:04 UTC 2013
>Originator:     Garrett Cooper
>Release:        9.0-BETA2
>Organization:
iXsystems, Inc.
>Environment:
FreeBSD bayonetta.local 9.0-BETA2 FreeBSD 9.0-BETA2 #0 r225457M: Fri Sep  9 00:19:17 PDT 2011     gcooper@bayonetta.local:/usr/obj/usr/src/sys/BAYONETTA  amd64
>Description:
osreldate.h depends on include/Makefile as the recipe for generating
osreldate.h is included in include/Makefile. This makes sense if the
blurb of text changes in the Makefile, but not if a developer makes
another modification to the Makefile (say, add a header). This will
break make installworld if someone modifies include/Makefile after the
fact; the freenas build, which uses nanobsd currently does this as a
hammer solution with the src and ports patches that are in the tree as
it uses csup for pulling sources (it could be improved, but regardless..).

The attached patch adds a script which takes care of generating the
osreldate.h header in an atomic manner (the current include/Makefile
snippet could build a bad osreldate.h header file if one of the echo
calls fails).

An example of one of these failures can be found here:

- http://lists.freebsd.org/pipermail/freebsd-questions/2007-August/154719.html
>How-To-Repeat:
make buildworld
touch -am include/Makefile
make installworld
>Fix:
1. Apply patch.
2. Make osreldate.h:
    - cd include; make osreldate.h
3. Verify that the above reproduction cases no longer trigger the failure.

If you apply this patch to your sourcebase each time like the freenas
build system, you will need to touch mk-osreldate.sh like so to avoid
retriggering the problem discussed above:

touch -am -t 200001010000 include/mk-osreldate.sh

This is only temporary though, because once the change is rolled into
FreeBSD this hack is no longer required.

Patch attached with submission follows:

Index: include/Makefile
===================================================================
--- include/Makefile	(revision 225457)
+++ include/Makefile	(working copy)
@@ -95,20 +95,17 @@
 
 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: ${NEWVERS_SH} ${PARAM_H} ${MK_OSRELDATE_SH}
+	env ECHO="${ECHO}" \
+	    MAKE="${MAKE}" \
+	    NEWVERS_SH=${NEWVERS_SH} \
+	    PARAM_H=${PARAM_H} \
+	    ${SHELL} ${MK_OSRELDATE_SH}
+
 .for i in ${LHDRS}
 INCSLINKS+=	sys/$i ${INCLUDEDIR}/$i
 .endfor
Index: include/mk-osreldate.sh
===================================================================
--- include/mk-osreldate.sh	(revision 0)
+++ include/mk-osreldate.sh	(revision 0)
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+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

Property changes on: include/mk-osreldate.sh
___________________________________________________________________
Added: svn:executable
   + *



>Release-Note:
>Audit-Trail:

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@FreeBSD.org, gcooper@ixsystems.com
Cc:  
Subject: Re: misc/160646: [build] [patch] rework build of osreldate.h to not
 depend on include/Makefile
Date: Fri, 16 Sep 2011 12:04:30 -0700 (PDT)

  	The attached patch doesn't work with non-bourne shell compatible
 shells. This line:
 
 +          ${SHELL} ${MK_OSRELDATE_SH}
 
  	needs to be changed to:
 
 +          ${MK_OSRELDATE_SH}
 
  	and the script needs to be mode +x. Lesson being that I guess I 
 should use csh more often..
 Thanks!
 -Garrett

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@FreeBSD.org, gcooper@ixsystems.com
Cc:  
Subject: Re: misc/160646: [build] [patch] rework build of osreldate.h to not
 depend on include/Makefile
Date: Wed, 12 Dec 2012 11:21:00 -0800

     The most up-to-date version of this patch can be found at:
 http://sourceforge.net/p/freenas/code/12861/tree/trunk/patches/freebsd-include-mk-osreldate.patch?format=raw
 .
 Cheers,
 -Garrett

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@FreeBSD.org, yaneurabeya@gmail.com
Cc:  
Subject: Re: misc/160646: [build] [patch] rework build of osreldate.h to not
 depend on include/Makefile
Date: Tue, 4 Jun 2013 16:29:54 -0700

 --bcaec5040e0664fc3d04de5c7518
 Content-Type: text/plain; charset=ISO-8859-1
 
     Here's the latest patch from my git repo with an additional fix so
 vers.c and version are properly regenerated in include/ .
 Thanks,
 -Garrett
 
 --bcaec5040e0664fc3d04de5c7518
 Content-Type: application/octet-stream; 
 	name="0001-Improve-osreldate.h-vers.c-version-generation.patch"
 Content-Disposition: attachment; 
 	filename="0001-Improve-osreldate.h-vers.c-version-generation.patch"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_hhjpz0ma0
 
 RnJvbSBjM2U0MWI4N2I1N2Y3OWRkYzMyNjRmOTQ0ZjVkMTY3MGM0ZDA4ZDI2IE1vbiBTZXAgMTcg
 MDA6MDA6MDAgMjAwMQpGcm9tOiBHYXJyZXR0IENvb3BlciA8eWFuZWdvbWlAZ21haWwuY29tPgpE
 YXRlOiBUdWUsIDQgSnVuIDIwMTMgMTY6MDA6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBJbXBy
 b3ZlIG9zcmVsZGF0ZS5oL3ZlcnMuYy92ZXJzaW9uIGdlbmVyYXRpb24KClB1dCBuZXd2ZXJzLnNo
 IGdlbmVyYXRpb24gbG9naWMgaW50byBtay1vc3JlbGRhdGUuc2gKVGhpcyB3aWxsIGFsbG93IHNv
 bWVvbmUgdG8gY2hhbmdlIGluY2x1ZGUvTWFrZWZpbGUgd2l0aG91dApoYXZpbmcgdG8gcmVnZW5l
 cmF0ZSBvc3JlbGRhdGUuaC4gVGhpcyBiaXQgaXMgZm9yIG1pc2MvMTYwNjQ2CgpBbHNvLCBmaXgg
 dGhlIGF3ZXNvbWUgaW1wbGljaXQgZGVwZW5kZW5jeSB3aXRoIHZlcnMuYyBhbmQgdmVyc2lvbgp0
 aGF0IHJlc3VsdGVkIGluIGJvdGggb2YgdGhlIGJlZm9yZW1lbnRpb25lZCBmaWxlcyBub3QgYmVp
 bmcKcmVnZW5lcmF0ZWQgaW4gdGhlIGV2ZW50IHRoYXQgbmV3dmVycy5zaCB3YXMgbW9kaWZpZWQu
 CgpTaWduZWQtb2ZmLWJ5OiBHYXJyZXR0IENvb3BlciA8eWFuZWdvbWlAZ21haWwuY29tPgotLS0K
 IGluY2x1ZGUvTWFrZWZpbGUgICAgICAgIHwgMjMgKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIGlu
 Y2x1ZGUvbWstb3NyZWxkYXRlLnNoIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZp
 bGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
 ZGUgMTAwNzU1IGluY2x1ZGUvbWstb3NyZWxkYXRlLnNoCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9N
 YWtlZmlsZSBiL2luY2x1ZGUvTWFrZWZpbGUKaW5kZXggYjYzYjg2MC4uMmZkM2VhNCAxMDA2NDQK
 LS0tIGEvaW5jbHVkZS9NYWtlZmlsZQorKysgYi9pbmNsdWRlL01ha2VmaWxlCkBAIC05MywxOSAr
 OTMsMTYgQEAgU0hBUkVEPz0JY29waWVzCiAKIElOQ1MrPQlvc3JlbGRhdGUuaAogCi1vc3JlbGRh
 dGUuaDogJHsuQ1VSRElSfS8uLi9zeXMvY29uZi9uZXd2ZXJzLnNoICR7LkNVUkRJUn0vLi4vc3lz
 L3N5cy9wYXJhbS5oIFwKLSAgICAkey5DVVJESVJ9L01ha2VmaWxlCi0JQCR7RUNIT30gY3JlYXRp
 bmcgb3NyZWxkYXRlLmggZnJvbSBuZXd2ZXJzLnNoCi0JQE1BS0U9JHtNQUtFfTsgXAotCVBBUkFN
 RklMRT0key5DVVJESVJ9Ly4uL3N5cy9zeXMvcGFyYW0uaDsgXAotCS4gJHsuQ1VSRElSfS8uLi9z
 eXMvY29uZi9uZXd2ZXJzLnNoOyBcCi0JZWNobyAiJCRDT1BZUklHSFQiID4gb3NyZWxkYXRlLmg7
 IFwKLQllY2hvICIjaWZkZWYgX0tFUk5FTCIgPj4gb3NyZWxkYXRlLmg7IFwKLQllY2hvICIjZXJy
 b3IgXCI8b3NyZWxkYXRlLmg+IGNhbm5vdCBiZSB1c2VkIGluIHRoZSBrZXJuZWwsIHVzZSA8c3lz
 L3BhcmFtLmg+XCIiID4+IG9zcmVsZGF0ZS5oOyBcCi0JZWNobyAiI2Vsc2UiID4+IG9zcmVsZGF0
 ZS5oOyBcCi0JZWNobyAiI3VuZGVmIF9fRnJlZUJTRF92ZXJzaW9uIiA+PiBvc3JlbGRhdGUuaDsg
 XAotCWVjaG8gIiNkZWZpbmUgX19GcmVlQlNEX3ZlcnNpb24gJCRSRUxEQVRFIiA+PiBvc3JlbGRh
 dGUuaDsgXAotCWVjaG8gIiNlbmRpZiIgPj4gb3NyZWxkYXRlLmgKK05FV1ZFUlNfU0g9CQkkey5D
 VVJESVJ9Ly4uL3N5cy9jb25mL25ld3ZlcnMuc2gKK1BBUkFNX0g9CQkkey5DVVJESVJ9Ly4uL3N5
 cy9zeXMvcGFyYW0uaAorTUtfT1NSRUxEQVRFX1NIPQkkey5DVVJESVJ9L21rLW9zcmVsZGF0ZS5z
 aAorCitvc3JlbGRhdGUuaCB2ZXJzaW9uIHZlcnMuYzogJHtORVdWRVJTX1NIfSAke1BBUkFNX0h9
 ICR7TUtfT1NSRUxEQVRFX1NIfQorCWVudiBFQ0hPPSIke0VDSE99IiBcCisJICAgIE1BS0U9IiR7
 TUFLRX0iIFwKKwkgICAgTkVXVkVSU19TSD0ke05FV1ZFUlNfU0h9IFwKKwkgICAgUEFSQU1fSD0k
 e1BBUkFNX0h9IFwKKwkgICAgJHtNS19PU1JFTERBVEVfU0h9CiAKIC5mb3IgaSBpbiAke0xIRFJT
 fQogSU5DU0xJTktTKz0Jc3lzLyRpICR7SU5DTFVERURJUn0vJGkKZGlmZiAtLWdpdCBhL2luY2x1
 ZGUvbWstb3NyZWxkYXRlLnNoIGIvaW5jbHVkZS9tay1vc3JlbGRhdGUuc2gKbmV3IGZpbGUgbW9k
 ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDJmMTAyYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1
 ZGUvbWstb3NyZWxkYXRlLnNoCkBAIC0wLDAgKzEsMjQgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUK
 KworQ1VSRElSPSQocHdkKQorRUNITz0ke0VDSE86PWVjaG99CisKK3RtcGZpbGU9JChta3RlbXAg
 b3NyZWxkYXRlLlhYWFhYWFhYKQordHJhcCAicm0gLWYgJHRtcGZpbGUiIEVYSVQKKworJHtFQ0hP
 fSBjcmVhdGluZyBvc3JlbGRhdGUuaCBmcm9tIG5ld3ZlcnMuc2gKKworZXhwb3J0IFBBUkFNRklM
 RT0iJHtQQVJBTV9IOj0kQ1VSRElSLy4uL3N5cy9zeXMvcGFyYW0uaH0iCisuICIke05FV1ZFUlNf
 U0g6PSRDVVJESVIvLi4vc3lzL2NvbmYvbmV3dmVycy5zaH0iCitjYXQgPiAkdG1wZmlsZSA8PEVP
 RgorJENPUFlSSUdIVAorI2lmZGVmIF9LRVJORUwKKyNlcnJvciAiPG9zcmVsZGF0ZS5oPiBjYW5u
 b3QgYmUgdXNlZCBpbiB0aGUga2VybmVsLCB1c2UgPHN5cy9wYXJhbS5oPiIKKyNlbHNlCisjdW5k
 ZWYgX19GcmVlQlNEX3ZlcnNpb24KKyNkZWZpbmUgX19GcmVlQlNEX3ZlcnNpb24gJFJFTERBVEUK
 KyNlbmRpZgorRU9GCittdiAkdG1wZmlsZSBvc3JlbGRhdGUuaAotLSAKMS44LjIuMwoK
 --bcaec5040e0664fc3d04de5c7518--

From: Ian Lepore <ian@cardinalpeak.com>
To: bug-followup@FreeBSD.org, yaneurabeya@gmail.com
Cc:  
Subject: Re: misc/160646: [build] [patch] rework build of osreldate.h to
 not depend on include/Makefile
Date: Thu, 19 Sep 2013 08:06:42 -0600

 I have tested this patch (survives tinderbox build) and determined that
 it also fixes conf/174422 without needing the patches from that PR.
 
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: misc/160646: commit references a PR
Date: Sat, 21 Sep 2013 22:36:16 +0000 (UTC)

 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 <yaneurabeya@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
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: Ian Lepore <ian@cardinalpeak.com>
To: bug-followup@FreeBSD.org, yaneurabeya@gmail.com
Cc:  
Subject: Re: misc/160646: [build] [patch] rework build of osreldate.h to
 not depend on include/Makefile
Date: Sat, 12 Oct 2013 11:34:48 -0600

 This was fixed in r255775 r255796 r255807 r255929 r255930 r255957; it
 was MFC'd to 9-stable in r256386.  This can now be closed.
 
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: misc/160646: commit references a PR
Date: Sat, 12 Oct 2013 17:31:29 +0000 (UTC)

 Author: ian
 Date: Sat Oct 12 17:31:21 2013
 New Revision: 256386
 URL: http://svnweb.freebsd.org/changeset/base/256386
 
 Log:
   MFC r255775 r255796 r255807 r255930 r255929 r255957:
   
   Create a separate script to generate osreldate.h rather than sourcing
   newvers.sh into a temporary subshell with inline make rules.
   Fixes PR 160646.
   
   Allow the path to the system source directory to be passed in to
   newvers.sh.  Pass it in from include/Makefile.  If it isn't passed in,
   fall back to the old logic of using dirname $0.  Fixes PR 174422.
   
   PR:		160646 174422
 
 Added:
   stable/9/include/mk-osreldate.sh
      - copied, changed from r255775, head/include/mk-osreldate.sh
 Modified:
   stable/9/include/Makefile
   stable/9/sys/conf/newvers.sh
 Directory Properties:
   stable/9/include/   (props changed)
   stable/9/sys/   (props changed)
   stable/9/sys/conf/   (props changed)
 
 Modified: stable/9/include/Makefile
 ==============================================================================
 --- stable/9/include/Makefile	Sat Oct 12 17:27:59 2013	(r256385)
 +++ stable/9/include/Makefile	Sat Oct 12 17:31:21 2013	(r256386)
 @@ -99,19 +99,18 @@ 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
 +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}
 +	env ECHO="${ECHO}" \
 +	    MAKE="${MAKE}" \
 +	    NEWVERS_SH=${NEWVERS_SH} \
 +	    PARAM_H=${PARAM_H} \
 +	    SYSDIR=${SYSDIR} \
 +	    sh ${MK_OSRELDATE_SH}
  
  .for i in ${LHDRS}
  INCSLINKS+=	sys/$i ${INCLUDEDIR}/$i
 
 Copied and modified: stable/9/include/mk-osreldate.sh (from r255775, head/include/mk-osreldate.sh)
 ==============================================================================
 --- head/include/mk-osreldate.sh	Sat Sep 21 22:36:07 2013	(r255775, copy source)
 +++ stable/9/include/mk-osreldate.sh	Sat Oct 12 17:31:21 2013	(r256386)
 @@ -36,7 +36,9 @@ 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}"
 +set +e
 +. "${NEWVERS_SH:=$CURDIR/../sys/conf/newvers.sh}" || exit 1
 +set -e
  cat > $tmpfile <<EOF
  $COPYRIGHT
  #ifdef _KERNEL
 @@ -46,4 +48,5 @@ $COPYRIGHT
  #define __FreeBSD_version $RELDATE
  #endif
  EOF
 +chmod 644 $tmpfile
  mv $tmpfile osreldate.h
 
 Modified: stable/9/sys/conf/newvers.sh
 ==============================================================================
 --- stable/9/sys/conf/newvers.sh	Sat Oct 12 17:27:59 2013	(r256385)
 +++ stable/9/sys/conf/newvers.sh	Sat Oct 12 17:31:21 2013	(r256386)
 @@ -38,7 +38,10 @@ if [ "X${BRANCH_OVERRIDE}" != "X" ]; the
  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}' \
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: linimon 
State-Changed-When: Mon Nov 11 01:15:43 UTC 2013 
State-Changed-Why:  
MFC'd to 9-stable in r256386. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=160646 
>Unformatted:
