Date: Thu, 19 Apr 2001 23:38:49 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: Ruslan Ermilov <ru@FreeBSD.ORG> Cc: Makoto MATSUSHITA <matusita@jp.FreeBSD.org>, current@FreeBSD.ORG, Will Andrews <will@FreeBSD.ORG> Subject: Re: make -jN bug (was: Re: groff breaks "make -j N buildworld") Message-ID: <Pine.BSF.4.21.0104192313050.9928-100000@besplex.bde.org> In-Reply-To: <20010419114853.B84456@sunbay.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 19 Apr 2001, Ruslan Ermilov wrote: > Attached is the Makefile that demonstrates the problem. Run it like this: > > make obj; make all > > Then try: > > make install > > And then try: > > make -j2 install > > Note the difference. This fixes the problem: > > --- Makefile Thu Apr 19 11:33:04 2001 > +++ Makefile Thu Apr 19 11:36:20 2001 > @@ -8,6 +8,7 @@ > beforeinstall: .SILENT > cd ${.CURDIR}; \ > ${INSTALL} ${COPY} -m ${NOBINMODE} Makefile ${DESTDIR}/tmp > + cd ${.OBJDIR} > pwd > ${INSTALL} ${COPY} -m ${NOBINMODE} foo ${DESTDIR}/tmp > > I'm not sure if this a make(1) bug or a feature, as both NetBSD and > OpenBSD behave the same. But I'm pretty sure this is a bug. Will? This is a feature of parallel make. Parallel make combines all of the commands for each target into a single shell command (if possible?). Thus `cd's in one command affect subsequent commands. This feature can be controlled using the undocumented .SINGLESHELL directive. Unfortunately, the implementation of .SINGLESHELL is too primitive for .SINGELSHELL to be worth using. Using it is equivalent to using -B to turn off -j. This has caused problems before. See the log message for rev.1.177 of src/Makefile for a more complicated example. (The problem for `cd's is obvious compared with the one for `&&'s. In the example in log message, the point of the `cd's is to maximise the damage caused by combining non- -j-aware commands. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0104192313050.9928-100000>