=head1 DESCRIPTION
B<dh> runs a sequence of debhelper commands. The supported I<sequence>s
-correspond to the targets of a F<debian/rules> file: B<build>, B<clean>,
+correspond to the targets of a F<debian/rules> file: B<build-arch>,
+B<build-indep>, B<build>, B<clean>, B<install-indep>, B<install-arch>,
B<install>, B<binary-arch>, B<binary-indep>, and B<binary>.
-Commands in the B<binary-indep> sequence are passed the B<-i> option to ensure
-they only work on binary independent packages, and commands in the
-B<binary-arch> sequences are passed the B<-a> option to ensure they only work
-on architecture dependent packages.
+Commands in the B<build-indep>, B<install-indep> and B<binary-indep>
+sequences are passed the B<-i> option to ensure they only work on
+architecture independent packages, and commands in the B<build-arch>,
+B<install-arch> and B<binary-arch> sequences are passed the B<-a>
+option to ensure they only work on architecture dependent packages.
If F<debian/rules> contains a target with a name like B<override_>I<dh_command>,
then when it would normally run I<dh_command>, B<dh> will instead call that
dh_auto_build
dh_auto_test
}],
+$sequences{'build-indep'} = [@{$sequences{build}}];
+$sequences{'build-arch'} = [@{$sequences{build}}];
$sequences{clean} = [qw{
dh_testdir
dh_auto_clean
dh_clean
}];
-$sequences{install} = [@{$sequences{build}}, qw{
+my @i = qw{
dh_testroot
dh_prep
dh_installdirs
dh_link
dh_compress
dh_fixperms
-}];
+};
+$sequences{'install'} = [@{$sequences{build}}, @i];
+$sequences{'install-indep'} = [@{$sequences{'build-indep'}}, @i];
+$sequences{'install-arch'} = [@{$sequences{'build-arch'}}, @i];
+my @ba=qw{
+ dh_strip
+ dh_makeshlibs
+ dh_shlibdeps
+};
my @b=qw{
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
};
-$sequences{'binary-indep'} = [@{$sequences{install}}, @b];
-$sequences{binary} = [@{$sequences{install}}, qw{
- dh_strip
- dh_makeshlibs
- dh_shlibdeps
-}, @b];
-$sequences{'binary-arch'} = [@{$sequences{binary}}];
+$sequences{binary} = [@{$sequences{install}}, @ba, @b];
+$sequences{'binary-indep'} = [@{$sequences{'install-indep'}}, @b];
+$sequences{'binary-arch'} = [@{$sequences{'install-arch'}}, @ba, @b];
# Additional command options
my %command_opts;
# Get the options to pass to commands in the sequence.
# Filter out options intended only for this program.
my @options;
-if ($sequence eq 'binary-arch') {
+if ($sequence eq 'build-arch' ||
+ $sequence eq 'install-arch' ||
+ $sequence eq 'binary-arch') {
push @options, "-a";
# as an optimisation, remove from the list any packages
# that are not arch dependent
my %arch_packages = map { $_ => 1 } getpackages("arch");
@packages = grep { $arch_packages{$_} } @packages;
}
-elsif ($sequence eq 'binary-indep') {
+elsif ($sequence eq 'build-indep' ||
+ $sequence eq 'install-indep' ||
+ $sequence eq 'binary-indep') {
push @options, "-i";
# ditto optimisation for arch indep
my %indep_packages = map { $_ => 1 } getpackages("indep");
# This passes the options through to commands called
# inside the target.
$ENV{DH_INTERNAL_OPTIONS}=join("\x1e", @options);
- # Prevent commands called inside the target from
- # logging.
- $ENV{DH_INHIBIT_LOG}=$command;
+ $ENV{DH_INTERNAL_OVERRIDE}=$command;
$command="debian/rules";
@options="override_".$override_command;
}
else {
print " ", "# Skipping ", $override_command, " - empty override", "\n";
}
-
+
if (! $dh{NO_ACT}) {
if (defined $command) {
my $ret=system($command, @options);
+
if ($ret >> 8 != 0) {
exit $ret >> 8;
}
}
if (defined $override_command) {
- delete $ENV{DH_INTERNAL_OPTIONS};
- delete $ENV{DH_INHIBIT_LOG};
# Update log for overridden command now that it has
# finished successfully.
# (But avoid logging for dh_clean since it removes
if ($override_command ne 'dh_clean') {
my %packages=map { $_ => 1 } @packages;
map { delete $packages{$_} } @exclude;
+ commit_override_log(keys %packages);
write_log($override_command, keys %packages);
}
+
+ delete $ENV{DH_INTERNAL_OPTIONS};
+ delete $ENV{DH_INTERNAL_OVERRIDE};
}
}
}