MAKE_JOBS_SAFE with gmake

Coleman Kane cokane at FreeBSD.org
Tue Mar 24 13:23:41 PDT 2009


On Tue, 2009-03-24 at 16:02 -0400, Coleman Kane wrote:
> On Tue, 2009-03-24 at 12:43 -0700, Doug Barton wrote:
> > Question,
> > 
> > I'm testing my ports for MAKE_JOBS_SAFE-ness, and came across this
> > message when building xscreensaver (which uses gmake):
> > 
> > gmake[1]: warning: jobserver unavailable: using -j1.  Add `+' to
> > parent make rule.
> > 
> > I have zero gmake fu, can anyone help me make sense of that? The good
> > news is that the build finished successfully ...
> > 
> > 
> > Doug
> > 
> 
> I'll give it a stab, as I've dealt with this when trying to write a "one
> makefile to rule them all" build system recently (in other words, I
> maintain a collection of 200+ packages and my makefile attempts to call
> $(MAKE) within those subdirectories).
> 
> The GNU make process for some reason was not able to determine the type
> of your "make" that was used for building a target of the following
> flavor:
> 
> mytarget: deps dep2 ...
> 	$(MAKE) -C $(mytargetdir) mytarget
> 
> Supposedly, GNU make is supposed to recognize that $(MAKE) above is a
> "make program" and not a "normal program" (such as install, BSD make,
> sed, etc....). In the event that it is calling a compatible GNU make
> program, it can (through some means I don't fully understand) provide
> access to its job pool to the "child" (the make process that will be
> executed in the target above). This allows, for instance, you to pass -j
> 4 to the parent make process, and it will guarantee that no more than
> four jobs get run, even if there are subdirs-within-subdirs, etc....
> 
> Something is preventing this detection from succeeding in your case. I
> see this a lot as well (in my own make system), but I've chosen to
> ignore it in my environment. I think, in my case, that I am using
> $(MAKE) within an $(eval ...) block and the $(MAKE) gets expanded before
> the $(eval ...) does, making the GNU make program actually see something
> like this, before it actually builds the target list:
> mytarget: deps dep2 ...
> 	/usr/local/bin/gmake -C $(mytargetdir) mytarget
> 
> Which may confuse it.
> 
> Here's a link to the ambiguous description on the GNU make website:
> http://www.gnu.org/software/automake/manual/make/Error-Messages.html
> 
> 

Additionally:
http://lists.samba.org/archive/distcc/2004q1/002160.html


-- 
Coleman Kane
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20090324/4cd958c3/attachment.pgp


More information about the freebsd-ports mailing list