From owner-freebsd-ports@FreeBSD.ORG Tue Mar 24 20:23:39 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 9E8951065686 for ; Tue, 24 Mar 2009 20:23:39 +0000 (UTC) (envelope-from cokane@FreeBSD.org) Received: from mail-out2.fuse.net (mail-out2.fuse.net [216.68.8.171]) by mx1.freebsd.org (Postfix) with ESMTP id 557208FC1E for ; Tue, 24 Mar 2009 20:23:39 +0000 (UTC) (envelope-from cokane@FreeBSD.org) X-CNFS-Analysis: v=1.0 c=1 a=mDV3o1hIAAAA:8 a=hGzw-44bAAAA:8 a=ZvlzeDYpnlu30ELztTYA:9 a=ChIAkBp7JeV-NVLEu9IA:7 a=tXl5r_21OrUtaaFjK-97lA2gnC4A:4 a=LY0hPdMaydYA:10 a=myn2tASWqEaAMRBPo2sA:9 a=Fom4KU9qG0Rm3FfqxcXEuqzdKjAA:4 a=rPt6xJ-oxjAA:10 X-CM-Score: 0 X-Scanned-by: Cloudmark Authority Engine Authentication-Results: gwout2 smtp.mail=cokane@FreeBSD.org; spf=softfail Received-SPF: softfail (gwout2: transitional domain FreeBSD.org does not designate 74.215.227.9 as permitted sender) Received: from [74.215.227.9] ([74.215.227.9:50931] helo=mail.cokane.org) by gwout2 (envelope-from ) (ecelerity 2.2.2.37 r(28805/28810M)) with ESMTP id B3/4E-25989-6BD39C94; Tue, 24 Mar 2009 16:08:22 -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 406B411436; Tue, 24 Mar 2009 17:12:46 -0400 (EDT) From: Coleman Kane To: Doug Barton In-Reply-To: <1237924925.1735.11.camel@localhost> References: <49C937F1.4000406@FreeBSD.org> <1237924925.1735.11.camel@localhost> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-FoZAdu4/ftFJLNMARmpG" Organization: FreeBSD Project Date: Tue, 24 Mar 2009 16:06:52 -0400 Message-Id: <1237925212.1735.12.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:23:41 -0000 --=-FoZAdu4/ftFJLNMARmpG Content-Type: text/plain Content-Transfer-Encoding: quoted-printable 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, > >=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 >=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). >=20 > 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: >=20 > mytarget: deps dep2 ... > $(MAKE) -C $(mytargetdir) mytarget >=20 > 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.... >=20 > 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 >=20 > Which may confuse it. >=20 > 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 >=20 Additionally: http://lists.samba.org/archive/distcc/2004q1/002160.html --=20 Coleman Kane --=-FoZAdu4/ftFJLNMARmpG 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) iEYEABECAAYFAknJPVwACgkQcMSxQcXat5f+LwCeMt6qrvkOtmobisvwJlRpCSIR /mcAmwSeu/1owUtC0nE8+c6kUYy/0iW5 =vNRp -----END PGP SIGNATURE----- --=-FoZAdu4/ftFJLNMARmpG--