[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Using GNU Make with LSF
From: |
Nestor Amaya |
Subject: |
RE: Using GNU Make with LSF |
Date: |
Tue, 4 Sep 2001 15:12:46 -0400 |
I suspect the reason is #3... The sub-make processes have in fact been
farmed out to other machines (this is LSF's raison-d'etre). Will this cause
my parallel make to fail in the case where I have at most one make-level?
Cheers,
Nestor
-----Original Message-----
From: Paul D. Smith [mailto:address@hidden
Sent: Tuesday, September 04, 2001 3:09 PM
To: Nestor Amaya
Cc: 'Thomas Chen'; 'address@hidden'
Subject: RE: Using GNU Make with LSF
%% Nestor Amaya <address@hidden> writes:
na> Thank you for your help. It seems to work OK, except for the
na> warning message below that I don't understand:
na> make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent
make rule.
na> I'm guessing this may have something to do with the fact that I am
na> invoking a sub-make (i.e. using $(MAKE)), but the user manual has
na> not given me a any explanation of what the warning above means.
Make sure you're reading the right version of the manual. The GNU make
manual contains descriptions of all the error messages, including this
one.
na> Of course, adding "+" to the parent command does not make the
na> warning go away. Is this something that I should be worried about?
The message means that the child "make" program received information
implying that it was the child of another "make" program, and was to run
in parallel mode using the jobserver feature, but that when it tried to
connect to the jobserver it couldn't do so.
There are (at least?) three reasons why this might be so:
1) The parent make didn't realize that the child process it was
invoking was actually a "make" program. In this case, it won't
allow the child to connect to the jobserver. This is typically
because the command to invoke the child uses "make" or similar
rather than the correct $(MAKE). See the docs on the "+" token to
understand the algorithm GNU make uses to determine if the child is
a sub-make or not.
Adding the "+" to the invocation in the parent will fix this; hence
the message you got.
2) You have changed your SHELL to use csh or tcsh. These shells are
fundamentally broken and cannot coexist with the jobserver. You
will need to use a different SHELL, preferable a Bourne-compatible
one (sh, ksh, bash, zsh).
3) There is something about the LSF implementation of GNU make that
breaks this: note that for the jobserver to work correctly each
sub-make _MUST_ be a direct fork/exec of its parent. Running them
on remote systems, invoking them from servers, etc. will not work.
--
----------------------------------------------------------------------------
---
Paul D. Smith <address@hidden> Find some GNU make tips at:
http://www.gnu.org http://www.paulandlesley.org/gmake/
"Please remain calm...I may be mad, but I am a professional." --Mad
Scientist