diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2007-03-06 14:31:33 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2007-03-06 14:31:33 +0000 |
commit | 7707dced7c20d8669b84b11916ba1a289f9d8deb (patch) | |
tree | 3452e941587301b2b60defb177f7ac2dcd548016 | |
parent | e6ee6cabe43d90228c29cfa90109d3d965d115f0 (diff) | |
download | perl-URPM-7707dced7c20d8669b84b11916ba1a289f9d8deb.tar perl-URPM-7707dced7c20d8669b84b11916ba1a289f9d8deb.tar.gz perl-URPM-7707dced7c20d8669b84b11916ba1a289f9d8deb.tar.bz2 perl-URPM-7707dced7c20d8669b84b11916ba1a289f9d8deb.tar.xz perl-URPM-7707dced7c20d8669b84b11916ba1a289f9d8deb.zip |
split request_packages_to_upgrade() in 2 functions
-rw-r--r-- | URPM/Resolve.pm | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index ddfd656..5a5c248 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -1054,7 +1054,14 @@ sub compute_flags { #- all installed or upgrade flag. sub request_packages_to_upgrade { my ($urpm, $db, $_state, $requested, %options) = @_; - my (%provides, %names, %skip, %requested, %obsoletes, @obsoleters); + + my ($names, $obsoletes) = _request_packages_to_upgrade_1($urpm, %options) or return; + _request_packages_to_upgrade_2($urpm, $db, $requested, $names, $obsoletes, %options); +} + +sub _request_packages_to_upgrade_1 { + my ($urpm, %options) = @_; + my (%provides, %names, %skip); my @idlist = $urpm->build_listid($options{start}, $options{end}, $options{idlist}) or return; @@ -1091,6 +1098,7 @@ sub request_packages_to_upgrade { #- checked consistency with obsoletes of eligible packages. #- It is important to avoid selecting a package that obsoletes #- an old one. + my %obsoletes; foreach my $pkg (values %names) { foreach ($pkg->obsoletes) { if (my ($n, $o, $v) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*)\s*([^\s\]]*)/) { @@ -1106,6 +1114,14 @@ sub request_packages_to_upgrade { #- ignore skipped packages. delete @names{keys %skip}; + \%names, \%obsoletes; +} + +sub _request_packages_to_upgrade_2 { + my ($_urpm, $db, $requested, $names, $obsoletes, %options) = @_; + my %names = %$names; + my (%requested, @obsoleters); + #- now we can examine all existing packages to find packages to upgrade. $db->traverse(sub { my ($p) = @_; @@ -1134,7 +1150,7 @@ sub request_packages_to_upgrade { #- should be avoided. unless ($p->obsoletes_overlap($property)) { if (my ($n) = $property =~ /^([^\s\[]*)/) { - foreach my $pkg (@{$obsoletes{$n} || []}) { + foreach my $pkg (@{$obsoletes->{$n} || []}) { next if $pkg->name eq $pn || $pn ne $n || !$names{$pkg->name}; if ($pkg->obsoletes_overlap($property)) { #- the package being examined can be obsoleted. |