This is an automated email from the git hooks/post-receive script. abe pushed a commit to branch master in repository debsums.
commit 7462f356b8de5db130bfab9150f295063beea473 Author: Ryan Niebur <ryanrya...@gmail.com> Date: Tue Aug 30 00:50:24 2011 -0700 check if missing files match dpkg path exclusion settings (Closes: #603887) --- debian/changelog | 4 +++- debian/control | 2 +- debsums | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d65e4e2..5deaa96 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,8 +17,10 @@ debsums (2.0.49) UNRELEASED; urgency=low - shorten debian/rules * update policy version to 3.9.2.0 - set debian/source/format to 3.0 (native) + * check if missing files match dpkg path exclusion settings (Closes: + #603887) - -- Ryan Niebur <r...@debian.org> Sun, 28 Aug 2011 08:31:13 -0700 + -- Ryan Niebur <r...@debian.org> Tue, 30 Aug 2011 00:50:05 -0700 debsums (2.0.48+nmu3) unstable; urgency=low diff --git a/debian/control b/debian/control index 64e5298..bbef557 100644 --- a/debian/control +++ b/debian/control @@ -9,7 +9,7 @@ Vcs-Browser: http://git.debian.org/?p=collab-maint/debsums.git;a=summary Package: debsums Architecture: all -Depends: perl (>= 5.8.0-3), ucf (>= 0.28), ${misc:Depends} +Depends: perl (>= 5.8.0-3), ucf (>= 0.28), libfile-fnmatch-perl, ${misc:Depends} Description: tool for verification of installed package files against MD5 checksums debsums can verify the integrity of installed package files against MD5 checksums installed by the package, or generated from a .deb diff --git a/debsums b/debsums index 15eac32..7201d4f 100755 --- a/debsums +++ b/debsums @@ -19,6 +19,8 @@ use Errno; use POSIX; use File::Basename; use File::Spec; +use Dpkg::Conf; +use File::FnMatch qw(:fnmatch); sub version { my $changelog = File::Spec->catfile(dirname($0), "debian", "changelog"); @@ -143,6 +145,39 @@ $root ||= ''; $admindir ||= '/var/lib/dpkg'; my $DPKG = $root . $admindir; +my $is_path_pattern_opt = sub { + return shift =~ /^--path-(?:exclude|include)=/; +}; + +my $dpkg_conf = Dpkg::Conf->new(); + +foreach((glob($root . "/etc/dpkg/dpkg.cfg.d/[0-9a-zA-Z_-]*"), ($root . "/etc/dpkg/dpkg.cfg", $root . glob("~/.dpkg.cfg")))) { + if(-f $_) { + my $name = "$_"; + $dpkg_conf->load($name); + } +} +$dpkg_conf->filter(keep => $is_path_pattern_opt); +my @dpkg_opts = $dpkg_conf->get_options; +my @dpkg_patterns = (); +foreach my $opt(@dpkg_opts) { + my @res = ($opt =~ /^--path-(exclude|include)=(.+)/); + push @dpkg_patterns, \@res; +} + +sub excluded_by_dpkg { + my $file = "/" . shift; + my $excluded = 0; + foreach my $rule(@dpkg_patterns) { + my ($type, $pattern) = @{$rule}; + if(fnmatch($pattern, $file)) { + $excluded = $type eq 'exclude' ? 1 : 0; + } + } + return $excluded; +} + + my %locales; my $nopurge = '/etc/locale.nopurge'; @@ -358,6 +393,7 @@ sub is_localepurge_file { { return 0 if $localepurge and is_localepurge_file($path); + return 0 if excluded_by_dpkg($path); my $err = "$self: can't open $pack file $root/$path ($!)\n"; if(can_ignore()) { -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/debsums.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits