From owner-freebsd-ports@FreeBSD.ORG Tue Mar 24 20:19:11 2009 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD1F910658E8 for ; Tue, 24 Mar 2009 20:19:11 +0000 (UTC) (envelope-from cokane@FreeBSD.org) Received: from mail-out1.fuse.net (mail-out1.fuse.net [216.68.8.175]) by mx1.freebsd.org (Postfix) with ESMTP id 8B6148FC1B for ; Tue, 24 Mar 2009 20:19:11 +0000 (UTC) (envelope-from cokane@FreeBSD.org) X-CNFS-Analysis: v=1.0 c=1 a=mDV3o1hIAAAA:8 a=DSe2BEuJ99VB_LZmtUIA:9 a=coz5zfVt9zJfb6oCz40A:7 a=lpJFtk9J4A02IIo9f9tfn6kNCzYA:4 a=LY0hPdMaydYA:10 a=atdUWYONH1SyBSSQlAcA:9 a=-ZOSVo-GStah2LfwdSxaY-JRt9YA:4 a=rPt6xJ-oxjAA:10 X-CM-Score: 0 X-Scanned-by: Cloudmark Authority Engine Authentication-Results: gwout1 smtp.mail=cokane@FreeBSD.org; spf=softfail Received-SPF: softfail (gwout1: transitional domain FreeBSD.org does not designate 74.215.227.9 as permitted sender) Received: from [74.215.227.9] ([74.215.227.9:50689] helo=mail.cokane.org) by gwout1 (envelope-from ) (ecelerity 2.2.2.37 r(28805/28810M)) with ESMTP id 6F/C6-27669-C9C39C94; Tue, 24 Mar 2009 16:03:40 -0400 Received: from [172.20.0.76] (rrcs-96-11-231-210.central.biz.rr.com [96.11.231.210]) by mail.cokane.org (Postfix) with ESMTPSA id AB98E11436; Tue, 24 Mar 2009 17:08:03 -0400 (EDT) From: Coleman Kane To: Doug Barton In-Reply-To: <49C937F1.4000406@FreeBSD.org> References: <49C937F1.4000406@FreeBSD.org> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-V3TP+94fUMQKGBALYFgB" Organization: FreeBSD Project Date: Tue, 24 Mar 2009 16:02:05 -0400 Message-Id: <1237924925.1735.11.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.24.5 FreeBSD GNOME Team Port Cc: freebsd-ports@freebsd.org Subject: Re: MAKE_JOBS_SAFE with gmake X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Mar 2009 20:19:15 -0000 --=-V3TP+94fUMQKGBALYFgB Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2009-03-24 at 12:43 -0700, Doug Barton wrote: > Question, >=20 > I'm testing my ports for MAKE_JOBS_SAFE-ness, and came across this > message when building xscreensaver (which uses gmake): >=20 > gmake[1]: warning: jobserver unavailable: using -j1. Add `+' to > parent make rule. >=20 > I have zero gmake fu, can anyone help me make sense of that? The good > news is that the build finished successfully ... >=20 >=20 > Doug >=20 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 --=20 Coleman Kane --=-V3TP+94fUMQKGBALYFgB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEABECAAYFAknJPDoACgkQcMSxQcXat5eFvwCfYwfkAUvznkOAoeZ+AQMER9yr YtYAnR0kcfZaEGNycxQM0FZ7SeXCz8Hr =UgOp -----END PGP SIGNATURE----- --=-V3TP+94fUMQKGBALYFgB--