Re: parallel building without make
On 29/01/08 at 17:23 -0300, Felipe Sateler wrote:
> Recently dpkg-buildpackage got the option to build in parallel via the -j
> option. This means that debian/rules is called with that option set, and sets
> parallel=n in DEB_BUILD_OPTIONS.
> The problem is that for build systems not using make (eg, scons), this option is
> not inherited. Of course, one could parse DEB_BUILD_OPTIONS and find if
> parallel=n is set and then call the build system with the equivalent option.
> However this means that, although one specified n threads of execution, there
> can be more than n threads concurrently. Consider this case:
>
> build: build-indep build-arch
> build-arch:
> scons -j$(NTHREADS) buildProgram
> build-indep:
> scons -j$(NTHREADS) buildDocumentation
>
> Where NTHREADS is calculated from DEB_BUILD_OPTIONS. If I call dpkg-buildpackage
> with -j2, I will get build-arch and build-indep running concurrently, which
> means I will actually get 4 scons threads running instead of the intended 2.
>
> What should I do? I see 3 options:
> 1- Don't use the -j flag in scons
> 2- Use the -j flag and potentially use more threads than specified
> 3- Use the -j flag with a lower number (eg, NTHREADS/2).
>
> Any opinions?
Don't use dpkg-buildpackage -j. Only set DEB_BUILD_OPTIONS="parallel=n",
so build-arch and build-indep are not run in parallel, but you still get
several scons threads.
--
| Lucas Nussbaum
| lucas@lucas-nussbaum.net http://www.lucas-nussbaum.net/ |
| jabber: lucas@nussbaum.fr GPG: 1024D/023B3F4F |
Reply to: