bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regression caused by Commit: 5bd7ad2b225b ("Preserve the real value


From: Paul Smith
Subject: Re: Regression caused by Commit: 5bd7ad2b225b ("Preserve the real value of -jN in MAKEFLAGS using jobserver.")
Date: Fri, 03 Nov 2017 09:46:52 -0400

On Fri, 2017-11-03 at 12:27 +1100, NeilBrown wrote:
> Actually...
> A few times when building the linux kernel I've received the message
> 
> make[1]: warning: jobserver unavailable: using -j1.  Add '+' to
> parent make rule.
> 
> This isn't consistent so it is presumably only when some particular
> target needs building. If I make a clean start, I always get the
> message.

This message means that a sub-make is started with jobserver
authentication option available in the environment (so that the parent
make was part of a jobserver group).  However, when make attempted to
access the jobserver pipe, it was discovered to be closed and so the
sub-make couldn't access it.

Unfortunately some programs do NOT like to have extra file descriptors
open when they are started, for whatever reason.  Also if random
programs start reading/writing to the jobserver pipe Badness Happens. 
So make tries to ensure the jobserver pipe is only available to sub-
make commands, and not available to non-sub-make commands.

If the command is a sub-make, then make will not close the jobserver
pipe when invoking that command so that the sub-make can access it.  If
make decides the command is NOT a sub-make, then make WILL close the
jobserver pipe before invoking that command.

If make decides incorrectly and something that it thought was not a
sub-make really is one, then you get the above error.

Make uses the normal decision process for this: any command that
contains the string $(MAKE) or ${MAKE} (before expansion) is considered
a sub-make invocation, or any command that starts with the "+" option.

It's strange that you're just seeing this now, though, and makes me
concerned that I messed up the logic around the jobserver start. 
You're saying you didn't used to get this error before?

It would be good if you could track down the rule which is invoking the
sub-make that gives that error.

Is this the current HEAD Linux kernel or some other version?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]