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