Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Apr 2001 23:12:24 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Makoto MATSUSHITA <matusita@jp.FreeBSD.org>
Cc:        current@FreeBSD.ORG
Subject:   Re: groff breaks "make -j N buildworld"
Message-ID:  <Pine.BSF.4.21.0104192246200.9772-100000@besplex.bde.org>
In-Reply-To: <20010419171841Z.matusita@jp.FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 19 Apr 2001, Makoto MATSUSHITA wrote:

> ru> I always thought that ``obj'', ``all'' and ``install'' should be
> ru> executed in sequence, not together.  Hey, this even does not work
> ru> for bin/cat:

`obj' must normally be built before everything else.  Otherwise, make(1)
will start by chdir'ing to the wrong object directory...  Some cases
work accidentally.  E.g., `make obj all' works in directories with only
subdirs, since all the object subdirectories will have been created by
the time make(1) recurses into them for the `all' target.

`make all install' might work.  However ...

> IIRC, it is assumed that "make -jX install (where X > 1)" _doesn't_ work.
> I've heard why, but I've forgotten :-)

Right.  One case where it doesn't work is installing /bin/sh with the
default install flags. /bin/sh gets clobbered, so anything that attempts
to use it concurrently doesn't work.  In particular, a concurrent
sub-make may fail.  This problem is avoided for some very important
install targets like ld.so by adding -C to INSTALLFLAGS to give an
atomic installation.  Atomic installation (but not -C) should be the
default.

Since make -jX install doesn't work, `make world' in /usr/src/Makefile
uses `${MAKE} -B installworld' to turn off any previous setting of -j.
If you make installworld directly, then then -B is not enforced, so
you must use it in the command line if you have a setting of -j in the
environment.

... back to `make all install'.  If this works at all, then you can
only use it without -j, since the `install' part of it doesn't work
with -j.  Separate steps are required to pass different flags to
make(1).

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.0104192246200.9772-100000>