X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh;h=c34a5a0273e952f359e8b92cf14c19ab7f73c24b;hb=a75d695219f0a4613b647e7088794f6c1286fd54;hp=5ad0ecc9e5ae923b892f7b6d8d2a240ecc44e7f0;hpb=1ddf9d2cca0dac8a5ac417f47d60956bf33e5e7b;p=debhelper.git diff --git a/dh b/dh index 5ad0ecc..c34a5a0 100755 --- a/dh +++ b/dh @@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B sequence [B<--with> I] [B<--until> I] [B<--before> I] [B<--after> I] [B<--remaining>] [S>] +B sequence [B<--with> I[,I,...]] [B<--until> I] [B<--before> I] [B<--after> I] [B<--remaining>] [S>] =head1 DESCRIPTION @@ -45,14 +45,19 @@ you should Build-Depend on debhelper 7.0.50 or above.) =over 4 -=item B<--with> I +=item B<--with> I[,I,...] Add the debhelper commands specified by the given addon to appropriate places in the sequence of commands that is run. This option can be repeated more -than once, and is used when there is a third-party package that provides +than once, or multiple addons can be listed, separated by commas. +This is used when there is a third-party package that provides debhelper commands. See the PROGRAMMING file for documentation about the sequence addon interface. +=item B<--without> I + +The inverse of --with, disables using the given addon. + =item B<--until> I Run commands in the sequence until and including I, then stop. @@ -82,8 +87,6 @@ search for a command in the sequence exactly matching the name, to avoid any ambiguity. If there are multiple substring matches, the last one in the sequence will be used. -=back - =cut sub command_pos { @@ -169,11 +172,37 @@ default. This is how to use dh_pycentral instead. %: dh --with python-central $@ +To patch your package using quilt, you can tell dh to use quilt's dh +sequence addons like this: + + #!/usr/bin/make -f + %: + dh --with quilt $@ + +Here is an example of overriding where the dh_auto_* commands find +the package's source, for a package where the source is located in a +subdirectory. It also forces use of perl's Module::Build build system, +which can be necessary if debhelper wrongly detects that the package +uses MakeMaker. + + #!/usr/bin/make -f + %: + dh --sourcedirectory=src --buildsystem=perl_build $@ + =cut # Stash this away before init modifies it. my @ARGV_orig=@ARGV; +# python-support is enabled by default, at least for now +# (and comes first so python-central loads later and can disable it). +unshift @ARGV, "--with=python-support"; + +# Disable complaints about unknown options for both dh and the commands +# it runs. This is done because dh accepts and passes on options that may +# be specific to only some debhelper commands. +$ENV{DH_IGNORE_UNKNOWN_OPTIONS}=1; + init(options => { "until=s" => \$dh{UNTIL}, "after=s" => \$dh{AFTER}, @@ -181,7 +210,11 @@ init(options => { "remaining" => \$dh{REMAINING}, "with=s" => sub { my ($option,$value)=@_; - push @{$dh{WITH}},$value; + push @{$dh{WITH}},split(",", $value); + }, + "without=s" => sub { + my ($option,$value)=@_; + @{$dh{WITH}} = grep { $_ ne $value } @{$dh{WITH}}; }, }); inhibit_log(); @@ -234,7 +267,6 @@ $sequences{install} = [@{$sequences{build}}, qw{ dh_gconf dh_icons dh_perl - dh_scrollkeeper dh_usrlocal dh_link @@ -255,9 +287,6 @@ $sequences{binary} = [@{$sequences{install}}, qw{ }, @b]; $sequences{'binary-arch'} = [@{$sequences{binary}}]; -# --with python-support is enabled by default, at least for now -unshift @{$dh{WITH}}, "python-support"; - # sequence addon interface sub _insert { my $offset=shift; @@ -341,11 +370,11 @@ elsif ($sequence eq 'binary-indep') { while (@ARGV_orig) { my $opt=shift @ARGV_orig; next if $opt eq $sequence; - if ($opt =~ /^--?(after|until|before|with)$/) { + if ($opt =~ /^--?(after|until|before|with|without)$/) { shift @ARGV_orig; next; } - elsif ($opt =~ /^--?(no-act|remaining|(after|until|before|with)=)/) { + elsif ($opt =~ /^--?(no-act|remaining|(after|until|before|with|without)=)/) { next; } push @options, $opt; @@ -433,7 +462,7 @@ sub run { $override_command=$command; # This passes the options through to commands called # inside the target. - $ENV{DH_INTERNAL_OPTIONS}=join(" ", @options); + $ENV{DH_INTERNAL_OPTIONS}=join("\x1e", @options); $command="debian/rules"; @options="override_".$override_command; } @@ -456,9 +485,13 @@ sub run { # Need to handle logging for overriden commands here, # because the actual debhelper command may not have # been run by the rules file target. - my %packages=map { $_ => 1 } @packages; - map { delete $packages{$_} } @exclude; - write_log($override_command, keys %packages); + # (But avoid logging for dh_clean since it removes + # the log earlier.) + if ($override_command ne 'dh_clean') { + my %packages=map { $_ => 1 } @packages; + map { delete $packages{$_} } @exclude; + write_log($override_command, keys %packages); + } } } }