diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | t/superuser--addmedia.t | 36 | ||||
-rw-r--r-- | urpm/args.pm | 1 | ||||
-rw-r--r-- | urpm/media.pm | 23 |
4 files changed, 49 insertions, 15 deletions
@@ -1,3 +1,7 @@ +- urpmi.addmedia --distrib, urpmi/urpme/urpmf/urpmq --use-distrib + o media.cfg per media field hdlist=hdlist_xxx.cz is not used anymore, + xxx/media_info/hdlist.cz is used instead. To get previous behaviour, use + option --use-copied-hdlist or use_copied_hdlist=1 in media.cfg - urpmi o for long package names, ensure progression of installation (####...) is still properly indented (#28639) diff --git a/t/superuser--addmedia.t b/t/superuser--addmedia.t index 661dce19..87941c35 100644 --- a/t/superuser--addmedia.t +++ b/t/superuser--addmedia.t @@ -42,17 +42,22 @@ try_medium({ synthesis => 1, "with ../media_info/synthesis.hdlist_$name.cz", "with ../media_info/synthesis.hdlist_$name2.cz"); -try_distrib({ hdlist => 1, +try_distrib({ media_info_dir => 'media_info' }, ''); +try_distrib({ hdlist => 1, media_info_dir => 'media_info' }, + '--probe-hdlist'); +try_distrib({ synthesis => 1, media_info_dir => 'media_info' }, + '--probe-synthesis'); +try_distrib_removable({ hdlist => 1, with_hdlist => "../..//media/media_info/hdlist_$name.cz", with_hdlist2 => "../..//media/media_info/hdlist_$name2.cz", with_hdlist3 => "../..//media/media_info/hdlist_$name3.cz" }, ''); -try_distrib({ hdlist => 1, +try_distrib_removable({ hdlist => 1, with_hdlist => "../..//media/media_info/hdlist_$name.cz", with_hdlist2 => "../..//media/media_info/hdlist_$name2.cz", with_hdlist3 => "../..//media/media_info/hdlist_$name3.cz" }, '--probe-hdlist'); -try_distrib({ synthesis => 1, +try_distrib_removable({ synthesis => 1, with_hdlist => "../..//media/media_info/synthesis.hdlist_$name.cz", with_hdlist2 => "../..//media/media_info/synthesis.hdlist_$name2.cz", with_hdlist3 => "../..//media/media_info/synthesis.hdlist_$name3.cz" }, @@ -71,13 +76,23 @@ sub try_medium { sub try_distrib { my ($want, $options) = @_; + my $want3 = { %$want, ignore => 1 }; + + try_distrib_($want, $want3, $options); + + $want3->{virtual} = $want->{virtual} = 1; + try_distrib_($want, $want3, '--virtual ' . $options); +} + +sub try_distrib_removable { + my ($want, $options) = @_; my $want2 = { %$want, with_hdlist => $want->{with_hdlist2} || $want->{with_hdlist} }; my $want3 = { %$want, with_hdlist => $want->{with_hdlist3} || $want->{with_hdlist}, ignore => 1 }; - try_distrib_($want, $want2, $want3, $options); + try_distrib_removable_($want, $want2, $want3, $options); $want3->{virtual} = $want2->{virtual} = $want->{virtual} = 1; - try_distrib_($want, $want2, $want3, '--virtual ' . $options); + try_distrib_removable_($want, $want2, $want3, '--virtual ' . $options); } sub try_medium_ { @@ -96,9 +111,18 @@ sub try_medium_ { } sub try_distrib_ { - my ($want, $want2, $want3, $options) = @_; + my ($want, $want3, $options) = @_; urpmi_addmedia("--distrib $name $::pwd $options"); + check_conf($want, $want, $want3); + check_urpmi($name, $name2); + urpmi_removemedia('-a'); +} + +sub try_distrib_removable_ { + my ($want, $want2, $want3, $options) = @_; + + urpmi_addmedia("--distrib $name $::pwd $options --use-copied-hdlist"); check_conf($want, $want2, $want3); check_urpmi($name, $name2); urpmi_removemedia('-a'); diff --git a/urpm/args.pm b/urpm/args.pm index d6ae29f7..ecca014f 100644 --- a/urpm/args.pm +++ b/urpm/args.pm @@ -50,6 +50,7 @@ my %options_spec_all = ( $urpm->{debug} = $urpm->{debug_URPM} = sub { print STDERR "$_[0]\n" }; }, 'urpmi-root=s' => sub { urpm::set_files($urpm, $_[1]) }, + 'use-copied-hdlist' => sub { $urpm->{options}{use_copied_hdlist} = 1 }, ); my %options_spec = ( diff --git a/urpm/media.pm b/urpm/media.pm index 601f1070..15614ea3 100644 --- a/urpm/media.pm +++ b/urpm/media.pm @@ -644,7 +644,7 @@ sub _compute_flags_for_instlist { #- add a new medium, sync the config file accordingly. #- returns the new medium's name. (might be different from the requested #- name if index_name was specified) -#- options: ignore, index_name, nolock, synthesis, update, virtual +#- options: ignore, index_name, nolock, hdlist, synthesis, update, virtual, media_info_dir sub add_medium { my ($urpm, $name, $url, $with_hdlist, %options) = @_; @@ -669,11 +669,11 @@ sub add_medium { my $medium = { name => $name, url => $url, modified => !$options{ignore}, - downloader => $options{downloader}, - update => $options{update}, - ignore => $options{ignore}, - synthesis => $options{synthesis}, }; + foreach (qw(downloader update ignore hdlist synthesis media_info_dir)) { + $medium->{$_} = $options{$_} if exists $options{$_}; + } + if ($options{virtual}) { file_from_file_url($url) or $urpm->{fatal}(1, N("virtual medium needs to be local")); $medium->{virtual} = 1; @@ -772,13 +772,18 @@ sub add_distrib_media { my $is_update_media = $distribconf->getvalue($media, 'updates_for'); + my $use_copied_hdlist = $urpm->{options}{use_copied_hdlist} || $distribconf->getvalue($media, 'use_copied_hdlist'); + my $with_hdlist = $use_copied_hdlist && offset_pathname( + $url, + $distribconf->getpath($media, 'path'), + ) . '/' . $distribconf->getpath($media, $options{probe_with} eq 'synthesis' ? 'synthesis' : 'hdlist'); + push @newnames, add_medium($urpm, $name ? "$media_name ($name$medium_index)" : $media_name, reduce_pathname($distribconf->getfullpath($media, 'path')), - offset_pathname( - $url, - $distribconf->getpath($media, 'path'), - ) . '/' . $distribconf->getpath($media, $options{probe_with} eq 'synthesis' ? 'synthesis' : 'hdlist'), + $with_hdlist, + !$use_copied_hdlist ? (media_info_dir => 'media_info') : (), + !$use_copied_hdlist && $options{probe_with} ? ($options{probe_with} => 1) : (), index_name => $name ? undef : 0, $add_by_default ? () : (ignore => 1), %options, |