Date: Sun, 7 Oct 2012 21:11:38 -0700 From: Marcel Moolenaar <marcel@xcllnt.net> To: Bruce Evans <brde@optusnet.com.au> Cc: "svn-src-head@FreeBSD.org" <svn-src-head@freebsd.org>, "svn-src-all@FreeBSD.org" <svn-src-all@freebsd.org>, "src-committers@FreeBSD.org" <src-committers@freebsd.org>, Simon Gerraty <sjg@juniper.net> 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... Message-ID: <81CB9A3A-4BFF-41B2-A1F9-3721A40F6260@xcllnt.net> In-Reply-To: <20121007161440.C7605@besplex.bde.org> References: <201210062001.q96K16Or030755@svn.freebsd.org> <20121007161440.C7605@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Oct 6, 2012, at 10:31 PM, Bruce Evans <brde@optusnet.com.au> wrote: > 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. 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: Index: 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 --- share/mk/bsd.dep.mk (revision 241871) +++ share/mk/bsd.dep.mk (working copy) @@ -95,16 +95,17 @@ CLEANFILES+=3D ${_LC} SRCS:=3D ${SRCS:S/${_YSRC}/${_YC}/} CLEANFILES+=3D ${_YC} .if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h) -.ORDER: ${_YC} y.tab.h -${_YC} y.tab.h: ${_YSRC} +y.tab.h: ${_YSRC} ${YACC} ${YFLAGS} ${.ALLSRC} +${_YC}: y.tab.h cp y.tab.c ${_YC} CLEANFILES+=3D y.tab.c y.tab.h .elif !empty(YFLAGS:M-d) .for _YH in ${_YC:R}.h -${_YH}: ${_YC} -${_YC}: ${_YSRC} +${_YH}: ${_YSRC} ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC} +${_YC}: ${_YH} + @touch ${.TARGET} SRCS+=3D ${_YH} CLEANFILES+=3D ${_YH} .endfor This makes sure the C file is always more recent than the H file and important to keep make happy in all situations. It doesn't fix the the problem of removing the C file entirely. At least the C file is recreated, but not with the right contents. Thoughts? --=20 Marcel Moolenaar marcel@xcllnt.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?81CB9A3A-4BFF-41B2-A1F9-3721A40F6260>