aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancois Pons <fpons@mandriva.com>2002-07-11 13:14:42 +0000
committerFrancois Pons <fpons@mandriva.com>2002-07-11 13:14:42 +0000
commit8414339f861f1289bdc8cd191a765e8dec195582 (patch)
tree06b03100177df116d85d505a4dc789fa1e208c6e
parent907fd3eb24c1fc99c22946923081f34952a21b9e (diff)
downloadperl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar
perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.gz
perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.bz2
perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.xz
perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.zip
0.09-2mdk
-rw-r--r--URPM/Resolve.pm32
-rw-r--r--perl-URPM.spec7
2 files changed, 37 insertions, 2 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index a88b8c6..960ea66 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -312,7 +312,7 @@ sub resolve_requested {
if (my ($name) =~ /^([^\s\[]*)/) {
foreach (keys %{$urpm->{provides}{$name} || {}}) {
my $p = $urpm->{depslist}[$_];
- $pkg->flag_selected and $state->{ask_unselect}{$p->id}{$pkg->id} = undef;
+ $p->flag_selected and $state->{ask_unselect}{$p->id}{$pkg->id} = undef;
}
}
}
@@ -320,6 +320,36 @@ sub resolve_requested {
#- obsoleted packages are no longer marked as being asked to be removed.
delete @{$state->{ask_remove}}{map { /(.*)\.[^\.]*$/ && $1 } keys %{$state->{obsoleted}}};
+
+ #- clear state according to selection done, this is usefull for
+ #- canceling a selection (works after second call with empty requested).
+ if ($options{clear_state}) {
+ foreach (keys %{$state->{selected} || {}}) {
+ my $pkg = $urpm->{depslist}[$_];
+
+ foreach ($pkg->provides) {
+ if (my ($n, $s) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*\s*[^\s\]]*)/) {
+ delete $state->{provided}{$n}{$s}{$pkg->id};
+ %{$state->{provided}{$n}{$s}} or delete $state->{provided}{$n}{$s};
+ }
+ }
+
+ foreach ($pkg->obsoletes) {
+ delete $state->{obsoleted}{$pkg->fullname}{$pkg->id};
+ %{$state->{obsoleted}{$pkg->fullname}} or delete $state->{obsoleted}{$pkg->fullname};
+ }
+
+ foreach (keys %{$state->{ask_remove} || {}}) {
+ $state->{ask_remove}{$_} = [ grep { $_->{pkg} ne $pkg } @{$state->{ask_remove}{$_} || []} ];
+ @{$state->{ask_remove}{$_}} or delete $state->{ask_remove}{$_};
+ }
+
+ foreach (keys %{$state->{ask_unselect} || {}}) {
+ delete $state->{ask_unselect}{$_}{$pkg->id};
+ %{$state->{ask_unselect}{$_}} or delete $state->{ask_unselect}{$_};
+ }
+ }
+ }
}
#- compute installed flags for all package in depslist.
diff --git a/perl-URPM.spec b/perl-URPM.spec
index 01f3001..197b979 100644
--- a/perl-URPM.spec
+++ b/perl-URPM.spec
@@ -1,7 +1,7 @@
%define name perl-URPM
%define real_name URPM
%define version 0.09
-%define release 1mdk
+%define release 2mdk
%{expand:%%define rpm_version %(rpm -q --queryformat '%{VERSION}-%{RELEASE}' rpm)}
@@ -48,6 +48,11 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Thu Jul 11 2002 François Pons <fpons@mandrakesoft.com> 0.09-2mdk
+- fixed ask_unselect computation.
+- added clear_state option to relove_requested (rollback state
+ modification needed by DrakX).
+
* Wed Jul 10 2002 François Pons <fpons@mandrakesoft.com> 0.09-1mdk
- changed semantics of some package flags to extend usability and
simplicity.