[debsums] 126/184: Read and write .md5sums files at multiarch paths when needed

Axel Beckert abe at deuxchevaux.org
Mon Mar 2 21:21:25 UTC 2015


This is an automated email from the git hooks/post-receive script.

abe pushed a commit to branch master
in repository debsums.

commit abb370c4b9ddc58f96c096aad2d6692c7aa6e53e
Author: Anders Kaseorg <andersk at mit.edu>
Date:   Fri Jul 8 02:52:22 2011 -0400

    Read and write .md5sums files at multiarch paths when needed
    
    Signed-off-by: Anders Kaseorg <andersk at mit.edu>
---
 debsums | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/debsums b/debsums
index 855fbf7..d64a5e7 100755
--- a/debsums
+++ b/debsums
@@ -151,6 +151,8 @@ my @debpath = '.';
 @debpath = map +(length) ? $_ : '.', split /:/, $debpath, -1 if $debpath;
 
 my $arch;
+chomp ($arch = `/usr/bin/dpkg --print-architecture`);
+
 my %generate;
 if ($gen_opt)
 {
@@ -172,8 +174,6 @@ if ($gen_opt)
     $generate{missing}++ unless $generate{all} or $generate{missing};
     $generate{keep}++    if $generate{nocheck};
 
-    chomp ($arch = `/usr/bin/dpkg --print-architecture`);
-
     # ensure generated files are world readable
     umask 022;
 }
@@ -254,6 +254,23 @@ sub dpkg_cmp
     !system '/usr/bin/dpkg', '--compare-versions', $ver, $op, $testver;
 }
 
+sub md5sums_path
+{
+    # Calling dpkg-query --control-path for every package is too slow,
+    # so we cheat a little bit.
+
+    my ($pack) = @_;
+    if (-e "$DPKG/info/$pack.list") {
+	return "$DPKG/info/$pack.md5sums";
+    } elsif ($pack !~ /:/ and -e "$DPKG/info/$pack:$arch.list") {
+	return "$DPKG/info/$pack:$arch.md5sums";
+    } elsif ($pack =~ /^(.*):/ and -e "$DPKG/info/$1.list") {
+	return "$DPKG/info/$1.md5sums";
+    } else {
+	die "Cannot find md5sums path for $pack\n";
+    }
+}
+
 sub is_replaced
 {
     my ($pack, $path, $sum) = @_;
@@ -273,7 +290,7 @@ sub is_replaced
 
     for my $p (@{$installed{$pack}{ReplacedBy} || []})
     {
-	open S, "$DPKG/info/$p.md5sums" or next;
+	open S, md5sums_path($p) or next;
 	while (<S>)
 	{
 	    if ($_ eq "$sum  $path\n")
@@ -460,7 +477,7 @@ for (@ARGV)
 	}
 	else
 	{
-	    $sums = "$DPKG/info/$pack.md5sums";
+	    $sums = md5sums_path($pack);
 	    unless (-f $sums or $config)
 	    {
 		if ($missing)
@@ -626,7 +643,7 @@ for (@ARGV)
 
 	if ($generate{keep})
 	{
-	    my $target = "$DPKG/info/$pack.md5sums";
+	    my $target = md5sums_path($pack);
 	    copy $sums, $target
 		or die "$self: can't copy sums to $target ($!)\n";
 	}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/debsums.git



More information about the Pkg-perl-cvs-commits mailing list