aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xrpmdrake44
-rw-r--r--rpmdrake.pm75
2 files changed, 91 insertions, 28 deletions
diff --git a/rpmdrake b/rpmdrake
index 4896b9dd..49b08159 100755
--- a/rpmdrake
+++ b/rpmdrake
@@ -400,8 +400,7 @@ sub run_treeview_dialog {
my (undef, $size_free) = MDK::Common::System::df('/usr');
$::noBorder = 1;
- (my $mdk_version) = (cat_('/etc/mandrake-release') || '') =~ /(\d+\.\d+)/;
- $w = ugtk2->new(N("Rpmdrake %s", $mdk_version || ''));
+ $w = ugtk2->new(N("Rpmdrake %s", $rpmdrake::mdk_version || ''));
$::noBorder = 0;
my $formatlistpkg = sub { myformatList(sort { uc($a) cmp uc($b) } @_) };
@@ -853,23 +852,29 @@ or you already installed all of them."));
$MODE ne 'remove' and push @menu_treeview_actions, [ 'update_sources', N("Update media") ];
foreach (@menu_treeview_actions) {
my ($action, $text) = @$_;
- my %action2fun; %action2fun = (
- reset_selection => sub {
- if ($MODE ne 'remove') {
- $urpm->disable_selected(db(), $urpm->{state},
- map { if_($pkgs->{$_}{selected}, $pkgs->{$_}{pkg}) } keys %$pkgs);
- }
- $pkgs->{$_}{selected} = 0 foreach keys %$pkgs;
- $size_selected = 0;
- $options->{rebuild_tree}->();
- },
- reload_pkg => sub {
- ($urpm, $pkgs, $descriptions) = $pkgs_provider->({ skip_updating_mu => 1 });
- $size_selected = 0;
- $options->{rebuild_tree}->();
- },
- update_sources => sub { update_sources_interactive($urpm, transient => $w->{rwindow})
- and $action2fun{reload_pkg}->() });
+ my %action2fun;
+ %action2fun = (
+ reset_selection => sub {
+ if ($MODE ne 'remove') {
+ $urpm->disable_selected(
+ db(), $urpm->{state},
+ map { if_($pkgs->{$_}{selected}, $pkgs->{$_}{pkg}) } keys %$pkgs
+ );
+ }
+ $pkgs->{$_}{selected} = 0 foreach keys %$pkgs;
+ $size_selected = 0;
+ $options->{rebuild_tree}->();
+ },
+ reload_pkg => sub {
+ ($urpm, $pkgs, $descriptions) = $pkgs_provider->({ skip_updating_mu => 1 });
+ $size_selected = 0;
+ $options->{rebuild_tree}->();
+ },
+ update_sources => sub {
+ update_sources_interactive($urpm, transient => $w->{rwindow})
+ and $action2fun{reload_pkg}->();
+ }
+ );
$menu_treeview->append(gtksignal_connect(gtkshow(Gtk2::MenuItem->new_with_label($text)), activate => sub { $action2fun{$action}->() }));
}
$tree->signal_connect(button_press_event => sub { $_[1]->button == 3 or return 0;
@@ -1092,6 +1097,7 @@ Then, restart MandrakeUpdate.")), myexit(-1);
$urpm->configure(media => $media);
@update_medias = grep { !$_->{ignore} && $_->{update} } @{$urpm->{media}};
+ check_update_media_version($urpm, @update_medias);
$urpm->compute_installed_flags(db());
diff --git a/rpmdrake.pm b/rpmdrake.pm
index 1a49956e..c630f3a4 100644
--- a/rpmdrake.pm
+++ b/rpmdrake.pm
@@ -37,11 +37,46 @@ use c;
use curl_download;
@ISA = qw(Exporter);
-@EXPORT = qw($configfile %config $mandrakeupdate_wanted_categories $already_splashed $max_info_in_descr $tree_mode $tree_flat $typical_width
- N N_ translate to_utf8 myexit readconf writeconf interactive_msg interactive_packtable interactive_list fatal_msg
- wait_msg remove_wait_msg but but_ slow_func mirrors choose_mirror make_url_mirror show_urpm_progress
- update_sources update_sources_interactive add_medium_and_check);
-
+@EXPORT = qw(
+ $configfile
+ %config
+ $mandrakeupdate_wanted_categories
+ $already_splashed
+ $max_info_in_descr
+ $tree_mode
+ $tree_flat
+ $typical_width
+ N
+ N_
+ translate
+ to_utf8
+ myexit
+ readconf
+ writeconf
+ interactive_msg
+ interactive_packtable
+ interactive_list
+ fatal_msg
+ wait_msg
+ remove_wait_msg
+ but
+ but_
+ slow_func
+ mirrors
+ choose_mirror
+ make_url_mirror
+ show_urpm_progress
+ update_sources
+ update_sources_interactive
+ add_medium_and_check
+ check_update_media_version
+);
+
+
+our $mandrake_release = cat_(
+ -e '/etc/mandrakelinux-release' ? '/etc/mandrakelinux-release' : '/etc/mandrake-release'
+) || '';
+(our $mdk_version) = $mandrake_release =~ /(\d+\.\d+)/;
eval { require ugtk2; ugtk2->import(qw(:all)) };
if ($@) {
@@ -311,8 +346,8 @@ my %sites2countries = ('proxad.net' => 'fr',
sub distro_type {
- cat_('/etc/mandrake-release') =~ /community/i ? 'community'
- : cat_('/etc/mandrake-release') =~ /cooker/i ? 'cooker'
+ $mandrake_release =~ /community/i ? 'community'
+ : $mandrake_release =~ /cooker/i ? 'cooker'
: 'updates';
}
@@ -413,7 +448,7 @@ sub make_url_mirror {
#- esp. for distro_type() =~ /cooker|community/
"$mirror/";
} else {
- my ($class, $release) = cat_('/etc/mandrake-release') =~ /(\S+)\s+release\s+(\S+)/;
+ my ($class, $release) = $mandrake_release =~ /(\S+)\s+release\s+(\S+)/;
$class !~ /linux/i and $release = lc($class) . "/$release"; #- handle subdirectory for corporate/clustering/etc
"$mirror/$release/RPMS/";
}
@@ -536,7 +571,8 @@ sub update_sources_interactive {
)
);
if ($w->main) {
- foreach (@{$urpm->{media}}) { #- force ignored media to be returned alive (forked from urpmi.updatemedia...)
+ #- force ignored media to be returned alive (forked from urpmi.updatemedia...)
+ foreach (@{$urpm->{media}}) {
$_->{modified} and delete $_->{ignore};
}
standalone::explanations("Updating media @media");
@@ -589,3 +625,24 @@ sub add_medium_and_check {
return 0;
}
+#- Check whether the default update media (added by installation)
+#- matches the current mdk version
+sub check_update_media_version {
+ my $urpm = shift;
+ for (@_) {
+ if ($_->{name} =~ /(\d+\.\d+).*\bftp\du\b/ && $1 ne $mdk_version) {
+ interactive_msg(
+ 'rpmdrake',
+ N("Your medium `%s', used for updates, does not match the version of Mandrakelinux you're running (%s).
+It will be disabled.",
+ $_->{name}, $mdk_version),
+ );
+ $_->{ignore} = 1;
+ $urpm->write_config if -w $urpm->{config};
+ return 0;
+ }
+ }
+ 1;
+}
+
+1;