From owner-freebsd-stable Mon Dec 15 02:24:36 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id CAA15388 for stable-outgoing; Mon, 15 Dec 1997 02:24:36 -0800 (PST) (envelope-from owner-freebsd-stable) Received: from baloon.mimi.com (sjx-ca124-48.ix.netcom.com [207.223.162.176]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id CAA15383; Mon, 15 Dec 1997 02:24:27 -0800 (PST) (envelope-from asami@sunrise.cs.berkeley.edu) Received: (from asami@localhost) by baloon.mimi.com (8.8.8/8.8.8) id CAA14443; Mon, 15 Dec 1997 02:24:04 -0800 (PST) (envelope-from asami) Date: Mon, 15 Dec 1997 02:24:04 -0800 (PST) Message-Id: <199712151024.CAA14443@baloon.mimi.com> To: bde@zeta.org.au CC: jkh@FreeBSD.ORG, nnd@nnd.itfs.nsk.su, stable@FreeBSD.ORG In-reply-to: <199712140945.UAA11602@godzilla.zeta.org.au> (message from Bruce Evans on Sun, 14 Dec 1997 20:45:05 +1100) Subject: Re: make buildworld -j2 problems From: asami@cs.berkeley.edu (Satoshi Asami) Sender: owner-freebsd-stable@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk * .ORDER is needed to prevent `make' from executing two copies of the rule * concurrently. Oh, I see. * Removing the `scanner.o: tokdefs.h' line in rev.1.13 was a mistake. * scanner.o really does depend on tokdefs.h, and the dependency is not * otherwise given in the Makefile. It worked in the non-parallel case * because grammar.c is before scanner.c in ${SRCS}. It works for `make * depend' because tokdefs.h is in ${SRCS} (and also because grammar.c is * in ${SRCS} and building grammar.c builds tokdefs.h; perhaps tokdefs.h * doesn't need to be in ${SRCS} because of this). Of course, it works for * `make' after `make depend', but `make depend' should not be necessary * in clean obj directories. Umm. Well it's not me that made that change. So what do you propose, revert it back? * See sh/Makefile for more instructive examples. There, created files * like tokdefs.h are included in more than one .c file. This makes it * more likely for parallel makes to fail unless lots of dependencies * are listed explicitly. Eek. That's one hairy beast. I'll see if I can digest that one.... * I think it was also mistake to override the default rule for creating * grammar.c from grammar.y. The default rule creates y.tab.h as a side * effect, and I don't see any additional problems for creating tokdefs.h by * mv'ing y.tab.h as in the old rule. Then .ORDER would not be required. * There might be problems with concurrent yaccs clobbering each other's * y.tab.[ch], but only one yacc is necessary here (since there is only * one yacc source file), and multiple ones would have to be handled more * carefully anyway (e.g., using .ORDER or yacc -b or yacc -o). Um, so should be back it out? Satoshi