summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--urpm.pm45
-rwxr-xr-xurpmi.addmedia33
2 files changed, 42 insertions, 36 deletions
diff --git a/urpm.pm b/urpm.pm
index a9c673c8..e9ae2516 100644
--- a/urpm.pm
+++ b/urpm.pm
@@ -767,6 +767,7 @@ sub add_medium {
#- - limit_rate, compress : for downloading files
#- - initial_number : when adding several numbered media, start with this number
#- - probe_with : if eq 'synthesis', use synthesis instead of hdlists
+#- ­ ask_media : callback to know whether each media should be added
#- other options are passed to add_medium()
sub add_distrib_media {
my ($urpm, $name, $url, %options) = @_;
@@ -774,21 +775,22 @@ sub add_distrib_media {
#- make sure configuration has been read.
# (Olivier Thauvin): Is this a workaround ?
$urpm->{media} or $urpm->read_config;
-
+
my $distribconf = MDV::Distribconf->new($url);
if (my ($dir) = $url =~ m!^(?:removable[^:]*:/|file:/)?(/.*)!) {
- $urpm->try_mounting($url) or $urpm->{error}(N("unable to access first installation medium")), return ();
-
+ $urpm->try_mounting($url)
+ or $urpm->{error}(N("unable to access first installation medium")), return ();
+
$distribconf->load() or $urpm->{error}(N("this url seems to not contains any distrib")), return ();
} else {
unlink "$urpm->{cachedir}/partial/media.cfg";
- # Workaround, settree not implement for now
- # $distribconf->settree('mandriva');
- $distribconf->{infodir} = "media/media_info";
- $distribconf->{mediadir} = "media";
+ # Workaround, settree not implement for now
+ # $distribconf->settree('mandriva');
+ $distribconf->{infodir} = "media/media_info";
+ $distribconf->{mediadir} = "media";
eval {
$urpm->{log}(N("retrieving media.cfg file..."));
@@ -807,8 +809,8 @@ sub add_distrib_media {
};
$@ and $urpm->{error}(N("...retrieving failed: %s", $@));
if (-e "$urpm->{cachedir}/partial/media.cfg") {
- $distribconf->parse_mediacfg("$urpm->{cachedir}/partial/media.cfg") or
- $urpm->{error}(N("unable to parse media.cfg")), return();
+ $distribconf->parse_mediacfg("$urpm->{cachedir}/partial/media.cfg")
+ or $urpm->{error}(N("unable to parse media.cfg")), return();
} else {
$urpm->{error}(N("unable to access first installation medium (no hdlists file found)"));
return ();
@@ -821,20 +823,20 @@ sub add_distrib_media {
my @newnames;
#- at this point, we have found a media.cfg file, so parse it
#- and create all necessary media according to it.
- my $medium = $options{initial_number} || 1;
+ my $medium = $options{initial_number} || 1;
my @media_list_toadd;
foreach my $media ($distribconf->listmedia()) {
my $skip = 0;
- # if one of value is set, we skip the media by default
- foreach (qw(suppl askmedia noauto)) {
- $distribconf->getvalue($media, $_) and do {
- $skip = 1;
- last;
- };
- }
+ # if one of those values is set, by default, we skip adding the media
+ foreach (qw(suppl askmedia noauto)) {
+ $distribconf->getvalue($media, $_) and do {
+ $skip = 1;
+ last;
+ };
+ }
if ($options{ask_media}) {
- if($options{ask_media}->(
+ if ($options{ask_media}->(
$distribconf->getvalue($media, 'name'),
!$skip,
)) {
@@ -844,7 +846,7 @@ sub add_distrib_media {
}
}
$skip and next;
-
+
my $media_name = $distribconf->getvalue($media, 'name') || '';
push @newnames, $urpm->add_medium(
@@ -853,10 +855,9 @@ sub add_distrib_media {
offset_pathname(
$url,
$distribconf->getpath($media, 'path')
- ) . '/' . $distribconf->getpath($media,
+ ) . '/' . $distribconf->getpath($media,
($options{probe_with} eq 'synthesis' ? 'synthesis' : 'hdlist')
),
-
index_name => $name ? undef : 0,
no_reload_config => 1, #- no need to reload config each time, since we don't update the media
%options,
@@ -3503,3 +3504,5 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
=cut
+
+# ex: set ts=8 sts=4 sw=4 noet:
diff --git a/urpmi.addmedia b/urpmi.addmedia
index dec67346..bed458f3 100755
--- a/urpmi.addmedia
+++ b/urpmi.addmedia
@@ -56,8 +56,8 @@ and [options] are from
hdlist file.
") . N(" --distrib - automatically create all media from an installation
medium.
-") . N(" --interactive - with --distrib, ask confirmation for each media before addition
-") . N(" --all-media - with --distrib, add all medium include not automatic one
+") . N(" --interactive - with --distrib, ask confirmation for each media
+") . N(" --all-media - with --distrib, add every listed media
") . N(" --from - use specified url for list of mirrors, the default is
%s
", $urpm::cfg::mirrors) . N(" --virtual - create virtual media wich are always up-to-date,
@@ -125,18 +125,21 @@ if ($options{distrib}) {
$with || $relative_hdlist
and usage N("no need to give <relative path of hdlist> with --distrib");
- my $add_media_callback = $options{interactive} || $options{allmedia} ?
- sub {
- my ($medianame, $default) = @_;
- my $yesexpr = N("Yy");
- my $answer = message_input(
- N("\nDo you want to add media '%s'", $medianame) . ($default ? N(" (Y/n) ") : N(" (y/N) ")),
- $options{allmedia} ? $yesexpr : undef,
- boolean => 1
- );
- return($answer ? $answer =~ /[$yesexpr]/ : $default);
- } : undef;
-
+ my $add_media_callback = $options{interactive} ?
+ sub {
+ my ($medianame, $add_by_default) = @_;
+ my $yesexpr = N("Yy");
+ $add_by_default = 1 if $options{allmedia};
+ my $answer = message_input(
+ N("\nDo you want to add media '%s'", $medianame) . ($add_by_default ? N(" (Y/n) ") : N(" (y/N) ")),
+ undef,
+ boolean => 1,
+ );
+ return $answer ? $answer =~ /[$yesexpr]/ : $add_by_default;
+ } : $options{allmedia} ? sub {
+ 1;
+ } : undef;
+
$urpm->add_distrib_media(
$name,
$url,
@@ -144,7 +147,7 @@ if ($options{distrib}) {
update => $options{update},
probe_with => $options{probe_with},
nolock => $options{nolock},
- ask_media => $add_media_callback,
+ ask_media => $add_media_callback,
);
local $SIG{INT} = sub {
remove_failed($urpm, grep { $_->{modified} } @{$urpm->{media}});