diff options
author | Modestas Vainius <modestas@vainius.eu> | 2009-03-23 02:23:17 +0200 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-03-23 14:59:13 -0400 |
commit | 66c68aa531bc5a1739be40c25483f036022de7a1 (patch) | |
tree | 4eb57b19e070a427bdffdf94a7308c45c62aa8b8 | |
parent | ce53a5276c9f3a388dce10f442c3c1659e3bccdb (diff) |
Add a global --remaining-packages option.
Add a global --remaining-packages option which allows to skip the command on
the packages which it has already been run on (i.e. if the command helper is
already present in the package debhelper log).
Signed-off-by: Modestas Vainius <modestas@vainius.eu>
-rw-r--r-- | Debian/Debhelper/Dh_Getopt.pm | 6 | ||||
-rw-r--r-- | Debian/Debhelper/Dh_Lib.pm | 19 | ||||
-rw-r--r-- | debhelper.pod | 8 | ||||
-rwxr-xr-x | dh | 17 |
4 files changed, 32 insertions, 18 deletions
diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm index ef94e940..5585a54c 100644 --- a/Debian/Debhelper/Dh_Getopt.pm +++ b/Debian/Debhelper/Dh_Getopt.pm @@ -91,6 +91,8 @@ sub getoptions { "N=s" => \&ExcludePackage, "no-package=s" => \&ExcludePackage, + "remaining-packages" => \$dh{EXCLUDE_LOGGED}, + "dbg-package=s" => \&AddDebugPackage, "s" => \&AddPackage, @@ -222,6 +224,10 @@ sub parseopts { my $package; my %packages_seen; foreach $package (@{$dh{DOPACKAGES}}) { + if (defined($dh{EXCLUDE_LOGGED}) && + grep { $_ eq basename($0) } load_log($package)) { + $exclude_package{$package}=1; + } if (! $exclude_package{$package}) { if (! exists $packages_seen{$package}) { $packages_seen{$package}=1; diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm index d4811283..23e81a60 100644 --- a/Debian/Debhelper/Dh_Lib.pm +++ b/Debian/Debhelper/Dh_Lib.pm @@ -15,7 +15,7 @@ use vars qw(@ISA @EXPORT %dh); &filedoublearray &getpackages &basename &dirname &xargs %dh &compat &addsubstvar &delsubstvar &excludefile &package_arch &is_udeb &udeb_filename &debhelper_script_subst &escape_shell - &inhibit_log); + &inhibit_log &load_log); my $max_compat=7; @@ -102,7 +102,22 @@ sub END { if ($? == 0 && $write_log) { write_log(basename($0), @{$dh{DOPACKAGES}}); } -} +} + +sub load_log { + my ($package, $db)=@_; + my $ext=pkgext($package); + + my @log; + open(LOG, "<", "debian/${ext}debhelper.log") || return; + while (<LOG>) { + chomp; + push @log, $_; + $db->{$package}{$_}=1 if (defined $db); + } + close LOG; + return @log; +} sub write_log { my $cmd=shift; diff --git a/debhelper.pod b/debhelper.pod index 77ace5c3..dad286ee 100644 --- a/debhelper.pod +++ b/debhelper.pod @@ -118,6 +118,14 @@ are not architecture independent. Do not act on the specified package even if an -a, -i, or -p option lists the package as one that should be acted on. +=item B<--remaining-packages> + +Do not act on the packages which have already been acted on by this debhelper +command earlier (i.e. if the command is present in the package debhelper log). +For example, if you need to call the command with special options only for a +couple of binary packages, pass this option to the last call of the command to +process the rest of packages with default settings. + =item B<--ignore=>I<file> Ignore the specified file. This can be used if debian/ contains a debhelper @@ -376,7 +376,7 @@ while (@ARGV_orig) { my %logged; my %startpoint; foreach my $package (@packages) { - my @log=loadlog($package); + my @log=load_log($package, \%logged); if ($dh{AFTER}) { # Run commands in the sequence that come after the # specified command. @@ -484,21 +484,6 @@ sub run { } } -sub loadlog { - my $package=shift; - my $ext=pkgext($package); - - my @log; - open(LOG, "<", "debian/${ext}debhelper.log") || return; - while (<LOG>) { - chomp; - push @log, $_; - $logged{$package}{$_}=1; - } - close LOG; - return @log; -} - sub writelog { Debian::Debhelper::Dh_Lib::write_log(@_); } |