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

