Skip site navigation (1)Skip section navigation (2)
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>