Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Mar 2009 16:06:52 -0400
From:      Coleman Kane <cokane@FreeBSD.org>
To:        Doug Barton <dougb@FreeBSD.org>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: MAKE_JOBS_SAFE with gmake
Message-ID:  <1237925212.1735.12.camel@localhost>
In-Reply-To: <1237924925.1735.11.camel@localhost>
References:  <49C937F1.4000406@FreeBSD.org> <1237924925.1735.11.camel@localhost>

next in thread | previous in thread | raw e-mail | index | archive | help

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1237925212.1735.12.camel>