From owner-svn-src-all@FreeBSD.ORG Mon Oct 8 17:50:40 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 636C6106566C; Mon, 8 Oct 2012 17:50:40 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id 1A0E88FC14; Mon, 8 Oct 2012 17:50:39 +0000 (UTC) Received: from sa-nc-cs-116.static.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.5/8.14.5) with ESMTP id q98HocJJ083517 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 8 Oct 2012 10:50:39 -0700 (PDT) (envelope-from marcel@xcllnt.net) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) From: Marcel Moolenaar In-Reply-To: <20121008165228.F7997@besplex.bde.org> Date: Mon, 8 Oct 2012 10:50:33 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <965E2363-6866-4A10-A7B1-C428B3C78925@xcllnt.net> References: <201210062001.q96K16Or030755@svn.freebsd.org> <20121007161440.C7605@besplex.bde.org> <81CB9A3A-4BFF-41B2-A1F9-3721A40F6260@xcllnt.net> <20121008165228.F7997@besplex.bde.org> To: Bruce Evans X-Mailer: Apple Mail (2.1499) Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Simon Gerraty Subject: Re: svn commit: r241298 - in head: . gnu/usr.bin/cc/cc_int gnu/usr.bin/cc/include kerberos5 kerberos5/tools/asn1_compile kerberos5/tools/slc lib/clang/include share/mk tools/build/make_check usr.sbin/c... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Oct 2012 17:50:40 -0000 On Oct 8, 2012, at 1:08 AM, Bruce Evans wrote: > On Sun, 7 Oct 2012, Marcel Moolenaar wrote: >=20 >> On Oct 6, 2012, at 10:31 PM, Bruce Evans = wrote: >>=20 >>> On Sat, 6 Oct 2012, Marcel Moolenaar wrote: >>>=20 >>>> Log: >>>> Add support for bmake. This includes: >>>> .... >>>> Modified: head/share/mk/bsd.dep.mk >>>> = =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/share/mk/bsd.dep.mk Sat Oct 6 19:57:27 2012 = (r241297) >>>> +++ head/share/mk/bsd.dep.mk Sat Oct 6 20:01:05 2012 = (r241298) >>>> @@ -102,8 +102,8 @@ ${_YC} y.tab.h: ${_YSRC} >>>> CLEANFILES+=3D y.tab.c y.tab.h >>>> .elif !empty(YFLAGS:M-d) >>>> .for _YH in ${_YC:R}.h >>>> -.ORDER: ${_YC} ${_YH} >>>> -${_YC} ${_YH}: ${_YSRC} >>>> +${_YH}: ${_YC} >>>> +${_YC}: ${_YSRC} >>>> ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC} >>>> SRCS+=3D ${_YH} >>>> CLEANFILES+=3D ${_YH} >>>=20 >>> This is broken. Yacc headers don't depend on generated yacc .c = files. >>> Now there is only a null rule to create the headers. One broken = case >>> is when the header somehow gets deleted. It bcomes out of date, but >>> running make to update it only runs the null rule, so it remains >>> nonexistent. >>=20 >> The problem with the old rule is that it's broken as well. The >> change attempts to fix a real parallel build problem. Your >> comment is valid though. What about the following (possibly >> white-space corrupted) patch from Simon: >=20 > What's wrong with the old rule? It uses the .ORDER directive to force > creation of the 2 generated files in sequential order, so that = parallel > builds can't happen. Since the source file is re-created when the header is created, any parallel work done with the C file is a problem. At HP, where we used clearcase & clearmake, we had to create an intermediate tarfile, the result of the yacc(1) rule and then have the .h and .c file depend on the tarfile. Each got unique created by extracting only ${.TARGET}. Roughly and loosely speaking: .tar: .y yacc and create tar file .c: .tar tar x y.tab.c .h: .tar tar x y.tab.h I think something like this is the only way to get something that's 100% correct. --=20 Marcel Moolenaar marcel@xcllnt.net