diff options
-rw-r--r-- | perl-install/install/NEWS | 2 | ||||
-rw-r--r-- | perl-install/install/media.pm | 55 |
2 files changed, 24 insertions, 33 deletions
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS index 84fa65790..25c4ca298 100644 --- a/perl-install/install/NEWS +++ b/perl-install/install/NEWS @@ -1,3 +1,5 @@ +- media management: + o use urpmi in order to add supplementary media - put distro version after release because release contains "Mandriva Linux" Version 12.24.1 - 05 April 2009 diff --git a/perl-install/install/media.pm b/perl-install/install/media.pm index ded64e867..7183ef11f 100644 --- a/perl-install/install/media.pm +++ b/perl-install/install/media.pm @@ -500,19 +500,7 @@ sub get_media { foreach (@$media) { if ($_->{type} eq 'media_cfg') { $phys_m = url2mounted_phys_medium($o, $_->{url}, 'media_info'); - log::l(Data::Dumper->Dump([ $phys_m ], [ 'phys_m' ])); - log::l(Data::Dumper->Dump([ $o->{stage2_phys_medium} ], [ 'stage2_phys_medium' ])); - my $uri = $o->{stage2_phys_medium}{url} =~ m!^(http|ftp)://! && $o->{stage2_phys_medium}{url} || - $phys_m->{method} =~ m!^(ftp|http)://! && $phys_m->{method} || '/tmp/image'; - - _get_compsUsers_pl($phys_m, $_->{force_rpmsrate}); - - urpm::media::add_distrib_media($packages, undef, $uri, ask_media => undef); #allmedia => 1 - - if (defined $_->{selected_names}) { - select_only_some_media($packages, $_->{selected_names}); - } - ($suppl_CDs, $copy_rpms_on_disk) = eval { _get_media_cfg_options($o, $phys_m) }; + ($suppl_CDs, $copy_rpms_on_disk) = get_media_cfg($o, $phys_m, $packages, $_->{selected_names}, $_->{force_rpmsrate}); } elsif ($_->{type} eq 'media') { $phys_m = url2mounted_phys_medium($o, $_->{url}); get_standalone_medium($o, $phys_m, $packages, { name => $_->{id} =~ /media=(.*)/ && $1 }); @@ -529,14 +517,9 @@ sub get_media { } my @new_media = difference2([ map { $_->{name} } @{$packages->{media}} ], \@names); - urpm::media::update_media($packages, distrib => 1, callback => \&urpm::download::sync_logger) or - log::l('updating media failed'); _adjust_paths_in_urpmi_cfg($o, $phys_m, @new_media); - urpm::media::configure($packages); - log::l('urpmi completely set up'); - log::l("suppl_CDs=$suppl_CDs copy_rpms_on_disk=$copy_rpms_on_disk"); $suppl_CDs, $copy_rpms_on_disk; } @@ -658,34 +641,40 @@ sub _get_media_cfg_options { sub get_media_cfg { my ($o, $phys_medium, $packages, $selected_names, $force_rpmsrate) = @_; - my ($distribconf, $hdlists); + my ($distribconf); if (getAndSaveFile_($phys_medium, 'media_info/media.cfg', '/tmp/media.cfg')) { - ($distribconf, $hdlists) = _parse_media_cfg('/tmp/media.cfg'); + ($distribconf) = _parse_media_cfg('/tmp/media.cfg'); } else { die "media.cfg not found"; } - if (defined $selected_names) { - my @names = split ',', $selected_names; - foreach my $h (@$hdlists) { - $h->{ignore} = !member($h->{name}, @names); - } - } - my $suppl_CDs = exists $o->{supplmedia} ? $o->{supplmedia} : $distribconf->{suppl} || 0; my $deselectionAllowed = $distribconf->{askmedia} || $o->{askmedia} || 0; - _associate_phys_media($o->{all_hds}, $phys_medium, $hdlists); + log::l(Data::Dumper->Dump([ $phys_medium ], [ 'phys_medium' ])); + log::l(Data::Dumper->Dump([ $o->{stage2_phys_medium} ], [ 'stage2_phys_medium' ])); + my $uri = $o->{stage2_phys_medium}{url} =~ m!^(http|ftp)://! && $o->{stage2_phys_medium}{url} || + $phys_medium->{method} =~ m!^(ftp|http)://! && $phys_medium->{method} || '/tmp/image'; + log::l("adding distrib media from $uri"); - if ($deselectionAllowed && !@{$packages->{media}}) { - my $allow = _allow_copy_rpms_on_disk($phys_medium, $hdlists); - $o->ask_deselect_media__copy_on_disk($hdlists, $allow && \$o->{copy_rpms_on_disk}) if $allow || @$hdlists > 1; + urpm::media::add_distrib_media($packages, undef, $uri, ask_media => undef); #allmedia => 1 + + if (defined $selected_names) { + select_only_some_media($packages, $selected_names); } - foreach my $h (@$hdlists) { - _get_medium($o, $phys_medium, $packages, $h); + if ($deselectionAllowed && !@{$packages->{media}}) { + my $allow = _allow_copy_rpms_on_disk($phys_medium, $packages->{media}); + $o->ask_deselect_media__copy_on_disk($packages->{media}, $allow && \$o->{copy_rpms_on_disk}) if $allow || @{$packages->{media}} > 1; } + _associate_phys_media($o->{all_hds}, $phys_medium, $packages->{media}); + + urpm::media::update_media($packages, distrib => 1, callback => \&urpm::download::sync_logger) or + log::l('updating media failed'); + urpm::media::configure($packages); + log::l('urpmi completely set up'); + log::l("get_media_cfg read " . int(@{$packages->{depslist}}) . " headers"); _get_compsUsers_pl($phys_medium, $force_rpmsrate); |