]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_builddeb
Typo. Closes: #653339
[debhelper.git] / dh_builddeb
index 3d3725ac5a9045d0d46b56f866bff6e0d7435e50..77da898fc02d1c2114723247e57cb6560e1d1206 100755 (executable)
@@ -1,9 +1,55 @@
 #!/usr/bin/perl -w
-#
-# Build the .deb package, assuming all the files are set up.
 
+=head1 NAME
+
+dh_builddeb - build Debian binary packages
+
+=cut
+
+use strict;
 use Debian::Debhelper::Dh_Lib;
-init();
+
+=head1 SYNOPSIS
+
+B<dh_builddeb> [S<I<debhelper options>>] [B<--destdir=>I<directory>] [B<--filename=>I<name>] [S<B<--> I<params>>]
+
+=head1 DESCRIPTION
+
+B<dh_builddeb> simply calls L<dpkg-deb(1)> to build a Debian package or
+packages.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--destdir=>I<directory>
+
+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<--> 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(options => {
+       "filename=s" => \$dh{FILENAME},
+       "destdir=s" => \$dh{DESTDIR},
+});
 
 # Set the default destination directory.
 if (! defined $dh{DESTDIR}) {
@@ -17,7 +63,68 @@ else {
        $dh{FILENAME}="/$dh{FILENAME}";
 }
 
-foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
-       $TMP=tmpdir($PACKAGE);
-       doit("dpkg","--build",$TMP,"$dh{DESTDIR}$dh{FILENAME}",@{$dh{U_PARAMS}});
+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)) {
+                       complex_doit("find $tmp $dh{EXCLUDE_FIND} | xargs rm -rf");
+               }
+               else {
+                       # Old broken code here for compatibility. Does not
+                       # remove everything.
+                       complex_doit("find $tmp -name $_ | xargs rm -rf")
+                               foreach split(":", $ENV{DH_ALWAYS_EXCLUDE});
+               }
+       }
+       if (! is_udeb($package)) {
+               doit("dpkg-deb", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$dh{FILENAME});
+       }
+       else {
+               my $filename=$dh{FILENAME};
+               if (! $filename) {
+                       $filename="/".udeb_filename($package);
+               }
+               doit("dpkg-deb", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename);
+       }
+       exit 0;
 }
+
+reap while $processes;
+exit $exit;
+
+=head1 SEE ALSO
+
+L<debhelper(7)>
+
+This program is a part of debhelper.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut