summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mandriva.org>2009-01-30 10:37:31 +0000
committerThierry Vignaud <tv@mandriva.org>2009-01-30 10:37:31 +0000
commitc58b03b4c01a056219b606cd0fa8e0a3a5d4869f (patch)
tree728b1fbaca4db3c509d6e7d8b1b202a861873516
parent10df4c23479beaf8bd7325be85d0dd177fb4ac73 (diff)
downloaddrakx-backup-do-not-use-c58b03b4c01a056219b606cd0fa8e0a3a5d4869f.tar
drakx-backup-do-not-use-c58b03b4c01a056219b606cd0fa8e0a3a5d4869f.tar.gz
drakx-backup-do-not-use-c58b03b4c01a056219b606cd0fa8e0a3a5d4869f.tar.bz2
drakx-backup-do-not-use-c58b03b4c01a056219b606cd0fa8e0a3a5d4869f.tar.xz
drakx-backup-do-not-use-c58b03b4c01a056219b606cd0fa8e0a3a5d4869f.zip
(computeGroupSize) make it shorter through externalizing out internal helper
functions
-rw-r--r--perl-install/install/pkgs.pm84
1 files changed, 43 insertions, 41 deletions
diff --git a/perl-install/install/pkgs.pm b/perl-install/install/pkgs.pm
index d2fabb02b..c1751c2ba 100644
--- a/perl-install/install/pkgs.pm
+++ b/perl-install/install/pkgs.pm
@@ -424,52 +424,54 @@ sub restoreSelected {
} $l, $flags;
}
-sub computeGroupSize {
- my ($packages, $min_level) = @_;
-
- sub inside {
- my ($l1, $l2) = @_;
- my $i = 0;
- return if @$l1 > @$l2;
- foreach (@$l1) {
- my $c;
- while ($c = $l2->[$i++] cmp $_) {
- return if $c == 1 || $i > @$l2;
- }
- }
- 1;
+sub _inside {
+ my ($l1, $l2) = @_;
+ my $i = 0;
+ return if @$l1 > @$l2;
+ foreach (@$l1) {
+ my $c;
+ while ($c = $l2->[$i++] cmp $_) {
+ return if $c == 1 || $i > @$l2;
+ }
}
+ 1;
+}
- sub or_ify {
- my ($first, @other) = @_;
- my @l = split('\|\|', $first);
- foreach (@other) {
- @l = map {
- my $n = $_;
- map { "$_&&$n" } @l;
- } split('\|\|');
- }
- @l;
+sub _or_ify {
+ my ($first, @other) = @_;
+ my @l = split('\|\|', $first);
+ foreach (@other) {
+ @l = map {
+ my $n = $_;
+ map { "$_&&$n" } @l;
+ } split('\|\|');
+ }
+ @l;
+}
+sub _or_clean {
+ my ($flags) = @_;
+ my @l = split("\t", $flags);
+ @l = map { [ sort split('&&') ] } @l;
+ my @r;
+ B: while (@l) {
+ my $e = shift @l;
+ foreach (@r, @l) {
+ _inside($_, $e) and next B;
+ }
+ push @r, $e;
}
+ join("\t", map { join('&&', @$_) } @r);
+}
+
+
+sub computeGroupSize {
+ my ($packages, $min_level) = @_;
+ my (%group, %memo);
+
my %or_ify_cache;
my $or_ify_cached = sub {
- $or_ify_cache{$_[0]} ||= join("\t", or_ify(split("\t", $_[0])));
+ $or_ify_cache{$_[0]} ||= join("\t", _or_ify(split("\t", $_[0])));
};
- sub or_clean {
- my ($flags) = @_;
- my @l = split("\t", $flags);
- @l = map { [ sort split('&&') ] } @l;
- my @r;
- B: while (@l) {
- my $e = shift @l;
- foreach (@r, @l) {
- inside($_, $e) and next B;
- }
- push @r, $e;
- }
- join("\t", map { join('&&', @$_) } @r);
- }
- my (%group, %memo);
log::l("install::pkgs::computeGroupSize");
my $time = time();
@@ -523,7 +525,7 @@ sub computeGroupSize {
next if $p->flag_selected; #- always installed (accounted in system_size)
my $s = $group{$p->name} || $or_ify_cached->(join("\t", $p->rflags));
my $m = "$flags\t$s";
- $group{$p->name} = ($memo{$m} ||= or_clean($m));
+ $group{$p->name} = ($memo{$m} ||= _or_clean($m));
}
}
my (%sizes, %pkgs);