diff options
-rw-r--r-- | perl-install/install_any.pm | 19 | ||||
-rw-r--r-- | perl-install/install_steps.pm | 1 | ||||
-rw-r--r-- | perl-install/install_steps_interactive.pm | 4 | ||||
-rw-r--r-- | perl-install/pkgs.pm | 21 |
4 files changed, 35 insertions, 10 deletions
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm index cf0939bc2..2260e894c 100644 --- a/perl-install/install_any.pm +++ b/perl-install/install_any.pm @@ -361,6 +361,21 @@ sub preConfigureTimezone { add2hash_($o->{timezone}, { UTC => $utc, ntp => $ntp }); } +sub deselectFoundMedia { + my ($o, $hdlists) = @_; + my $l = $o->ask_many_from_list('', +N("The following installation media have been found. +If you want to skip some of them, you can unselect them now."), + { + list => $hdlists, + value => sub { 1 }, + label => sub { $_[0][3] }, + }, + ); + log::l("keeping media " . map { $_->[1] } @$l); + @$l; +} + sub ask_if_suppl_media { my ($o) = @_; our $suppl_already_asked; @@ -410,7 +425,7 @@ sub selectSupplMedia { log::l($@) if $@; useMedium($medium_name); #- probe for an hdlists file and then look for all hdlists listed herein - eval { pkgs::psUsingHdlists($o->{prefix}, $suppl_method, "/mnt/cdrom/media/media_info/hdlists", $o->{packages}, '1s') }; + eval { pkgs::psUsingHdlists($o, $suppl_method, "/mnt/cdrom/media/media_info/hdlists", $o->{packages}, '1s') }; if ($@) { log::l("psUsingHdlists failed: $@"); #- no hdlists found on the suppl. CD @@ -493,7 +508,7 @@ sub setPackages { require pkgs; if (!$o->{packages} || is_empty_array_ref($o->{packages}{depslist})) { my $cdrom; - ($o->{packages}, my $suppl_method) = pkgs::psUsingHdlists($o->{prefix}, $o->{method}); + ($o->{packages}, my $suppl_method) = pkgs::psUsingHdlists($o, $o->{method}); 1 while $suppl_method = $o->selectSupplMedia($suppl_method); diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm index 7a7ee2b7a..443e3353b 100644 --- a/perl-install/install_steps.pm +++ b/perl-install/install_steps.pm @@ -292,6 +292,7 @@ sub setPackages { $rebuild_needed and pkgs::selectPackagesToUpgrade($o->{packages}, $o->{prefix}); } +sub deselectFoundMedia { '' } sub selectSupplMedia { '' } sub choosePackages { diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm index e8cb6097d..6221cda4f 100644 --- a/perl-install/install_steps_interactive.pm +++ b/perl-install/install_steps_interactive.pm @@ -391,6 +391,10 @@ sub setPackages { } } +sub deselectFoundMedia { + my ($o, $p) = @_; + install_any::deselectFoundMedia($o, $p); +} sub selectSupplMedia { my ($o, $suppl_method) = @_; install_any::selectSupplMedia($o, $suppl_method); diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm index 7b66bca23..f4ef13220 100644 --- a/perl-install/pkgs.pm +++ b/perl-install/pkgs.pm @@ -378,7 +378,8 @@ sub psUpdateHdlistsDeps { } sub psUsingHdlists { - my ($prefix, $method, $o_hdlistsfile, $o_packages, $o_initialmedium) = @_; + my ($o, $method, $o_hdlistsfile, $o_packages, $o_initialmedium) = @_; + my $prefix = $o->{prefix}; my $listf = install_any::getFile($o_hdlistsfile || 'media/media_info/hdlists') or die "no hdlists found"; my $suppl_CDs = 0; @@ -390,6 +391,7 @@ sub psUsingHdlists { #- parse hdlists file. my $medium_name = $o_initialmedium || 1; + my @hdlists; foreach (<$listf>) { chomp; s/\s*#.*$//; @@ -397,17 +399,20 @@ sub psUsingHdlists { #- we'll ask afterwards for supplementary CDs, if the hdlists file contains #- a line that begins with "suppl" if (/^suppl/) { $suppl_CDs = 1; next } + my $cdsuppl = index($medium_name, 's') >= 0; m/^\s*(noauto:)?(hdlist\S*\.cz2?)\s+(\S+)\s*(.*)$/ or die qq(invalid hdlist description "$_" in hdlists file); + push @hdlists, [ $2, $medium_name, $3, $4, !$1, + #- hdlist path, suppl CDs are mounted on /mnt/cdrom : + $cdsuppl ? "/mnt/cdrom/media/media_info/$2" : undef, + ]; + $cdsuppl ? ($medium_name = ($medium_name + 1) . 's') : ++$medium_name; + } + @hdlists = $o->deselectFoundMedia(\@hdlists) unless defined $o_initialmedium; + foreach my $h (@hdlists) { #- make sure the first medium is always selected! #- by default select all image. - psUsingHdlist( - $prefix, $method, $o_packages, $2, $medium_name, $3, $4, !$1, - #- hdlist path, suppl CDs are mounted on /mnt/cdrom : - index($medium_name, 's') >= 0 ? "/mnt/cdrom/media/media_info/$2" : undef, - ); - - $medium_name =~ /s$/ ? ($medium_name = ($medium_name + 1) . 's') : ++$medium_name; + psUsingHdlist($prefix, $method, $o_packages, @$h); } log::l("psUsingHdlists read " . int(@{$o_packages->{depslist}}) . |