=head1 NAME
-dh_builddeb - build debian binary packages
+dh_builddeb - build Debian binary packages
=cut
=head1 DESCRIPTION
-dh_builddeb simply calls L<dpkg-deb(8)> to build a debian package or
+B<dh_builddeb> simply calls L<dpkg-deb(1)> to build a Debian package or
packages.
=head1 OPTIONS
=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>
Use this if you want to force the generated .deb file to have a particular
file name. Does not work well if more than one .deb is generated!
-=item B<-u>I<params>
-
=item B<--> I<params>
Pass I<params> to L<dpkg-deb(1)> when it is used to build the
package.
+=item B<-u>I<params>
+
+This is another way to pass I<params> to L<dpkg-deb(1)>.
+It is deprecated; use B<--> instead.
+
=back
=cut
-init();
+init(options => {
+ "filename=s" => \$dh{FILENAME},
+ "destdir=s" => \$dh{DESTDIR},
+});
# Set the default destination directory.
if (! defined $dh{DESTDIR}) {
$dh{FILENAME}="/$dh{FILENAME}";
}
+my $max_procs=1;
+if (defined $ENV{DEB_BUILD_OPTIONS} && $ENV{DEB_BUILD_OPTIONS}=~/parallel=(\d+)/) {
+ $max_procs=$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)) {
complex_doit("find $tmp $dh{EXCLUDE_FIND} | xargs rm -rf");
}
else {
- # Old broken code here for compatability. Does not
+ # Old broken code here for compatibility. Does not
# remove everything.
complex_doit("find $tmp -name $_ | xargs rm -rf")
foreach split(":", $ENV{DH_ALWAYS_EXCLUDE});
}
doit("dpkg-deb", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename);
}
+ exit 0;
}
+reap while $processes;
+exit $exit;
+
=head1 SEE ALSO
L<debhelper(7)>