summaryrefslogtreecommitdiffstats
path: root/perl-install/install_steps_interactive.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/install_steps_interactive.pm')
-rw-r--r--perl-install/install_steps_interactive.pm64
1 files changed, 58 insertions, 6 deletions
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 2ad4cc798..bd1591d39 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -538,13 +538,15 @@ sub chooseSizeToInstall {
min($def, $availableC * 0.7);
}
sub choosePackagesTree {
- my ($o, $packages) = @_;
+ my ($o, $packages, $limit_to_medium) = @_;
$o->ask_many_from_list('', _("Choose the packages you want to install"),
{
list => [
- map { pkgs::packageByName($packages, $_) }
- keys %{$packages->{names}} ],
+ map { pkgs::packageByName($packages, $_) }
+ $limit_to_medium ?
+ (grep { pkgs::packageMedium($packages, $_) == $limit_to_medium } keys %{$packages->{names}}) :
+ (keys %{$packages->{names}}) ],
value => \&pkgs::packageFlagSelected,
label => \&pkgs::packageName,
sort => 1,
@@ -866,17 +868,67 @@ USA")) || return;
#- bring all interface up for installing crypto packages.
install_interactive::upNetwork($o);
- my @packages = do {
+ my $update_medium = do {
+ my $w = $o->wait_message('', _("Contacting the mirror to get the list of available packages"));
+ crypto::getPackages($o->{prefix}, $o->{packages}, $u->{mirror}); #- make sure $o->{packages} is defined when testing
+ };
+
+ if ($update_medium) {
+ $o->choosePackagesTree($o->{packages}, $update_medium);
+ $o->pkg_install();
+ }
+
+ #- stop interface using ppp only.
+ install_interactive::downNetwork($o, 'pppOnly');
+}
+
+sub installUpdates {
+ my ($o) = @_;
+ my $u = $o->{updates} ||= {};
+
+ $o->hasNetwork or return;
+
+ is_empty_hash_ref($u) and $o->ask_yesorno('',
+_("You have now the possibility to download updated packages that have
+been released after the distribution has been made available.
+
+You will get security fixes or bug fixes, but you need to have an
+Internet connection configured to proceed.
+
+Do you want to continue ?")) || return;
+
+ #- bring all interface up for installing crypto packages.
+ install_interactive::upNetwork($o);
+
+ require crypto;
+ eval {
+ my @mirrors = do { my $w = $o->wait_message('',
+ _("Contacting Mandrake Linux web site to get the list of available mirrors"));
+ crypto::mirrors() };
+ $u->{mirror} = $o->ask_from_treelistf('',
+ _("Choose a mirror from which to get the packages"),
+ '|',
+ \&crypto::mirror2text,
+ \@mirrors,
+ $u->{mirror});
+ };
+ return if $@;
+
+ my $update_medium = do {
my $w = $o->wait_message('', _("Contacting the mirror to get the list of available packages"));
crypto::getPackages($o->{prefix}, $o->{packages}, $u->{mirror}); #- make sure $o->{packages} is defined when testing
};
- $u->{packages} = $o->ask_many_from_list('', _("Please choose the packages you want to install."), { list => \@packages, values => $u->{packages} }) or return;
- $o->pkg_install(@{$u->{packages}});
+ if ($update_medium) {
+ $o->choosePackagesTree($o->{packages}, $update_medium);
+ $o->pkg_install();
+ }
+
#- stop interface using ppp only.
install_interactive::downNetwork($o, 'pppOnly');
}
+
#------------------------------------------------------------------------------
sub configureTimezone {
my ($o, $clicked) = @_;