[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#740397: busybox: please add support for parallel building



01.03.2014 06:17, Cyril Brulebois wrote:
> Package: busybox
> Version: 1:1.20.0-7
> Severity: normal
> Tags: patch
> 
> Hi,
> 
> the title and the attached patch say it all.

Oh well.

This come several times in the past for various packages, and it always
ends up in some strange place.

I always build my packages in parallel mode locally and ofcourse
ensure they build fine that way.  Because, well, I dislike waiting
for too long when my machine have many cores doing nothing.

The way I alway do this is by passing -jX flag to dpkg-buildpackage,
sbuild, or just ./d/rules -jX, and so on.  This ends up being a flag
for the top-level make (which calls d/rules) so the job server becomes
global. It is the easiest and most strightforward way.

Now, when adding support for DEB_BUILD_OPTIONS's parallel=X suboption,
I always end up in either my packages building in just one thread
(because I still haven't figured how to pass environment variables to
sbuild for example), or I have to use a non-easy, much more verbose
way to run dpkg-buildpackage (setting DEB_BUILD_OPTIONS= instead of
just passing -j).  Because DEB_BUILD_OPTIONS handling, at the end,
overrides -j somehow.

The way how you proposed to fix your initial proposal -- add
"else\nNUMJOBS = 1" -- makes this obvious, -- no matter what -jX
is passed to the top-level, the build will be done according to
DEB_BUILD_OPTS (whenever it is set or unset).

I asked about this several times on #irc but got no good answer.
And after some tries I ended up in what we have now, -- I just ignore
DEB_BUILD_OPTIONS, because I try to build the package much more
often than it is built on buildds, and I want the process to be
easiest for me not for machines, and I value my own time much more
than CPU time of debian buildd network (even of the slowest machines
in there).

When you look at debhelper in this context, things becomes even more
interesting.  I wasn't able to make it work with -j _and_ with its
--parallel flag.

Also, when you set -j just for submakes, quite often make complains
about various issues with the job server.  When -j is set for the
top-level d/rules, this doesn't happen (unless there's a bug in the
submake invocation or in upstream build system).

> (On a slightly, but not totally unrelated note: supporting nocheck as
> well would be nice.)

Yeah, nocheck is something I wanted to implement but forgot.
Will do.

> Reference:
>   https://www.debian.org/doc/debian-policy/ch-source.html

Yes, I know parallel= in there.  And I tried numerous times to obey the
rules and to make it work. Every time had issues and finally gave up.

Thanks,

/mjt


Reply to: