]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_builddeb
Updated French man page translation. Closes: #685560
[debhelper.git] / dh_builddeb
index 8c3930fb7c5dd4f7b8c2cac5a3f06b8b21617f75..bf9fc27d39aafdfb2c42545cd5cd213158b42b30 100755 (executable)
@@ -2,7 +2,7 @@
 
 =head1 NAME
 
-dh_builddeb - build debian binary packages
+dh_builddeb - build Debian binary packages
 
 =cut
 
@@ -15,35 +15,44 @@ B<dh_builddeb> [S<I<debhelper options>>] [B<--destdir=>I<directory>] [B<--filena
 
 =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.
 
+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>
 
 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}) {
@@ -57,7 +66,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)) {
@@ -78,10 +112,15 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                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)>