From 5ad43fb7b274deeffadae230f84c08ccbd6db33f Mon Sep 17 00:00:00 2001 From: Rafael Garcia-Suarez Date: Fri, 18 Jun 2004 09:28:22 +0000 Subject: When rpmdrake detects a media that looks like an update media added by the installation, it now checks whether it corresponds to the current Mandrakelinux release, and if it doesn't, it disables the media. Probably still a bit rough. --- rpmdrake.pm | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 9 deletions(-) (limited to 'rpmdrake.pm') 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; -- cgit v1.2.1