[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?



-----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

  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:            
 "Please remain calm...I may be mad, but I am a professional." --Mad

reply via email to

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