X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_builddeb;h=77da898fc02d1c2114723247e57cb6560e1d1206;hb=5006fe3e430184babe721aa87cb41749f8be9648;hp=3477f25765d2693107ab74d87bf4b9a79bf04e6e;hpb=2bdc9c148086492202c995d12becbc76abb3d569;p=debhelper.git diff --git a/dh_builddeb b/dh_builddeb index 3477f25..77da898 100755 --- a/dh_builddeb +++ b/dh_builddeb @@ -2,7 +2,7 @@ =head1 NAME -dh_builddeb - build debian binary packages +dh_builddeb - build Debian binary packages =cut @@ -15,7 +15,7 @@ B [S>] [B<--destdir=>I] [B<--filena =head1 DESCRIPTION -dh_builddeb simply calls L to build a debian package or +B simply calls L to build a Debian package or packages. =head1 OPTIONS @@ -24,8 +24,8 @@ packages. =item B<--destdir=>I -Use this if you want the generated .deb files to be put in a directory -other than the default of ".." +Use this if you want the generated F<.deb> files to be put in a directory +other than the default of "F<..>". =item B<--filename=>I @@ -63,7 +63,32 @@ else { $dh{FILENAME}="/$dh{FILENAME}"; } +my $max_procs=get_buildoption("parallel") || 1; + +my $processes=1; +my $exit=0; +sub reap { + if (wait == -1) { + $processes=0; + } + else { + $processes--; + $exit=1 if $? != 0; + } +} + foreach my $package (@{$dh{DOPACKAGES}}) { + my $pid=fork(); + if (! defined $pid) { + error("fork failed! $!"); + } + if ($pid) { # parent + $processes++; + reap while $processes > $max_procs; + next; + } + + # child my $tmp=tmpdir($package); if (exists $ENV{DH_ALWAYS_EXCLUDE} && length $ENV{DH_ALWAYS_EXCLUDE}) { if (! compat(5)) { @@ -86,8 +111,12 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } doit("dpkg-deb", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename); } + exit 0; } +reap while $processes; +exit $exit; + =head1 SEE ALSO L