Note that in the example above, dh will arrange for "debian/rules build"
to call your build-indep and build-arch targets. You do not need to
-explicitly define the dependencies in the rules file when using dh.
+explicitly define the dependencies in the rules file when using dh with
+compatability level v9. This example would be more complicated with
+earlier compatability levels.
=head1 INTERNALS
}
# make -B causes the rules file to be run as a target.
# Also support completly empty override targets.
-# Note: it's not safe to use rules_explicit_target before this check.
+# Note: it's not safe to use rules_explicit_target before this check,
+# since it causes dh to be run.
+my $dummy_target="debhelper-fail-me";
if ($sequence eq 'debian/rules' ||
- $sequence =~ /^override_dh_/) {
+ $sequence =~ /^override_dh_/ ||
+ $sequence eq $dummy_target) {
exit 0;
}
dh_auto_build
dh_auto_test
};
-$sequences{'build-indep'} = [@bd];
-$sequences{'build-arch'} = [@bd];
-if (rules_explicit_target('build-arch') ||
- rules_explicit_target('build-indep')) {
- # run sequences separately
- $sequences{build} = [@bd_minimal, 'rules:build-arch', 'rules:build-indep'];
-}
-else {
- # run standard sequence (this is faster)
- $sequences{build} = [@bd];
-}
-$sequences{clean} = [qw{
- dh_testdir
- dh_auto_clean
- dh_clean
-}];
my @i_minimal = qw{
dh_testroot
};
dh_compress
dh_fixperms
};
-$sequences{'install-indep'} = ['rules:build-indep', @i];
-$sequences{'install-arch'} = ['rules:build-arch', @i];
-if (rules_explicit_target('install-arch') ||
- rules_explicit_target('install-indep')) {
- # run sequences separately
- $sequences{'install'} = ['rules:build', @i_minimal, 'rules:install-arch', 'rules:install-indep'];
-}
-else {
- # run standard sequence (this is faster)
- $sequences{'install'} = ['rules:build', @i, 'rules:install-arch', 'rules:install-indep'];
-}
my @ba=qw{
dh_strip
dh_makeshlibs
dh_md5sums
dh_builddeb
};
-$sequences{'binary-indep'} = ['rules:install-indep', @b];
-$sequences{'binary-arch'} = ['rules:install-arch', @ba, @b];
-$sequences{binary} = ['rules:install', 'rules:binary-arch', 'rules:binary-indep'];
+$sequences{clean} = [qw{
+ dh_testdir
+ dh_auto_clean
+ dh_clean
+}];
+$sequences{'build-indep'} = [@bd];
+$sequences{'build-arch'} = [@bd];
+if (! compat(8)) {
+ # From v9, sequences take standard rules targets into account.
+ if (rules_explicit_target('build-arch') ||
+ rules_explicit_target('build-indep')) {
+ # run sequences separately
+ $sequences{build} = [@bd_minimal, 'rules:build-arch', 'rules:build-indep'];
+ }
+ else {
+ # run standard sequence (this is faster)
+ $sequences{build} = [@bd];
+ }
+ $sequences{'install-indep'} = ['rules:build-indep', @i];
+ $sequences{'install-arch'} = ['rules:build-arch', @i];
+ if (rules_explicit_target('install-arch') ||
+ rules_explicit_target('install-indep')) {
+ # run sequences separately
+ $sequences{'install'} = ['rules:build', @i_minimal, 'rules:install-arch', 'rules:install-indep'];
+ }
+ else {
+ # run standard sequence (this is faster)
+ $sequences{'install'} = ['rules:build', @i, 'rules:install-arch', 'rules:install-indep'];
+ }
+ $sequences{'binary-indep'} = ['rules:install-indep', @b];
+ $sequences{'binary-arch'} = ['rules:install-arch', @ba, @b];
+ $sequences{binary} = ['rules:install', 'rules:binary-arch', 'rules:binary-indep'];
+}
+else {
+ $sequences{build} = [@bd];
+ $sequences{'install'} = [@{$sequences{build}}, @i];
+ $sequences{'install-indep'} = [@{$sequences{'build-indep'}}, @i];
+ $sequences{'install-arch'} = [@{$sequences{'build-arch'}}, @i];
+ $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;
foreach my $command (@_) {
my $rules_target=rules_target($command);
if (defined $rules_target &&
- ! rules_explicit_target($rules_target)) {
+ ! defined rules_explicit_target($rules_target)) {
# inline the sequence for this implicit target
$add->($_) foreach optimize_sequence(@{$sequences{$rules_target}});
}
my $processing_targets = 0;
my $not_a_target = 0;
my $current_target;
- open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules debhelper-fail-me 2>/dev/null |");
+ open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules $dummy_target 2>/dev/null |");
while (<MAKE>) {
if ($processing_targets) {
if (/^# Not a target:/) {