[Reproducible-commits] [dpkg] 33/37: dpkg-genbuildinfo: Improve computation of dependencies
Jérémy Bobbio
lunar at moszumanska.debian.org
Sun Jan 31 16:28:41 UTC 2016
This is an automated email from the git hooks/post-receive script.
lunar pushed a commit to branch pu/buildinfo
in repository dpkg.
commit 53aecbb5356924b2a8e6ce2ddef71ac8a1c35c26
Author: Jérémy Bobbio <lunar at debian.org>
Date: Sat Jan 30 14:37:14 2016 +0000
dpkg-genbuildinfo: Improve computation of dependencies
Instead of looking at all dependencies again each time we had a new one,
we now keep an array of packages that still need to be processed.
---
scripts/dpkg-genbuildinfo.pl | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/scripts/dpkg-genbuildinfo.pl b/scripts/dpkg-genbuildinfo.pl
index 03177a0..4787d10 100755
--- a/scripts/dpkg-genbuildinfo.pl
+++ b/scripts/dpkg-genbuildinfo.pl
@@ -131,14 +131,14 @@ sub parse_status {
}
sub append_deps {
- my $env_pkgs = shift;
+ my $pkgs = shift;
my $deps;
foreach my $dep_str (@_) {
next unless $dep_str;
$deps = deps_parse($dep_str, reduce_restrictions => 1, build_dep => 1);
# add packages as unseen if they were not there before
- deps_iterate($deps, sub { ${$env_pkgs}{$_[0]->{package}} //= 0; 1 });
+ deps_iterate($deps, sub { push @{$pkgs}, $_[0]->{package}; 1 });
}
}
@@ -288,31 +288,33 @@ $checksums->export_to_control($fields);
my ($facts, $depends, $essential_pkgs) = parse_status("$admindir/status");
my $deps;
-my %env_pkgs;
+my %seen_pkgs;
+my @unprocessed_pkgs;
# parse essential list
-append_deps(\%env_pkgs, @{$essential_pkgs}, run_vendor_hook('builtin-build-depends'),
- $control->get_source->{'Build-Depends'});
+append_deps(\@unprocessed_pkgs,
+ @{$essential_pkgs},
+ run_vendor_hook('builtin-build-depends'),
+ $control->get_source->{'Build-Depends'});
if ($include & BUILD_ARCH_DEP) {
- append_deps(\%env_pkgs, $control->get_source->{'Build-Depends-Arch'});
+ append_deps(\@unprocessed_pkgs, $control->get_source->{'Build-Depends-Arch'});
}
if ($include & BUILD_ARCH_INDEP) {
- append_deps(\%env_pkgs, $control->get_source->{'Build-Depends-Indep'});
+ append_deps(\@unprocessed_pkgs, $control->get_source->{'Build-Depends-Indep'});
}
-while (my ($pkg, $seen) = each(%env_pkgs)) {
- next if $seen;
- $env_pkgs{$pkg} = 1; # mark as seen
+while (my $pkg = shift @unprocessed_pkgs) {
+ next if $seen_pkgs{$pkg};
next unless defined $facts->{pkg}->{$pkg}->[0];
- append_deps(\%env_pkgs, @{$depends->{$pkg}});
- keys %env_pkgs; # reset iterator
+ append_deps(\@unprocessed_pkgs, @{$depends->{$pkg}});
+ $seen_pkgs{$pkg} = 1;
}
my $environment = Dpkg::Deps::AND->new();
-foreach my $pkg (sort keys %env_pkgs) {
+foreach my $pkg (sort keys %seen_pkgs) {
foreach my $installed_pkg (@{$facts->{pkg}->{$pkg}}) {
my $version = $installed_pkg->{version};
my $architecture = $installed_pkg->{architecture};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/dpkg.git
More information about the Reproducible-commits
mailing list