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?).