=head1 NAME
-dh_builddeb - build debian binary packages
+dh_builddeb - build Debian binary packages
=cut
=head1 DESCRIPTION
-dh_builddeb simply calls L<dpkg-deb(1)> to build a debian package or
+B<dh_builddeb> simply calls L<dpkg-deb(1)> to build a Debian package or
packages.
+It supports building multiple binary packages in parallel, when enabled by
+DEB_BUILD_OPTIONS.
+
=head1 OPTIONS
=over 4
=item B<--destdir=>I<directory>
-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<name>
$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)) {
if (! $filename) {
$filename="/".udeb_filename($package);
}
- doit("dpkg-deb", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename);
+ doit("dpkg-deb", "-z1", "-Zxz", "-Sextreme",
+ @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename);
}
+ exit 0;
}
+reap while $processes;
+exit $exit;
+
=head1 SEE ALSO
L<debhelper(7)>