Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Dec 1997 02:24:04 -0800 (PST)
From:      asami@cs.berkeley.edu (Satoshi Asami)
To:        bde@zeta.org.au
Cc:        jkh@FreeBSD.ORG, nnd@nnd.itfs.nsk.su, stable@FreeBSD.ORG
Subject:   Re: make buildworld -j2 problems
Message-ID:  <199712151024.CAA14443@baloon.mimi.com>
In-Reply-To: <199712140945.UAA11602@godzilla.zeta.org.au> (message from Bruce Evans on Sun, 14 Dec 1997 20:45:05 %2B1100)

next in thread | previous in thread | raw e-mail | index | archive | help
 * .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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712151024.CAA14443>