#!/usr/bin/perl -w =head1 NAME dh_builddeb - build Debian binary packages =cut use strict; use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS B [S>] [B<--destdir=>I] [B<--filename=>I] [S I>] =head1 DESCRIPTION B simply calls L 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 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 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 Pass I to L when it is used to build the package. =item B<-u>I This is another way to pass I to L. 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}) { $dh{DESTDIR}='..'; } if (! defined $dh{FILENAME}) { $dh{FILENAME}=''; } 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)) { 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", "-z1", "-Zxz", "-Sextreme", @{$dh{U_PARAMS}}, "--build", $tmp, $dh{DESTDIR}.$filename); } exit 0; } reap while $processes; exit $exit; =head1 SEE ALSO L This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut