diff options
-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(@_); } |