Gentoo Archives: gentoo-dev

From: "Tiziano Müller" <dev-zero@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: [RFC] Create a JOBS variable to replace -jX in MAKEOPTS
Date: Thu, 04 Dec 2008 20:40:56
Message-Id: gh9f81$2jp$1@ger.gmane.org
In Reply to: [gentoo-dev] [RFC] Create a JOBS variable to replace -jX in MAKEOPTS by flameeyes@gmail.com (Diego 'Flameeyes' =?utf-8?Q?Petten=C3=B2?=)
Diego 'Flameeyes' =?utf-8?Q?Petten=C3=B2?= wrote:

> > Since not all the buildsystem we support use make for the actual build, > and they don't necessarily support make-like options (-jX -s and so on), > it would be nice to be able to express a JOBS variable that could be > used for parallel build with any build systems. > > Right now there are ebuilds like openoffice or some scons-based ebuilds > that parse MAKEOPTS and get out of that the number of jobs from the -j > option, but this is a) suboptimal b) error-prone. > > One has to consider people might be using -l for parallel building too, > for which reasons I'd be suggesting doing something like this to make > the change transparent: > > - ebuilds using non-make build systems would use JOBS; > - ebuilds using make builds systems would just use emake as usual; > - Portage takes care, if JOBS is unset, to parse it out of MAKEOPTS; > - if user has set JOBS but not MAKEOPTS this defaults to -j${JOBS}; > - if user has JOBS and MAKEOPTS, MAKEOPTS keeps the same (for -l). > > The result is that you can finally combine -l with parallel build on > OpenOffice and other packages, with a fallback number of maximum jobs > instead of using load-based decisions.
Sounds good for me. What do you do for other build systems which also decide on load-basis how many jobs to run? Parse again? In that case I'd like to see a more abstract definition of "how many jobs to run in parallel" which gets translated to the correct make-options for emake and which is query'able either via a variable or a function (something like JOBS="load=0.7||max=3" maybe?).

Replies

Subject Author
[gentoo-dev] Re: [RFC] Create a JOBS variable to replace -jX in MAKEOPTS flameeyes@gmail.com (Diego 'Flameeyes' =?utf-8?Q?Petten=C3=B2?=)