summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/pkgs.pm42
1 files changed, 13 insertions, 29 deletions
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index 3a86713f4..e046ab6eb 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -208,8 +208,8 @@ sub selectPackage {
#- is only used for unselection, not selection)
my $state = $packages->{state} ||= {};
$state->{selected} = {};
- $state->{requested} = packageRequest($packages, $pkg) or return;
- $packages->resolve_requested($packages->{rpmdb}, $state, no_flag_update => $otherOnly, keep_state => $otherOnly,
+ $packages->resolve_requested($packages->{rpmdb}, $state, packageRequest($packages, $pkg) || {},
+ no_flag_update => $otherOnly, keep_state => $otherOnly,
callback_choices => \&packageCallbackChoices);
if ($base || $otherOnly) {
@@ -231,21 +231,9 @@ sub unselectPackage($$;$) {
$pkg->flag_base and return;
$pkg->flag_selected or return;
- #- try to unwind selection (requested or required) by keeping
- #- rpmdb is right place.
- #TODO
- if ($otherOnly) {
- $otherOnly->{$pkg->id} = undef;
- } else {
- $pkg->set_flag_requested(0);
- $pkg->set_flag_required(0);
-
- #- clear state.
- my $state = $packages->{state} ||= {};
- $state->{selected} = { $pkg->id };
- $state->{requested} = {};
- $packages->resolve_requested($packages->{rpmdb}, $state, keep_state => 1);
- }
+ my $state = $packages->{state} ||= {};
+ $state->{unselected} = $otherOnly || {};
+ $packages->resolve_unrequested($packages->{rpmdb}, $state, { $pkg->id => undef }, no_flag_update => $otherOnly);
1;
}
sub togglePackageSelection($$;$) {
@@ -271,8 +259,7 @@ sub unselectAllPackages($) {
if (%selected && %{$packages->{state} || {}}) {
my $state = $packages->{state} ||= {};
$state->{selected} = \%selected;
- $state->{requested} = {};
- $packages->resolve_requested($packages->{rpmdb}, $state, keep_state => 1);
+ $packages->resolve_requested($packages->{rpmdb}, $state, {}, keep_state => 1);
}
}
sub unselectAllPackagesIncludingUpgradable($) {
@@ -288,8 +275,7 @@ sub unselectAllPackagesIncludingUpgradable($) {
if (%selected && %{$packages->{state} || {}}) {
my $state = $packages->{state} ||= {};
$state->{selected} = \%selected;
- $state->{requested} = {};
- $packages->resolve_requested($packages->{rpmdb}, $state, keep_state => 1);
+ $packages->resolve_requested($packages->{rpmdb}, $state, {}, keep_state => 1);
}
}
@@ -572,10 +558,9 @@ sub setSelectedFromCompssList {
#- selecting $p. the packages are not selected.
my $state = $packages->{state} ||= {};
$state->{selected} = {};
- $state->{requested} = packageRequest($packages, $p) || {};
- $packages->resolve_requested($packages->{rpmdb}, $state, no_flag_update => 1,
- callback_choices => \&packageCallbackChoices);
+ $packages->resolve_requested($packages->{rpmdb}, $state, packageRequest($packages, $p) || {},
+ no_flag_update => 1, callback_choices => \&packageCallbackChoices);
#- this enable an incremental total size.
my $old_nb = $nb;
@@ -586,8 +571,7 @@ sub setSelectedFromCompssList {
if ($max_size && $nb > $max_size) {
$nb = $old_nb;
$min_level = $p->rate;
- $state->{requested} = {}; #- ensure no newer package will be selected.
- $packages->resolve_requested($packages->{rpmdb}, $state, keep_state => 1); #- FIXME INCOMPLETE TODO
+ $packages->resolve_requested($packages->{rpmdb}, $state, {}, keep_state => 1); #- FIXME INCOMPLETE TODO
last;
}
@@ -801,10 +785,10 @@ sub selectPackagesToUpgrade {
my $state = $packages->{state} ||= {};
$state->{selected} = {};
- $state->{requested} = {};
- $packages->resolve_packages_to_upgrade($packages->{rpmdb}, $state, requested => undef);
- $packages->resolve_requested($packages->{rpmdb}, $state, callback_choices => \&packageCallbackChoices);
+ $packages->resolve_requested($packages->{rpmdb}, $state,
+ $packages->request_packages_to_upgrade($packages->{rpmdb}, $state, {}, requested => undef) || {},
+ callback_choices => \&packageCallbackChoices);
}
sub allowedToUpgrade { $_[0] !~ /^(kernel|kernel22|kernel2.2|kernel-secure|kernel-smp|kernel-linus|kernel-linus2.2|hackkernel|kernel-enterprise)$/ }