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

guillem pushed a commit to branch master
in repository dpkg.

commit f7488217a506871f1aed58373220a76ea2e170ab
Author: Guillem Jover <[email protected]>
Date:   Mon Feb 6 03:17:32 2017 +0100

    Dpkg::Deps: Turn virtualpkg tracking from an arrayyref into a hashref
    
    This is more extensible and more clear.
---
 debian/changelog             |  1 +
 scripts/Dpkg/Deps.pm         | 19 ++++++++++++++-----
 scripts/dpkg-genbuildinfo.pl |  3 +--
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 6fae006..efd84ec 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -59,6 +59,7 @@ dpkg (1.19.1) UNRELEASED; urgency=medium
     - Dpkg::Source::Package::V2: Print one building line per existing tarball.
     - Dpkg::Source::Package: Print building lines for upstream tarball
       signatures. Closes: #888787
+    - Dpkg::Deps: Turn virtualpkg tracking from an arrayyref into a hashref.
   * Documentation:
     - Update gettext minimal version in README.
     - Add a missing dot on the dpkg-buildflags(1) «lfs» feature paragraph.
diff --git a/scripts/Dpkg/Deps.pm b/scripts/Dpkg/Deps.pm
index 3560e1a..df8d9f4 100644
--- a/scripts/Dpkg/Deps.pm
+++ b/scripts/Dpkg/Deps.pm
@@ -1423,9 +1423,15 @@ field (if present).
 
 sub add_provided_package {
     my ($self, $pkg, $rel, $ver, $by) = @_;
+    my $v = {
+        package => $pkg,
+        relation => $rel,
+        version => $ver,
+        provider => $by,
+    };
 
     $self->{virtualpkg}{$pkg} //= [];
-    push @{$self->{virtualpkg}{$pkg}}, [ $by, $rel, $ver ];
+    push @{$self->{virtualpkg}{$pkg}}, $v;
 }
 
 =item ($check, $param) = $facts->check_package($package)
@@ -1453,7 +1459,10 @@ sub check_package {
        return (1, $self->{pkg}{$pkg}[0]{version});
     }
     if (exists $self->{virtualpkg}{$pkg}) {
-       return (1, $self->{virtualpkg}{$pkg});
+        my $arrayref = [ map { [
+            $_->{provider}, $_->{relation}, $_->{version}
+        ] } @{$self->{virtualpkg}{$pkg}} ];
+        return (1, $arrayref);
     }
     return (0, undef);
 }
@@ -1510,11 +1519,11 @@ sub _evaluate_simple_dep {
        }
     }
     foreach my $virtpkg ($self->_find_virtual_packages($pkg)) {
-       next if defined $virtpkg->[1] and $virtpkg->[1] ne REL_EQ;
+       next if defined $virtpkg->{relation} and $virtpkg->{relation} ne REL_EQ;
 
        if (defined $dep->{relation}) {
-           next if not defined $virtpkg->[2];
-           return 1 if version_compare_relation($virtpkg->[2],
+           next if not defined $virtpkg->{version};
+           return 1 if version_compare_relation($virtpkg->{version},
                                                 $dep->{relation},
                                                 $dep->{version});
        } else {
diff --git a/scripts/dpkg-genbuildinfo.pl b/scripts/dpkg-genbuildinfo.pl
index 45c4508..96b0609 100755
--- a/scripts/dpkg-genbuildinfo.pl
+++ b/scripts/dpkg-genbuildinfo.pl
@@ -232,8 +232,7 @@ sub collect_installed_builddeps {
             # virtual package: we cannot know for sure which implementation
             # is the one that has been used, so let's add them all...
             foreach my $provided (@{$facts->{virtualpkg}->{$pkg_name}}) {
-                my ($provided_by, $provided_rel, $provided_ver) = @{$provided};
-                push @unprocessed_pkgs, $provided_by;
+                push @unprocessed_pkgs, $provided->{provider};
             }
         }
         # else: it is a package in an OR dependency that has been otherwise

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/dpkg/dpkg.git

Reply via email to