summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/any.pm9
-rw-r--r--perl-install/common.pm4
-rw-r--r--perl-install/install/NEWS2
-rw-r--r--perl-install/install/steps.pm1
-rw-r--r--perl-install/install/steps_interactive.pm3
5 files changed, 16 insertions, 3 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index ee5322d79..e5d62371f 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -841,7 +841,7 @@ sub sessions_with_order() {
}
sub urpmi_add_all_media {
- my ($in) = @_;
+ my ($in, $o_previous_release) = @_;
my $binary = find { whereis_binary($_, $::prefix) } 'gurpmi.addmedia', 'urpmi.addmedia' or return;
@@ -855,6 +855,13 @@ sub urpmi_add_all_media {
mygtk2::destroy_previous_popped_and_reuse_window();
mygtk2::flush();
}
+
+ my $reason = join(',', $o_previous_release ?
+ ('reason=upgrade', 'upgrade_by=drakx', "upgrade_from=$o_previous_release->{version}") :
+ 'reason=install');
+ log::l("URPMI_ADDMEDIA_REASON $reason");
+ local $ENV{URPMI_ADDMEDIA_REASON} = $reason;
+
run_program::rooted($::prefix, $binary, '--distrib', '--mirrorlist', '$MIRRORLIST');
}
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 2234c0e91..32854daed 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -312,9 +312,11 @@ sub is_running {
sub parse_release_file {
my ($prefix, $f, $part) = @_;
chomp(my $s = cat_("$prefix$f"));
+ my $version = $s =~ s/\s+release\s+(\S+)// && $1;
my $arch = $s =~ s/\s+for\s+(\S+)// && $1;
log::l("find_root_parts found $part->{device}: $s for $arch" . ($f !~ m!/etc/! ? " in special release file $f" : ''));
- { release => $s, release_file => $f, part => $part, arch => $arch };
+ { release => $s, version => $version,
+ release_file => $f, part => $part, arch => $arch };
}
sub release_file {
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS
index 550fd6016..d518dfa85 100644
--- a/perl-install/install/NEWS
+++ b/perl-install/install/NEWS
@@ -1,3 +1,5 @@
+- keep in $o->{previous_release} the info about upgraded /etc/release,
+ and pass "reason" and version to urpmi.addmedia
- 2009.0 RC 1 logo
- hack /tmp/.X11-unix to allow accessing X in chroot
- if network access, configure urpmi with --mirrorlist --distrib,
diff --git a/perl-install/install/steps.pm b/perl-install/install/steps.pm
index e669a3790..518ef8d18 100644
--- a/perl-install/install/steps.pm
+++ b/perl-install/install/steps.pm
@@ -175,6 +175,7 @@ sub selectInstallClass {
# either one root is defined (and all is ok), or we take the first one we find
my $p = fs::get::root_($o->{fstab}) || (first(install::any::find_root_parts($o->{fstab}, $::prefix)) || die)->{part};
$o->{migrate_device_names} = install::any::use_root_part($o->{all_hds}, $p);
+ $o->{previous_release} = $p if $o->{isUpgrade};
}
}
diff --git a/perl-install/install/steps_interactive.pm b/perl-install/install/steps_interactive.pm
index 231c3960a..84fc58889 100644
--- a/perl-install/install/steps_interactive.pm
+++ b/perl-install/install/steps_interactive.pm
@@ -171,6 +171,7 @@ sub selectInstallClass {
hidden => 1, val => \$_->{encrypt_key} } ]);
}
+ $o->{previous_release} = $p;
$o->{isUpgrade} = (find { $p->{release_file} =~ /$_/ } 'mandriva', 'mandrake', 'conectiva', 'redhat') || 'unknown';
$o->{upgrade_by_removing_pkgs_matching} ||= {
conectiva => 'cl',
@@ -761,7 +762,7 @@ Do you want to install the updates?")),
#- bring all interface up for installing updates packages.
install::interactive::upNetwork($o);
- if (any::urpmi_add_all_media($o)) {
+ if (any::urpmi_add_all_media($o, $o->{previous_release})) {
my $binary = find { whereis_binary($_, $::prefix) } 'gurpmi2', 'urpmi' or return;
run_program::rooted($::prefix, $binary, '--auto-select', '--update');
}